Sage X3 SOAP Web Service Request Generator for run, read and save
This generator builds SOAP envelopes for the Sage X3 V7+ generic web service CAdxWebServiceXmlCC: run for a published subprogram, read for an object by key, and save to create an object. It also gives the endpoint and WSDL URLs for an on-premises Syracuse server.
Fill in
Endpoint
POST http://x3web01:8124/soap-generic/syracuse/collaboration/syracuse/CAdxWebServiceXmlCC Content-Type: text/xml; charset=utf-8 SOAPAction: "" Authorization: Basic <base64 of user:password> <!-- WSDL: http://x3web01:8124/soap-wsdl/syracuse/collaboration/syracuse/CAdxWebServiceXmlCC?wsdl -->
run: call a published subprogram
<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 xsi:type="xsd:string">ENG</codeLang>
<poolAlias xsi:type="xsd:string">WSDEMO</poolAlias>
<poolId xsi:type="xsd:string"></poolId>
<requestConfig xsi:type="xsd:string"><![CDATA[adxwss.optreturn=JSON&adxwss.beautify=true]]></requestConfig>
</callContext>
<publicName xsi:type="xsd:string">YGETSTOCK</publicName>
<inputXml xsi:type="xsd:string"><![CDATA[<PARAM><GRP ID="GRP1"><FLD NAME="ITMREF">A100</FLD><FLD NAME="STOFCY">FR011</FLD></GRP></PARAM>]]></inputXml>
</wss:run>
</soapenv:Body>
</soapenv:Envelope>read: one object by key
<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:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wss="http://www.adonix.com/WSS">
<soapenv:Header/>
<soapenv:Body>
<wss:read soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<callContext xsi:type="wss:CAdxCallContext">
<codeLang xsi:type="xsd:string">ENG</codeLang>
<poolAlias xsi:type="xsd:string">WSDEMO</poolAlias>
<poolId xsi:type="xsd:string"></poolId>
<requestConfig xsi:type="xsd:string"><![CDATA[adxwss.optreturn=JSON&adxwss.beautify=true]]></requestConfig>
</callContext>
<publicName xsi:type="xsd:string">YSOH</publicName>
<objectKeys xsi:type="wss:ArrayOfCAdxParamKeyValue" soapenc:arrayType="wss:CAdxParamKeyValue[]">
<key xsi:type="wss:CAdxParamKeyValue">
<key xsi:type="xsd:string">SOHNUM</key>
<value xsi:type="xsd:string">SO-00012</value>
</key>
</objectKeys>
</wss:read>
</soapenv:Body>
</soapenv:Envelope>save: create an object
<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:save soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<callContext xsi:type="wss:CAdxCallContext">
<codeLang xsi:type="xsd:string">ENG</codeLang>
<poolAlias xsi:type="xsd:string">WSDEMO</poolAlias>
<poolId xsi:type="xsd:string"></poolId>
<requestConfig xsi:type="xsd:string"><![CDATA[adxwss.optreturn=JSON&adxwss.beautify=true]]></requestConfig>
</callContext>
<publicName xsi:type="xsd:string">YSOH</publicName>
<objectXml xsi:type="xsd:string"><![CDATA[<PARAM><GRP ID="SOH0_1"><FLD NAME="SALFCY">FR011</FLD><FLD NAME="SOHTYP">SON</FLD><FLD NAME="BPCORD">C001</FLD></GRP><TAB ID="SOH4_1"><LIN><FLD NAME="ITMREF">A100</FLD><FLD NAME="QTY">5</FLD></LIN></TAB></PARAM>]]></objectXml>
</wss:save>
</soapenv:Body>
</soapenv:Envelope>Operation names and parameter order (run: callContext, publicName, inputXml; read: callContext, publicName, objectKeys; save: callContext, publicName, objectXml), the http://www.adonix.com/WSS namespace and the soap-generic endpoint match the CAdxWebServiceXmlCC WSDL and the V12 SOAP help. The GRP, TAB and FLD names in the sample payloads are placeholders: take the real ones from getDescription or the publication in GESAWE. codeUser and password in callContext are deprecated; the user comes from the Syracuse login and the endpoint login map.
Have your web service setup reviewed
Send us your publication, pool settings and a failing request and we will tell you what to change.
Optional. The tool and every export work without this. No spam.
How to use it
Enter the Syracuse host and port, the pool alias of a started web service pool, the language and the publication names. Paste the run, read or save envelope into SoapUI, Postman or your integration code and post it to the endpoint with basic authentication. Start with read on a known key: if that works, pool, user and publication are all correct, and any later problem is in your payload.
- requestConfig adxwss.optreturn=JSON returns resultXml as JSON.
- adxwss.trace.on=on gives verbose traces while you debug.
- Keep the payload inside CDATA so it is not parsed as SOAP.
Where this lives in Sage X3
Publications are created in Development > Utilities > Web services (GESAWE) for objects, subprograms and import templates, and each must be published before it can be called. Pools are configured in Syracuse Administration > Web services; poolAlias in the callContext must match the alias of a started pool. The WSDL at /soap-wsdl/syracuse/collaboration/syracuse/CAdxWebServiceXmlCC?wsdl lists all operations: run, save, delete, read, query, getDescription, modify, actionObject and the line operations.
Worked example
A publication YSOH of the sales order object, read with key SOHNUM = SO-00012, returns status 1 and the order in resultXml, grouped by the publication's GRP and TAB IDs. To create an order, call getDescription on YSOH first to see the exact group and field names, then fill the save payload: header fields in a GRP, lines in a TAB with one LIN per line. A status of 0 means failure; read the messages array for the reason, which is usually a mandatory field or a control in the entry transaction.
Version differences and gotchas
In V6 the callContext carried codeUser and password; from V7 these are ignored and the user comes from the HTTP authentication and the endpoint login map. Send codeLang with a language code that exists in the folder, such as ENG. Pools have a fixed number of channels, so bulk loads should be throttled or the pool sized up. Republish the web service after any change to the object, screen or subprogram, especially after a patch or update.
Frequently Asked Questions
What is CAdxWebServiceXmlCC in Sage X3?
It is the generic SOAP web service of Sage X3 V7 and later, served by Syracuse at /soap-generic/syracuse/collaboration/syracuse/CAdxWebServiceXmlCC. One endpoint handles every publication: you name the publication in publicName and choose the operation, such as run, read, query or save.
What is poolAlias in a Sage X3 SOAP call?
poolAlias is mandatory and must equal the alias of a web service pool configured and started in Syracuse Administration > Web services. The pool holds pre-started X3 sessions for one endpoint, which is how the call reaches the right folder. A wrong or stopped pool gives an error before your publication runs.
How do I pass a key to the Sage X3 read operation?
Use objectKeys, an array of CAdxParamKeyValue items, each with a key element holding the field name and a value element holding its value, for example SOHNUM and SO-00012. For objects with composite keys, add one item per key field in key order.
Can Salesforce integrate with Sage X3 through SOAP?
Yes, usually through middleware that calls CAdxWebServiceXmlCC: read and query publications to sync customers, items and prices, and save on the sales order publication to create orders. Keep Syracuse inside your network, give the integration its own user and pool, and log every request and resultXml.
If you want SOAP and REST calls to Sage X3 wrapped as safe, approved actions for a private AI assistant on your servers, we can set that up.
Related Tools
Sage X3 REST API Query URL Builder (Syracuse api1)
Fill in server, endpoint folder, class, representation and filters to get ready-to-run Sage X3 api1 query and detail URLs with curl and PowerShell examples.
Other ERPsSage X3 4GL (L4G) Syntax and Functions Reference
One searchable table of the Sage X3 V11/V12 4GL keywords developers look up most, with one-line syntax and the gotchas, plus the fstat return values.
Other ERPsSage X3 Import Template Worksheet
An editable import tracker for Sage X3: which object, which import template, source file, records loaded, errors and owner, with error rates calculated.
Other ERPsSage X3 Patch, Syracuse and Version Upgrade Checklist (V11, V12 and Later Releases)
A five-stage checklist for applying a Sage X3 product update or moving V11 to V12 and later releases on-premises, from component inventory to rollback.
More Other ERPs tools
See all- Sage X3 Database Tables Reference
- Sage X3 Maintenance Checklist and Schedule
- Sage X3 Private AI Layer Blueprint Generator
- Sage X3 AI Assistant Sizing and Value Calculator
- Sage X3 Supervisor and Dictionary Tables Reference (ATABLE, ATABZON, ATABDIV, AUTILIS)
- Sage X3 On-Premises License and Maintenance Cost Calculator
- Infor VISUAL Work Order Status and Structure Reference
- Infor VISUAL Manufacturing Scheduling Checklist
- Infor XA (MAPICS) Period End Close Checklist
Keep exploring
Free tools
- Sage X3 Private AI Layer Blueprint GeneratorGenerate an architecture plan for adding a private AI assistant to on-prem Sage X3: SQL replica views, Syracuse SData and web services, retrieval, local GPU model, permissions and audit.
- Sage X3 Import Template WorksheetAn editable import tracker for Sage X3: which object, which import template, source file, records loaded, errors and owner, with error rates calculated.
- Sage X3 Database Tables ReferenceKey Sage X3 tables by module with what they store, typical key columns and naming conventions for SQL and reporting.
ERP fixes and how-tos
- Sage X3 API Documentation: REST (Syracuse), SOAP Web Services and Where to Find DocsSage X3 API options explained: Syracuse REST (SData), SOAP web services and where official documentation lives, plus guidance on choosing and securing access.
- Sage X3 AI Integration On-Prem: A Private ArchitectureHow to add a private AI assistant to on-prem Sage X3: SQL read replica, Syracuse SData and web services, retrieval index, local GPU model and audit trail.
- Sage X3 REST API: Reading Sales Orders Through SyracuseHow to call the Sage X3 REST API through Syracuse: URL pattern, endpoint and representation, authentication, filtering with where, paging, and common 401 and 404 causes.
AI on your ERP
- AI for Sage X3 Purchasing and Stock: Orders, Receipts and LotsAI for Sage X3 purchasing and stock: PO review, supplier delivery analysis, stock status and lot questions over X3 data using GraphQL, SOAP and private models.
- AI for Sage X3, Grounded in Your Own Ledgers and Stock DataAdd AI to Sage X3 finance and stock data without exporting it to a public model. On-prem and private-cloud LLMs for Sage X3 in the UK and France.
Integrations
- How to add AI agents to Sage X3How to add AI agents to Sage X3: a tool layer over SData and web services, read-first design, human approval on writes, and on-prem models for MRP and POs.
- How to add WhatsApp to Sage X3How to connect WhatsApp Business to Sage X3: order status, delivery alerts and approvals, with replies posted back through X3 web services. On-prem friendly.