Skip to Content
Technical Articles
Author's profile photo Peter Gutsche

Cloud Integration – Using Transport Management Service for a Simple Transport Landscape

In the present blog, I reproduce and summarize all steps required to set up Transport Management Service to support a concrete, simple transport scenario. In particular, I would like to use this service to transport integration content (for SAP Cloud Integration) from a source to a target tenant.

This blog shows how to transport integration content from a Neo source tenant to a Neo target tenant.

For a detailed instruction how to use Transport Management service to transport integration content from a source to a target tenant in the Cloud Foundry environment, check out this blog: Introducing SAP Cloud Platform Content Agent: Enhanced Transport Capabilities for SAP Cloud Platform Integration Suite Content.

A big Thank You to the following people for their support: Ralf Belger, Boris Zarske, VishnuPrasath Dhayanithi, Dimitar  Aleksandrov.

To mention some further information sources worth to check out:

Transport Landscape

In this blog, I walk you step-by-step through the tasks required to set up the following transport scenario: You like to use Transport Management Service to transport integration content from a source tenant (referred to as dev tenant) to a target tenant (referred to as test tenant).

It is important to point out that Cloud Integration tenants (in our example, the dev and the test tenant) run in the SAP Business Technology Platform, Neo environment, whereas the Transport Management Service runs in the SAP Business Technology Platform, Cloud Foundry (CF) environment. For this blog, I assume that you have access to a Cloud Foundry account. For more information on the different environments, see the online documentation of SAP Cloud Platform and search for Environments.

The following figure shows the transport landscape:

The following list provides a summary of the tasks to set up this landscape:

  1. Get entitled to use Transport Management Service. You can use an own global Cloud Foundry account (for the following steps, I assume that you have a global account of SAP Business Technology Platform, Cloud Foundry environment). Check out the documentation of Transport Management Service to find out about eventual process changes once the Transport Management Service becomes general available and the beta phase ends.
  2. In the Cloud Foundry environment: Create a subaccount of your global account and subscribe to Transport Management Service.
  3. Enable API access to Transport Management Service.
  4. Create the required destinations.
  5. Use Transport Management Service to create source and target nodes and a transport route to connect both of them.

In the following part of the blog, you find the detailed description of these tasks.

Create Subaccount and Subscribe to Transport Management Service (Cloud Foundry)

As prerequisite, make sure that you have access to a global account of SAP Business Technology Platform, Cloud Foundry environment.

  1. Within this global account, create a new subaccount.
  2. Select the subaccount and choose Service Marketplace.
  3. Select the tile Cloud Transport Management.
  4. On the next screen, choose Subscribe.
  5. The Not Subscribed field changes to Subscribed.

As next step, assign the required roles to your users. To do that, perform the following steps:

  1. Go back to the overview page of your subaccount (for example, by clicking the subaccount link in the breadcrumb link on top).
  2. Choose Security > Role Colections.
  3. Click the + icon to create a new role collection, and on the next screen specify a name (for example, Test Transport). A link to the new role collection is added (with the name of the role collection as link text).
  4. Click the link with the role collection name.
  5. On the overview page for the role collection, click Edit.
  6. In tab Roles, select the row with the following attributes:
    Role Name Administrator
    Role Template Administrator
    Applicatin Identifier

    (select the value starting with alm-ts!)

    (this identifier corresponds to the SAP organization where Cloud Transport Management is running)

  7. Choose Add.
  8. Go back to the overview page of your subaccount.
  9. Click Security > Trust Configuration.
  10. Choose Default identity provider.
  11. Enter the user (email address) that needs to have administrator rights (your user in case you like to set up Transport Management Service) and choose Show Assignments.
  12. Click the Assign Role Collection button and select the role collection created with the previous steps.
  13. Click Assign Role Collection. The screen should now look like in the following figure.
  14. Go back to the overview page of your subaccount and choose Service Marketplace.
  15. Select Cloud Transport Management, and choose Go To Application.

  16. A login screen opens. Login with your user and password.
  17. The Transport Management Service is opened.

You can keep the application open, as you need to perform additional steps later-on in Transport Management Service (to create transport nodes and routes).

Enabling API Access to Transport Management Service

With the next steps, you need to enable API access to the service.

  1. Go back to the overview page of your subaccount, choose Overview, and click Enable Cloud Foundry.
  2. Provide an Organization Name and choose Create.
  3. Go to the global account and choose Entitlements.
  4. From the dropdown list, select Transport Management Service and in the field at right of the dropdown list, enter the name of your subaccount.
  5. Click Edit and under Transport Management Service, next to your subaccount name, increase the number from 0 to 1.
  6. Click Save.
  7. Go back to your subaccount (by clicking the subaccount name in the current dialog).
  8. Select Quota Plans.
  9. Choose New Plan, provide a name for the plan, and in the Services field enter 1.
  10. Click Save.

Now you need to create a new Cloud Foundry space for the subaccount and assign the quota plan.

  1. In the navigation area, choose Space.
  2. Choose New Space, provide a name and click Save.
  3. Go back to Quota Plans.
  4. Under Plan Assignments, select the previously created quota plan from the dropdown list for Quota Plan (in our example: test_transport).
  5. Click the Space name (TestSpace for example).
  6. Choose Service Marketplace and then click the Transport tile.
  7. Choose Instances.
  8. Create a new instance (click New Instance).
  9. Choose Next, and then again Next on the following screen.
  10. Enter an instance name and choose Finish.
  11. Click the instance name and choose Service Keys.
  12. Choose Create Service Key.
  13. Enter a name for the key.
  14. The connection details are displayed.

You need this information to create the required destination from your Cloud Integration Neo account (dev) to Transport Management Service.

You have successfully set up Transport Management Service. You now can start configuring the transport landscape.

Creating the Required Destinations

Start creating the required destinations. For our example transport landscape (with the dev and the test tenant), you need to create the following destinations:

  • In the Solutions Lifecycle Management service of the Neo dev subaccount (transport source): Create one destination (with name TransportManagementService) that points to the Cloud Foundry subaccount (where the Transport Management Service is active). To do that, you need the service key created in the previous step.
  • In the Neo dev subaccount (transport source): On the Solutions Lifecycle Management service, create one destination with name CloudIntegration that points to the Cloud Integration tenant management node of the same dev subaccount.
  • In the Neo test subaccount (transport target): On the Solutions Lifecycle Management service, create one destination with name CloudIntegration that points to the tenant management node of the same subaccount.
  • In the Cloud Foundry subaccount (Transport Management Service): Create one destination (with an own-chosen name, for example CPI_TEST) that points to the target (test) subaccount (Neo)

To make it easier to keep an overview of the next steps, the following figure shows all required destinations in the transport landscape.

Let’s start with the two destinations in the Neo test subaccount (the source from which you like to transport integration content).

  1. Go to your dev subaccount in the Neo environment.
  2. Choose Services and then the tile Solutions Lifecycle Management.
  3. Under Take Action click Configure Destinations.
  4. Choose New Destination and specify the following attributes:
    Attribute  Value 
    Name TransportManagementService
    Type HTTP
    URL Enter the parameter provided as uri in the service key (it starts with https://transport-service-app).
    Authentication OAuth2ClientCredentials
    Proxy Type Internet
    Client ID Enter the value of clientid from the service key created in the previous step.
    Client Secret Enter the value of clientsecret from the service key created in the previous step.
    Token Service URL

    Enter the value of url from the service key created in the previous step and append it by /oauth/token.

    https://<url from service key>/oauth/token

    You can leave the fields Token Service User and Token Service Password empty.

  5. Select New Property.
  6. In the dropdown field, enter sourceSystemId, and in the field to the right DEV_NODE. This is an example ID, but I use the same ID later-on when defining the transport node for the source account (therefore, note down the chosen value of sourceSystemId).
    The destination should look like in this figure.
  7. Save the destination.

Now define the destination CloudIntegration on the source (dev) subaccount in Neo that points to the tenant management node of the dev subaccount.

  1. Choose New Destination and enter the following attributes.
    Attribute  Value 
    Name CloudIntegration
    Type HTTP
    URL Enter the URL of the source tenant (assigned to the dev subaccount in Neo). It has the following form: https://<dev tenant>-tmn.hci.eu1.hana.ondemand.com/itspaces.
    Authentication BasicAuthentication
    User User for the dev subaccount
    Password Password for the dev subaccount
  2. Save the destination.

Repeat these steps on the target (test) subaccount in Neo and create a destination with the name CloudIntegration there as well. As URL use the one that points to the tenant management node of the target (test) subaccount.

Now define the destination on the Cloud Foundry subaccount where the Transport Management Service resides.

  1. Go to your Cloud Foundry subaccount.
  2. Choose Destinations.
  3. Click New Destination.
  4. Provide the following settings:
    Attribute Value 
    Name Enter a string of your choice, for example, CPI_TEST
    Type HTTP
    URL

    Enter the URL of the lifecycle management service in the test account. It has the following form: https://<host>/slservice/slp/basic/<ID of the Neo account>/slp.

    The URL is composed in the following way:
    https://slservice.<host>/slservice/slp/basic/<Neo account ID>/slp

    • host is the host name of your account, for example:
      eu1.hana.ondemand.com
    • ID is the technical name of the Neo account, enter the account name (not the Display Name) of the test account, for example, abcd123ef. Note that this is the target account of your transport landscape. You find this name on the overview page of the subaccount under Subaccount Information (the value beneath the Name attribute).

    Example URL:
    https://slservice.eu1.hana.ondemand.com/slservice/slp/basic/abcd123ef/slp

    Authentication BasicAuthentication
    User User that is member of the target (test) account
    Password Password for user that is member of the target (test) account

Creating Transport Nodes in Transport Management Service

A transport node represents either a source or target endpoint in a transport scenario – in our example, you have two nodes, one for the dev and one for the test account.

  1. Open the Transport Management Service.
  2. Go to Transport Nodes.
  3. Choose + to create a new node.
  4. Let’s start with the node for the source account (dev). Enter a name and a description for the node. For example, enter the name DEV_NODE, enter a description, select the Allow Import to Node checkbox, and click OK.
  5. Repeat the steps to create a node for the target account (test). Enter the name (for example) TEST_NODE, provide a description, and select the Allow Import to Node checkbox.
  6. As Content Type, select Multi-Target Application.
  7. Select the destination CPI_TEST created before and click OK.

The created transport nodes should show up on the Transport Management Service page like shown in the following figure.

Creating Transport Routes

  1. Open Transport Management Service and select Transport Routes.
  2. Choose + to create a new route.
  3. Enter a name for the route, select the source node (DEV_NODE) and a target node (TEST_NODE), and click OK.

Now, you have finally set up the transport landscape for your transport scenario. As last step, you need to determine the transport mode for your test tenant.

Transporting Integration Content

Based on this setup, you can now transport integration packages from the dev to the test tenant with only a few clicks. I keep this section short. For more information, refer to the documentation of Cloud Integration (search for Content Transport).

To summarize, these are the steps:

  1. Open the Web UI for your source (dev) tenant (the URL is composed in the following way: https://<dev tenant>-tmn.hci.eu1.hana.ondemand.com/itspaces), choose Settings and select the Transport tile, Click Edit and as Transport Mode select Transport Management Service (Beta). Save the settings.
  2. In the Design section, select the integration package that you like to transport and choose Transport (you need to add a transport comment).
  3. Open Transport Management Service, select the transport node of the target tenant, select the import queue for the initiated transport confirm to import the content to the target tenant.
  4. Go to the target tenant and check if package arrived there.

 

Assigned Tags

      18 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Harald Stevens
      Harald Stevens

      Hi Peter,

      thanks a lot for that extremely detailed description of the setup of the Transport Management Service for SAP Cloud Platform Integration!

      Kind regards
      Harald

      Author's profile photo Nabheet Madan
      Nabheet Madan

      Very nice blog, Thanks Peter for the detailed stuff, appreciate it.

      Author's profile photo Tanja Schaettler
      Tanja Schaettler

      Thanks for this helpful blog!

      • In the Neo dev subaccount (transport source): Create two destinations (with specific names TransportManagementService and TransportManagementServiceOAuth) that point to the Cloud Foundry subaccount (where the Transport Management Service is active). To do that, you need the service key created in the previous step.

      May be you could add here that these destinations have to be configured in the Solutions Lifecycle Management service of the Neo dev subaccount so that it is not confused with the subaccount destinations.

      Author's profile photo Chandrakanth Angannagari
      Chandrakanth Angannagari

      Hi, what is the recommendation in general from SAP when it comes to using the traditional abap based CTS+ setup for CP transports vs the new cloud based TMS service ?

      Assuming the requirement is to have some sort of governance and change management ? I beleive CTS+ can have CHARM solution linked to it to have some governance. TMS service not ?

       

      thx

      Author's profile photo Jakob Vogelsang
      Jakob Vogelsang

      Hi Peter,

      thank you very much for your explanation. There might be a little mistake hidden (which I just solved with the SAP Support): Also for the source node in the TMS service, you have to set the checkbox "Allow Import to Node". Otherwise, the export seems to fail.

      Maybe you can validate and update the description.

      Best regards,

      Jakob

      Author's profile photo Mohamed AHARCHI
      Mohamed AHARCHI

      Hello everyone,

       

      Is someone has meet this issue on below?

      Author's profile photo Mohamed AHARCHI
      Mohamed AHARCHI

      My apologies, it's now working.

      Author's profile photo Dilip Mehra
      Dilip Mehra

      Hi,

      Thanks for this blog.

      I have created one trial account and if I subscribe to TMS in cloud foundry then can I perform the above points? by creating one more dummy tenant as production ?

      I tried following the blog but at the point where we have to go to global account and under entitlements add TMS , thats where I do not see it and I get stuck.

      Can you please help me with my questions.

      Again thanks for the blog.

       

      Author's profile photo Peter Gutsche
      Peter Gutsche
      Blog Post Author

      Hello Dilip,

      thank you for your question!

      I think, in general it should be possible to set up a transport scenario in the way like you propose.

      However, for Cloud Integration content, this approach is not yet possible. In the Cloud Foundry environment, there are currently still some feature restrictions, including that not all transport features are possible yet (see the corresponding SAP note linked in the documentation).

      As soon as the feature will be made available in Cloud Foundry (on trial), expect an update of this blog resp. a new blog.

      I hope I could help to clarify.

      Best regards,

      Peter

      Author's profile photo Henrik Bennin
      Henrik Bennin

      Hi Peter,

      The destination 'TransportManagementServiceOAuth' is not supported anymore. Could you please update your blog and remove it?

      Instead, the authentication data (clientid and secret) must be provided in the destination 'TransportManagementService' after changing from 'NoAuthentication' to 'OAuth2ClientCredentials' Authentication. In addition, set the Token Service URL to the URL from the service key and add '/oauth/token' to the path,e.g. https://subdomain.sl4cloud.authentication.sap.hana.ondemand.com/oauth/token.

      Thanks,
      Henrik

      Author's profile photo Peter Gutsche
      Peter Gutsche
      Blog Post Author

      Hello Henrik,

      many thanks for your comment!

      This is really helpful! I have updated the blog content accordingly.

      Best regards

      Peter

      Author's profile photo Rafael Correa Dantas Ali
      Rafael Correa Dantas Ali

      Hello Peter, do you have any idea why we receive this error on CPI when test the TMS configuration?

      We have created the destinations on the Source sob account where our source CPI is hosted inside the Solutions Lifecycle Management service destinations.

      We have tested the oauth url/clientid/clientsecret manually, and we can log in the TMS service if using and HTTP client, and also the destination test inside SAP BTP also works... So our service key for TMS is OK.

      But CPI just fails, really. SAP Help documentation clearly states that one of the destinations is named "CloudIntegration", but never really mention the "TransportManagementService" destination name (just says one for the Transport Management Service should exist). Do you have any idead what could be wrong?

       

      Thanks,

      Rafael

       

      Author's profile photo Harald Stevens
      Harald Stevens

      Hi Rafael,

      it seems that something is wrong with the TransportManagementService destination so that it cannot retrieve a token. Could you please check if the destination is configured as described here:

      https://help.sap.com/viewer/ea72206b834e4ace9cd834feed6c0e09/Cloud/en-US/af84d67f4be24542ac5e46f613a99435.html

      I would also recommend to check out this blog post:

      https://blogs.sap.com/2019/11/12/setting-up-sap-cloud-platform-transport-management-for-sap-cloud-platform-integration/

      It might provide some more clarity about the role of the destinations in the CPI / Neo use case.

      Kind regards

      Harald

       

      Author's profile photo Rafael Correa Dantas Ali
      Rafael Correa Dantas Ali

      Hi Harald, thanks for the response! I actually tried the steps on the links you mentioned before sending this message, and everything looks ok on the destination setup:

      Also, when we test in SAP BTP cockpit, it returns success (even though the server responds with a 404). It is the same response if I try to call the service manually in an HTTP client:

      But the "Unable to fetch OAuth Token, Token value is null" persists...

      Actually I even deleted the destination in the Solutions Lifecycle Management service, but CPI just returns the same message, as if it is not trying really to find "TransportManagementService", but something else. I tried "TransportManagementServiceOAuth", but no success either.

      Anyway, I opened an incident for SAP to check what else could be wrong...

      Author's profile photo Vijay Gonuguntla
      Vijay Gonuguntla

      Hi ,

      We are facing exactly same issue , did you hear any thing from sap on this . Any solution or work around for this error . Thanks

      Regards

      Vijay

      Author's profile photo Rafael Correa Dantas Ali
      Rafael Correa Dantas Ali

      Hello Vijay

      I opened an incident 5 days ago and got the response today:


      Dear Customer,

      The fix will be applied during the weekend. As I see, the previous patches have been applied to your tenant on Saturday between 07:00 -09:00 AM your local time, so most probably it will happen again in the same window.
      When the fix is applied, please re-test and confirm if the issue resolved.

      Best Regards,
      Anton


      So I believe a fix is being deployed in all SAP CI tenants. Not sure if will fix our problem, so maybe you should open an incident too.

      Author's profile photo Vijay Gonuguntla
      Vijay Gonuguntla

      Hi,

      Yes we did open ticket and will wait for the fix . Thanks for quick response .

       

      Regards

      Vijay

      Author's profile photo Rafael Correa Dantas Ali
      Rafael Correa Dantas Ali

      Hello,

      After SAP fix was released in our tenant (today, as planned by SAP team), the issue was solved: