Skip to Content

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

https://help.sap.com/saphelp_hanaplatform/helpdata/en/9a/012d6438764459a581e6af55a87c46/content.htm

Setup

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

http://:8000/sap/hana/xs/lm/index.html?page=HomeTab

 

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:

https://blogs.sap.com/2016/01/27/exposing-http-access-to-multitenant-database-containers-in-sap-hana-sps11/

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

https://help.sap.com/saphelp_hanaplatform/helpdata/en/af/24ce38929b4f1fa934a28147fc7641/content.htm

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

  • From the tenant database: SELECT SERVICE_NAME, PORT, SQL_PORT, (PORT + 2) HTTP_PORT FROM SYS.M_SERVICES WHERE ((SERVICE_NAME=’indexserver’ and COORDINATOR_TYPE= ‘MASTER’) or (SERVICE_NAME=’xsengine’))
  • From the system database: SELECT DATABASE_NAME, SERVICE_NAME, PORT, SQL_PORT, (PORT + 2) HTTP_PORT FROM SYS_DATABASES.M_SERVICES WHERE DATABASE_NAME=’<DBNAME>‘ and ((SERVICE_NAME=’indexserver’ and COORDINATOR_TYPE= ‘MASTER’) or (SERVICE_NAME=’xsengine’))

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

http://:8000/

To check the web dispatcher setup you can access

http://<host>:8000/sap/hana/xs/wdisp/admin/public/default.html

Accessing HALM

The HALM homepage can be accessed via

http://<hostname>:8000/sap/hana/xs/formLogin/login.html

*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:

https://help.sap.com/saphelp_hanaplatform/helpdata/en/af/092a4dd0f2422193af9e9295ca18a0/content.htm?frameset=/en/84/2cf92247ec42ddbb0136187235237e/frameset.htm&current_toc=/en/8f/796f93e6c3419c9b8029197aa61874/plain.htm&node_id=152

 

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)

To report this post you need to login first.

2 Comments

You must be Logged on to comment or reply to a post.

  1. Sensen Wei

    Hello Man-Ted Chan,

    Thank you for sharing; I am an application developer, and I am interested in the “Configuration Service(Process Engine)”, could you share more insight on that?

    Because my service need to be configurable, so how to enabled my services to use this Configuration Service?

     

    Thanks

    Sensen

    (0) 
  2. Mirza Baig

    Hello Man-Ted Chan,

    Thanks for this useful post. I am trying to find the right role or privilege so I can manage packages( add /remove sub packages or views etc.) in HALM. When I click on “Manage Packages” I get a 403 error which most likely is due to a missing role/privilege. My user currently has the following privileges assigned :

    sap.hana.xs.admin.roles: HTTPDestAdministrator
    sap.hana.xs.admin.roles: RuntimeConfAdministrator

    sap.hana.xs.lm.roles: Administrator
    sap.hana.xs.lm.roles: DevelopmentExpert
    sap.hana.xs.lm.roles: ExectureTransport

    Any help on pointing to the right privilege is much appreciated!

     

     

    Thanks,
    Mirza

     

    (0) 

Leave a Reply