Skip to Content
Technical Articles
Author's profile photo Murali Shanmugham

Transport Fiori Launchpad sites on SAP BTP using SAP Cloud Transport Management service

 

Building a central Launchpad using SAP Launchpad service on SAP BTP

Part 1 – Getting Started

Part 2 – Understanding the options around developing HTML5 apps in Cloud Foundry

Part 3 – Developing HTML5 apps

Part 4 – Integrating HTML5 apps with the Central Fiori Launchpad

Part 5 – Integrating 3rd Party apps with the Central Fiori Launchpad

Part 6 – Integrating chatbots with the Central Fiori Launchpad

Part 7 – Integrating with remote content providers

Part 8 – Enabling Notifications

Part 9 – Transporting Launchpad sites using SAP Cloud Transport Management service

 

[Update 2021]: Note that this asset was created before our branding changes related to SAP technology were announced on January 2021. Note that SAP Cloud Platform Launchpad was renamed to SAP Launchpad service, and SAP Cloud Platform Portal was renamed to SAP Cloud Portal service

[Update Nov-2022]: Please note that this blog was published prior to the re-branding related to SAP Build portfolio, which was announced at SAP TechEd 2022. SAP Launchpad service and SAP Work Zone come together under the SAP Build Work Zone brand, with two editions: standard edition (formerly SAP Launchpad service) and advanced edition (formerly SAP Work Zone). You can learn more in this announcement blog post: SAP Build Capabilities Explained | SAP TechEd | SAP News Center

A much-awaited capability of transporting Fiori Launchpad sites is now available on SAP Business Technology Platform (BTP). SAP Cloud Transport Management service enables the transport of application and interface artefacts between SAP BTP accounts and is well integrated with many other services on SAP BTP. With the recent update, SAP Cloud Transport Management service now also supports transporting Fiori Launchpad sites. You will be able to see the various touch points of the Cloud Transport Management service documented in SAP Help.

In this blog post, I will walk you through the steps which are required to be configured in order to transport Launchpad sites. You can find the high level documentation of all these step in this Help documentation.

Landscape setup

For demonstration, I have created 3 subaccounts to represent a landscape with 3 environments – DEV/QA/PRD.

The Dev environment has instances of Business Application Studio, Alert Management and Transport Management. The Launchpad service along with the HTML5 apps will be enabled and deployed in the remaining subaccounts.

Create Launchpad service instance:

In the DEV subaccount, I have created a subscription & an instance for the Launchpad service (Standard Plan). A service key for the instance is required for creation of destinations.

Repeat the same for QA and PRD subaccounts too.

Create Cloud Transport Management service instance:

Similarly, I have created a subscription and service instance for the Cloud Transport Management service. A service key for the instance is required for creation of destinations.

You do not need to repeat this step for QA & PRD subaccounts. To access and configure the Launchpad and Transport Management service, don’t forget to assign the relevant role collections. You can find them in the Help documentation –  Launchpad service & Transport Management service.

Setup Destinations in the DEV subaccount

In order to see the “Transport Site” or “Transport Selected Content” option within the site manager of the Launchpad service, you would need to configure a destination (under the connectivity menu) with the name “ctms_destination”.

Use the Authentication type as OAuth2ClientCredentials and use the following mapping from the Service Key created for the Transport Management service.

Use the value of: As the value of:
uri URL
clientid Client ID
clientsecret Client Secret
url Token Service URL and add at the end: /oauth/token

In the additional parameters, add node-name and set the value with the name of the initial transport node configured in the Transport Management service. This internally invokes the API /nodes/export and the transport request is added to the queues of the follow-on node provided as the parameter name.

Next, you will need to create 3 destinations for each of the launchpad sites which you are going to use in DEV/QA/PRD.

Similar to the previous destination, you will need the values from the service key created for the launchpad service.

Use the Authentication type as OAuth2ClientCredentials and use the following mapping from the Service Key created for the Launchpad service.

Use the value of: As the value of:
portal-service

URL and add at the end: cdm_import_service

For example:

https://portal-service.cfapps.eu10.hana.ondemand.com/cdm_import_service

clientid Client ID
clientsecret Client Secret
url Token Service URL

Configure Destinations to XSUAA Instances

You would also need to create a service instance for “Authorization and Trust Management Service” with apiaccess plan. You would need to have this configured in all the remaining subaccounts too.

Once a service instance is created, you need to create a destination of type “Service Instance” and use the exact name “xsuaa-apiaccess” as shown below.

Configuring the Launchpad site

Here is the overall solution diagram which depicts how various components will interact with each other to transport the contents across different subaccounts in SAP BTP.

I am assuming you know how to configure a launchpad site. If this is new to you, here is a link to a tutorial which you can use to familiarize yourself on the various objects which are available to configure in your launchpad site.

For demonstration, I have a simple site with a role called “Purchase Order” and configured it to provide access to a set of apps under a group called “Purchase Order Processing”.

I have configured a Launchpad site which has access to this role and the related contents.

This is how the launchpad site would appear at runtime (displaying 3 apps under the group Purchase Order Processing)

Configuring the Transport Management service

In the Transport Management service, you will need to configure transport nodes to represent your landscape and create routes to indicate the path for the flow of contents in the landscape.

I have created 3 transport nodes – DEV/TST/PRD.

Here is the configuration for the DEV transport node. The destination should be correctly set to match the DEV_Sites destination which has been created earlier. Also ensure that the content type is “Application Content”. For the remaining transport nodes, ensure that you select the correct destination. This will determine the subaccount to which the transport Management will push the contents.

I have also created two transport routes to connect DEV/TST/PRD environments as shown below.

Transport your Launchpad site

Navigate to the Launchpad service – Site Manager in your DEV subaccount and select the “Transport Site” option.  This option will transport the site along with the related contents.

This will initiate the transport of contents and communicate with the Transport Management service. In the Action logs, you will be able to see the files being uploaded.

The Launchpad contents would now be available in the import queue of the “PORTAL_TST” transport node. From here, I can import these contents by clicking on “Import Selected” button.

The launchpad site along with the contents will soon appear in the TMS_QA subaccount.

Make sure you assign the role collection to your users before trying to access the launchpad site

Within the Transport Management service, you will be able to find that the content has progressed and is in the import queue of the PRD environment. Similar to the previous step, you can select the content and import them.

This will kick off the import process of the Launchpad site and the contents into the TMS_PRD subaccount.

Transporting specific contents

The Content Manager of the Launchpad service allows specific contents to transported (instead of transporting the entire site). All the related contents will also be transported with this approach. For example, when a role is selected, the apps assigned to it, and the groups and catalogs to which these apps are assigned, are also transported. There is no need to select the individual objects.

Let me show you how to transport new/updated contents once you have already transported the Launchpad site. Within your Content Manager, you have the option to select the new/updated contents and transport them.

Below, I have created a new app config called “Monitor Purchase” and updated the existing role/group to include this app.

Similar to the previous steps in the transport node, you will be able to see this request in the import queue of the “PORTAL_TST”.

Importing this content will push all the relevant changes to TMS_QA subaccount. You would just repeat the same process to progress this change all the way to TMS_PRD subaccount.

When you are developing extension apps on SAP BTP, you will need a way to manage Fiori Apps & integration contents along with the Launchpad site. There are many DevOps related services on SAP BTP – for example: Alert Notification, CI/CD, Transport Management etc. Evaluate these options to see how best you can manage the software deliverables and transport them together across different SAP BTP subaccounts.

 

Assigned Tags

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

      Thanks a lot for this great blog post (and the good news).

      Kind regards
      Harald

      Author's profile photo Gurkan Yilmaz
      Gurkan Yilmaz

      Great post! Thanks a lot!

      Author's profile photo Saar Dagan
      Saar Dagan

      Great article, thanks for the clear guide. 👍

      Author's profile photo Jawad Margieh
      Jawad Margieh

      Nice writing, very clear! Thanks a lot.

      Author's profile photo Rachid Kaouass
      Rachid Kaouass

      Hi,

       

      thanks for the blog!

      I've a question, I can add the "Launchpad Service" subscription but I can't find the possibility to add the instance for the service "scp-launchpad". Without instance, we can't add add service key.

      I've even try to add the scp-launchpad using Command-line but it says that scp-launchpad doesn't exists.

       

      Thanks

      Author's profile photo Murali Shanmugham
      Murali Shanmugham
      Blog Post Author

      Hi Rachid,

      Please check if you have added the entitlement with these two plans.

      Author's profile photo Rachid Kaouass
      Rachid Kaouass

      Hi Murali,

       

      unfortunately, I've checked the entitlements but I don't have the second option.

      I'm using trial account, but even on customer environment it is the same.

       

      Author's profile photo Séverin de BEAULIEU
      Séverin de BEAULIEU

      Hello,

      I don't have it either on a CPEA account. Any idea to solve this issue?

      Cheers,

      Author's profile photo Murali Shanmugham
      Murali Shanmugham
      Blog Post Author

      Hi Séverin de BEAULIEU & Rachid Kaouass,

      The ability to create service instance for Launchpad IS NOT there in the trial environment. Let me check if there is an issue with CPEA accounts.

       

      Author's profile photo Murali Shanmugham
      Murali Shanmugham
      Blog Post Author

      Hi, Can you please open a SAP Incident on component EP-CPP-CF-LP-DEV if you are still unable to create a service instance within your CPEA accounts.

      Author's profile photo Enric Castella Gonzalez
      Enric Castella Gonzalez

      Hi Murali,

       

      I have the same problem in my trial subaccount with the beta features activated.

       

      Is it possible that this is a generalized problem of the trial accounts?

       

      I tried to open the note, but unfortunately my trial account user is not an S user. Any suggestions?

       

      Thanks in advance

      Regards

      Enric

      Author's profile photo Murali Shanmugham
      Murali Shanmugham
      Blog Post Author

      Hi Enric Castella Gonzalez, Sorry, there was a typo in my response above. I can confirm that its not possible to create a service instance in the trial environment (as of today). I will update this blog post once this feature is made available in trial environments.

      Author's profile photo Philipp Rausch
      Philipp Rausch

      Hi Murali Shanmugham,

      I am using a paid account and cannot create an instance of the service "scp-launchpad". Support says in an incident, this is not possible for launchpad service but only for portal service.

      Do you have any information on that?

      Author's profile photo Mio Yasutake
      Mio Yasutake

      Hi Philipp Rausch,

      I had the same issue with our paid account so I created an incident.

      After some weeks, they fixed the issue at our subaccount and now I'm able to create a service instance.

       

      Author's profile photo Aishwarya Laxmi
      Aishwarya Laxmi

      Hi Murli ,

       

      I have deployed my html5 repo app with managed app router ,I was able to see html applications in SAP BTP but its not visible on launchpad .

      Few days back the same app I have deployed ,html apps were visible but now its not displaying new app as well as old apps

      launchpad not updating content ? I am not sure what went wrong .

       

      Thanks ,

      Aishwarya

       

      Author's profile photo Murali Shanmugham
      Murali Shanmugham
      Blog Post Author

      Hi Aishwarya Laxmi,

      In the "Provider Manager" menu, can you try clicking on the action "Fetch updated content" ?

      If you have done this, can you check in the browser console if you are getting any errors. I have seen few other report "403 CDMStoreError" as none of the HTML5 apps are displayed. You would need to raise this internally with the Product experts.

       

      Author's profile photo Abhinay Dogiparthi
      Abhinay Dogiparthi

      Hi Murali,

       

      Any additional steps needed for provider(HTML5 Apps) instead of local?

      As i can see in your above example you created the app locally.

       

      Regards,

      Abhinay

      Author's profile photo Pranav Nagpal
      Pranav Nagpal

      Hi Murali Shanmugham ,

       

      I tried to transport the federated content via TMS, but the content does not appear in the next tier/subaccount. Do we need to establish the federation for the entire landscape? Currently only Dev account has all the required federation configurations(both at BTP and S/4 end). Also, I dont see the spaces and pages option for BTP content. Documentation says that Space and Pages is applicable to S/4 federated content for now. Do you plan to bring it for custom BTP content?

      Thanks

      Pranav

      Author's profile photo Sibylle Brehm
      Sibylle Brehm

      Hi Pranav,

      when transporting federated content, you need to set up the same content providers on the target system as you have on the source system. This is mentioned in the documentation for manual transport, but also applies to transport via TMS. We will update the documentation accordingly.

      Regards,
      Sibylle

      Author's profile photo Fabiano Rosa
      Fabiano Rosa

      Hi Murali,

      Is it possible to transport Fiori Launchpad sites on SAP BTP NEO (Portal services) using SAP Cloud Transport Management service?

      Or only for Portal and Launchpad services on SAP BTP Cloud Foundry?

      Regards,

      Fabiano Rosa

      Author's profile photo Boris Zarske
      Boris Zarske

      Hi Fabiano,

      In SAP BTP Neo environment, you can transport complete portal sites (besides SAP Fiori apps and roles). Content currently supported by SAP Cloud Transport Management service is listed here, ordered by environment:

      Content%20supported%20by%20SAP%20Cloud%20Transport%20Management

      Content supported by SAP Cloud Transport Management

      For Neo, you should also take a look at the solution export wizard (the table above lists for which content types you can consider to use it).

      Best regards,
      Boris

      Author's profile photo Fabiano Rosa
      Fabiano Rosa

      Thanks Boris, I'll take a look in the Solution Export feature on Neo.

      Regards,

      Fabiano Rosa

      Author's profile photo Ranjithkumar Ayyavu
      Ranjithkumar Ayyavu

      Hello,

      Thanks for sharing the information.

      Author's profile photo Diego Ismael Ibarra
      Diego Ismael Ibarra

      Hello,

      Do you know if I ca reproduce this configuration where the cTMS is located in another subaccount? Or it must be activated on the DEV suabaccount?

       

      My topology is the following and I'm not receiving any transport on my TMS_DEV transport node

      Topology

      Topology

      Author's profile photo Gregor Wolf
      Gregor Wolf

      You should be able to create destinations to the other subaccounts from the cTMS subaccount.

      Author's profile photo Diego Ismael Ibarra
      Diego Ismael Ibarra

      Yes Gregor, In fact that's what I did.

      My first problem is that my dev node on cTMS is not getting any transport  when I select the “Transport Site” option.

      But the second, and most important problem, is that I'm not receiving any error to work with. So, in this case, I'm kind of working on a trial and error basis without any input to troubleshoot this issue properly.

      Is there any tool or procedure that allow me to see what's going on underneath the "surface".

      Author's profile photo Boris Zarske
      Boris Zarske

      Hello Diego,

      As you are running the SAP Cloud Transport Management service on a separate node, please take special care which destination to create where: while ctms_destination has to be created on the DEV node (so that the "Transport Site" option shows up at all), the destinations for the launchpad sites would have to be created on the CTMS node. Then, if also the configuration of the transport landscape and the permissions are set correctly, a transport triggered from the DEV node should show up in the import queue of the TST node (not in the queue of DEV, as DEV should only be the entry node).

      If this should not work, we could also set up a quick call, to go through the configuration together.

      Best regards,
      Boris

      Author's profile photo Harald Stevens
      Harald Stevens

      Hello Diego,

      an additional hint: besides creating the destination in the correct subaccounts it is important to double-check the name of the destination pointing to the Cloud Transport Management service instance. It has to be exactly 'ctms_destination' (all lower case with an underscore). Secondly the additional parameter for the cTMS entry node has to be 'node-name' (all lower case with a hyphen or minus sign).
      Together with the needed authorization on Launchpad side this should at least make the transport option visible.

      Kind regards
      Harald

       

      Author's profile photo SAGAR SINGH
      SAGAR SINGH

      Hi Diego and Experts,

      My landscape look the same as Diego's, cTMS in different subaccount and there are 3 different subaccount for dev, qa & prod.

      I'm facing same issue:

      1. my dev node on cTMS is not getting any transport when I select the “Transport Site” option in workzone.
      2. And I'm not receiving any error to work with.

      Can you provide the solution for that?

      Best regards,
      Sagar Singh

      Author's profile photo Boris Zarske
      Boris Zarske

      Hi Sagar,

      Sorry to hear that - and you already checked the hints provided to Diego by me and Harald above (on where to create which destination and cross-checking the naming conventions)?

      Best regards,
      Boris

      Author's profile photo SAGAR SINGH
      SAGAR SINGH

      Yes, I've created the destination and checked the naming convention.
      'ctms_destination' is created in dev account but the 'Token Service URL' is of dev subaccount
      & URL, ClientID, Client Secret are from ctms service key present in cTMS subaccount.

      Here is the list of destination I have created:

      In cTMS subaccount:

      Destination list:
      DEV_Sites (workzone dest of dev sub-acc)
      QA_Sites (workzone dest of qa sub-acc)
      PROD_Sites (workzone dest of prod sub-acc)
      xsuaa_apiaccess (auth & transport service)

      In DEV subaccount:

      Destination list:
      ctms_destination (ctms from ctms subaccount)
      xsuaa_apiaccess (auth & transport service)

      In QA subaccount:

      Destination list:
      xsuaa_apiaccess (auth & transport service)

      In PROD subaccount:

      Destination list:
      xsuaa_apiaccess (auth & transport service)

      what am I doing wrong can you please tell?

      Best regards,
      Sagar Singh

      Author's profile photo MD MANAUWAR ALI
      MD MANAUWAR ALI

      Hi Sagar,

      I have the same scenario . And facing similar issue . Any solution you got ?

       

      Regards

      Manauwar

      Author's profile photo MD MANAUWAR ALI
      MD MANAUWAR ALI

      Hello Dear Expert ,

      Murali Shanmugham  Gregor Wolf   Boris Zarske  : Can you please guide us on the solution for the

      scenario raised by Diego Ismael Ibarra & SAGAR SINGH . We all have similar issue, where our

      CTMS is in a separate subaccount and have 3 different subaccounts (Dev+Qa+Prd) .

      But unable to move the content via CTMS .  looking for the right solution .

      (It's working if  cTMS is in Dev subaccount)

       

      Thanks and Regards

      Manauwar

       

      Author's profile photo Murali Shanmugham
      Murali Shanmugham
      Blog Post Author

      Hi Manauwar, I have not tried the setup of Transport Management in a separate subaccount. Can you please raise this as a question in the forum for experts to provide any guidance? Thanks.

      Author's profile photo MD MANAUWAR ALI
      MD MANAUWAR ALI

      Hi Murali,

      Thank you for the response .

      I have raised the question in the forum .

       

      Best Regards

      MD Manauwar

      Author's profile photo Luciano Cuesta
      Luciano Cuesta

      Hi Murali Shanmugham

      I've a question, is possible the integration from launchpad service into SAP Solution Manager change Request Management ?

      Best regards
      Luciano

      Author's profile photo Boris Zarske
      Boris Zarske

      Hi Luciano,

      Yes, SAP Launchpad Service content can be handled by SAP Cloud Transport Management service and with this, its propagation can be orchestrated by ChaRM in SAP Solution Manager. For a list of content support by SAP Cloud Transport Management service, see Supported Content Types | SAP Help Portal:

      Extract%20of%20table%20with%20supported%20content

      Best regards,
      Boris

      Author's profile photo Luciano Cuesta
      Luciano Cuesta

      Hi Boris

       

      Yes, we have SAP Launchapad Service content handled by SAP Cloud Transport Manager service

      In this document the transport node "PORTAL_TST" content type: "Application content" is transported from Cloud Transport Manager without Sap Solution Manager.

       

      the node PORTAL_TST dosen't have the check "controlled by SAP Solution Manager"

      How can transport SAP launchpad service creating ticket ChaRM? It's possible ? if you have al guide I thank you

       

      Regards

      Luciano

      Author's profile photo Boris Zarske
      Boris Zarske

      Hi Luciano,

      If you want to set this node under control of ChaRM, you would have to adapt the node configuration in SAP Cloud Transport Management accordingly, by setting the flag "Controlled by SAP Solution Manager". You can find further details here:

      Best regards,
      Boris

      Author's profile photo Harald Stevens
      Harald Stevens

      Hi Luciano,

      the official documentation how to enable the integration between ChaRM and Cloud TMS can be found here in SAP Help.

      It is fairly short and so I wrote a more extensive blog post on the topic. It deals with another content type (MTA on Neo), but the SolMan side of the house works exactly the same for Launchpad content.

      Basically you model your transport nodes as external services in SolMan's LMDB and set up a solution landscape containing them in transaction SLAN.

      You then create a change cycle based on this landscape. In this change cycle you create change documents to which you can attach transport requests from Cloud TMS. When you now change the status of the change document in ChaRM (for example to 'To be tested'), the corresponding import in Cloud TMS is triggered.

      The flag 'Controlled by Solution Manager' makes sure that nobody can accidentally perform imports for this node directly in Cloud TMS (bypassing ChaRM). It can also be set after the transport node has been created and even been used. However, from that point you will not be able to perform manual imports anymore (unless you reset the flag). Therefore, it might be good to clean up the queues of the transport nodes before switching on the flag.

      One last word: technically the flag is not required for the scenario to function, but it reduces the risk of bypassing ChaRM.

      Kind regards,
      Harald

       

      Author's profile photo Fabricio Pereira
      Fabricio Pereira

      Hello,

      We are configuring CTMS to transport the Business Content (roles, catalogs, Fiori tiles, etc) in our Work Zone.

      My question here is about the instance I should configure so I can user the service key.

      In the CTMS help site, it has a remark stating it's possible to transport work zone content by "Using SAP Launchpad service integration in SAP Work Zone"

      Does it mean I need to create the launchpad service instance and use its service key instead of the work zone instance?

       

      Thanks in advance,

      Fabricio Pereira

      Author's profile photo Raj Balakrishnan
      Raj Balakrishnan

      When trying to import the application content into the QA node, we are getting the below error. We tare using CTS+ to transport the TMS change into the QA node.

       

      Error during deployment initialization: Not Found error occurred during processing of operation ‘Get supported GACD versions’

       

      What is a GACD version and where can we address this version?

       

      Thanks for your time,

      Raj Balakrishnan

      Author's profile photo Anuradh a Rao
      Anuradh a Rao

      Hello ,

       

      I am trying to Transport Site . In the site , I have a role and application . When I transport it to Quality the Site gets transported along with it the Role and application also gets transported. But when I open the site it does not have the application to open .

      Any other settings we need to check .

      Thanks & Regards

      Anuradha Rao Tolani

      Author's profile photo Vinay Kumar
      Vinay Kumar

      Hi,

      I am trying to add the destinations to XSUAA Instances but getting the error as below.

      Kindly help or suggest how to proceed.

      Thanks

      Vinay