Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
mandy_krimmel
Advisor
Advisor
This blog describes how to use Web Services Description Language files (in short: WSDLs) in the SOAP adapter. It also explains how to upload WSDLs with external references in the resource view and use them in the SOAP adapter.

Usage of WSDL Files in the SOAP Adapter


You can configure the SOAP adapters with or without WSDL. In most of the cases, scenarios do not require a WSDL in the SOAP channel. A WSDL is only important if you want to configure web service security policies. You can also use WSDLs with external references, like for example XSDs.

Note the following important recommendations and constraints:

  • Recommendation is to only use a WSDL if really required for configuring specific web service security policies. For most scenarios no WSDL is required.

  • Do not use remote WSDLs because the remote WSDL is read during startup of the integration flow. If the remote WSDL is not accessible the integration flow cannot be started. Recommendation is to either not use a WSDL at all (see above) or download it and add it directly to the integration flow as described in this blog..

  • WSDL Download does not support External References: In the SOAP Sender channel WSDLs with external references can be used, but the WSDL download cannot parse them. This means you can use such WSDLs for runtime execution but if you want to download the WSDL with the generated endpoint to provide it to the service consumer you need to resolve the references in the WSDL and add the schema definition from XSD directly into the WSDL.

  • Do not use WSDLs with Blanks: It is not recommended to use WSDL names or directories with blanks. This may lead to issues in the runtime if the WSDL has external references.


  • WSDLs with External References are now also allowed in Message Mapping: See help chapter Creating Message Mapping.


There are different options how to upload the WSDL and XSD files and how to configure them in the different SOAP channels. This blog first describes the general upload and configuration options in the SOAP sender and receiver channels and afterwards provides additional details about special restrictions in the different SOAP adapters.

Upload the WSDL in SOAP Channel


The easiest way to upload a single WSDL file is to use the upload dialog directly in the SOAP adapter configuration. In the SOAP adapter channel select the Connection tab and there use the Select button for the URL to WSDL field:



The Select WSDL Resource dialog opens. Select Upload from File System at the very bottom of the dialog to open the file browser. Select the WSDL from your local file system and upload it.



If multiple operations are available in the WSDL you need to select the one you want to use in the channel in the WSDL selection dialog.



Note that when configuring a SOAP receiver channel you need to have at least one service defined in the WSDL. For the SOAP sender this is not necessary because there the runtime WSDL is generated by Cloud Integration. More details about specific behavior of SOAP sender and receiver below.

During the upload the WSDL is parsed; the fields URL to WSDL, Service, Endpoint and Operation Name are filled automatically based on the content of the WSDL.



In the fields Service, Endpoint and Operation Name a namespace prefix is defined before the actual value. This prefix with the namespace from the WSDL is automatically added to the namespace definitions in the integration flow. This setting can be found in the Runtime Configuration tab in the integration flow in field Namespace Mapping:



The upload imports the WSDL into the wsdl folder of the Schemas section in the Resources view. Verify this by selecting the Resources tab in the integration flow and expanding the Schemas section. You can find the uploaded WSDL there. In the tooltip the complete Access path is shown. You notice that the WSDL is present in the wsdl folder. The Access path is the parameter that is to be specified in the URL to WSDL field in the SOAP adapter (which is set automatically when selecting the WSDL from the file system). You can use it with or without / at the beginning, both is accepted.



If you want to upload the WSDL again, for example after you have done some changes, you can use the same upload option in the SOAP channel. The WSDL is then overwritten during upload.

 

Upload the WSDL in Resources View


The second option to upload WSDL files is to use the Resources view. In this view you can upload single WSDL files and archives having WSDL files with external references together with the referenced files.

Upload Single WSDL in Resources View


Using the Resources view, you can upload single WSDL files. To upload a WSDL, open the integration flow in edit mode and select the Resources view. In the right upper corner select Add --> Schema --> WSDL.



The Add WSDL dialog opens. To upload the WSDL from your local file system select File System as Source and browse for the WSDL. Select Add at the bottom to start the upload. A success message indicates that the WSDL was uploaded successfully.



The uploaded WSDL appears under the Schemas section in the Resources view showing the Access path in the tooltip.


Upload an Archive Containing WSDL and Referenced Files in Resources View


Besides uploading single WSDL files you can also upload archives In the Resources view - for example, when you like to upload WSDL files together with all external resources referenced in the WSDL.

Because all files have to be uploaded in an archive, you first need to wrap (zip) all WSDL and XSD files to an archive.

1. Option: All XSDs/WSDLs are Located in the wsdl Folder


All WSDL and XSD files can be stored directly in the wsdl folder. In the SOAP receiver adapter this is currently the only supported option if you want to use WSDL files with external references. For this you need to wrap all files in a zip file containing all files without any folder structures:



Important Remark:

You need to make sure the import and/or include statements in the WSDL are correctly defined. Best practice is to use relative paths. This means that the path is defined relative to the location of the WSDL or schema where it is included or imported. In the above example this means that the referenced XSD files that are contained in the wsdl folder as well, have to be referenced in the WSDL like this:



Important Remark:

With the 28-October release of Cloud Integration, also the SOAP receiver is supporting WSDL and XSD files in subfolders (see option 2).

2. Option: XSDs/WSDLs are Located in Subfolders of the wsdl Folder


For the SOAP sender and the with the 28-October update also the SOAP receiver the archive can also have subfolders containing the referenced WSDLs and/or XSDs:



Important remark:

You need to make sure the import and/or include statements in the WSDL are correctly defined. Best practice is to use relative paths. This means that the path is defined relative to the location of the WSDL or schema where it is included or imported. In the above example this means that the referenced XSD files that are contained in the xsd subfolder, have to be referenced in the WSDL like this:



In this example, the included schema “empleado.xsd” is itself importing further schemas that also reside in the xsd subfolder. Therefore, those import statements also have to be relative to the importing schema. As all XSDs are located in the same folder the xsd folder must not be mentioned in the import statements in the “empleado.xsd”.


Upload the Archive in Resource View


To upload an archive containing the WSDL file and the referenced files, for example XSDs, open the integration flow in edit mode and select the Resources view. In the right upper corner select Add --> Schema --> WSDL.



The Add WSDL dialog opens. To upload the archive from your local file system, select File System as Source and browse for the archive file. Select Add at the bottom to start the upload. A success message indicates that the archive was uploaded successfully.



All WSDL and XSD files are uploaded to the Schema section into the wsdl folder in the Resources view because the upload was triggered using the Add --> Schema --> WSDL action. When checking the Access path shown in the tooltip, you notice that the folders from the archive (in this case the xsd folder) are created below the wsdl folder.


Select the WSDL in the SOAP Channel


After you have uploaded the WSDL with or without referenced files in the Resources view you can use it in the SOAP channel.

Open the SOAP sender or receiver channel and select the Connection tab. There, use the Select button for the URL to WSDL field to open the WSDL selection dialog:



The Select WSDL Resource dialog opens. From the list of WSDLs contained in the integration flow select the one required for the channel.



If multiple operations are available in the WSDL you need to select the one you want to use in the channel in a second selection screen.



Note that in the SOAP receiver you need to have at least one service defined in the WSDL. In the SOAP sender this is not necessary because there the runtime WSDL is generated by Cloud Integration. More details about the SOAP sender and receiver below.

During the selection of the WSDL the WSDL is parsed; the fields URL to WSDL, Service, Endpoint and Operation Name are filled automatically from the WSDL.



In the fields Service, Endpoint and Operation Name a namespace prefix is defined before the actual value. This prefix with the namespace from the WSDL is automatically added to the namespace definitions in the integration flow. You can find this namespace definition in the Runtime Configuration tab in the integration flow in field Namespace Mapping:



Important Remark:

With the 25-November-2018 updates of Cloud Integration, the WSDL configured in the SOAP channel can also reside in a subfolder of the WSDL folder.

With this update, the WSDL selection dialog shows all WSDL files contained in the wsdl folder and in the subfolders of the wsdl folder. If the WSDL resides in a subfolder of the wsdl folder the subfolder is shown as well:



Special Considerations for the Different SOAP Adapters


The different SOAP adapters have slightly different requirements for the used WSDLs. This is described in this section.

WSDL Usage in SOAP 1.x Receiver Adapter


The SOAP 1.x receiver adapter requires a service and port defined in the WSDL, because this is the service definition that is used at runtime.

If you use the WSDL selection dialog for a WSDL without service and port, the port selection dialog shows the message 'No resource available'.



To solve this problem, define a service and port in the WSDL. Usually the WSDL is provided by the service backend and already contains this information, but it can also be added manually in the WSDL.

As mentioned above, WSDL and referenced XSD files have to be located in the wsdl folder directly, no subfolders are supported before the 28-October release.

With the 28-October release of Cloud Integration, also the SOAP receiver is supporting WSDL and XSD files in subfolders. With the 25-November-2018 update, the WSDL defined in the SOAP channel can either reside directly in the wsdl folder or in a subfolder, before the update, the WSDL had to reside in the wsdl folder directly.

Important Remark: No WSRM policies allowed!

The SOAP 1.x adapter does not support WSRM. Make sure the used WSDL does not contain such policies or use the adapter without WSDL. With the update on 6th of January a check is introduced raising an error in case WSRM is defined in the WSDL.

WSDL Usage in SOAP 1.x Sender Adapter


The SOAP 1.x sender adapter does not need a service and port defined in the WSDL, because in this case Cloud Integration is the service provider and generates its own runtime WSDL based on the content of the WSDL (if configured) and the definitions in the SOAP sender channel. But if service and port are defined in the WSDL, they are used.

This means that the WSDL selection dialog supports both options. If service and port are defined in the WSDL, those values are taken over into the fields Service and Endpoint together with a namespace definition:



If no service and port are defined in the WSDL those two fields are not filled:



During deployment of the integration flow the runtime WSDL is generated based on the content of the configured WSDL and the settings configured in the channel. Policies, that are contained in the configured WSDL are removed and substituted with Cloud Integration policies.

Important Remark: No WSRM supported!

The SOAP 1.x adapter does not support WSRM. If the used WSDL contains WSRM policies they are removed automatically during runtime WSDL generation.

WSDL Download


This WSDL can be downloaded from the Manage Integration Content monitor in the Monitoring cockpit. In the Manage Integration Content monitor select the integration flow to get its details. In the Endpoints section you find the option to download the WSDL. This is the generated runtime WSDL which can be provided to the consumer of the service. It contains the service description including the URL under which the integration flow can be called.



Note! The WSDL download cannot parse WSDLs with external references. This means you can use WSDLs with external referenced for runtime execution but if you want to download the WSDL with the generated endpoint to provide it to the service consumer you need to resolve the references in the WSDL and add the schema definition from XSD directly into the WSDL. Or the consumer has to be configured without the generated WSDL.

WSDL Usage in SOAP SAP RM Receiver Adapter


Like the SOAP 1.x receiver adapter the SOAP SAP RM receiver adapter requires a service and port defined in the WSDL, because this is the service definition that is used at runtime.

If you use the WSDL selection dialog for a WSDL without service and port the port selection dialog shows the message 'No resource available'.



To solve this problem, define a service and port in the WSDL. Usually the WSDL is provided by the service backend and already contains those information, but it can also be added manually in the WSDL.

Because the SAP RM protocol is an asynchronous protocol, the SOAP SAP RM sender and receiver adapters only support one-way WSDLs. This means the service definition in the WSDL must not have an output tag, but only an Input tag:

Correct asynchronous one-way service definition:



A synchronous service definition with input and output is not supported:



If you try to use a WSDL with a request-reply service definition, you get an error indicating that this is not supported:



Important Remark:

With the 5th-August-2018 update of Cloud Integration, the WSDL selection screen in the SAP RM receiver adapter only shows the one-way operations. This means, if only request-reply operations are defined in the WSDL the port selection screen provides an empty list. Before the 5th-August-2018 update, also the request-reply operations were shown and taken over, but upon saving the above error is given.

Important Remark:

With the 28-October release of Cloud Integration, also the SAP RM receiver is supporting WSDL and XSD files in subfolders. With the 25-November-2018 update, the WSDL defined in the SAP RM channel can either reside directly in the wsdl folder or in a subfolder, before the update, the WSDL had to reside in the wsdl folder directly.

Important Remark: No WSRM policies allowed!

The SAP RM adapter does not support WSRM. If the used WSDL contains WSRM policies an error is raised. You need to remove the WSRM policies from the WSDL or use the adapter without WSDL.

WSDL Usage in SOAP SAP RM Sender Adapter


The SOAP SAP RM sender adapter does not need a service and port defined in the WSDL, because in this case Cloud Integration is the service provider and generates it's own runtime WSDL based on the WSDL (if configured) and the definitions in the SAP RM sender channel. But if service and port are defined in the WSDL, they are taken.

Because the SAP RM protocol is an asynchronous protocol, the SOAP SAP RM sender and receiver adapters only support one-way WSDLs. This means the service definition in the WSDL must be for an one-way operation, it must not have an output tag, but only an Input tag:

Correct asynchronous one-way service definition:



A synchronous service definition with input and output is not supported in SAP RM adapter:



If you try to use a WSDL with a request-reply service definition, you get an error indicating that this is not supported:



During deployment of the integration flow the runtime WSDL is generated based on the content of the configured WSDL and the settings configured in the channel. Policies, that are contained in the configured WSDL are removed and substituted with Cloud Integration policies.

WSDL Download


This WSDL can be downloaded from the Manage Integration Content monitor in the Monitoring cockpit. In the Manage Integration Content monitor select the integration flow to get its details. In the Endpoints section you find the option to download the WSDL. This is the generated runtime WSDL which can be provided to the consumer of the service. It contains the service description including the URL under which the integration flow can be called.



Note! The WSDL download cannot parse WSDLs with external references. This means you can use WSDLs with external referenced for runtime execution but if you want to download the WSDL with the generated endpoint you need to resolve the references in the WSDL and add the schema definition from XSD directly into the WSDL. Or the consumer has to be configured without the generated WSDL.

Important Remark: No WSRM supported!

The SAP RM adapter does not support WSRM. If the used WSDL contains WSRM policies they are removed automatically during runtime WSDL generation.
38 Comments
0 Kudos
Hello Mandy,

Thanks fot this blog, it clarified the problems I was having to the extent that I could solve them. My SOAP service is now working?

Quick question: My current WSDL has the XSD schema inside of it. I would like to be able to run the XML validator at the start of my iFlow. If I understand that part of your blog correctly, I have to seperate the XSD from the WSDL, add both into a ZIP and upload the ZIP file as WSDL schema. Then I will be able to select my XSD seperatly in the XML Validator.
- Am I correct?
mandy_krimmel
Advisor
Advisor
0 Kudos

 

Hello Ivo,

as the XML validator needs an XSD for validation you need to extract it. This is correct. But the XML validator expects the XSD in the xsd folder. You have now two options:

The easiest way would be to keep the WSDL as is (with schema inside the WSDL) for using in the SOAP adapter and upload the extracted XSD as XSD schema into the xsd folder.

Another option is to create a zip containing WSDL and referenced XSD. Upload this zip using the WSDL upload. This uploads WSDL and XSD into the wsdl folder. The WSDL can then be used in the SOAP adapter. Unfortunately the XSDs in the WSDL folder can currently not be used in the XML Validator. So you would have to upload the extracted XSD separately as XSD schema into xsd folder anyway.

Best regards,

Mandy

0 Kudos
Hi Mandy,

 

Thanks for your reply. Too bad this is not (yet) possible. Your solution is a good workaround, I will just have to keep in mind to update the XSD when I update the schema in WSDL and vice versa.

 

Kr.

Ivo
RichiKleibl
Advisor
Advisor
0 Kudos
Hi Kimmy,

 

this was exactly the information I required. Thanks a lot!
michal_ceresna
Discoverer
0 Kudos
Hello,

Thanks for this blog.

I have one question regarding sentence in WSDL Usage in SOAP 1.x Sender Adapter:

"During deployment of the integration flow the runtime WSDL is generated based on the content of the configured WSDL and the settings configured in the channel. Policies, that are contained in the configured WSDL are removed and substituted with Cloud Integration policies."

In my case I tried to import WSDL generated from SAP PI Sender Agreement and then in Cloud Integration SOAP channel configuration I configured WSS Security manually. New Cloud provided URL was generated in WSDLs. However I have trouble with the policies. Manually configured policies are not contained in generated WSDLs.

Is there something that the imported WSDL should (or should not) fulfill in order to get these Cloud integration policies working?

Best regards

Michal
mandy_krimmel
Advisor
Advisor
 

Hello Michal,

the SOAP sender does not allow the WSS setting from WSDL, only the manual configuration in channel is allowed. And for this configuration the policies are generated into the WSDL.

There currently is a small bug in the WSDL download that does return an incorrect WSDL, maybe this is the problem. Please do the following: go to Deployed Artifacts view in monitor and download your deployed integration flow. Open the downloaded archive and check out the WSDL contained in the folder sapruntimewsdl. Please check if the policies are contained there. We are currently fixing the WSDL download issue so that this runtime WSDL is downloaded again.

Best regards,

Mandy
michal_ceresna
Discoverer
0 Kudos
Hello Mandy,

 

thanks for help, this works. I have found the policies in WSDL located in the folder sapruntimewsdl inside downloaded iFlow.

Best regards

Michal
former_member247535
Discoverer
0 Kudos
HI Mandy,

 

May i know the role to download wsdl from the Mange integration content.

 

I am getting 403 forbidden error.

 

Thanks,

Sreenivasa
mandy_krimmel
Advisor
Advisor
0 Kudos
Hello,

usually single role NodeManager.read should be sufficient which is contained in all group roles. Which group role are you assigned to?

BR,

Mandy

 
former_member247535
Discoverer
0 Kudos
IntegrationDeveloper Role Mandy
mandy_krimmel
Advisor
Advisor
0 Kudos
And you connect with the same user also to the WSDL download? In general this should work.

As the single role is part of this group role.

Can you again confirm that you use the same user for the WebUi and the WSDL download?

Best regards,

Mandy
mandy_krimmel
Advisor
Advisor
0 Kudos
Could you please open a ticket on LOD-HCI-PI-OP-SRV if you have the role and it still does not work?

Thank you,

Mandy
andrejabrantes
Newcomer
0 Kudos

Hi Mandy,

Thank you for the post. I’m trying to create a message mapping between a XSD file to a WSDL file, but when try do upload the WSDL, this messagem appears “No global element was found in the schema file”. I’m trying all the options you describe above, but all have failed. Can you help me with this problem? Link for my wsdl https://www.ahgora.com.br/ws/pontoweb.php?wsdl

mandy_krimmel
Advisor
Advisor
0 Kudos
Hello,

the problem is that there is no root element in this WSDL. To use a WSDL in the mapping the wsdl needs a root element.

Best regards,

Mandy
former_member188458
Active Participant
0 Kudos

Hi Mandy,

 

Thanks for the details in blog. Can you pls help me with an issue I am facing in my CPI iflow.

I am using SOAP 1.X adaptor with Proxy-type : On Premise , with Basic authentication , to call SOAP Inbound API – ExchangeRateCreateRequestConfirmation_In to S4 on HEC. I tried both options:

 

  1.  With wsdl : Initally I got below error  in sRT_UTIL –

     PolicyException:Assertion of type HttpsToken could not be asserted: Not an HTTPs connection

    I followed note – 2573685 ; to remove the https token policy section everywhere(<sp:HttpsToken>
              <wsp:Policy>
               <sp:HttpBasicAuthentication/>
              </wsp:Policy>
             </sp:HttpsToken>)

    Removing https policy from wsdl removed above error , but now i am getting another error below

    Message "ExchangeRateCreateRequest_sync{}" not supported (interface: "ECC_EXCHGRATECRTRC" binding key: "000D3AF3B92B1EEAA0C08DDD9C99AD49")

 

SO i tried note – 2818078 , deleted and re-created binding in SOAMANAGER or running SRT_DT_ADJUST_CONFIG report to update config , but i am still getting the error.

When I run above report however i am getting below log 

Design Time Object: 'ECC_EXCHGRATECRTRC' (type: SD)

Processing configuration 'ZEXCHRATECREATE' (Config key: '000D3AF3B92B1EEAA0C08DDD9C994D49')

Configuration 'ZEXCHRATECREATE' is up-to-date. No changes needed.

 

I noticed the Config key - 000D3AF3B92B1EEAA0C08DDD9C994D49 ( log from running report above) and Binding key - 000D3AF3B92B1EEAA0C08DDD9C99AD49 ( from SRT_UTIL log) are different

 Not sure if this is the issue and how can it be fixed

2. Without using wsdl –

Get same error as 2nd error above i.e.

Message "ExchangeRateCreateRequest_sync{}" not supported (interface: "ECC_EXCHGRATECRTRC" binding key: "000D3AF3B92B1EEAA0C08DDD9C99AD49")

 

Would appreciate any help or pointer on this.

 

Thanks,

Rini

former_member188458
Active Participant
0 Kudos
Got a resolution  myself 🙂 was an issue with expect mssg Body from CPI. Pasting example of wokring xml for others facing similar issue

 

Working XML :


FIRST TAG & namespace in 2nd tag is MOST IMPORTANT


<?xml version="1.0" encoding="UTF-8"?>    


  <urn:ZTEST_PROXY  xmlns:urn="urn:sap-com:document:sap:rfc:functions">


         <IV_PAR1>2</IV_PAR1>


         <IV_PAR2>3</IV_PAR2>


      </urn:ZTEST_PROXY>

torbjornroberts
Explorer
0 Kudos
Hi Mandy

We are using the SAP IAS when our Developers work with the IntegrationSuite.

But we are unable to use the IAS Account when we want to download the WSDL of the Adapter.

It looks like it forces us to use the SAP IdentityProvider account (same credentials as we have for eg launchpad.support.sap.com site)

Do you know when this is going to be possible to do for the Customers moving into the SAP IAS solution 🙂

/Tobbe
mandy_krimmel
Advisor
Advisor
I have seen that you already opened a ticket for this issue. Let us check the answer by the experts.

Thank you,

Mandy
jalvarezms
Explorer
0 Kudos
Hi

Thank you very much for the information shared in this blog

I have a particular case, I am migrating to Cloud Foundry some integration artifacts that establish SOAP adapters. I need to use OAuth2 authentication to consume the services. I already have the credentials but the services do not work for me with this authentication

what i can do?
mandy_krimmel
Advisor
Advisor
0 Kudos
Hello

I'm not entirely understanding your scenario. You have integration flows having SOAP sender adapters and want to call them in CF environment with OAuth2 authentication?

Then I would ask you to check out the configuration described in the help documentation how to setup OAuth2 Authentication in CF: Setting Up OAuth Inbound Authentication with Client Credentials Grant, Cloud Foundry Environment - S...

The setup for this is different to Neo.

Best regards

Mandy
Jay_Bhambhani
Explorer
0 Kudos
Hey Mandy,

Thanks for this blog. I am connecting SAP BYD with CPI.

iflow :- HTTP POST request from postman and receiver is BYD using SOAP 1.X receiver adapter. I have uploaded WSDL in BYD adapter. I am unable to workout the scenario and I am getting following error
"An internal server error occured: The PayLoad elements cannot fit with the message parts of the BindingOperation. Please check the BindingOperation and PayLoadMessage."

(FYI, when I am using this WSDL file in SOAPUI app to POST/ create via this WSDL I am able to do so )

Can you help me on this?

 

Thanks

Jay
mandy_krimmel
Advisor
Advisor
0 Kudos
Hello,

what do you mean with BYD Adapter? Where exactly do you get the error? During upload or in runtime? Sounds like the payload you sent does not fit to the WSDL in the adapter.

Best regards

Mandy
Jay_Bhambhani
Explorer
0 Kudos
Thank you for your reply.

Sorry, I meant, I have uploaded WSDL file in SOAP adapter. I am getting error at runtime while executing SOAP request.


Iflow


 

 


Postman HTTP Post request


 

 


same payload works using SoapUI (same WSDL file)


 

I have checked that I am receiving correct payload in SOAP adapter using trace log.

 

Regards

Jay
mandy_krimmel
Advisor
Advisor
Hello,

as said I think your SOAP message does not fit to the WSDL. This I cannot check from the pure screenshots. Please check this again.

If you need help to check this I would suggest to open a ticket on LOD-HCI-PI-CON-SOAP. Please attach the integration flow and the payload and the reference to an message processing log.

Then the experts can have a look.

Best regards

Mandy
Richard71
Discoverer
0 Kudos
Hi Mandy,

 

Thanks for your blog. I had a stable "SOAP connection" until recently. Suddenly I'm receiving this:


This is a connection between SAP ECP and CPI, but I get the error also from Postman/Insomnia/SOAPUI.

Do you have any idea how to solve this?

 

Thanks.

 

Richard

 
mandy_krimmel
Advisor
Advisor
0 Kudos
Hello Richard,

Was there any change in the integration flow done? Please check the deploy time.

This sounds as if something in the WSDL in the sender adapter changed? How is the WSDL referenced? Via uploaded WSDL in the integration flow?

BR

Mandy
Richard71
Discoverer
0 Kudos
Hello Mandy,

Thanks for your reply. The problem was just on one (developer/acceptance) machine, not on production. All SOAP related flows from ECP -> CPI were affected and not working anymore. The same calls from SOAPUI/Postman also gave the error from my original post. We use "Manual" as the service definition in the adapter. At least one of the flows was last deployed in June 2021.

But since yesterday, suddenly all these flows are working again. I don't have any idea what happened.

With kind regards,

Richard
mandy_krimmel
Advisor
Advisor
0 Kudos

hard to say what was the issue. I would suggest you create a ticket if you want to understand the issue. An expert would need to have a look.

Maybe something changed in the sender backend?

Best regards

Mandy

rvanhoof
Explorer
0 Kudos
Hi Mandy,

 

Thank you for this helpful blog post.

I was wondering if the SOAP adapter is able to handle the SAML Holder of Key mechanism. I am currently able to fetch a SAML token/RequestSecurityTokenResponse from a token service using a SOAP adapter:


 

However, the problem I'm facing now is that I don't know how to send this SAML token along with subsequent requests to the actual service I'd like to call. I do have a valid WSDL file of this service containing a set of policies, so I initially thought that by creating a second SOAP adapter and setting the WS-Security configuration in this SOAP adapter to "Based on policies in WSDL", a new field would become visible where I could reference this SAML token from the properties or headers, for example. My current iFlow looks like this:


WS-Security settings:


Relevant policy defined in the used WSDL file for the service I'd like to call:


 

Kind regards,

 

Robin
mandy_krimmel
Advisor
Advisor
0 Kudos
Hello Robin,

this is not easy to answer. If this is possible would need to be checked in detail by our SOAP adapter experts. I would suggest to open a ticket on LOD-HCI-PI-CON-SOAP with the complete use case description, integration flow, WSDL, specifications (if available) and all the details you have. Our experts will then have a look.

Best regards

Mandy
rvanhoof
Explorer
0 Kudos
Hi Mandy,

Thanks for your response. I have opened a ticket on LOD-HCI-PI-CON-SOAP in the meantime where I initially asked for help with fetching the SAML token. The response from the technical expert was that I would be able to achieve "any WS Security configuration by providing a WSDL file that contains WS security policies". Based on that, I am now trying to use the same method with the second call. In the ticket, I explained the issue like I did in my comment above including all relevant information, but I just get referred back to this blog post. So I'm kind of being led in a circle here.

 
mandy_krimmel
Advisor
Advisor
0 Kudos
Hello Robin,

I would suggest you sent the ticket back to SAP and tell that you are not able to get it run with the guidance provided and with the blog as this does not give the necessary details for this specific use case. Probably the ticket needs to be forwarded to the development support. Probably it even needs to be treated as new development request.

Best regards

Mandy

 
rvanhoof
Explorer
0 Kudos
Hi Mandy,

I received the confirmation from SAP support that this feature (referencing SAML tokens in the WS-Security settings of the SOAP adapter) is indeed currently not supported.

I managed to generate a correct SOAP message, including the SAML assertion, using Groovy and the standard Java crypto libraries.

Best regards,

Robin
0 Kudos
Hi Mandy,

In our case we are using a WSDL with multiple operations(50+), do we need to create a separate channel for each operation . Is there any way out to create a single channel which takes the dynamic operation name as we don't want to create a separate channel for each operation

 

Thanks,
mandy_krimmel
Advisor
Advisor
0 Kudos
Hello,

if possible I would suggest to not use a WSDL in the channel at all and use the channel generically for all operations. See the very first recommendation in this blog.

Best regards

Mandy
rupertc
Explorer
0 Kudos
Hi Mandy,

Nice blog.

I have a question about Downloading WSDL that is assigned to my soap sender channel.

Under Manage Integration Content, i can get the URL for downloading WSDL.

If i call this url (with GET) operation from Postman using my S-User, it returns the wsdl without any problem..

However, if i use the credentials of the authentication client instance that has iflow authorization for my iflow, i get an error 401.

Interestingly, using that auth client instance i am able to post messages to the same Iflow successfully . i am just not able to get the WSDL from it.

we are in cloud foundry.

single role NodeManager.read  does not exist in CF ( it think that is a neo role).

also seems that in the client auth instance for posting messages, i can only add roles that i created in Integration Suite  (and the role for the iflow is already there ).

so its not clear how to authorize an auth client instance to be able to download wsdl.

do you have any idea ?

 

cheers

rupert
mandy_krimmel
Advisor
Advisor
Hello Rupert,

for the role please use MonitoringDataRead as described here for the WSDL download for CF:

Tasks and Permissions | SAP Help Portal

Furthermore you should use the API plan to create a service instance/key to call this API/WSDL endpoint as described here: OAuth with Client Credentials Grant for API Clients | SAP Help Portal

Please let me know that this works for you.

Thank you,

Mandy
rupertc
Explorer
0 Kudos
thanks, Using API plan for client auth with that role assigned works.

Although i have to say, it is not so nice that the role needed is the MonitoringDataRead role as this provides not only access to the wsdl definition of a specific iflow endpoint which has iflow-role protection but also access to monitoring data from the monitoring apis  (Role for viewing of MPLs, Deployed artifacts, Certificate-to-user mappings, JDBC Data Sources, Number Ranges and System log-files, downloading of MPLs, Deployed integration flows and System log-files, performing Connectivity tests without authentication)

-  might be nicer if the instance of "integration-flow" plan (used to post data to the iflow) could also access the wsdl of the iflow endpoint that it is authorized for.

anyway, thanks again.