Skip to Content
Technical Articles
Author's profile photo Vladimír Balko

Transporting content in SAP BUILD Process Automation

Introduction:

Update 27.3.2023: Updated links to standard documentation and details of CTMS destinations.

SAP BTP BUILD platform has recently added a new transport process functionality that has been welcomed with open arms by all developers who have to handle transfers of processed in past. This functionality enables developers to transfer processed data between different tenants such as dev, test, and prod in a more controlled and seamless way. The new transport process setup is described in detail on the help page and takes advantage of two utility services on SAP BTP, namely SAP Cloud Transport Management and SAP Content Agent Service.

The new transport process functionality (which is called promoting) allows to seamlessly move applications and other processed data from one tenant to another, which is a crucial step in the development lifecycle. This is particularly important when working on complex enterprise applications that need to be tested thoroughly before being released into production. The new transport process setup provides developers with more control over their processes and ensures that any changes made to applications are thoroughly tested and vetted before being released into the production environment.

So, let’s get started and explore the new transport process functionality in SAP BTP BUILD platform.

Setting up the Environment:

The new transport process functionality in SAP BTP BUILD platform requires the setup of three different tenants – source, target, and CTMS (Cloud Transport Management System) – to function correctly. In this section, we will walk you through the steps required to set up each tenant and configure them to work together to enable the new transport process functionality.

Setting up the CTMS tenant:

It’s worth noting that the CTMS (Cloud Transport Management System) tenant needs to be set up in advance before you can use the new transport process functionality in SAP BTP BUILD platform. This tenant is responsible for managing the transport process between the source and target tenants and requires specific configuration.

Best practice is to set up the CTMS on a special subaccount for single tenant applications/services. However, this setup process is beyond the scope of this article. For more information on setting up the CTMS, please refer to the SAP Help page on this link: https://help.sap.com/docs/TRANSPORT_MANAGEMENT_SERVICE/7f7160ec0d8546c6b3eab72fb5ad6fd8/66fd7283c62f48adb23c56fb48c84a60.html. This setup process may be covered in a future article.

Setting CAS in source tenant

In addition to the SAP BTP BUILD platform, the source tenant also requires an instance of the Content Agent Service (CAS) to work with the CTMS. The CAS serves as a link between BUILD content and the CTMS, providing the necessary functionality to export and import the content from and to the CTMS.

To set up the CAS in the source tenant, you’ll need to create an instance of the Content Agent Service in the subaccount. You can find detailed information on how to create an instance of the Content Agent Service in the SAP Help page on this link: https://help.sap.com/docs/CONTENT_AGENT_SERVICE/ae1a4f2d150d468d9ff56e13f9898e07/1f45ddc3d6194886802924068724b59f.html.

Once you have created the CAS instance, you’ll need to create a new destination with the name “TransportManagementService”. This destination serves as a connection to the CTMS instance. You can create this destination in the SAP BTP Cockpit by navigating to your subaccount and selecting “Destinations” from the left-hand menu. Detailed info can be found here: https://help.sap.com/docs/CONTENT_AGENT_SERVICE/ae1a4f2d150d468d9ff56e13f9898e07/eed66f35f9d148c8ae5b2d46ff097d8c.html You should use clientId and clientSecret from the CTMS instance (from Single service tenant).

Next, you’ll need to create a new destination in the CTMS subaccount as a connection to the source tenant. This destination will also need to be created in the SAP BTP Cockpit, and it should point to the “TransportManagementService” destination in the source tenant. Detailed info can be found here: https://help.sap.com/docs/CONTENT_AGENT_SERVICE/ae1a4f2d150d468d9ff56e13f9898e07/06bd9e2d55084eaf9235844118ddb84c.html

Keep in mind, that during configuration of CTMS transport nodes and transport path, you have to have defined both destinations (source and target subaccounts). Both of those destinations needs to be configured in subaccount where CTMS is configured.

You should use clientId and clientSecret from the CAS instance (from Source tenant)

This will setup both direction connection between Source tenant (CAS/BUILD) and CTMS tenant/service

Setting up the CAS in target tenant

Setting up the target tenant is a simpler process than the source tenant. Like the source tenant, the target tenant requires an instance of the BUILD platform and a CAS instance. Once these are in place, you’ll need to get the credentials from the service key of the CAS instance.

Next, you can create a new destination in the CTMS subaccount that represents the target tenant. If you have multiple target tenants, such as test and prod, you’ll need to repeat this process for each tenant.

https://help.sap.com/docs/CONTENT_AGENT_SERVICE/ae1a4f2d150d468d9ff56e13f9898e07/06bd9e2d55084eaf9235844118ddb84c.html

With the required connections set up, you’ll be able to take advantage of the new transport process functionality in SAP BTP BUILD platform and transfer content between tenants more easily and in a more controllable way. It’s worth noting that the configuration of CTMS transport nodes and routes is outside the scope of this article, but they will need to be set up correctly to take full advantage of the transport process functionality.

 

Promoting the process

Transporting, or promoting as SAP calls it, is a straightforward process.

To transport a process from the source tenant to the target tenant, you need to first release the process on the source tenant. Once the process is released, navigate to the version you want to promote and click on the promote button. This will create a transport request, which you can then import into the target tenant.

 

 

To import the transport request, you’ll need to go to CTMS and select the target node where you want to import the transport. Then, click on the Import button and select the transport request you want to import.

Once the transport is imported successfully, go to the target tenant’s build lobby. Here, you’ll see a new button labeled import queue.

Click on this button, and you’ll see the imported process in the import queue.

 

To import the process into the target tenant’s build lobby, click on the process and then click on the import button.

 

After the import is complete, the process will be available in the target tenant’s build lobby, and you can continue working on it as needed.

Disclaimer: All the pictures and content was created by myself. You can find the same blog post in my second blog page – https://vbalko.blogspot.com/2023/02/transporting-content-in-sap-build.html

Assigned Tags

      16 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo ENKHZUL SUKHBAYAR
      ENKHZUL SUKHBAYAR

      Hi Vladimir,

      What a great blog post! Very helpful to understand the developer perspective and how the technologies come together.

      Best regards,

      Jesse

      Author's profile photo Christian Braukmüller
      Christian Braukmüller

      Hi Vladmir,

      thank you for your blog.

      „Transporting, or promoting as SAP calls it, is a straightforward process.“

      Is „promote“ the new „transport“ in general? 🤔

      or a specific term in SAP Build?

      Or a specific term in SAP Build ProcessAutomation?

      best regards
      Christian

      Author's profile photo Vladimír Balko
      Vladimír Balko
      Blog Post Author

      Hello Christian Braukmüller ,

      I don't have any internal strategic info, but I guess, that it's just BUILD specific jargon

      Author's profile photo Boris Zarske
      Boris Zarske

      Hello Christian,

      I can confirm Vladimír's assumption that there are no plans to change terms here in general. Also SAP Build works together with the SAP Cloud Transport Management service, where (as the name implies) transports are handled. So, this is a rather local term, as SAP Build in general also addresses citizen developers that might not be familiar with the "transport" term.

      Best regards,
      Boris

      Author's profile photo Guy Chapman
      Guy Chapman

      Hi,

      In a couple of place in your blog it says "Detailed info can be found here" but there is no link to follow?

      Thanks,

      GUy

      Author's profile photo Vladimír Balko
      Vladimír Balko
      Blog Post Author

      Hello Guy Chapman ,

      thank you for the notice, about missing links. Those were just hidden in a source html 🙂

      They are back there.

      Have a nice day

      Author's profile photo Sara Moreno
      Sara Moreno

      Hello experts.

       

      it's throwing me this CTS+ process failed. Error: "Error merging descriptors: Unsupported module type "com.sap.lobby.content" for platform type "CLOUD-FOUNDRY" " when I import the artifact to test system.

       

      Any idea of what it's failing, I did this configuration:

      • Source system (dev): created TransportManagementService that points to CTMS tenant
      • Source system (dev): created CAS instance
      • Target system (test): created CAS instance
      • CTMS subaccount: created a destination that points to CAS target instance

       

      Author's profile photo Sara Moreno
      Sara Moreno

      I solved the issue by my self, thanks

      Author's profile photo Virender Singh Rana
      Virender Singh Rana

      @Sara Moreno,

      What was the solution. Could you please share elaborately.

      Thanks.

       

      Author's profile photo Sara Moreno
      Sara Moreno

      Sure Virender.

      These were the steps I followed:

      • Source system (dev): create TransportManagementService that points to CTMS tenant
      • Source system (dev): create CAS instance as standard (just to assemble the artifact)
      • Target system (test): create CAS instance as application (to import the artifact)
      • CTMS subaccount: create a destination that points to Target system (CAS credentials)

      This is my landscape:

      dev->test->stage->prod

       

      Author's profile photo Virender Singh Rana
      Virender Singh Rana

      Hey Sara,

       

      Thanks for responding. Tried same but still not working. Possible for you to connect over zoom or meet for a quick connect. I am in IST timezone but flexible for connecting anytime. Please share your availability if possible.

      Thanks in advance !

      Virender.

      Author's profile photo Anupam Dutta Roy
      Anupam Dutta Roy

      Hi Virender Singh Rana , are you able to solve this? not sure what exactly I am missing.

      Thanks,

      Anupam

      Author's profile photo Anupam Dutta Roy
      Anupam Dutta Roy

      Hi Sara Moreno ,

      Did you create any destination in cTMS account with the CAS instance(standard) in Dev? Did you use any additional property to link it with 'TransportManagementService' destination there?

      Thanks,

      Anupam

      Author's profile photo Sara Moreno
      Sara Moreno

      Hello Anupam Dutta Roy

       

      This is the configuration I have done:

      In source subaccount (where is SPA DEV) :

      • Destination to CTMS with property sourceSystemId = dev node
      • Create a content agent instance type standard to assemble the artifact

      In target subaccounts (test, stage, prod...)

      • Create content agent instance type application to import the artifact into target system. Create instance in all target subaccount you need to deploy.

      In CTMS subaccount:

      • Configure endpoint destination to Content Agent instance of the target system. Configure destinations for all target systems
      Author's profile photo Anupam Dutta Roy
      Anupam Dutta Roy

      Thanks Sara for your reply.

      I was able to make it working after changing the CTMS nodes pointing to Content Agent Instance. I had been still using the other destinations for CAPM deployment to CF.

      By the way, I have one observation; the transport mechanism works perfectly fine even if we have CAS application instance in the SAP DEV. I used both standard and application instances to test this.

       

      Regards,

      Anupam

      Author's profile photo Anupam Dutta Roy
      Anupam Dutta Roy

      Hi @Vladimír Balko,

      Thanks for the blog. I was able to follow along most of the parts described by you. But facing issue while importing from cTMS. The message says "Error merging descriptors: Unsupported module type "com.sap.lobby.content" for platform type "CLOUD-FOUNDRY"

       

      The only confusion I have from the following section in the source system:

      Could you please help me how to create the destination in cTMS point to another destination (TransportManagementService) in source account? The link you mentioned in this part taking to the target node destination.

      Thanks in advance.

      Anupam