Skip to Content
Technical Articles
Author's profile photo Abhishek Nath

Introducing SAP Content Agent service: Enhanced Transport Capabilities for SAP Cloud Integration Content

Overview

The SAP Cloud Integration service helps you to connect cloud and on-premise applications with other SAP and non-SAP cloud and on-premise applications. This service has the capability to process messages in real-time scenarios spanning different companies, organizations, or departments within one organization. It is available in both Neo and Cloud Foundry (CF) environments.

Until now, the only way to transport integration content artifacts between integration tenants in the CF environment was to manually export and import them. This changes with the introduction of the SAP Content Agent service. Content Agent service is a Cloud Foundry-based utility service. It acts like an agent that allows you to assemble the integration content and also export it to the transport queue using transport solutions like SAP Cloud Transport Management or the Enhanced Change and Transport System (CTS+). This is equivalent to the assembly and export functionality provided by Solution Lifecycle Management Service in the Neo Environment.

Content Agent service Schematic

In this blog, I will briefly show you how to set up this service along with the SAP Cloud Transport Management option, and use it to transport integration content between your SAP Cloud Integration tenants.

Setup

For the purpose of simplicity, I will take the example of setting up transports between two SAP Cloud Integration tenants, e.g. the development tenant (DEV) and the test tenant (QAS). This is what is currently supported by the service as well. To manage transports in a three-tenant landscape, you can use SAP Cloud Transport Management, using different combinations of transport routes.

What you will need(Prerequisites):

  1. Two separate SAP Cloud Integration tenants, attached to separate CF subaccounts. Let’s call them DEV(source) and QAS(target). These subaccounts should also have their respective CF spaces created with adequate resources assigned in their quota plans. For more information on entitlements, see here. For more information on configuring Quota plans for spaces, see here.
  2. Subscription and admin access to the SAP Cloud Transport Management service.
  3. Sample integration content artifact that you can use to transport between the two integration tenants.

Setup Instructions:

  1. Create an instance and Service Key for the SAP Content Agent service in the source CF space,  using the initial setup instructions found here.
  2. Create a destination in your source subaccount for the SAP Content Agent service using the instructions found here in Step 3.
  3. Subscribe to the Cloud Integration Service Broker in the source CF space using the instructions here.
  4. Create a destination for the Cloud Integration Service Broker using instructions found here in Step 5.
  5. In your source subaccount, create a destination for deployment to your target CF space (QAS).  Let’s call it ‘TD’.
  6. Create a service instance and Service Key for the SAP Cloud Transport Management service in your source CF space, using the instructions found here in Steps 6-10.
  7. In the SAP Cloud Transport Management UI, create an empty transport node: In the node creation UI, only provide the name( value =DEV), description ( value =DEV), and check the checkbox for ‘Allow upload to node’. Leave everything else as empty (by default) and click ‘ok’. This will act as your source transport node. Instructions here.
  8. In the SAP Cloud Transport Management UI, create a second node, called ‘QAS’ to point to your target CF space. Use the destination ‘TD’ created in step 4 for this node.
  9. In the SAP Cloud Transport Management UI, using the nodes created in steps 7 & 8, create a Transport route. Instructions here.
  10. In your source subaccount, create a destination for the SAP Cloud Transport Management service using the instructions found here. For the value of the additional property ‘sourceSystemId’, use the name of the node created in step 7.
  11. In the SAP Cloud Integration source tenant, select the transport mode as ‘Transport Management Service’, using the instructions here.

Testing the Setup:

  1. In your source SAP Cloud Integration tenant, go to the content packages view and select any content package by clicking on it.
  2. On the next screen, click the ‘Transport’ button and provide a description for the test transport, and click ‘Transport’ on the pop-up screen.
  3. In case of success, you should get a message such as “Transport Request <xxx> is created in the configured Transport Management Service system”.
  4. In the SAP Cloud Transport Management web UI, go to the Import queue of the target node created in Step 8 above, called ‘QAS’. The transport request created in step 3 should be already added to this queue.
  5. Import this transport request into the target node ‘QAS’.
  6. Go to the content packages view of your target SAP Cloud Integration tenant. The content package exported from the source SAP Cloud Integration tenant in step 3 should have been imported and should be available here.

Important points to note

  1. Please note that steps 1-till-4,6,10,11 need to be performed in your source subaccount or source SAP Cloud Integration tenant ( as applicable)  from which you want to export content. For example, if you are exporting content from your Development tenant, you need to perform these steps only in the Development subaccount or Development SAP Cloud Integration tenant ( as applicable).
  2. In step 11, Transport Settings will be available for you only if you have the role ‘AuthGroup.Administrator’ assigned to your account. Please assign this role to your user if you do not see the Transport Settings.
  3. The target CF subaccount should also have the requisite entitlements for the SAP Cloud Integration service plan. If you’re not sure, please perform Steps 1-5, mentioned under ‘Subscribing to CPI Service Broker’ here.

I hope this article was clear enough to help you set up the SAP Content Agent service, enhancing your transport experience for integration content in the CF environment.

Hope you enjoyed this article. If there are any questions, please let me know in the comments below.

Further information

 

What is SAP Cloud Integration?

For the latest on SAP Content Agent service, please look here.

 

Assigned tags

      24 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Martin Pankraz
      Martin Pankraz

      Hi Abhishek Nath,

      finally an automated solution to transport artifacts. This looks interesting.

      What about conflict resolution and dependencies? Are there override mechanisms and does it deploy artifacts? Do I need to cross-check versions in my tenants in case I start using this approach? I believe it would be a good practice to switch off editing of integration artifacts in stages other than DEV to avoid problems?

      Thanks for sharing.

      KR

      Martin

      Author's profile photo Abhishek Nath
      Abhishek Nath
      Blog Post Author

      Hi Martin,

       

      Thanks for your feedback. Very valid points. The deployment will always be taken care of by the deploy service on CF. For the rest, we are looking to enhance this further in future versions.

       

      Thanks

      Abhi

      Author's profile photo Yasin Ilkbahar
      Yasin Ilkbahar

      Dear Abhishek,

      first of all thank you very much for this valuable blog entry.

      I am getting error message "Error in the http client" when clicking the check configuration button in the SCPI transport settings section.

      I believe the reason could be regarding the url in step 4 "setup instructions". Can you please confirm that the url for CloudIntegration is the value of the CPI service broker?

      Or do I need add the "/api/1.0/transportmodule/Transport" to CPI Service Broker URL as well?

       

      Thank you in advance,

      Yasin

       

      Author's profile photo Abhishek Nath
      Abhishek Nath
      Blog Post Author

      Hi Yasin,

       

      Thanks for taking the time to setup the service.

      You are right. Indeed, the value of the URL comes from the service key of the CPI service broker created in the previous step. As mentioned in the documentation the format is as below:

      URL Provide the URL of the system that you want a create a destination to.

      The format is: <oauth → url>/api/1.0/transportmodule/Transport

      Thanks

      Abhi

      Author's profile photo prachetas singh
      prachetas singh

      Hi Abhishek

      I am getting below error while doing a check configuration from CPI Settings –> Transport page

       

      {
      “results”:[{
      “status”:”ERROR”,”description”:”Configuration check for CloudIntegration”,”error”: {
      “errorCode”:”1042″,”parameters”: {
      “destinationName”:”CloudIntegration”
      }}}, {
      “status”:”SUCCESS”,”description”:”Configuration check for TransportManagementService”
      }]}

       

      Also , Destination CloudIntegration  : is throwing below error

      Failure reason: “An error of type SSLHandshake occurred during check connection!”

      I don't understand why SSL Handshake error is coming. Please let me know if you have encountered this error. 

       

      Thanks 🙂

      Author's profile photo Abhishek Nath
      Abhishek Nath
      Blog Post Author

      Hi Prachetas,

       

      Thanks for reaching out.

      It seems that your destination is not properly configured. You need to check all the values you have configured against the values from the CPI service broker and let me know.

       

      Thanks

      Abhi

      Author's profile photo prachetas singh
      prachetas singh

      Hi Abhishek

       

      Please have a look

       

      I have  created service instance Process Integration Runtime with role :

      WorkspacePackagesTransport

       

      Destination details :

       

      Name : CloudIntegration

      Type : HTTP

      url :  url/api/1.0/transportmodule/Transport

      Proxy : Internet

      Authentication : OAuth2ClientCredentials

      Client ID : from service key

      Client Secret: from service key

      Token Service URL: cpi url/oauth/token

       

      Destination seems correct ?

       

      Author's profile photo Abhishek Nath
      Abhishek Nath
      Blog Post Author

      Hi,

       

      This seems correct. Please double-check the Client ID and Client Secret fields for mistakes.

      Also note that Token Service URL is different from the URL above. It comes from the field 'tokenurl' in the service key. And you need to append '/oauth/token' to it, as you have already shown.

       

      If you still get an error, I suggest opening a ticket.

       

      Thanks

      Abhi

      Author's profile photo prachetas singh
      prachetas singh

      Hi Abhishek

       

      I am doing this on cloud foundry trial system.

       

      When I try to open below URL from browser :

      https://***********.it-cpitrial02-rt.cfapps.eu10.hana.ondemand.com/api/1.0/transportmodule/Transport

      I am getting error :

      Your connection is not private

      NET::ERR_CERT_COMMON_NAME_INVALID

       

       

      Author's profile photo Abhishek Nath
      Abhishek Nath
      Blog Post Author

      Hi Prachetas,

       

      In this case, I would suggest you create a ticket.

       

      Thanks

      Abhi

      Author's profile photo prachetas singh
      prachetas singh

      Hi Abhishek

      I was able to resolve the SSL handshake issue.

      Tweaked the URL from service instance to match CPI tenant url :

      https://***********.rt.cfapps.eu10.hana.ondemand.com/api/1.0/transportmodule/Transport    ---->

      ***********.rt.cfapps.eu10-100.hana.ondemand.com/api/1.0/transportmodule/Transport

      Sorry to bother you,

      But now I have 2 issues

      1. In CPI tenant there is no Transport option.

      2. In step 5 of the blog (creation of destination to target system)

      Here what would be the url and what type of Authentication we are using ?

      For now I have created destination after creating a process integration runtime

      instance with role ESBmessaging.send and authentication as             OAuth2ClientCredentials

       

       

       

      Author's profile photo nikhil gursal
      nikhil gursal

      Hi Prachetas,

      For point one you need to assign "IntegrationContent.Transport" role to your id.

      Below is the URL for the same:

      https://help.sap.com/viewer/368c481cd6954bdfa5d0435479fd4eaf/Cloud/en-US/d458b172b98d4112a08499541fddfc54.html

      Regards,

      Nikhil

      Author's profile photo Tim Van Den Berghe
      Tim Van Den Berghe

      Hi,

      Since last week, we are receiving the following error when transporting packages.
      Do you face the same behavior?

      Thank you in advance,

      Kr, Tim

      Author's profile photo nikhil gursal
      nikhil gursal

      Hi Tim,

      Please check the configuration for below destinations once again.

      1. CloudIntegration and
      2. TransportManagementService  Or ChangeManagementSystem depending on which service you are using.

      You can verify the same in CPI Settings –> Transport-->Check Configuration

      If result for both the destination is successful then you can transport package.

       

      Regards,

      Nikhil

       

      Author's profile photo Tim Van Den Berghe
      Tim Van Den Berghe

      Hi,

      Both are successful when checking the config.
      Despite no changes at configuration, since this week we're facing this issue..

      Kr, Tim

      Author's profile photo nikhil gursal
      nikhil gursal

      Hi,

      I was facing this issue and solved it by correcting destination config.I thought this will help you.

      In this case, I would suggest you create a ticket.

      Regards,

      Nikhil

      Author's profile photo Wei Zhou
      Wei Zhou

      Dear Abhishek,

      Thank you for sharing this blog about SAP Cloud Platform Content Agent, currently we are migrating from NEO to CF, I think it will help us a lot.

      Could you please help evaluate if it can meet our scenario needs?

      Let me brief our case first:
      Currently develop/publish process on NEO:
      1. Develop work was done by eclipse with CPI plugin offline.
      2. There were one tenant for dev verify purpose, and multiple QA/Hotfix tenants on different Data Center(we can deploy changes from eclipse directly).(artifacts on all DEV and QA / HOTFIX tenant are config-only)
      3. When all verification passed, we export the artifact from eclipse, and update to Publishing Tenant and publish to content-hub.
      4. After the review complete for publish, the update can be pulled from DEV/QA/HOTFIX tenants.

      Now issues we meet when migrating cpi from NEO to CF:
      1. Eclipse is not supported based on current investigation, then we need do the dev work on WEB-UI
      2. When we need deploy some changes to QA/hotfix tenant for QA team to verify, SAP Cloud Platform Content Agent is an option I thought

      My questions are:
      Q1. If we move dev work from eclipse/NEO to CF, can the changes be transported from CF to legacy NEO tenant? As the NEO retirement process may take years.
      Q2. If we want the artifacts editable only on DEV tenant, config-only on any other teants, can we achieve this?
      Q3. Lets say QA system, after it applied some changes from DEV via CTS+, then can we receive the update when there were new version publish released?

      Thanks,
      Wei

      Author's profile photo Vasudeva Gembali
      Vasudeva Gembali

      Hi Abhisek,

      URGENt: Please help.- SAP CPI S (suite), CF.

      For TMS subscription, we have selected a separate subaccount. We have TMS, DEV, QA, PROD subaccounts now.

       

      Can you please advise me the transportation path and nodes to build the configuration?

       

      Vasu

      Author's profile photo Nishant Kathuria
      Nishant Kathuria

      Hello Abhishek,

      Thanks for this wonderful blog. Can you point to a document or blog that explains instructions to enable content transport between CPI environments using CTS+ and content agent service. The help links are confusing (https://help.sap.com/viewer/368c481cd6954bdfa5d0435479fd4eaf/Cloud/en-US/3cdfb512a75941d187b6f5a86e418983.html) .

      Do we still need to use the Solution Lifecycle management service?

      Another question, can content agent service be used for BTP services as well - like Workflow or Mobile services or HANA Cloud Service?

      Thanks

      Nishant Kathuria

      Author's profile photo Abhishek Nath
      Abhishek Nath
      Blog Post Author

      Hi Nishant,

       

      Thanks for your comments and questions.

      I hope this link will prove more useful for you: https://help.sap.com/viewer/ae1a4f2d150d468d9ff56e13f9898e07/Latest/en-US/9135d6eeddde4de8bcea63eb2c04ab0a.html

      Also, please note that in CF environment, only follow the documentation that is relevant to CF, so no Solution Lifecycle management service is required here.

      Lastly, we are working on enabling this for other services, e.g. Workflow, Mobile, etc. But I should tell you that I cannot make any comments on the timelines in this forum here.

       

      Thanks

      Abhi

      Author's profile photo Nishant Kathuria
      Nishant Kathuria

      Abhishek,

      Thanks, one more question. The help states that SAP Content Agent service is a Cloud Foundry based utility service. So can I assume that it is available in all regions and providers?

      Thanks

      Nishant

      Author's profile photo Saket Diwan
      Saket Diwan

      Hi Abhishek

      Thanks a lot for the such an informative blog .

      We are following your blog in conjunction with the content agent user guide (link given below) to setup CTS+ for CPI tenants running in cloud foundry .

      We have created the necessary destinations ContentAssemblyService , CloudIntegration and , ChangeManagementSystem .

      But when we click transport in the CPI package we are getting error " unable to export mtar file . check destination configuration" .

      It does not show exactly which destination has error . The check connection results for all the 3 destinations is +ive (only that for assembly & Integration destinations we get 401 unauthorized error)

      How can we check which destination has an issue here .

      thanks and regards

      Saket

      Author's profile photo Abhishek Nath
      Abhishek Nath
      Blog Post Author

      Hi Saket,

       

      It's not uncommon to get 401 unauthorized sometimes even for valid destinations with valid credentials.

      I would suggest you check the same credentials against another destination that you know is working and also check the recommended authorizations.

      Checking your cloud connector configuration should also be helpful.

       

      Thanks

      Abhi

      Author's profile photo Saket Diwan
      Saket Diwan

      Hi Abhishek

      We have checked the destinations and we are not able to find out which of the 3 destinations is responsible for the error when go to Transport option

      The ChangeManagementSystem destination configuration also as per below URL seems erroneous as it does not clearly indicate which URL to be given "Provide the URL from the service key details" - does this mean the content agent service key URL

      OR

      should we use proxy as on-premise and give the URL for CTS+ system sing the public  hostname as defined in cloud connector .

      Also as indicated in this blog when we choose proxy as Internet we DO NOT get option for Location ID

      https://help.sap.com/viewer/ae1a4f2d150d468d9ff56e13f9898e07/Latest/en-US/9135d6eeddde4de8bcea63eb2c04ab0a.html

      Thanks

      Saket