Skip to Content
Technical Articles
Author's profile photo Abinash Nanda

Configuring Service Group in SOAMANAGER using Integration Scenarios

Introduction

In this blog, we will discuss how to configure the service group using local integration scenario in SOAMANAGER. This is useful when you want to replicate master data from S/4 to more than one external system (example SAP Cloud for Customer aka C4C and SAP Fieldglass), using Data Replication Framework (DRFOUT). It is recommended to create logical ports based on integration scenarios for service groups, rather than creating logical ports manually in SOAMANAGER.

Note: The approach mentioned in the blog is based on decentralized configuration, where there is no central service registry, but local ABAP service registry is used for publishing and WSDL retrieval. Check SAP note 2605166 for further details.

For Central configuration approach please check the part II of this blog.

For additional information such as prerequisites (Authorizations, Service Users in ABAP Stack, Business Functions etc) and additional explanation of various steps , please refer to Configuring the SOA Manager for MDG (NW 7.40 or higher) on SAP Help.

In this blog we will configure the service group MDG_BS_SUPPLIERREPLICATEREQ to configure the consumer proxies BusinessPartnerSUITEBulkReplicateRequest_Out (CO_MDG_BP_RPLCTRQ) and BusinessPartnerRelationshipSUITEBulkReplicateRequest_Out (CO_MDG_BP_RELATIONSHIP_OUT)

Configuration in SOAMANAGER

The following steps need to be performed in SOAMANAGER

  1. Prepare and Upload WSDL
  2. Publish WSDL to Service Registry
  3. Create a Profile
  4. Create a Provider System
  5. Create Logon Data
  6. Create Local Integration Scenario
  7. Create Configuration Objects

Step A: Prepare and Upload WSDL:–

  1. Obtain WSDL from the provider system.
    • Download the WSDL via SE80 for the Consumer Service and adapt the WSDL by adding Binding and Service elements. In case you need more information, please check the Appendix section of my other blog
    • Alternatively, with SAP NetWeaver PI the WSDL can be downloaded using the Sender Agreement in case of classical configuration or using Integration configuration object in case of AAE based configuration.
  2. In SOAMANAGER, upload WSDL for both consumer proxies. Navigation: Tools-> WSDL Upload

Step B: Publish the uploaded WSDL to service registry

  1. Navigation: Service Registry-> Publication of external WSDL
  2. Under Service Details tab, provide an internal nameNote: The Port type name and namespace in the external WSDL should match the corresponding names defined in SE80.
  3. Select the service state as Configured
  4. In the Bindings tab, Click Next
  5. Create a new Physical system, with system type as Third Party (This will make sure the RM protocol is set to SAP RM when the logical ports are created later for asynchronous reliable messaging). This is mandatory to send messages via SAP Cloud platform Integration
  6. Review the service details and click on finish to publish the WSDL to local service registry
  7. Perform all the above steps for the other consumer proxies in the service group except for the Physical system. Select the existing system that was already created.
  8. We can verify the published service definitions using the navigation path: Service Registry-> Published Service Definitions
  9. Additionally, this will create an IBC (Identifiable Business Context for the physical system) in the service registry. Navigation: Service Registry-> Published IBCs

Step C: Create a profile

  • Navigation: Technical Administration->Profiles (Example:  Here the profile is used for maintaining proxy settings)

Step D: Create a provider system

  1. Navigation: Technical Administration->Provider Systems. Note: The Provider system name will be used as business system name in DRFIMG. For C4C it is recommended to use the C4C short tenant ID as the provider system.
  2. Under the service registry, select local service registry (SR_LOCAL) and then select the Third-Party system created earlier as the SLD IdentifierNote: If you do not see the use service registry check box, make sure the note 2600392 is implemented.
  3. Maintain user credentials to access WSDL from service registry and check the Tolerant Search
  4. Under applications, assign the business application (IBC) created earlier
  5. Activate the provider system
  6. This will create an IBC reference. Navigation: Service Administration->Identifiable Business Context Reference

Step E: Create Logon Data

Create Log on Data and activate it. Using navigation: Service Administration->Logon Data Management .

Note: This will be used to log on to the provider system (will be used in the logical port created later)

Step F: Create a local integration scenario

  1. Navigation: Service Administration->Local Integration Scenario Configuration
  2. Since we are going to use Service Group, we skip the service definitions tab
  3. In the service group tab, add the Service Group Object MDG_BS_SUPPLIERREPLICATEREQ
  4. And assign the IBC reference created earlier
  5. Assign the Logon Data, created previously
  6. Finish and activate the Integration Scenario

Step G: Create configuration objects (Logical ports)

  1. Once the Integration Scenario is activated the system will display a link to configure and activate the consumer proxies using Pending Tasks. Alternatively, use navigation path, Service Administration->Pending Tasks
  2. Ensure the task list is executed successfully and as a result logical ports will be created using the service registry.

Verify the Configuration

  1. Navigation: Service Administration-> Web Service Configuration
  2. In the Configuration tab for the service group, verify the logical ports are created
  3. In the messaging tab, verify the RM protocol is set to SAP RM (required for CPI based connection

Configuration in IMG

On S/4HANA On-Premise system, transaction code DRFOUT is used to replicate business partner and business partner relationship messages to external systems.

  1. The BC switch BSSOAV_WS_ACTIVE should be active in IMG. This is required for DRFOUT to use the service group configuration.
  2. DRFOUT uses the DRFIMG configuration. To send data to the provider systems, using logical ports created in SOAMANAGER, the following two points must be adapted in the DRFIMG configuration
    • In DRFIMG, create a business system with the same name as defined as provider system in SOAMANAGER (For replicating data to C4C, you should use the C4C short tenant ID as the business system name)
    • Assign the business system to the replication model

Test the configuration

  1. Trigger a Business partner message using DRFOUT and check SRT_UTIL (Web Services utilities) message monitor using forward navigation from DRFOUT logs. 
  2. In the payload the RecipientBusinessSystemID in MessageHeader is populated from the Business system name defined in DRFIMG, which is same as the provider system name in SOAMANAGER
  3. For demonstration purpose, the message was made to fail intentionally, so that we can verify the logical port used by DRFOUT, in Web Service utilities-> Error Log.
  4. Here we can see the logical port (E04F4306AC351EE89AC862184BA69A12) being used, which is same as created in SOAMANAGER for the service group.

Additional Information:

Similarly consumer proxies BusinessPartnerSUITEBulkReplicateConfirmation_Out and BusinessPartnerRelationshipSUITEBulkReplicateConfirmation_Out are grouped under service group MDG_BS_SUPPLIERREPLICATECONF.

Further references:

Configuring Web Services in SOA Manager

ABAP Connectivity – Web Services ABAP

Assigned Tags

      34 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Jose Arturo Palomino Higaonna
      Jose Arturo Palomino Higaonna

      Hi Abinash,

      When step g is performed, it does not create the logical ports using the service registry.

      In addition to that when performing a test from the trx "drfout", it does not generate the corresponding output.

      Best regards,
      Greetings.

      Author's profile photo Kavya Priya Kaza
      Kavya Priya Kaza

      Hi Jose,

      Even i am facing the similar issue. Did you fix the logical port issue which you were facing previously? if yes, can you please help me in fixing this?

      Author's profile photo Kefei Dong
      Kefei Dong

      Hi Jose,

      I am facing the same issue too. Have you resolved the problem?

      The WSDL, in which the binding is changed, is ProductMDMBulkRelicateRequest_Out in the Blog Part II. But the service group here is MDG_BS_SUPPLIERREPLICATEREQ. They are different, right? I am a little confused.

      Thank you for clarify!

      Regards

      Kefei

       

      Author's profile photo Kefei Dong
      Kefei Dong

      I resolved the problem after adapting, upload and registry the WSDL of BP and BP Relationship Replicate as described in the second part.

      Author's profile photo Frey Chen
      Frey Chen

      Maybe it's an older version of your system, when you create a new Provider System, under section Services Registry did you see 'Use Services Registry' checkbox? If this approach doesn't work for you, maybe you can try create logical ports manually in SOAMANAGER.

      Author's profile photo Florian Preuß
      Florian Preuß

      Hi, i find this blog very interesting and i am trying to work through it. So far i understood the concept but I am technically failing with the very first step to retrieve the proper WSDL from the CPI iFlo to generate the correct service registry which also will point to the CPI tenant and sets up correct transport settings. Any help would highly be appreciated.

      Best Regards,

      Fflorian

      Author's profile photo Abinash Nanda
      Abinash Nanda
      Blog Post Author

      Dear Florian,

       

      I have mentioned this in the appendix section of the followup blog.

       

      https://blogs.sap.com/2019/12/16/configuring-service-group-in-soamanager-using-integration-scenarios-part-ii/comment-page-1/#

       

      Best regards, Abinash

       

      Author's profile photo Florian Preuß
      Florian Preuß

      Hi Abinash, thank you for pointing me into the right direction. Now I got it. Best Regards, Florian

      Author's profile photo Kefei Dong
      Kefei Dong

      Hi Abinash,

      thank you for the cool blog!

      It works fine for my scenario: S4H Master Data is replicated to FSM and C4C via separate iFlows.

      Keep doing.

      Regards

      Kefei

      Author's profile photo Sven Hertig
      Sven Hertig

      Hi Abinash,

      thanks for your informational blog post. In my scenario I have to replicate master data in one target system (system ID) but parallel in two clients of this target system.

      SAP MDG Hub (system EMA / client 100) --> SAP S/4 ERP (system EEA / client 100)

      --> SAP S/4 ERP (system EEA / client 200)

      Therefor I would like to configure two Provider system which includes the business system ID from the counter part systems.

      Provider system 1 --> EEA_100 = Business system ID

      Provider system 2 --> EEA_200 = Business system ID

      Unfortunately I can not use the SLD ID from the service registry of the provider system (EMA 100) twice.

      Do you have a hint for me how can I solve my problem?

      Thanks and

      Best regards,

      Sven

      Author's profile photo Abinash Nanda
      Abinash Nanda
      Blog Post Author

      Hello Sven,

       

      In your case provider systems are EEA_100 and EEA_200. In simple terms, provider system is the system which is receiving data and consumer system is the system which is sending the data (via the consumer proxy logical port)

      Best regards, Abinash

      Author's profile photo Simon Dietrich
      Simon Dietrich

      Hi Abinash,

      thanks for sharing this information.

      I have to distribute the business partners once to C4C and once to FSM.

      Unfortunately, it is only ever sent to one endpoint.

      How can I send to two different endpoints in detail?

      For me, only 1 logical port with an endpoint URL is created.

      Does the WSDL file have to have 2 bindings + services?

      Example:

      Is that right?

      Unfortunately, this does not work for me this way.

       

      Thanks

      Simon

      Author's profile photo Abinash Nanda
      Abinash Nanda
      Blog Post Author

      Hi Simon,

       

      You need to have 2 WSDL, one for each target system. You need to create 2 configuration one for each target system.

       

      Best regards, Abinash

      Author's profile photo Simon Dietrich
      Simon Dietrich

      HI Abinash,

      now it works :-).

      Thanks a lot.

      Regards

      Simon.

      Author's profile photo Sven Hertig
      Sven Hertig

      Hi Simon,

      great that it works now for you. Can you provide some information how did you configure the provider systems in your case? Did you use the service registry and SLD-ID? If YES how did you set it?

       

      Thanks and

      Best regards,

      Sven

      Author's profile photo nisha divakaran
      nisha divakaran

      Hi Abinash,

      I believe the CPI system your trying to connect here is Neo. Can you help me how it works for cloud foundry? Especially the step 5. The hostname which we get from the iFlow is too long for the Host name space in step 5.

       

      Thanks in advance.

       

      Author's profile photo Hanee Gupta
      Hanee Gupta

      Hello Avinash,

      In my scenario, we have to process the data to multiple receiver systems, so I am trying to create the logical ports using the service group, however its failing while executing the pending tasks.

      Please refer the attached error screenshot, did not find anything regarding this error.

      I would really appreciate, if you can provide your inputs on this.

       

      Error Screenshot while processing the pending tasks.

       

       

       

       

      Author's profile photo Marina Shakalei
      Marina Shakalei

      Hello!
      I've configured the system following all instructions in the blog. I didn't see any errors during settings. But I have one huge problem. It works only if I set logical port as Default for one of 2 endpoints.
      What did I miss?

      Marina

      Author's profile photo Abinash Nanda
      Abinash Nanda
      Blog Post Author

      Hello Marina,

      Have you activated the BC switch BSSOAV_WS_ACTIVEIf yes you can put a break point in CL_BS_SOA_ASYNCPRX_OUT and check what is happening.

      Best regards, Abinash

      Author's profile photo Jasper Cremers
      Jasper Cremers

      We are having the same kind of issue. The business partner is always sent to the port which is marked as "Default".

      We already had a configuration of the CO_MDG_BP_RPLCTRQ consumer proxy. This is configurated to replicate business partners from S4 to an ECC system.

      Now we want to also integrate S4 with C4.

      Do we need to change the existing WSDL of the ECC proxy? Do we need to add a specific binding in there?

      Any help is appreciated.

       

      Regards,

      Jasper

      Author's profile photo Manish Bansal
      Manish Bansal

      Jasper Cremers

      Hope you are doing well, we have similar requirement

      Can you please advise, how you managed to resolve it

      Thanks & Regards

      Author's profile photo Jasper Cremers
      Jasper Cremers

      Hi Manish,

      I did not resolve it myself eventually, a developer picked it up (and I think they included some custom developments eventually..).

      A colleague of mine happened to write a blog about this topic, I did not read it (yet) but it might have additional information:

      https://www.acorel.nl/2022/12/service-group-configuration-in-soamanager/

      Regards,

      Jasper

      Author's profile photo Amar Madireddy
      Amar Madireddy

      Hello Jasper, We also facing same issue. When we tried to replicate BP and BP relationship details to two target systems two logical ports got created and in which one is default and the other is not default. We are able to replicate the message successfully for consumer proxy where port is default but not for the other. Please let me how your team solved this issue?. Your efforts are highly appreciated.

      Author's profile photo Medha Hegde
      Medha Hegde

      Hi,

      Even we are seeing the same problem. It works only if we set configured logical port as Default. Use case where system has 2 logical ports it is not working.

      Please help if you were able to resolve the problem.

       

      Regards,

      Medha

      Author's profile photo Amar Madireddy
      Amar Madireddy

      Hello Medha, Even we are also seeing the same issue. Please let us know if you were able to resolve the issue?

      Author's profile photo Ariel Renan Ferneda
      Ariel Renan Ferneda

      Dear Abinash Nanda,

      In your case you are sending from a S4 to a C4 using CPI, right? And in my case I would like to use WS-RM (P2P) from S/4 (consumer) to TM (provider 1) and also to EWM (provider 2) without CPI, it is possible without CPI? thank you

      Author's profile photo Karla Brinkschulte
      Karla Brinkschulte

      Hi Abinash,

      thanks for your helpful blog. I already worked through it for the business partner replication (consumer proxy: CO_MDG_BP_RPLCTRQ) and it worked.

      As you can see here the system created a logical port manually:

      The replication to FSM works as well.

      Now I tried to do the same steps as described in your blog for the business partner relationship (consumer proxy: CO_MDG_BP_RELATIONSHIP_OUT). For this consumer proxy the system didn’t create the logical port:

      I think this is due to the fact that the consumer proxy is missing in the service group I used in the integration scenario.

      As you mention as an additional information at the end of your blog, similary consumer proxies should be grouped under the same service group:

      If I open the service group MDG_BP_REPLICATEREQ I can only find the consumer proxy of the business partner for which one it already works:

      Do I have to add the consumer proxy CO_MDG_BP_RELATIONSHIP_OUT to the existing service group? (If yes: How can I do this?)

      Or should I use another service group where both consumer proxies already exist? (If yes: Which one is it? I couldn’t find the correct one).

      Best Regards,
      Karla

      Author's profile photo Wolfgang Gedemer
      Wolfgang Gedemer

      Hi Karla,

      if you need both, Business Partner and Business Partner Relationship you must use service groups MDG_BS_SUPPLIERREPLICATEREQ and MDG_BS_SUPPLIERREPLICATECONF.
      The other groups MDG_BP_REPLICATEREQ and MDG_BP_REPLICATECONF are only intended for those customer who don't use Business Partner Relationship and want to avoid configuring Business Partner Relationship .
      see note https://launchpad.support.sap.com/#/notes/2990688

      Best Regards, Wolfgang

      Author's profile photo Karla Brinkschulte
      Karla Brinkschulte

      Hi Wolfgang,

      many thanks for your help and the hint to look at SAP note 2990688. This made it possible to replicate both business partner and business partner relationship.

      1. We had to perform a major modification on the IFLOW WSDL from CPI as otherwise the automatic creation for the local integration scenario is failing. Are there artefacts on CPI where we can download the complete and correct WSDL for such a scenario?
      2. Is there any indication in the integration guide of FSM for the use case to connect to SAP Cloud Services / Applications with S/4? I’m sorry unfortunately I couldn’t find any hint.
      3. Our next step is to integrate a multiple companies on FSM sight. So, we have two legal entities that work with the same system and each of them has its own company in FSM. Are there any integration scenarios documented? Do you have any recommendations like distribute the business partner on CPI site into the different FSM companies?

      Thank you in advance,

      Karla

      Author's profile photo Gavin Yang
      Gavin Yang

      This is a very very helpful blog, I also met the same error about processing  pending tasks. 

      Managed to solve it by uploading one more WDSL at the beginning and publish it under the same external system name.

      Author's profile photo Manish Bansal
      Manish Bansal

      Gavin Yang , We are facing similar issue in configuring SOAMANAGER using Service group

      Can you please advise, how did you managed to resolve it

      Appreciate your time

      Author's profile photo Gavin Yang
      Gavin Yang

      Hi Manish,

      A usual reason for the pending task execution to be failed is when it is not able to find valid binding port for all consumer proxies within a Service Group.

      In case you have followed the main blog and used service group MDG_BS_SUPPLIERREPLICATEREQ, then you would noticed that there are two consumer proxies in it. If you just uploaded the WSDL to bind the CO_MDG_BP_RPLCTRQ then you will need to upload another WSDL to bind the CO_MDG_BP_RELATIONSHIP_OUT, you may download the WSDL from service definition BusinessPartnerRelationshipSUITEBulkReplicateRequest_In. Alternatively use service group MDG_BP_REPLICATEREQ instead of MDG_BS_SUPPLIERREPLICATEREQ at Step F: Create a local integration scenario then it contains only one consumer proxy CO_MDG_BP_RPLCTRQ if that suits your requirement.

      Hope this helps.

      Regards

      Gavin

      Author's profile photo Ringo Liebscher
      Ringo Liebscher

      Hi all,

      Thank you for the article and for the discussion so far. Unfortunately logical port generation fails for me with error "Could not create a valid configuration".

      I have to implement Business Partner replication via DRF to two target systems, represented by two different iFlows in the same CPI instance. This is meant to be a decentralized configuration and there is no PI available.

      I use service group MDG_BP_RELICATEREQ which contains only the consumer BusinessPartnerSUITEBulkReplicateRequest_Out. I checked the following points:

      1. WSDL contains proper elements wsdl:binding and wsdl:service for BusinessPartnerSUITEBulkReplicateRequestOut. I downloaded it from SE80 and to avoid editing it manually had it uploaded on CPI, create iFlow and download the created WSDL again.
      2. Published Service Definition and Published IBC exist, referring to Physical system.
      3. Provider System and Logon Data are active.
      4. Scenario is active, referring to Service Group MDG_BP_REPLICATEREQ, active IBC reference and logon data.

      I made an extra effort to upload and publish also the incoming service endpoint BUSINESSPARTNERSUITEBULKREPLIC on CPI. Therefore a WSDL is found also for the Incoming Interface, but that does not seem to be relevant:

      What could be the reason?

      How can I find out more details on the root cause for this error?

      Can you see alternative options of creating logical ports correctly (maybe manually)?

      Any help is highly appreciated, I am lost after trying many options, unfortunately.

      I just tried with one WSDL for one target system so far and I understood that I will have to repeat steps to include the second target system with a separate WSDL.

      Thanks a lot for any hints,

      Ringo

      Author's profile photo Ringo Liebscher
      Ringo Liebscher

      I could solve the issue in Logical Port generation by myself! The error was in the "Profile" that is assigned to the Provider system. The Profile had Transport Binding Type set to SOAP 1.2, whereas the WSDL of the Outbound Interface offers only SOAP 1.1. I changed the Profile and updated the Profile version in the Provider system and after that the Logical Ports could be generated successfully.

      Still, it took quite some time to identify that root cause by debugging from CL_SRT_CONFIGURATOR_SRV_GROUP to CL_SRT_WSP_CONFIG_SIDL_PM to find the hint on the SOAP version mismatch. Could be reported better by SOAMANAGER!