Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
TiaXu
Product and Topic Expert
Product and Topic Expert

Series – TMS:

Before having Content Agent service (CAS), 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.

The following sample configuration describes the scenario: Transport SAP Cloud Integration (CI/CPI) Content with Transport Management Service (TMS) and Content Agent Service (CAS). You have different subaccounts, for example, a DEV subaccount, a TEST subaccount, and a PROD subaccount, and each subaccount has a CPI tenant. You want to transport the content archives of the source DEV subaccount to the target TEST subaccount and further PROD account.

 

Prerequisites

  • Three separate subaccounts (for DEV Node, TEST Node, and PROD Node)
  • Integration content (a package, for example)
  • Entitlements:
    • Integration Suite, Cloud Integration (for each subaccount)ServicePlanCategory
      Process Integration(any)Application
      Process Integration RuntimeapiService
    • Transport Management Service (can be provisioned to any single subaccount, called TMS subaccount in this post):

      ServicePlanCategory
      Cloud Transport ManagementstandardService
      Cloud Transport Managementstandard (Application)Application
    • Content Agent Service (can be provisioned to any single one subaccount, called CAS subaccount in this post, where should have a destination for CI and TMS configured)

      ServicePlanCategory
      Content Agent ServicestandardService

Configuration Entries

  • Transport Destination for TEST Node and PROD Node (TMS subaccount)
  • Transport Node for DEV Node, TEST Node, and PROD Node (TMS subaccount)
  • Transport Route between DEV Node, TEST Node, and PROD Node (TMS subaccount)
  • A Destination pointing to the CAS Service (DEV subaccount)
  • A Destination pointing to the CI Service (CAS subaccount)
  • A Destination pointing to the TMS Service (CAS subaccount)

TMS and CAS can be provisioned to any single one subaccount. In this post, for convenience, you can place them together, for example, DEV subaccount.

TMS.drawio.png

 

Step 1: Set Up the TMS Environment (TMS subaccount)

Please follow this guide to set up your TMS environment: https://help.sap.com/viewer/7f7160ec0d8546c6b3eab72fb5ad6fd8/Cloud/en-US/8d9490792ed14f1bbf8a6ac08a6...

Then, in order to enable TMS transport configuration in CI tenant, you should have the Role AuthGroup.Administrator assigned. Besides, in order to see the Transport button in CI tenant to trigger the whole transport process, you should ensure the Role WorkspacePackagesTransport assigned to yourself as well:

You can either add this Role to your existed Role Collection, or add it into a new one.

Step 2: Configure Destinations for Deployment (TMS subaccount)

In SAP Cloud Transport Management, transport destinations are used to address the target endpoint of a deployment process, so transport destinations (for deployment) need to be set for each node that is planned to deploy the content. In this scenario, we should configure transport destinations for both TEST Node and PROD Node.

Create Destination for TEST Node

In SAP BTP Cockpit of the subaccount with TMS provisioned, choose Connectivity -> Destinations -> New Destination .

Fill in with the following information:

FieldValueDescription

NameTest_NodeFor example.
TypeHTTP 
URLhttps://deploy-service.cfapps.<default-domain>/slprot/<myorg>/<myspace>/slp.As a result, the CI content (MTA) is deployed into the space <myspace> of the organization <myorg>. The default domain can be found in the API Endpoint. For example (BTP@AliCloud): https://deploy-service.cfapps.cn40.platform.sapcloud.cn/slprot/beta-support_testagain-75bwmerz/tms/s...
AuthenticationBasicAuthentication 
User Specify the name of the technical user that is used for the deployment. The technical user used for the destination must be a valid user on Cloud Foundry environment, and it must have the role SpaceDeveloper in the target space.
Password  

For example:

Click Save.

Click Check Connection, it will return 200: OK

For more details, please read: Create Transport Destinations

Create Destination for PROD Node

The same as above.

For example:

Step 3: Configure Transport Nodes (TMS Subaccount)

In Cloud Transport Management, transport nodes represent the source and target endpoints of a deployment process - for example, a Cloud Foundry subaccount. Transports take place between transport nodes.

Create DEV Node

Make sure you have one of the roles Administrator or LandscapeOperator assigned to your user.

You have the following options to create transport nodes:

  • Choose Landscape Visualization from the navigation pane, and then click button + (Create a Node).
  • Choose Landscape Wizard from the navigation pane, then select a template for your landscape, and create your transport nodes as part of the process.
  • Choose Transport Nodes from the navigation pane, and click button + (Create a new node).

In this post, we create node with option Transport Nodes.

Open the Transport Management home screen:

Navigate to Transport Nodes, click button + (Create a new node):

Only provide the name, description, and check the checkbox of Allow Upload to Node. Leave everything else as empty (by default) and click OK. This will act as your source transport node.

For more details, please read: Create Transport Nodes

Create TEST Node

Create a new one and fill it in with the following information:

We need to set the Destination so as to deploy the CI content into corresponding tenant.

Create PROD Node

Create a new one and fill it in with the following information:

We need to set the Destination so as to deploy the CI content into corresponding tenant.

Step 4: Configure Transport Routes (TMS Subaccount)

You can use the same transport node as a source node for multiple transport routes. However, you can use the same transport node only once as a target node for a transport route.

You have the following options to create transport nodes:

  • Choose Landscape Visualization from the navigation pane, and then choose to Create a Route, or select a transport node and choose to Create Route from the side menu.
  • Choose Landscape Wizard from the navigation pane, then select a template for your landscape, and create your transport routes as part of the process.
  • Choose Transport Routes from the navigation pane, and choose to Create a route.

In this post, we create a node with the option Transport Routes.

Create Transport Route between DEV Node and TEST Node

On your SAP Cloud Transport Management home screen, click button + (Create a route):

Fill in with the following information:

Click OK.

For more details, please read: Create Transport Routes

Create Transport Route between TEST Node and PROD Node

The same as above.

For example:

Step 5: Create Instance and Service Key of CAS Service (CAS subaccount)

Under anyone subaccount, create a CAS instance and a service key:

For more details, please read: Create Instance and Create Service Key

Step 6: Create Destination Pointing to CAS Service (DEV subaccount)

In SAP BTP Cockpit of the source DEV subaccount, choose Connectivity -> Destinations -> New Destination.

Fill in with the following information:

 

FieldDescription

NameProvide value as ContentAssemblyService. Please note that this value is case-sensitive.
TypeHTTP
DescriptionYou can provide a description for your reference. This field is optional.
URLProvide the URL from the service key details.
Proxy TypeInternet
AuthenticationOAuth2ClientCredentials
Client IDProvide the client ID from the service key details.
Client SecretEnter the client secret.
Token Service URLProvide the URL from the service key details. Note: Append the value oauth/token to the Token Service URL.
Token Service UserNo inputs required.
Token Service PasswordNo inputs required.

For example:

If you check the connection, you can ignore response 401.

For more details, please read: Create SAP Content Agent Service Destination

Step 7: Create Instance and Service Key of CI Service (DEV subaccount)

Under your DEV subaccount, create an instance of Process Integration Runtime, plan api with Role WorkspacePackagesTransport:

Create a service key for the instance:

Step 8: Create Destination Pointing to CI Service (CAS subaccount)

In SAP BTP Cockpit of the subaccount with CAS provisioned, choose Connectivity -> Destinations -> New Destination.

Fill in with the following information:

 

FieldDescription

NameProvide value as CloudIntegration.This value is case-sensitive.
TypeHTTP
DescriptionYou can provide a description for your reference. This field is optional.
URLProvide the URL of the system that you want a create a destination to.The format is: <oauth → url>/api/1.0/transportmodule/Transport.
Proxy TypeInternet
AuthenticationOAuth2ClientCredentials
Client IDProvide the value of the uaa → clientid field from the service key.
Client SecretProvide the value of the uaa → clientsecret field from the service key.
Token Service URLProvide the value of the tokenurl field from the service key.
Token Service UserNo inputs required.
Token Service PasswordNo inputs required.

For example:

If you check the connection, you can ignore response 401. You can check the connection later in the CI tenant.

For more details, please read: Create SAP Cloud Integration Destination

Step 9: Create Destination Pointing to TMS Service (CAS subaccount)

In SAP BTP Cockpit of the subaccount with TMS provisioned, choose Connectivity -> Destinations -> New Destination.

Fill in with the following information:

 

FieldDescription

NameProvide value as TransportManagementService. Please note that this value is case-sensitive.
TypeHTTP
DescriptionYou can provide a description for your reference. This field is optional.
URLProvide the URL from the service key details.
Proxy TypeInternet
AuthenticationOAuth2ClientCredentials
Client IDProvide the client ID from the service key details.
Client SecretEnter the password
Token Service URLProvide the URL from the service key details.
Token Service UserNo inputs required
Token Service PasswordNo inputs required
Additional PropertiessourceSystemId: Enter the ID of the source node of the transport route, for example, DEV_Node.

You can check the sourceSystemId in the TMS tenant:

For example:

If you check the connection, you can ignore response 401. You can check the connection later in the CI tenant.

For more details, please read: Export using SAP Cloud Transport Management

Step 10: Configure Transport Mode in CI Service (DEV subaccount)

Log into your CI tenant as an administrator.

Click on Settings -> Transport, click on Edit (bottom right corner), and then set Transport mode to Transport Management Service and Save.

Note: To enable this setting AuthGroup.Administrator role required.

Click Check Configuration to check the necessary configuration behind including both destinations pointing to CI service and TMS service. You will get results as below if your destinations are correctly configured:

Step 11: Test (DEV subaccount)

Trigger Transport Process

Open the CI package that you want to transport and click the trigger button Transport in the upper right corner.

Fill in comments for this transport and click Transport:

If your content is successfully exported as an MTAR file by CAS service, it will return a message as below:

You can check the status in the TMS tenant:

Import to TEST Node and Transport to PROD Node

In the TMS service, the export process of DEV_Node will create a transport request and attach the content archive into the import queue of the target node, in this case, namely TEST_Node. Then, the administrator can manually trigger the import process to transport the content archive into the TEST subaccount. As a result, the CI package will be available in the CI tenant of the TEST subaccount, and at the same time, the content archive will be transported to the import queue of the next node PROD_Node.

Go into the TEST_Node, select the transport request, and click Import Selected, the content archive will be imported (deployed) into the TEST subaccount and immediately transported into the PROD_Node:

Confirm the execution again by clicking OK:

If this action is executed successfully, it means the application has been successfully deployed into the CI tenant of the TEST subaccount. At the same time, the content archive has been transported to the import queue of the PROD_Node.

Check the package in the CI tenant of the TEST subaccount:

Import to PROD Node

Repeat the operations exactly the same as you do for the TEST_Node. Then the content will be transported further into the next CI tenant.

Step 12: More Options to Transport CI Content with CAS

SAP Content Agent service enables you to assemble the content from the content providers (for example, CI service, API Management, etc.) in MTAR format. Later, this content is either available for download or exported to the configured transport queue, such as Change and Transport System (CTS+) or SAP Cloud Transport Management.

In another word, CI and CAS provide three options of Transport Mode for you to configure. In this post, we transport the content with the mode Transport Management Service.

The three options of Transport Mode in CI service:

  1. CTS+ Direct: For more details, you can read: Export Using Change Management System (CTS) Destination
  2. MTAR Download: You can download the MTAR file locally and do further deployment or transportation manually.
  3. Transport Management Service: This can be achieved by performing all the above steps.

For more details, please read: Content Assembly and Export

Reference

Help Portal - Sample Configuration Scenario: Transport of Content Archives directly in another Appli...

Help Portal - Enabling Content Transport, Cloud Foundry Environment

Blog - Introducing SAP Content Agent service: Enhanced Transport Capabilities for SAP Cloud Integrat...

 

 

10 Comments
Martin-Pankraz
Active Contributor

Hey tiaxu,

thanks for sharing the post. How about APIs to orchestrate the process from Jenkins, Azure DevOps or an GitHub Action? That would be great for the DevOps practice.

KR

Martin

harshadchaudhar
Explorer
0 Kudos
Hi Tia Xu,

Thanks for article. This is created for transport integration suite artifacts between subaccounts.

 

How could we do the same if need to import transport workflows between BTP subaccounts ?
T_Stork
Explorer
0 Kudos

Hello,

 

thank for the blog. But we have some problems....

 

We want to use it to transport CPI Content between two different global accounts (migration) from a subaccount (at GlobalAccount_1) to a subaccount (GlobalAccount_2).

 

Our Set up:

-Integration Suite (CPI)=source at subaccount GlobalAccount_1

-Integration Suite (CPI)=target  at GlobalAccount_2 (not yet existing)

-TMS & CAS in a subaccount at GlobalAccount_2

 

So far we created the destination as possible, but if we "check configuration" at the CPI (Source) we only get an Error dialog with header "Error" and Error test "Error in the http client:Error while getting slpManagementClient."

How can we check what ist going wrong ?

 

We created a destination to a "TEST_CPI_Node", but do not understand how to set "myorg" in the deployment service URL. 

 

Thank you

 

Regards

Thorsten

redarkim
Discoverer
tiaxu,

 
Your TMS Blog has helped me a lot.

Thank you very much.

I set up TMS and it works fine.

I have one question for you.

Three scenarios of different packages were transported using TMS.

And I have 3 service keys in my Production Subaccount.

The service key is different only in name, but the content inside is the same.

I have 100 packages.
If I transport 100 packages, will I have 100 service keys?

Is a service key created for each package in TMS?

Can I create and use only one service key?



 

 



 
jonas_kinold
Explorer
0 Kudos
I encounter the same problem. Tai Xu, can you help?
ankush10990
Explorer
0 Kudos
Hello @thorsten_stork: Could you please provide some more detail that how this issue was resolved, i am also getting the same error.

Thanks!
T_Stork
Explorer
0 Kudos
Hello,

 

our mistake was, that we used the "orgId" in the url instead of the "org name".

After using "org name" in the URL, it works.

 

Regards
ankush10990
Explorer
0 Kudos
Thanks @thorsten_stork: it seems correct in our case. no luck.

Any more suggestions, Please let me know.

 
luanmatos
Explorer
0 Kudos
Hello tiaxu

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.

Thanks!
0 Kudos
Hi tiaxu

We have tried did in trial tenant to check a working Proof of concept. But we are currently getting issue while trying to create a target destination according to this blog.

Url:

https://deploy-service.cfapps.ap21.hana.ondemand.com/slprot/5ced5a34trial_trial1-9i3qeh6i/dev/slp

Screenshot of error below:


Error screenshot while doing check connection for target destination


Could you please tell whether its a SAP issue/any steps to fix this.

Thanks in advance,

Rahul