SageX3Soap
Description
Section titled “Description”Executes operations in Sage X3 through its SOAP Web Services (CAdxWebServiceXmlCC protocol). Each call includes HTTP Basic Auth and the SOAPAction header required by the Syracuse server.
The node performs double XML validation:
- Before sending — verifies that the input
objectXmlis well-formed XML and does not contain prohibited control characters. - After receiving — detects protocol
SOAP Faultand Sage X3 application-level errors (status != 1in the response).
If either validation fails, the node exits through the error connector with the problem details.
Configuration
Section titled “Configuration”| Field | Type | Required | Description |
|---|---|---|---|
| credentials_id | credentials | Yes | Sage X3 SOAP credential (see below) |
| operation | select | No | SOAP operation: run, read, save, modify, delete, query. Default: run |
| public_name | text | Yes | Name of the web service published in Sage X3 (e.g. YBONIWS) |
| object_xml | textarea | No | Business XML to send (objectXml). If empty, uses data[data_key] or full data |
| data_key | text | No | Field in the previous node’s data that contains the XML to send |
| language | text | No | Language code for callContext (default: ENG) |
| request_config | text | No | Sage X3 response options (default: adxwss.optreturn=JSON&adxwss.beautify=true) |
| timeout | text | No | HTTP request timeout in milliseconds (default: 30000) |
Required Credential
Section titled “Required Credential”Create a credential of type sageX3Soap with the following fields:
| Field | Description | Example |
|---|---|---|
username | Sage X3 user | web |
password | Password | web |
url | Full SOAP endpoint URL | http://server:8124/soap-generic/syracuse/collaboration/syracuse/CAdxWebServiceXmlCC |
pool_alias | Pool alias from Syracuse administration | POOL |
Available Operations
Section titled “Available Operations”| Operation | Description |
|---|---|
run | Execute a Sage X3 subprogram |
read | Read a record by key |
save | Create a new record |
modify | Update an existing record |
delete | Delete a record |
query | Query a list of records |
HTTP Headers Generated
Section titled “HTTP Headers Generated”Content-Type: text/xml; charset=UTF-8Authorization: Basic <base64(username:password)>SOAPAction: "urn:CAdxWebServiceXmlCC#run"The SOAPAction changes automatically based on the selected operation.
Double XML Validation
Section titled “Double XML Validation”Validation 1 — Input
Section titled “Validation 1 — Input”Before building the SOAP Envelope, the node checks the objectXml:
- If empty → valid (operations like
read/querymay not need XML) - If not a string → error
- If it contains XML 1.0 prohibited control characters (
\x00–\x08, etc.) → error - If the XML is malformed (parse failure) → error with description
Validation 2 — Response
Section titled “Validation 2 — Response”After receiving the Sage X3 response:
- Empty response →
EMPTY_RESPONSEerror <soapenv:Fault>in response → error withfaultCodeandfaultStringstatus != 1in Sagereturn→SAGE_STATUS_Nerror with detail
Output
Section titled “Output”Success
Section titled “Success”{ "sage_response": { "status": "success", "result": { "GRP": { "FLD": [ { "@_NAME": "SALFCY", "#text": "SIT" }, { "@_NAME": "BPRNUM", "#text": "CS001" } ] } }, "messages": [] }}The result field contains Sage X3’s resultXml. If request_config includes adxwss.optreturn=JSON, the result is already parsed as a JSON object. Otherwise it is an XML string.
Validation Error or SOAP Fault
Section titled “Validation Error or SOAP Fault”{ "error": { "message": "Sage X3 error [SOAP_FAULT]: The server cannot service the request", "faultCode": "SOAP_FAULT", "faultString": "The server cannot service the request", "detail": null }}Generated SOAP Envelope
Section titled “Generated SOAP Envelope”<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wss="http://www.adonix.com/WSS"> <soapenv:Header/> <soapenv:Body> <wss:run soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <callContext xsi:type="wss:CAdxCallContext"> <codeLang>ENG</codeLang> <poolAlias>POOL</poolAlias> <poolId xsi:nil="true"/> <requestConfig><![CDATA[adxwss.optreturn=JSON&adxwss.beautify=true]]></requestConfig> </callContext> <publicName xsi:type="xsd:string">YBONIWS</publicName> <objectXml xsi:type="xsd:string"><![CDATA[ <PARAM><FLD NAME="SALFCY">SIT</FLD></PARAM> ]]></objectXml> </wss:run> </soapenv:Body></soapenv:Envelope>Usage Examples
Section titled “Usage Examples”Read a Sage X3 customer
Section titled “Read a Sage X3 customer”Node configuration:
{ "credentials_id": "12", "operation": "read", "public_name": "BPCUSTOMER", "object_xml": "<PARAM><GRP ID=\"BPC0\"><FLD NAME=\"BPCNUM\">CS001</FLD></GRP></PARAM>", "language": "ENG", "request_config": "adxwss.optreturn=JSON&adxwss.beautify=true"}Execute a Sage X3 subprogram
Section titled “Execute a Sage X3 subprogram”Node configuration:
{ "credentials_id": "12", "operation": "run", "public_name": "YBONIWS", "data_key": "xml_sage", "language": "ENG"}The XML is read from the xml_sage field of the previous node’s data.
- The
objectXmlis automatically wrapped in<![CDATA[...]]>inside the SOAP Envelope to avoid collision with XML special characters - The WSDL endpoint to inspect the web service schema is:
http://server:port/soap-wsdl/syracuse/collaboration/syracuse/CAdxWebServiceXmlCC?wsdl - If
request_configdoes not includeadxwss.optreturn=JSON, theresultfield will be an XML string that should be processed with theXmlToJsonnode - Sage X3 requires that the event scheduler is enabled in Syracuse to process requests
Related Nodes
Section titled “Related Nodes”- SageCreateDocument — Create a fiscal document in Sage X3 via SQL Server
- XmlToJson — Convert XML response to JSON
- JsonToXml — Build objectXml from a JSON object
- HTTP — Generic HTTP calls with custom headers