
So, why am I writing this blog and where is it different to the one I wrote before?
That is, because my team and I started to think about use cases for an XS classic to XS advanced migration. Quite naturally, we thought about how to migrate an XS classic application from the Neo environment in SAP Cloud Platform to an XS advanced application running in the Cloud Foundry environment. So, we took the challenge to give it a try and share our knowledge.
The difference hence is the different environments or worlds, as I called them before. Before, we used to look at on-premise systems and this time the focus is on the cloud. This has some different challenges and these are worth mentioning.
My call to action to you is: Familiarize yourself with the Cloud Foundry environment and plan enough time for that step, to find out which functionality in Neo matches to which capability in Cloud Foundry.
neo open-db-tunnel -a <subaccount_name> -h <host> -u <user> -i <schema_ID>
neo open-db-tunnel -a <subaccount_name> -h eu1.hana.ondemand.com -u <user> -i HCO_DEMOCONTENT
HANA_HOST=
HANA_SQL_PORT=
HANA_USER=
HANA_PASSWD=
HANA_CERTIFICATE=
HANAEXT_HOST=
HANAEXT_SQL_PORT=
HANAEXT_USER=
HANAEXT_PASSWD=
HANAEXT_CERTIFICATE=
--target-directory
--zip
--target-release
xs-migration --target-dir path/to/my/target-directory --zip --target-release 2.0SP00 HCO_DEMOCONTENT
{
"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"
}
},
"sap.hana.democontent.epm::DUMMY": {
"target": {
"object": "DUMMY",
"schema": "SYS"
}
},
"VIEWS": {
"target": {
"object": "VIEWS",
"schema": "SYS"
}
},
"TABLES": {
"target": {
"object": "TABLES",
"schema": "SYS"
}
},
"M_TABLES": {
"target": {
"object": "M_TABLES",
"schema": "SYS"
}
},
"sap.hana.democontent.epm::SERIES_GENERATE_TIMESTAMP": {
"target": {
"object": "SERIES_GENERATE_TIMESTAMP",
"schema": "SYS"
}
}
}
{
"name": "",
"subfolder": "ignore"
}
<viewAttribute hidden="true" id="PLACEHOLDER"/>
_schema-version: 2.0
ID: HCO_DEMOCONTENT
description:
version: 1.12.1
modules:
- name: HCO_DEMOCONTENT-app
path: web
type: html5
requires:
- name: uaa
- name: xsjs
group: destinations
properties:
name: xsjs
url: ~{url}
- name: ui5
group: destinations
properties:
name: ui5
url: ~{url}
- name: HCO_DEMOCONTENT-db
type: hdb
path: db
requires:
- name: HCO_DEMOCONTENT-hdi
properties:
TARGET_CONTAINER: ~{service-name}
- name: HCO_DEMOCONTENT-xsjs-service
path: xsjs
type: nodejs
requires:
- name: HCO_DEMOCONTENT-hdi
- name: HCO_DEMOCONTENT-db
- name: uaa
provides:
- name: xsjs
properties:
url: ${default-url}
resources:
- name: HCO_DEMOCONTENT-hdi
type: com.sap.xs.hdi-container
properties:
service-name: ${service-name}
- name: ui5
properties:
url: "https://sapui5.netweaver.ondemand.com"
- name: uaa
type: com.sap.xs.uaa-space
parameters:
config-path: xs-security.json
{
"xsappname": "HCO_DEMOCONTENT",
"tenant-mode": "dedicated",
"scopes": [
{
"name": "$XSAPPNAME.sap.hana.democontent.epm.Basic",
"description": "Basic usage privilege"
},
{
"name": "$XSAPPNAME.sap.hana.democontent.epm.Admin",
"description": "Administration privilege"
}
],
"role-templates": [
{
"name": "sap_hana_democontent_epm_roles_Admin",
"scope-references": [
"$XSAPPNAME.sap.hana.democontent.epm.Admin"
]
},
{
"name": "sap_hana_democontent_epm_roles_User",
"scope-references": [
"$XSAPPNAME.sap.hana.democontent.epm.Basic"
]
}
]
}
{
"name": "HCO_DEMOCONTENT-xsjs-service",
"description": "",
"version": "1.0.0",
"main": "main.js",
"scripts": {
"start": "node main.js",
"stop": ""
},
"files": [],
"dependencies": {
"@sap/xsenv": "1.2.8",
"@sap/xsjs": "3.0.0",
"@sap/cds": "1.14.1"
},
"devDependencies": {
"@sap/xsjs-test": "2.0.13"
},
"engines": {
"node": "8.x"
}
}
var conn = $.db.getConnection();
var XSDS = $.require("@sap/cds").xsjs(conn); // “sap-cds” refers to node-cds
var entity = XSDS.importEntity('sap.hana.democontent.epm.data','Util.Messages');
var XSProc = $.import("sap.hana.xs.libs.dbutils", "procedures");
var proc = XSProc.allProcedures("SAP_HANA_DEMO", "sap.hana.democontent.epm.procedures");
var connection = $.hdb.getConnection();
var proc = {
get_session_variable: connection.loadProcedure("sap.hana.democontent.epm.Procedures::get_session_variable"),
set_session_variable: connection.loadProcedure("sap.hana.democontent.epm.Procedures::set_session_variable"),
get_application_variable: connection.loadProcedure("sap.hana.democontent.epm.Procedures::get_application_variable"),
set_application_variable: connection.loadProcedure("sap.hana.democontent.epm.Procedures::set_application_variable")
};
{
"TENANT_HOST_PATTERN": "^(.*)-hco-democontent-app.cfapps.[region].hana.ondemand.com"
}
Name: xs-security.json
MTA-Resource: uaa
Content-Type: application/json
cf l -a <the api url to your environment>
cf deploy <path to your mtar>
cf a
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
12 | |
12 | |
11 | |
11 | |
10 | |
8 | |
8 | |
7 | |
7 | |
7 |