Skip to content

SageX3Soap

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:

  1. Before sending — verifies that the input objectXml is well-formed XML and does not contain prohibited control characters.
  2. After receiving — detects protocol SOAP Fault and Sage X3 application-level errors (status != 1 in the response).

If either validation fails, the node exits through the error connector with the problem details.

FieldTypeRequiredDescription
credentials_idcredentialsYesSage X3 SOAP credential (see below)
operationselectNoSOAP operation: run, read, save, modify, delete, query. Default: run
public_nametextYesName of the web service published in Sage X3 (e.g. YBONIWS)
object_xmltextareaNoBusiness XML to send (objectXml). If empty, uses data[data_key] or full data
data_keytextNoField in the previous node’s data that contains the XML to send
languagetextNoLanguage code for callContext (default: ENG)
request_configtextNoSage X3 response options (default: adxwss.optreturn=JSON&adxwss.beautify=true)
timeouttextNoHTTP request timeout in milliseconds (default: 30000)

Create a credential of type sageX3Soap with the following fields:

FieldDescriptionExample
usernameSage X3 userweb
passwordPasswordweb
urlFull SOAP endpoint URLhttp://server:8124/soap-generic/syracuse/collaboration/syracuse/CAdxWebServiceXmlCC
pool_aliasPool alias from Syracuse administrationPOOL
OperationDescription
runExecute a Sage X3 subprogram
readRead a record by key
saveCreate a new record
modifyUpdate an existing record
deleteDelete a record
queryQuery a list of records
Content-Type: text/xml; charset=UTF-8
Authorization: Basic <base64(username:password)>
SOAPAction: "urn:CAdxWebServiceXmlCC#run"

The SOAPAction changes automatically based on the selected operation.

Before building the SOAP Envelope, the node checks the objectXml:

  • If empty → valid (operations like read/query may 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

After receiving the Sage X3 response:

  • Empty response → EMPTY_RESPONSE error
  • <soapenv:Fault> in response → error with faultCode and faultString
  • status != 1 in Sage return → SAGE_STATUS_N error with detail
{
"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.

{
"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
}
}
<?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>

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"
}

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 objectXml is 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_config does not include adxwss.optreturn=JSON, the result field will be an XML string that should be processed with the XmlToJson node
  • Sage X3 requires that the event scheduler is enabled in Syracuse to process requests
  • 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