I have read this guide
How to consume a Web Service in Integration Studio - OutSystems How to Guide
Since there is a complex structure I need to receive from other source with limited option on hand, is it possible to build a exposed SOAP with similar step?
Why to not consume through Service Studio?
thank you for your reply.
the structure I need to create to be able to receive xml is complicated, so I was trying to get raw xml.
Can xml below be recognized once received from SOAP?
<custom>
<CustomString name="test">A1234</CustomString>
</custom>
I could get the attribte value with xmlrecord with xml file, but when its a SOAP output parameter it's just empty
Through Integration Studio you've to create an extension in C#. It's what you did already?
sorry, I should be more clear
I have looked into SOAP.API but having a hard time to find a starting point to solve my problem.
Since I'm exposing a SOAP service, it's the opposite situation from the artical I mentioned, and I'm now confused what approach I should take.
Below are my thoughts:
1. Get raw request directly from SOAP service
but the SoapRequest class under SOAP.API is for consuming purpose
2. Pass customize xsd to SOAP service
not sure if it's possible, if not and raw request is also not possible to get, maybe the whole process is automated so I can only access data after SOAP service process it?
I haven't look into System.web.service, will do it tommorow, if I missed anything or if you have any thought about how should I processed please share XD.
Hi,
you can refer to the official OutSystems document to consume a Web Service in Integration Studio.
https://success.outsystems.com/documentation/how_to_guides/integrations/how_to_consume_a_web_service_in_integration_studio/
As Paulo rightly said exposing a SOAP Web Service should be done via Service Studio .Here’s the steps for that. You can refer below document.
https://success.outsystems.com/documentation/11/integration_with_external_systems/soap/exposing_soap_web_services/expose_a_soap_web_service/
Hope it helps
Thanks,
Sriyamini.J
thank you for your reply, but I'm facing a rather different problem, will be happy if you got any suggestion.
Hi @Masami Iwasaki
In your case, if you need raw XML or attributes, do NOT use SOAP in Outsystems.
Use REST or a SOAP-to-REST middleware.
Hi @Masami Iwasaki ,
Have you tried this component to get raw responsehttps://www.outsystems.com/forge/component-overview/427/ardohttp-o11
Hi Masami,
Short answer: you cannot expose or consume SOAP directly from Integration Studio. Integration Studio is meant to build .NET extensions; SOAP Web Services (both consume and expose) are defined in Service Studio.
For your second point, about receiving “raw XML” like:
when you use a Consumed SOAP in Service Studio, OutSystems will try to map that XML into a structure based on the WSDL. During this mapping:
The element text value (A1234) can be mapped to a field.
The XML attribute (name="test") is not exposed as an attribute in the generated structure.
Because of this, when you try to use XmlRecord with the SOAP output parameter, you are not getting the original XML node; you are only getting the value that was already deserialized by the SOAP engine, so XmlRecord appears empty.
If you really need to work with the full XML (including attributes), you have two options:
Change the contract so the SOAP operation returns a string with XML, and in OutSystems treat that output parameter as Text and then parse it with the XML extension (XmlToRecord, XmlElementGetAttribute, etc.).
Or implement a custom extension in Integration Studio that calls the SOAP endpoint using .NET (HttpWebRequest / HttpClient), returns the raw SOAP response as Text to OutSystems, and then you parse that XML in your module.
If you are able to adapt the WSDL so that the complex types are represented with normal elements instead of attributes, Service Studio’s SOAP integration becomes much simpler and you do not need raw XML.
Hope this clarifies why XmlRecord is empty and what the possible approaches are.