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.
Showing results for 
Search instead for 
Did you mean: 

HALM Usage and Troubleshooting

Hi all,

My name is Man-Ted and I'm from the SAP HANA product support team and I'm writing this blog to discuss the HANA Application Lifecycle Management (HALM), in this I cover usage and some issues that are commonly ran into during setup and usage.

What is HALM?

HALM stands for HANA Application Lifecycle Management, this image from the documentation explains the product lifecycle using HALM:

For information on this please refer to the following


To access the HALM page we will need to ensure there is an XS engine running, this section will cover things to check to see if there is an XS engine.

Single tenant database

In a single tenant database things are easier here, first check to see if XS engine

You can check HANA administrator -> Landscape and see if there is an xsengine service running

If there is no xsengine present then verify if the xsengine is running embedded in the indexserver. To verify this under the xsengine.ini configuration check [httpserver]->embedded=true

Once verified you can access the page via studio

Or via the URL



Multi-tenant XSEngine setup

Setting up HALM for a multi-tenant database is a little more complicated, there will be a HALM page for the SYSTEMDB and for the tenant databases. For steps on exposing HTTP access to the tenant database I will link to the following blog:

Common Issues

Users have reported issues where they can access the SYSTEMDB database, but not the tenant database lifecycle manager page.

When they try to access the page they will get the following error:

503 Service not available

For this error check the configuration of the system, with SPS 10 there is a configuration parameter

Webdispatcher.ini-> [profile]->wdisp/system_auto_configuration

When set to true it will generate the proper parameter for the SYSTEMDB under wdisp/system_10 = GENERATED, SID=SYS, EXTSRV=localhost:3<instance>14, SRCVHOST=<host>

If wdisp/system_auto_configuration is set to false this entry is removed, you would have to add the wdisp/system_10, wdisp/system_11, and etc manually

However, if wdisp/system_auto_configuration is set to true and you are not seeing entries for the tenant database (ie wdisp/system_11) then there is an issue with the configuration in another ini section. If you try to add the entry manually with wdisp/system_auto_configuration these manually entered entries will prefix your entry INACTIVE automatically

For further information please review

The most common the issue is that on the tenant database does not have xsengine.ini->[public_urls]->http_url (or https_url) set

Or if they try to access the XSEngine page and get:

503 Service not available

Then this means that the XSEngine process is not running on the tenant database (embedded), to verify this run the following query



Look under the column for xsengine and check the running services to see if anything is running on that port (ps –ef | grep <port> or telnet <host> <port>)

If there is nothing running then check to see if on the tenant database has xsengine.ini->[httpserver]->embedded is set to true or if exists

Once the XSEngine is set you will need to restart the indexserver.

Once the indexserver is restarted the URL will display the following


To check the web dispatcher setup you can access


Accessing HALM

The HALM homepage can be accessed via


*if it is a tenant database put in the database alias name

or you can access HALM via studio

Ensure that XS properties on the database has the correct hostname or alias name (right click on the database and select properties)

Login to the HALM page

Potential Errors

403 - Forbidden

This is simply means that this user is missing the appropriate role sap.hana.xs.admin.roles

Once added you should be able to login.

For more information on this please refer to the roles documentation:


404 Page Not Found

If you encounter a page not found error, check that the Delivery Unit

select * from "_SYS_REPO"."DELIVERY_UNITS"

In the results verify that HANA_XS_BASE, HANA_HDBLCM, and HANA_XS_LM have been deployed

How to check the HALM revision?

Setting up Delivery Units

Click on the ‘PRODUCTS’ tab and click on ‘Delivery Units’

Click on the ‘Create’ button

When you try to create this you will see the following error in the tool bar

To resolve this issue you will have to click on ‘SETTINGS’ in the menu tab bar

Click on the ‘Change Vendor’

I select ‘Enable Change Recording’ and the following info popup will appear

Once this is set try to create the Delivery Unit again and we will see that the Vendor field is now ‘TST’

Please note the Version, SAP guidelines state that Version number be done in the following format

Version numbers must take the form “#.#.#”, for example, 1.0.5, where:

  • 1= the DU version number

  • 0= the support package version (if required)

  • 5= the patch version (if required)


I entered in the name DU_TEST and click on ‘Create’

Click on the ‘Assign’ button under the ‘Assigned Packages’ section to assign packages to this Delivery Unit

In the following prompt you select a package in this source system (TST@TST), in this case I will choose du_again and dutest.

These packages are seen here in Studio as well

Once done it will look like this:


Setting up a Transport Route

Registering a Source System

Click on ‘TRANSPORT’ in the tab, upon initial load you will see your local system, this will always be the target system

Click on the ‘Register’ button

If you are using a MDC environment enter in the alias name, but when adding the a MDC database make sure that the system that is trying to add it also has the host file updated (/etc/hosts) if you do not do this you will run into an error saying that the database is not reachable

After clicking next

Click on ‘Maintain Destination’

In the popup click on ‘Authentication Details’ to add the login information to the destination database

Close the pop up and click on finish.


After this step a connection between the source system (TST@TST) and target system (DEV) is established. Please note multiple target systems can be defined.

After this a transport route can be created, a transport route establishes what packages between the source system

Assigning Packages to Transport Route

In the ‘Transport’ tab select the sub ‘Transports’ tab click on ‘Create’

In the pop up choose your Source system and Delivery Units

Please note that change recording is not selected the only Mode available will be ‘Complete Delivery Units’


How are changes added to the Changelists

In order to add changes to a Changelist we will need to revisit our package in the SAP HANA Studio

Create a view in the package

Activate the object

Create a new change, in most cases there will already be a record here, click on the new button and enter a description


How To Move Our Changes

Go to HALM-> Changes

Here you can see the Change ID (TST@TST//103 and the description that was in the SAP HANA Studio). In the Delivery Unit please note that the reason the Change ID is in this DU is because we assigned this package to it (du_again)

This change will not be able to be transported until this change has been approved and released. First we will need to approve this, this is done by pressing the ‘Approve My Contribution’ (this is because I made this change as the SYSTEM user and logged in as the SYSTEM user)


Once the change has been approved the ‘Release’ button will be active


Once the ‘Release’ button has been pressed we will see that the change is no longer present

Starting our Transport

In this step we will now create and run our transport, please note we could also just edit the existing transport route as well

Name the transport, DU-Test and select the source system that contains the package we created (in this case we made ‘du_again’ and the source system is TST@TST)

Click on ‘TRANSPORT’->’Transport’-> ‘Start Transport’

Because we had set the ‘Mode’ to ‘Selected Changelists’ we will get a prompt asking us to choose a changelist

We can view the changelist entries by querying the source system CHANGE_ENTRIES table

After select TST@TST//103 HALM tool checks to see if there are any dependencies that are needed for this object

Querying the OBJECT_HISTORY table allows us to view the previous change to an object, as you can see the change numbers here are showing up as a predecessor in the above screen cap

Checking the ACTIVE_OBJECT table allows us to see what is currently active in this system, as we can see the change number is 103

After running the transport you can check the log via ‘TRANSPORT’->’Logs’


Troubleshooting Transport/Changelist issues

During the loading of a change users can run into a timeouts or out of memory issues due to a large number of changes to resolve this the following configurations can be changed

xsengine.ini > jsvm > max_runtime_bytes

Set this to 1 GB (1000000000)

xsengine.ini > httpserver > max_request_runtime

For long running operations, extend the value defined for the default limit for session timeouts.

The value for the following parameter must be in seconds.

Increase it to 3 hours as a starting point (10800)


For long running operations, extend the value defined for the default limit for session timeouts.

The value for the following parameter must be in seconds:

xsengine.ini > httpserver > sessiontimeout

Increase it to 1 hours as a starting point (3600)