Tuesday 2 May 2017

Migrating the SHINE Purchase Order Worklist Application from SAP HANA XS Classic to SAP HANA XS Advanced.


To perform a migration you need to be aware of the files that are not supported by the migration assistant und migrate them manually in advance. How to do this manual step, is described in the official documentation.

Prepare the XS classic source system.

Scenario: You run an SPS 11 XS classic source system.
Your are good to go.

Scenario: You run an XS classic system older than SPS11 and  have an SPS11 development system available.

You need the SHINE application either from the SAP Software Download Center or an existing SAP HANA extended application services, classic model development system. Then import it into an SPS 11 system.

Scenario: You run an XS classic system older than SPS11 and use the XS advanced development system as parser.

You need to configure environment settings for external parsing.

set HANAEXT_HOST=<XSA hostname>
set HANAEXT_USER=<HANA username>
set HANAEXT_PASSWD=<HANA password>
set HANAEXT_CERTIFICATE=</path/to/HTTPS/certificate/file>

For a Linux system, use export instead of set.

Run migration and evaluate migration report

Run the migration assistant.

Before migrating your XS classic application to XS advanced using the XS Advanced Migration Assistant, bear in mind the following points:

  • You must already have converted manually any XS classic artifacts that cannot be migrated automatically by the XS Advanced Migration Assistant.
  • You must already have set up the source (XS classic) system for the migration
  • You have set up the required users on the SAP HANA systems and assigned them the required access permissions.
  • The XS Advanced Migration Assistant makes use of the SAP Java Virtual Machine (JVM), so make sure the correct C++ library is installed on Windows machines, for example, the x64 variant of the Microsoft C++ runtime. For more information, see Related Links.

Evaluate the migration report.

The migration report lists all items migrated for the complete SHINE application; the action items are grouped according to technical areas. In this example for our Purchase Order Worklist, action is required in the following areas:

  • Step 1: Migration of Security Concept Required
  • Step 4: XSJS JavaScript Migration Required
  • Step 5: Translation

Security related concept check

Check the authorization scope of the XS advanced user to ensure that all database calls are protected. The XS classic SHINE application contains two roles, “User” and “Admin“. These XS classic roles contain database privileges that cannot be migrated to XS advanced automatically; the XS Advanced Migration Assistant only considers the application privileges. It is essential to ensure that the XS advanced scopes are sufficient to distinguish users.

Create the required XS advanced services and feed values

To build, deploy and run the migrated SHINE application in XS advanced, it is necessary to create some XS advanced services manually.

The SAP Web IDE for SAP HANA automatically generates some XS advanced services. However, this automation does not include the User Account and Authorization (UAA) service or the synonym grantor service. You must create these services manually, for example, using the XS CLI (xs create-service command).

Adjust the generated template

You do not need to adapt anyting to the Purchase Order Worklist application. You might need to touch other parts of the SHINE application to get it started. In such a case check the xs-security.json file for references to FioriLaunchPad and delete these references. In a standard scenario these would be the references to remove:

  "name": "$XSAPPNAME.sap.hana.democontent.epm.ui.uis.FioriLaunchPad.WidgetAccess:FioriShineCatalog",
  "description": "Access FioriShineCatalog Widget"
  "name": "$XSAPPNAME.sap.hana.democontent.epm.ui.uis.FioriLaunchPad.AppSiteAccess:FioriShineLaunchPad",
   "description": "Access FioriShineLaunchPad AppSite"
  "name": "$XSAPPNAME.sap.hana.democontent.epm.ui.uis.FioriLaunchPad.AppSiteAccess:FioriLauncPadWithImage",
  "description": "Access FioriLauncPadWithImage AppSite"
  "name": "$XSAPPNAME.sap.hana.democontent.epm.ui.uis.FioriLaunchPad.AppSiteAccess:FioriShineLaunchPadWithTheme",
  "description": "Access FioriShineLaunchPadWithTheme AppSite"


Making required code updates

You need to make changes to the database container and the JavaScript container. For the Web container everything is migrated by the migration assistant.

The database (DB) container

The migrated SHINE application requires additional privileges for HDI objects in the XS advanced database (DB) container.

So you need to check the content of cfg/synonymconfig.hdbsynonymconfig and of src/synonyms.hdbsynonym and possibly add the configuration.

Sample Code

"TCURF": {
   "target": {
        "object": "sap.hana.democontent.epm.data::Conversions.TCURF"
"TCURN": {
    "target": {
        "object": "sap.hana.democontent.epm.data::Conversions.TCURN"
"TCURR": {
    "target": {
        "object": "sap.hana.democontent.epm.data::Conversions.TCURR"
"TCURV": {
    "target": {
        "object": "sap.hana.democontent.epm.data::Conversions.TCURV"
"TCURX": {
    "target": {
        "object": "sap.hana.democontent.epm.data::Conversions.TCURX"
Check the contents of the synonyms definition file src/synonyms.hdbsynonym.

Sample Code

"TCURF": {}
"TCURN": {}
"TCURR": {}
"TCURV": {}
"TCURX": {}

The JavaScript (XSJS) container

The migrated SHINE application requires modifications to objects in the XS advanced database JavaScript container.

Since it is not possible to guarantee that the XS Advanced Migration Assistant detects all problems in the XS classic XS Javascript xsjs code scan, you must review all issues that are listed in the XSJS section of the migration report gererated by the XS Advanced Migration Assistant, as shown in the following list:

Translation-related artifacts

The XS Advanced Migration Assistant is not sure what to do with XS classic text bundles (.hdbtextbundle). It stores them in the todo/ folder. You must copy these text bundles (now .properties files) manually to the desired destination.

Deploy and run the migrated application

Deploy and run the migrated application.


It is assumed that the UAA is configured as identity provider (not SAP HANA); this is the default setting in XS advanced.

You created the UAA service with xs-security.json as configuration file.


1. Prepare and assign XS advanced role collections that enable access to the migrated XS advanced application.

  • Since the XS advanced application is protected by scopes defined in the application router configuration, the corresponding route configuration can be found in the application descriptor (xs-app.json), which is located in the web/ module of the XS advanced Multi-target application (MTA).
  • The xs-security.json file defines the scopes and assigns the scopes to role templates. In order to enable access to the XS advanced application, you must assign the template-based roles to one or more role collections, which you then assign to the users who need access to the application.

The assignment tasks can be performed using the XS Advanced Administration Tools UI.

2. Deploy and run the XS advanced application in the XS advanced run-time environment.

  • To deploy the migrated SHINE application from SAP Web IDE for SAP HANA, use the built-in tools to perform the following actions:
    • Build the db module
    • Run the xsjs and web modules.


To access the application, use the link displayed in the SAP Web IDE for SAP HANA run console when running the web/ module. The link will open the launchpad of the SHINE application where you will find the Purchase Order Worklist tile that the previous sections of the documentation were focused on. With the described adaptations, only the Purchase Order Worklist application part will work properly. You will have to make further changes to run the other application parts as well.

Next Steps

If you want to hide the tiles not handled in this example, you can modify the file web/resources/sap/hana/democontent/epm/ui/launchpad/main.view.js and remove the respective tiles:
var items = [adminTile, poTile, soTile, sowTile,
            userTile, spatialGoldTile, salesMobileTile,
            fioriTile, xsdsTile,xsUnitTile, ui5SearchTile,
            jobSchedulingTile, eTagsTil

No comments:

Post a Comment