HALM Usage and Troubleshooting
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:
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)
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
Hi Sensen,
Sorry for the delay, but I'm no longer part of the HANA team. You will need to create a support incident or post on the community forums.
Man-Ted
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
Hi Sensen,
Sorry for the delay, but I'm no longer part of the HANA team. You will need to create a support incident or post on the community forums.
Man-Ted
What should be the transport roiute ?
1)Dev->Test->Prod (or)
2)Dev->Test & Dev->Prod
Please let me know .
Thanks