{"ref":"capability:workflow-integration","page":"/capabilities/workflow-integration","json":"/capabilities/workflow-integration.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"workflow-integration","name":"Workflow integration","domain":"process-and-workflow","ecosystems":["cap"],"universal":true,"description":"Driving an external workflow or automation engine from an application and reacting to what it emits — triggering runs transactionally and importing the engine’s shape as a typed model.","short":"Driving an external workflow engine and reacting to what it emits","core_coverage":{"state":"core-and-community","what_core_does":"[@cap-js/process](artifact:cap-js-process) starts and manages SAP Build Process Automation processes; [@cap-js/n8n](artifact:cap-js-n8n) triggers n8n workflows, with credentials resolved through config, a Cloud Foundry binding or a BTP destination. [com.sap.cds:cds-feature-n8n](artifact:cap-java-cds-feature-n8n) does the same for CAP Java, with delivery through the CAP persistent outbox.","where_it_stops":"It stops at triggering on the Node.js side. Dispatching through the transactional outbox so a workflow cannot fire on a rolled-back transaction, and importing the engine’s shape as a typed model, are what [sleibach/cap-n8n](artifact:sleibach-cap-n8n) adds there.","sources":[{"url":"https://github.com/cap-js/process","title":"cap-js/process — repository","checked":"2026-08-31"},{"url":"https://github.com/cap-js/n8n","title":"cap-js/n8n — repository","checked":"2026-08-31"},{"url":"https://raw.githubusercontent.com/cap-java/cds-feature-n8n/c919bcb6f34d78c6831f0e48274949b721960284/README.md","title":"cap-java/cds-feature-n8n — README","checked":"2026-10-26","quote":"Retry behavior is managed by the CAP persistent outbox."}],"assessed_at":"2026-08-31","relationship":"core-adopted-it"},"history":[{"date":"2026-08-31","field":"core_coverage.state","from":"community-only","to":"left-open-on-purpose","reason":"@cap-js/n8n published by the core team. The community plugin predates it and goes further, so the boundary is real rather than duplicated."},{"date":"2026-08-31","field":"core_coverage.state","from":"left-open-on-purpose","to":"core-and-community","reason":"States renamed to describe who is present rather than to interpret intent. left-open-on-purpose asserted a motive; core-and-community states a fact, with relationship carrying the intent separately."},{"date":"2026-10-17","field":"description","from":"Driving an external workflow or automation engine from a CAP service and reacting to what it emits — triggering runs transactionally and importing the engine’s shape as a typed model.","to":"Driving an external workflow or automation engine from an application and reacting to what it emits — triggering runs transactionally and importing the engine’s shape as a typed model.","reason":"Keep the default capability wording neutral; preserve the previous wording in framing_by_ecosystem.cap. Maintainer-requested scope audit."},{"date":"2026-10-26","field":"core_coverage.what_core_does, core_coverage.where_it_stops, core_coverage.sources","from":"what_core_does named the two Node.js plugins; where_it_stops: \"It stops at triggering. Dispatching through the transactional outbox ... and importing the engine’s shape as a typed model, are what the community added on top.\"","to":"what_core_does adds the SAP-published CAP Java n8n plugin, which delivers through the CAP persistent outbox; where_it_stops is scoped to the Node.js side and names sleibach/cap-n8n for outbox dispatch and the typed import.","reason":"Reassessed against the graph (check:capabilities): the CAP Java n8n plugin is SAP-official and uses the outbox, so outbox dispatch is no longer only a community addition. Source: the plugin's README. State unchanged."}],"changed_in":[{"version":"@cap-js/process 0.1.0","date":"2026-03-27","what_changed":"The core gained a first-party way to drive SAP Build Process Automation from a CAP service. Before it, starting or managing a process meant hand-rolling calls against the workflow API through a destination; after it, a built-in generic ProcessService covers start, suspend, resume and cancel without any import, and importing a specific process additionally generates a typed CDS service with ProcessInputs, ProcessOutputs and ProcessInstance types.","invalidates":"Guidance that calling SAP Build Process Automation from CAP is always a hand-written HTTP integration. Since March 2026 there is a first-party plugin for it — though the typed, process-specific service still does not work locally and needs a hybrid or production connection.","source":{"url":"https://github.com/cap-js/process","title":"cap-js/process — README","checked":"2026-09-08","quote":"CAP Plugin to interact with SAP Build Process Automation to manage processes."}},{"version":"@cap-js/n8n 0.0.1","date":"2026-08-27","what_changed":"A second engine, n8n, gained the same first-party treatment the core had already given SAP Build Process Automation. Before it, triggering an n8n workflow from CAP meant the independent [sleibach/cap-n8n](artifact:sleibach-cap-n8n) plugin or a hand-wired HTTP call; after it, `@n8n.process.start` on an action or event, or the programmatic `n8n` service, triggers a workflow with credentials resolved through config, a Cloud Foundry binding or a BTP destination.","invalidates":"Guidance that n8n triggering from CAP has no SAP-official path and is community territory only. Since August 2026 there is an SAP-published plugin alongside the independent one.","source":{"url":"https://github.com/cap-js/n8n","title":"cap-js/n8n — README","checked":"2026-09-08","quote":"Trigger n8n workflows from CAP applications with `@n8n.process.start` annotations or through the programmatic `n8n` service."}}],"drafted_with_ai":true,"framing_by_ecosystem":{"cap":{"description":"Driving an external workflow or automation engine from a CAP service and reacting to what it emits — triggering runs transactionally and importing the engine’s shape as a typed model."}}},"sap_delivery":{"door":"cap","all":{"built_in":[],"documented_pattern":[],"announced":[],"packages":[{"ref":"artifact:cap-js-n8n","name":"@cap-js/n8n","json":"/artifacts/cap-js-n8n.json"},{"ref":"artifact:cap-js-process","name":"@cap-js/process","json":"/artifacts/cap-js-process.json"},{"ref":"artifact:cap-java-cds-feature-n8n","name":"com.sap.cds:cds-feature-n8n","json":"/artifacts/cap-java-cds-feature-n8n.json"}]},"by_flavor":{"node":{"built_in":[],"documented_pattern":[],"announced":[],"packages":[{"ref":"artifact:cap-js-n8n","name":"@cap-js/n8n","json":"/artifacts/cap-js-n8n.json"},{"ref":"artifact:cap-js-process","name":"@cap-js/process","json":"/artifacts/cap-js-process.json"}]},"java":{"built_in":[],"documented_pattern":[],"announced":[],"packages":[{"ref":"artifact:cap-java-cds-feature-n8n","name":"com.sap.cds:cds-feature-n8n","json":"/artifacts/cap-java-cds-feature-n8n.json"}]}}},"edges":{"use_cases":[],"shared_tasks":[],"related_tasks":[],"options":[{"ref":"artifact:cap-js-n8n","name":"@cap-js/n8n","json":"/artifacts/cap-js-n8n.json","ecosystem":"cap","origin_ring":"sap-official"},{"ref":"artifact:cap-js-process","name":"@cap-js/process","json":"/artifacts/cap-js-process.json","ecosystem":"cap","origin_ring":"sap-official"},{"ref":"artifact:sleibach-cap-n8n","name":"cap-n8n","json":"/artifacts/sleibach-cap-n8n.json","ecosystem":"cap","origin_ring":"independent"},{"ref":"artifact:cap-java-cds-feature-n8n","name":"com.sap.cds:cds-feature-n8n","json":"/artifacts/cap-java-cds-feature-n8n.json","ecosystem":"cap","origin_ring":"sap-official"}],"samples":[],"explained_by":[{"ref":"content:trigger-an-sbpa-workflow-from-cap-with-cap-js-process","name":"Trigger an SAP Build Process Automation Workflow from CAP Using the @cap-js/process Plugin","json":"/content/trigger-an-sbpa-workflow-from-cap-with-cap-js-process.json"},{"ref":"content:sap-build-process-automation","name":"SAP Build Process Automationで「グループ宛て承認ワークフロー」を構築する","json":"/content/sap-build-process-automation.json"},{"ref":"content:workflow-development-using-cap-and-sap-build-process-automation","name":"Workflow development using SAP Cloud Application Programming Model and SAP Build Process Automation","json":"/content/workflow-development-using-cap-and-sap-build-process-automation.json"},{"ref":"content:how-to-approve-reject-task-via-api-in-sap-build-process-automation","name":"How to Approve/Reject Task via API in SAP Build Process Automation","json":"/content/how-to-approve-reject-task-via-api-in-sap-build-process-automation.json"},{"ref":"content:triggering-sap-build-process-automation-processes-from-cap-apps","name":"Triggering SAP Build Process Automation Processes from SAP Cloud Application Programming (CAP) Apps","json":"/content/triggering-sap-build-process-automation-processes-from-cap-apps.json"},{"ref":"content:automate-your-job-postings-using-generative-ai-and-sbpa","name":"Automate your Job Postings Using Generative AI (ChatGPT) & SAP Build Process Automation Apps","json":"/content/automate-your-job-postings-using-generative-ai-and-sbpa.json"},{"ref":"content:a-modern-workflow-for-sap-cloud-integration-with-cap-and-azure-devops","name":"A modern workflow for SAP Cloud Integration with CAP and Azure DevOps","json":"/content/a-modern-workflow-for-sap-cloud-integration-with-cap-and-azure-devops.json"},{"ref":"content:principal-propagation-in-sbpa-actions-with-a-cap-nodejs-service","name":"SAP Build Process Automation – Use Principal Propagation in Actions sample: CAP Node.js Service","json":"/content/principal-propagation-in-sbpa-actions-with-a-cap-nodejs-service.json"},{"ref":"content:consuming-sap-build-apis-with-cloud-sdk-in-a-cap-application","name":"Consuming SAP Build API's made easy with SAP Cloud SDK in your CAP application","json":"/content/consuming-sap-build-apis-with-cloud-sdk-in-a-cap-application.json"},{"ref":"content:extensions-for-sap-build-process-automation-actions-from-cap-nodejs","name":"Extensions for SAP Build Process Automation - Actions from CAP Node.js Service","json":"/content/extensions-for-sap-build-process-automation-actions-from-cap-nodejs.json"}],"normative_context":[]}}