Skip to Content
Technical Articles
Author's profile photo Fabian Dias

Setup SAP BTP Cloud Transport Management Service(Cloud Foundry) for Cloud Platform Integration(CPI)


Since SAP Cloud Platform Integration(CPI) fka HCI was released back in 2012, integration developers have been exporting and importing artifacts manually between Development & Production CPI tenants and this process is well documented on as well as SAP OSS Note 2651907; however, we now have SAP BTP Cloud Transport Management Service to help us move CPIS integration packages between 2 tier and or 3 tier landscapes all while allowing us to track who exported/imported what and when with better logging. Feel free to look at details about What is SAP Cloud Transport Management.

In this blog, we will look at how to setup the BTP Cloud Transport Management service on Cloud Foundry for CPIS. And if you would like to discover and understand this particular SAP BTP service offering, please look at BTP Discovery Center.


  1. You must be subscribed(licensed) to SAP BTP Cloud Foundry and Cloud Transport Management Service.
  2. You have setup the appropriate BTP Subaccount & activated the required Instances & Subscriptions for Cloud TMS while creating the required entitlements for this service.

Reference blog:

On SAP BTP Cockpit

  1. Ensure that you have created a role collection for accessing and administering Cloud TMS. Note: in the screenshot below you are seeing all roles displayed/highlighted in yellow but truly if you want the full app. access, the administrator role will suffice, and the rest of the roles can be assigned based on specific authorization requirements.
  2. Assign this role collection to your user(s). Ensure that WorkspacePackagesTransport role is assigned to the role collection *This role is created during the Process Integration Runtime API instance

  3. Log into your BTP-CF Non-Production Subaccount (for this example we are provisioned in Azure, ‘DEV_AZR’)
  4. Create a Cloud Foundry Space in the Dev subaccount (for example ‘DEV_SP_AZR’). We created a generic Space that will house cloud applications and Cloud TMS. Or you could create dedicated Spaces (with appropriate quotas) for the required application(s). NOTE: Space requirements for CTMS are very low: you need 1 (extra) service, and 1 (extra) GB of memory. Same is true for CAS and the PI runtime. In total, for this CTMS scenario you should do fine with 5 services and 5 GB of memory but if you are looking to utilize multiple cloud services within 1 Development Space, then the extra allocation will be just fine for the total picture.
  5. Create and assign the appropriate Quota Plan to your newly created Space(s)
  6. Ensure that you assign members to this Space with at least Org Manager access to administer this Space
  7. Under your Development BTP Subaccount (for example DEV_AZR) > navigate to your Development Space (for example, DEV_SP_AZR) and expand Services -> Instance. Here you need to create an Instance & Service Key for the following 3 services with the Plans shown below:
    1. Content Agent Service (Service) -> standard (Plan)
    2. Process Integration Runtime (Service) -> api (Plan)
    3. Cloud Transport Management (Service) -> standard (Plan)
  8. Create Cloud TMS relevant Destinations. Here you will need to create a total of 5 BTP Destinations under your development subaccount ‘DEV_AZR’.
    Please refer to the SAP Help link for creating Destinations in Cloud Foundry and follow this link to create Transport Detsinations.

    1. CloudIntegration (*must follow this exact naming convention) **Using Process Integration Runtime (api) service key
    2. ContentAssemblyService (*must follow this exact naming convention) **Link to help doc
    3. TransportManagmentService (*must follow this exact naming convention) (NOTE: here you will need to add an additional property (sourceSystemId = DEV(*your development TMS node name) manually and not via the dropdown list **Link to help doc
    4. MTA_DEV or a name you choose – (**points to the CF Deploy Service of the Development Space) (for example, https://deploy-service.cfapps.<your DC i.e. us10><org name on DEV subaccount>/<DEV space name>/slp
    5. MTA_PRD or a name you choose – (**points to the CF Deploy Service of the Production Space) (for example, https://deploy-service.cfapps.<your DC i.e. us10><org name on PRD subaccount>/<PRD space name>/slp

On Cloud Transport Management

  1. Log into the Cloud Transport Management UI
  2. Create transport nodes in Cloud TMS (for this example, we have used DEV & PRD). Note: The name of the development (source) node has to be identical (case sensitive) with the additional property ‘sourceSystemId’ in the ‘TransportManagmentService’ destination.
    1. On the DEV node, ensure you select Content-Type = Multi-Target Application and for Destination = MTA_DEV which is the BTP Destination you created in Step 8
    2. On the PROD node, ensure you select Content-Type = Multi-Target Application and for Destination = MTA_PRD which is the BTP Destination you created in Step 8
  3. Create a transport route (for example, CPIS_TMS) in Cloud TMS and assign the appropriate Source(DEV) and Target(PRD) nodes

On SAP BTP Cloud Platform Integration (Non-PRD tenant)

  1. Log into your CPI non-production tenant as an administrator
  2. Click on Settings -> Transport and set Transport mode to ‘Transport Management Service’ and Save
  3. Click on Check Configuration button and ensure you receive a SUCCESS message
  4. Go into your CPIS package that you want to transport and click on Transport link in upper right corner > Provide a name for your transport (HINT: if you don’t see this button, you do not have ‘WorkspacePackagesTransport’ assigned to your user)

On Cloud Transport Manager UI

  1. On the main Cloud TMS page, click on Overview and then click on ‘Transports Waiting for Import’
  2. Select your object(s) to import and click on Import Selected (within 30 sec to a minute your import into PRD should be complete)
  3. Click on Transport Action Logs to check the status of your transport request

On CPIS – Production tenant

  1. Log into CPI Production tenant and click on Design. Here you should see your imported package

That is it for now. I hope this blog helps you setup and adopt the SAP BTP Cloud Transport Management Service for BTP CPI in a quicker fashion.

Thanks and feedback is always welcome.



PS: A big thank you to my colleagues @abhisheknath, @jacobmoore & @mannychibeze for contributing to this content and helping with the setup!

Assigned Tags

      You must be Logged on to comment or reply to a post.
      Author's profile photo Surajit Pramanick
      Surajit Pramanick

      Awesome blog, Fabian! Easy to follow and useful. Thanks for sharing.

      Author's profile photo Quang Vu
      Quang Vu

      Thanks Fabian, looking forward to future blogs on integration from you. Awesome.

      Author's profile photo Peter Chezowitch
      Peter Chezowitch

      Thank you for this blog. Regarding the MTA_* destinations - they are using basic auth. Which user to use here and where is it created? I suppose we should not use a normal named S-User who needs to update their passwords, right? How to create a "technical user" for this purpose?

      Author's profile photo Kalpana Timmapuram
      Kalpana Timmapuram

      Hi All


      I just want to add a comment that there is a Pre-requisite for the transports to be imported into Destination Tenant.  The user that is configured in the Destination creation  "Step V" in this blob needs to have the "Space developer" access on the Destination tenant's SubAccount when you use Cloud Foundry. Otherwise, the transports would fail in the CTMS.

      Hope this tip helps someone. This pre-requisite should have been mentioned as a KBA or in .

      Author's profile photo Jacob Moore
      Jacob Moore

      Hi Kalpana,

      You are correct and this should be pointed out explicitly. I will contact the blog owner to update with this additional information.

      Thank you for your contribution!

      Author's profile photo Vinicius Souza
      Vinicius Souza

      Hi All,


      I'm from Brazil and we are trying to set up CPI Transport Management.


      Everything were followed as the blog shows, however we need the role SpaceDeveloper in the target tenant.


      When I try to configure the ABAP Environment to set this role and informs it is not available to my region.


      Why is that and how can we achieve this?




      Author's profile photo Harald Stevens
      Harald Stevens

      Hi Vinicius,

      to be honest I am a little confused: CPI runs in a Cloud Foundry (or Neo) environment, but not in an ABAP environment in SAP BTP. The role SpaceDeveloper is only available in a space created in a Cloud Foundry subaccount.

      For the deployment of the CPI content to the target tenants you need destinations pointing to a space in the Cloud Foundry subaccount in which CPI runs. The technical user in this destination is the one who needs the SpaceDeveloper role.

      Hope that helps.

      Kind regards


      Author's profile photo Vinicius Souza
      Vinicius Souza

      Hi Harald,


      I just figured out this.


      We are setting up the environment and we were able to configure this step.


      Now we want to know whether is possible to use a Sub Account just to manage the transport between CPI environments.


      In other words we want the 3 CPIs environments to have the Integration Suite and another Subaccount to have the CPI Transport Management.


      Is it possible?




      Author's profile photo Harald Stevens
      Harald Stevens

      Hi Vinicius,

      yes, absolutely, the cTMS subaccount can be (and very often is) separated from CPI subaccounts. In this setup it is important to create the different destinations in the correct subaccounts:

      The destination pointing to cTMS (called 'TransportManagementService') has to be created in the CPI source subaccount. The same is true for the destinations 'CloudIntegration' and 'ContentAssemblyService'.

      The destinations used to deploy the CPI content (pointing to the target CPI environments) have to be defined in the subaccount in which cTMS runs (has the subscription and the service instance).

      According to the documentation it seems that the subscription to the Content Agent service has to be in the same subaccount where you want to do the export (your CPI development account).

      Kind regards


      Author's profile photo Vinicius Souza
      Vinicius Souza



      In Subaccount with Integration Suite - DEV I have the following destinations:


      And in the subaccount With Cloud Transporte Management I have the connection to the targets (DEV, QAS and PRD):



      Is this OK? Because I'm getting the error:


      {"results":[{"status":"SUCCESS","description":"Configuration check for CloudIntegration"},{"status":"ERROR","description":"Configuration check for TransportManagementService","error":{"uuid":"1903f45e-8d0c-45d1-b646-aef4b6df6344","internalMessage":"Error occurred while accessing TMS. Kindly check destination [TransportManagementService]"}}]}








      Author's profile photo Harald Stevens
      Harald Stevens

      Hi Vinicius,

      the names (and authentication types) of the destinations look ok. BTW, the Configuration Check only looks into the first three destinations.

      So there seems to be a problem in the destination 'TransportManagementService'. Please double-check if the information from the correct fields in the service key have been copied to the correct places in the destination (as described here in step 2, although the description is for Neo the setup of the destination is identical).

      It is fairly easy to skip a character or add an extra blank when copying the Client ID and Client Secret. So double-check that as well.

      Another thing that gets forgotten quite frequently is adding '/oauth/token' to the end of the Token Service URL.

      Unfortunately the connection check of the destination service is not so helpful...
      It should return 401.

      If you want to dig a little deeper you can copy the Token Service URL to your browser and open it. You should then be asked for a user and password. Here you enter Client ID and Client Secret from the cTMS Service Key (you cannot retrieve the Client Secret from the destination).
      It should then return the following information:

      {"error":"invalid_request","error_description":"Missing grant type"}

      If you get that far and have the same data in your destination, it should pass the Configuration Check.

      Kind regards


      Author's profile photo Luan Matos
      Luan Matos

      Hello Fabian Dias

      After running import i am seeing below error.

      CTS+ process failed. Error: "Service operation failed: Controller operation failed: 404 Updating service "process_integration_transport_instance_mtls" failed: Not Found: Error creating service "process_integration_transport_instance_mtls" from offering "it-rt" and plan "api": Service plan api not found. "

      Just FYI, Process Integration runtime instance with api plan is already created in Source sub account.

      Could you please help me with this.