Release v0.0.56
Overview
This release promotes SoapTask to a first-class task type (Type 16) for calling SOAP 1.1 / 1.2 web services directly from a workflow, closing the #647 investigation into whether SOAP integration could be handled by the existing HttpTask. The conclusion: a dedicated abstraction is warranted because SOAP envelopes need raw-XML body handling, a SOAPAction header, and the ability to treat HTTP 500 SOAP Faults as inspectable business responses.
Features
SoapTask — dedicated SOAP 1.1 / 1.2 task type (Type 16)
HttpTask could technically reach a SOAP endpoint, but it could not cleanly model the SOAP envelope, the SOAPAction header convention, or SOAP Fault responses that arrive over HTTP 500. SoapTask makes these first-class. Unlike HttpTask, the request body is stored as a raw XML string so SOAP envelope templates survive untouched.
Minimal definition:
{
"key": "get-customer-soap",
"version": "1.0.0",
"domain": "core",
"flow": "sys-tasks",
"flowVersion": "1.0.0",
"tags": ["soap"],
"attributes": {
"type": "16",
"config": {
"url": "https://api.example.com/services/CustomerService",
"soapAction": "http://example.com/GetCustomer",
"soapVersion": "1.1",
"acceptedStatusCodes": ["500"]
}
}
}
Configuration fields:
| Field | Required | Default | Description |
|---|---|---|---|
url | Yes | — | Target SOAP endpoint URL |
soapAction | Yes | — | SOAPAction value |
soapVersion | No | "1.1" | "1.1" or "1.2" |
body | No | null | SOAP envelope template as a raw XML string |
headers | No | null | Additional HTTP headers |
timeoutSeconds | No | 30 | Request timeout |
validateSsl | No | true | Server SSL certificate validation |
acceptedStatusCodes | No | — | HTTP error codes treated as success (e.g. ["500"] for SOAP Fault pass-through) |
Why acceptedStatusCodes: ["500"] matters: SOAP services typically return a SOAP Fault over HTTP 500. Without this setting the task is considered failed and the error boundary fires; with it, the response reaches OutputHandler so the fault can be inspected and handled inside the mapping script.
Mapping API on SoapTask:
| Method | Description |
|---|---|
SetUrl(string) | Override the target URL |
SetBody(string?) | Set body from a raw XML string |
SetBody(XmlDocument?) | Set body from XmlDocument.OuterXml |
SetSoapAction(string) | Override the SOAPAction value |
SetHeaders(Dictionary<string, string?>) | Replace all headers |
AddHeader(string, string?) | Add or update a single header |
RemoveHeader(string) | Remove a single header |
The task response Data field contains the raw XML string returned by the service. See the SOAP Task reference for the full contract.
Configuration Updates
Configuration for v0.0.56:
{
"runtimeVersion": "0.0.56",
"schemaVersion": "0.0.42"
}
Note: Schema version 0.0.42 is unchanged from v0.0.54 / v0.0.55.
Container images: all services published at tag 0.0.56 under ghcr.io/burgan-tech/vnext/* (execution, orchestrator, init, inbox, outbox, db-migrator), signed with Cosign and shipped with SBOM + provenance.
Issues Referenced
- vnext #647 — Evaluate SOAP integration via
HttpTaskand add a dedicatedSoapTaskif needed → resolved by addingSoapTask(Type16).
Summary
- SoapTask (Type
16) enables direct SOAP 1.1 / 1.2 web service integration without a separate adapter layer. - Request body is a raw XML string;
soapActionandsoapVersionmodel the SOAP envelope convention. acceptedStatusCodes: ["500"]routes HTTP 500 SOAP Faults throughOutputHandlerfor inspection in the mapping script.- Full mapping API (
SetUrl,SetBody,SetSoapAction,AddHeader, …) is available on theSoapTaskclass.
vNext Runtime Platform Team
Released May 20, 2026
