Skip to Content
Technical Articles
Author's profile photo Alessandro Biagi

Extend SAP SuccessFactors on SAP BTP with CAP – Deploy to SAP HANA Cloud


To follow-up with this blog post you must have read and completed the following previous blog posts in this series:

Setup Project for SAP HANA

So far, all data persistence of our application has been utilizing a default SQLite in-memory database, which means that, each time we restart the application, all data that has been added/updated is completely gone.

It might be OK for local development, but when it goes to a cloud landscape (either development, QA or production) the data must be persisted in a standard relational database such as SAP HANA Cloud (which is going to be the selected database for our application).

Therefore, it’s now time to prepare our project to deploy the data model to SAP HANA Cloud when it goes to BTP. For that, we must add the appropriate dependencies to our project using the cds add command.

1. In the Terminal type cds add hana and press Enter


Figure 1 – Add SAP HANA dependencies to project

2. On the left-hand pane click on the package.json file to open it. Examine the contents and notice the modifications in the dependencies and cds.requires sections and the new cds.hana section. Change the db.kind from the cds.requires section to “hana


Figure 2 – Changes made to package.json

3. In the Terminal type npm install and press Enter to install the newly added dependency locally


Figure 3 – Install new dependency

Deploy to SAP HANA Cloud

IMPORTANT NOTE: before executing the next steps first make sure:

  1. You are properly logged to Cloud Foundry as instructed in: Jumpstart the CAP Project
  2. Your SAP HANA Cloud database instance (created following this tutorial) is up and running – remember: on trial accounts everything (including SAP HANA database) shuts down overnight!

4. In the Terminal type cds deploy –to hana and press Enter


Figure 4 – Deploying to the HANA Cloud database

It’s going to take a while before the command completes as it’s performing these operations:

  1. Build the database artifacts from the CAP project in the gen folder that’s created under the project root folder, for further deployment to SAP HANA.
  2. Create a service instance named sfsf-projman-db of type SAP HANA Schemas & HDI Containers with the hdi-shared plan, that handles the HDI container
  3. Create the SAP HANA database artifacts from the application inside the HDI container
  4. Bind the service instance to the local project by modifying the default-env.json file, adding the database credentials (actually the service key from the service binding).

After the command completes, we will have achieved what we call a “hybrid approach” where your project runs locally, but the database (and the corresponding persistence) runs in the cloud.

Let’s take a quick look at the default-env.json to verify what happened after command completion: on the left-hand pane click on the default-env.json file to open it:


Figure 5 – Changes in default-env.json

Notice that a “hana” section has been added to the VCAP_SERVICES environment variable, with the service instance name of the HDI container and the credentials (service key) to connect to the SAP HANA Cloud database.

If you click on the Cloud Foundry icon (small light bulb) on the left-hand pane and expand the services node, you’ll also see the newly created service instance:


Figure 6 – HDI container service instance

Now, let’s see what happens when we execute the application.

5. In the Terminal type cds watch and press Enter


Figure 7 – Project connected to SAP HANA Cloud database

Notice that, now, CDS is connecting to SAP HANA Cloud as the persistence mechanism of the application.

Again, in this scenario the project is running locally, but the database is running in the cloud (hybrid approach).

If you want to switch to the SQLite in-memory database again for development, just go back to package.json and change the db.kind parameter in the cds.requires section back to “sql“: and notice that cds watch immediately recognizes the change and switches the connection to sqlite with the “:memory:” credentials:


Figure 8 – Switching back to SQLite in-memory


After having gone through the steps of this blog post you should have successfully set up your project to utilize the SAP HANA Cloud database and deployed the application data model to it. Now it’s time to create the SAP Fiori Elements application into your project using the MTA (Multi-Target Application) approach as the final step to prepare the project for deployment.

NOTE: all the instructions provided in this blog post apply exactly the same to any CAP project that should utilize SAP HANA Cloud database as the persistence layer for the application.

Please, do not hesitate to submit your questions in SAP Community through the Q&A tag link:

Next blog post in this series

Assigned Tags

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

      Hi Alessandro Biagi,


      Thanks for providing a nice blog. I got the below error while connecting to HANA DB in Trail


      [hana] - Error: Could not establish connection for tenant "anonymous" due to error: Could not connect to any host: [ - certificate has expired ]


      Could you please help me?



      Author's profile photo Alessandro Biagi
      Alessandro Biagi
      Blog Post Author

      Hi Charanraj,

      Could you please specify at which step you are getting the error?