Running an app in iOS6 right now and it won't stay in landscape mode for iPhone/iPad devices. I've checked the docs and other-related questions but can't find an answer. I believe we're following the docs, so, maybe we've got some incorrect formatting. Here's the config, which I've only stripped out identifying/key/hash info:
{
"config_version": "2",
"name": "appname",
"author": "author-email",
"version": "0.1",
"platform_version": "v1.4.50",
"description": "description goes here",
"partners": {
"parse": {
"applicationId": "id",
"clientKey": "clientkeyishere",
"parseRestKey": "parsekey"
}
},
"modules": {
"requirements": {
"ios": {
"minimum_version": "4.3",
"device_family": "iphone"
}
},
"icons": {
"android": {
"36": "res/icons/android/ldpi.png",
"48": "res/icons/android/mdpi.png",
"72": "res/icons/android/hdpi.png",
"96": "res/icons/android/xhdpi.png"
},
"ios": {
"57": "res/icons/ios/icon_iphone#1x.png",
"72": "res/icons/ios/icon_ipad#1x.png",
"114": "res/icons/ios/icon_iphone#2x.png",
"144": "res/icons/ios/icon_ipad#2x.png",
"512": "res/icons/ios/icon_512.png"
}
},
"launchimage": {
"iphone": "res/splash/ios/siren_splash#1x.png",
"iphone-retina": "res/splash/ios/siren_splash#2x.png",
"iphone-retina4": "res/splash/ios/siren_splash_iphone_tall.png",
"ipad": "res/splash/ios/siren_splash_ipad_tall#1x.png",
"ipad-landscape": "res/splash/ios/siren_splash_ipad_wide#1x.png",
"ipad-retina": "res/splash/ios/siren_splash_ipad_tall#2x.png",
"ipad-landscape-retina": "res/splash/ios/siren_splash_ipad_wide#1x.png",
"android": "res/splash/android/android_logo.png",
"android-landscape": "res/splash/android/android_logo.png",
"background-color": "#000000"
},
"package_names": {
"ios": "packagenameishere"
},
"display": {
"orientation": {
"default": "portrait",
"iphone": "portrait",
"ipad": "portrait",
"android": "portrait"
}
},
"geolocation": true,
"logging": {
"level": "DEBUG"
},
"request": {
"permissions": [
"http://*/*",
"https://*/*"
]
},
"contact": true,
"file": true,
"is": true,
"media": {},
"prefs": true,
"tools": true,
"reload": true,
"parameters": {
"api": "apigoeshere"
}
},
"plugins": {
"rate": {
"hash": "hashishere",
"type": "project"
}
}
}
You might want to try this formatting, I think it changes from time to time.
This is with Toolkit v2.0.1
Works for me.
{
"modules": {
"display": {
"config": {
"orientations": {
"android": "portrait",
"ipad": "portrait",
"iphone": "portrait"
}
},
"version": "2.2"
}
}
}
Full example from my working config:
{
"author": "",
"config_version": "4",
"core": {
"general": {
"reload": true
},
"ios": {
"device_family": "iphone",
"minimum_version": "4.3",
"package_name": ""
}
},
"description": "",
"homepage": "",
"modules": {
"contact": {
"disabled": true,
"version": "2.2"
},
"display": {
"config": {
"orientations": {
"android": "portrait",
"ipad": "portrait",
"iphone": "portrait"
}
},
"version": "2.2"
},
"file": {
"version": "2.2"
},
"flurry": {
"config": {
"ios_api_key": ""
},
"version": "2.3",
"disabled": true
},
"geolocation": {
"version": "2.0"
},
"icons": {
"config": {
"ios": {
"57": "assets/graphic/icons/icon-57.png",
"72": "assets/graphic/icons/icon-72.png",
"76": "assets/graphic/icons/AppIcon76x76.png",
"114": "assets/graphic/icons/icon-114.png",
"120": "assets/graphic/icons/AppIcon60x60#2x.png",
"144": "assets/graphic/icons/icon-144.png",
"152": "assets/graphic/icons/AppIcon76x76#2x.png",
"512": "assets/graphic/icons/icon-512.png",
"prerendered": true
}
},
"version": "2.1"
},
"launchimage": {
"config": {
"ios": {
"1536x2048": "assets/graphic/splash/1536x2048-splash.png",
"320x480": "assets/graphic/splash/320x480-splash.png",
"640x1136": "assets/graphic/splash/640x1136-splash.png",
"2048x1536": "assets/graphic/splash/2048x1536-splash.png",
"1536x2008": "assets/graphic/splash/1536x2008-splash.png",
"1024x768": "assets/graphic/splash/1024x768-splash.png",
"2048x1496": "assets/graphic/splash/2048x1496-splash.png",
"1024x748": "assets/graphic/splash/1024x748-splash.png",
"640x960": "assets/graphic/splash/640x960-splash.png",
"768x1004": "assets/graphic/splash/768x1004-splash.png",
"768x1024": "assets/graphic/splash/768x1024-splash.png"
}
},
"version": "2.1"
},
"media": {
"config": {},
"disabled": true,
"version": "2.1"
},
"notification": {
"version": "2.2"
},
"parse": {
"config": {
"applicationId": "",
"clientKey": ""
},
"version": "2.0"
},
"prefs": {
"version": "2.0"
},
"request": {
"config": {
"permissions": [
"http://*/*",
"https://*/*"
]
},
"version": "2.3"
},
"sms": {
"version": "2.0"
},
"tabbar": {
"disabled": true,
"version": "2.1"
},
"tabs": {
"version": "2.4"
},
"urlhandler": {
"config": {
"scheme": ""
},
"version": "2.0"
},
"topbar": {
"version": "2.2"
}
},
"name": "",
"platform_version": "v2.0.1",
"version": ""
}
Related
i have a question.. for example i dont want to use the sap cloud and want to deploy my app on a sap gatewayserver so what do i have to change? my app works trough the cloud platform with a destination (cloudconnector).. but i dont want this way anymore. So what i need to change in the manifest or the neo.js? maybe you guys have an example? bc. i dont really find anything what gives me the click in my head..
i dont want to change all the calls to ajax calls.. so there used to be a good solution to change something in the manifest or neo.. or something like that right? so you dont have to change your code
as i said the best way is to show me an example and explain me on this example.
my neo-app.js
{
"welcomeFile": "/webapp/index.html",
"routes": [
{
"path": "/resources",
"target": {
"type": "service",
"name": "sapui5",
"entryPath": "/resources"
},
"description": "SAPUI5 Resources"
},
{
"path": "/test-resources",
"target": {
"type": "service",
"name": "sapui5",
"entryPath": "/test-resources"
},
"description": "SAPUI5 Test Resources"
},
{
"path": "/sap/opu/odata",
"target": {
"type": "destination",
"name": "prototyp2",
"entryPath": "/sap/opu/odata"
},
"description": "prototyp2"
}
],
"sendWelcomeFileRedirect": true
}
as you can see the last route thats the destination via cloud connector.
and this is my manifest
{
"_version": "1.12.0",
"sap.app": {
"id": "test",
"type": "application",
"i18n": "i18n/i18n.properties",
"applicationVersion": {
"version": "1.0.0"
},
"title": "{{appTitle}}",
"description": "{{appDescription}}",
"resources": "resources.json",
"ach": "ach",
"sourceTemplate": {
"id": "servicecatalog.connectivityComponentForManifest",
"version": "0.0.0"
},
"dataSources": {
"ZEITERFASSUNG_2_SRV": {
"uri": "/sap/opu/odata/sap/test_SRV/",
"type": "OData",
"settings": {
"localUri": "localService/metadata.xml"
}
}
}
},
"sap.ui": {
"technology": "UI5",
"icons": {
"icon": "",
"favIcon": "",
"phone": "",
"phone#2": "",
"tablet": "",
"tablet#2": ""
},
"deviceTypes": {
"desktop": true,
"tablet": true,
"phone": true
},
"supportedThemes": [
"sap_hcb",
"sap_bluecrystal"
]
},
"sap.ui5": {
"rootView": {
"viewName": "Zeiterfassung.view.timeOverview",
"type": "XML"
},
"dependencies": {
"minUI5Version": "1.66.0",
"libs": {
"sap.m": {},
"sap.ui.core": {},
"sap.ui.layout": {},
"sap.ui.table": {
"minVersion": ""
},
"sap.ui.unified": {
"minVersion": ""
}
}
},
"contentDensities": {
"compact": true,
"cozy": true
},
"models": {
"": {
"type": "sap.ui.model.odata.v2.ODataModel",
"settings": {
"defaultOperationMode": "Server",
"defaultBindingMode": "TwoWay",
"defaultCountMode": "Request"
},
"dataSource": "test_SRV",
"preload": true
}
},
"resources": {
"css": [
{
"uri": "css/style.css"
}
]
},
"routing": {
"config": {
"routerClass": "sap.m.routing.Router",
"viewType": "XML",
"async": true,
"viewPath": "Zeiterfassung.view",
"controlAggregation": "pages",
"controlId": "idAppControl"
},
"targets": {
"TargettimeOverview": {
"viewType": "XML",
"transition": "slide",
"clearAggregation": true,
"viewName": "TimeOverview"
}
}
}
},
"sap.platform.hcp": {
"uri": "webapp",
"_version": "1.3.0"
}
}
Thanks guys
:)
your neo-app.js is only for the webide.
Rename your "webapp" folder to "WebContent".
export your app
unpack
use the ui5 uploader in your backend
"/UI5/UI5_REPOSITORY_LOAD" for uploading
If you run the index.html directly ( instead of using a launchpad), be sure your script-tag in your index.html is set to src="resources/sap-ui-core.js"
How to attach latest blob content in sendgrid service using logic app?
You can create a Blob trigger LA with SendGrid Action as shown below:
{
"$connections": {
"value": {
"azureblob": {
"connectionId": "/subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroup>/providers/Microsoft.Web/connections/azureblob",
"connectionName": "azureblob",
"id": "/subscriptions/<SubscriptionId>/providers/Microsoft.Web/locations/southeastasia/managedApis/azureblob"
},
"sendgrid": {
"connectionId": "/subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroup>/providers/Microsoft.Web/connections/sendgrid",
"connectionName": "sendgrid",
"id": "/subscriptions/<SubscriptionId>/providers/Microsoft.Web/locations/southeastasia/managedApis/sendgrid"
}
}
},
"definition": {
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
"actions": {
"Get_blob_content_using_path": {
"inputs": {
"host": {
"connection": {
"name": "#parameters('$connections')['azureblob']['connectionId']"
}
},
"method": "get",
"path": "/datasets/default/GetFileContentByPath",
"queries": {
"inferContentType": true,
"path": "#triggerBody()?['Path']",
"queryParametersSingleEncoded": true
}
},
"runAfter": {},
"type": "ApiConnection"
},
"Send_email_(V2)": {
"inputs": {
"body": {
"file": "#{base64(body('Get_blob_content_using_path'))}",
"filename": "#triggerBody()?['Name']",
"from": "<FromEmail>",
"ishtml": true,
"subject": "test attach met",
"text": "PFA",
"to": "<ToEmail>"
},
"host": {
"connection": {
"name": "#parameters('$connections')['sendgrid']['connectionId']"
}
},
"method": "post",
"path": "/mail/send"
},
"runAfter": {
"Get_blob_content_using_path": [
"Succeeded"
]
},
"type": "ApiConnection"
}
},
"contentVersion": "1.0.0.0",
"outputs": {},
"parameters": {
"$connections": {
"defaultValue": {},
"type": "Object"
}
},
"triggers": {
"When_a_blob_is_added_or_modified_(properties_only)": {
"inputs": {
"host": {
"connection": {
"name": "#parameters('$connections')['azureblob']['connectionId']"
}
},
"method": "get",
"path": "/datasets/default/triggers/batch/onupdatedfile",
"queries": {
"folderId": "JTJmbGFjb250YWluZXI=",
"maxFileCount": 10
}
},
"metadata": {
"JTJmbGFjb250YWluZXI=": "/lacontainer"
},
"recurrence": {
"frequency": "Minute",
"interval": 3
},
"splitOn": "#triggerBody()",
"type": "ApiConnection"
}
}
}
}
I have a MTA project and I am trying to add the UI5 application to the Fiori Launchpad. But currently, the tiles do not show up. Instead when I check the console, I see that the target mapping has not been done properly. Can you please suggest where I do the target mapping.
This is the error I receive -
The following is the manifest file of GroupManage app. There are other apps/tiles such as quickLoader, messageBuilder etc.
manifest.json -
{
"_version": "1.7.0",
"sap.app": {
"id": "com.sap.groups",
"type": "application",
"i18n": "i18n/i18n.properties",
"applicationVersion": {
"version": "1.0.0"
},
"title": "{{appTitle}}",
"description": "{{appDescription}}",
"sourceTemplate": {
"id": "servicecatalog.connectivityComponent",
"version": "0.0.0"
},
"dataSources": {
"mainService": {
"uri": "/odata/sah.svc/",
"type": "OData",
"settings": {
"odataVersion": "2.0",
"localUri": "localService/metadata.xml"
}
}
}
},
"sap.ui": {
"technology": "UI5",
"icons": {
"icon": "",
"favIcon": "",
"phone": "",
"phone#2": "",
"tablet": "",
"tablet#2": ""
},
"deviceTypes": {
"desktop": true,
"tablet": true,
"phone": true
},
"supportedThemes": [
"sap_hcb",
"sap_belize"
]
},
"sap.ui5": {
"rootView": {
"viewName": "com.sap.groups.view.groupList",
"type": "XML"
},
"dependencies": {
"minUI5Version": "1.30.0",
"libs": {
"sap.ui.core": {},
"sap.m": {},
"sap.ui.layout": {},
"sap.ushell": {},
"sap.collaboration": {},
"sap.ui.comp": {},
"sap.uxap": {}
}
},
"contentDensities": {
"compact": true,
"cozy": true
},
"models": {
"i18n": {
"type": "sap.ui.model.resource.ResourceModel",
"settings": {
"bundleName": "com.sap.groups.i18n.i18n"
}
},
"": {
"dataSource": "mainService",
"settings": {
"metadataUrlParams": {
"sap-documentation": "heading"
}
}
}
},
"routing": {
"config": {
"routerClass": "sap.m.routing.Router",
"viewType": "XML",
"viewPath": "com.sap.groups.view",
"controlId": "app",
"controlAggregation": "pages",
"async": true
},
"routes": [{
"pattern": "",
"name": "groupList",
"target": "groupList"
}, {
"pattern": "details/{groupId}",
"name": "details",
"target": "groupDetails"
}],
"targets": {
"groupList": {
"viewName": "groupList",
"viewId": "groupList"
},
"groupDetails": {
"viewName": "groupDetails",
"viewId": "groupDetails"
}
}
},
"resources": {
"css": [
{
"uri": "css/style.css"
}
]
}
}
}
And the site-content.json of the project is as follows -
{
"_version": "1.0.0",
"site": {
"_version": "1.0",
"identification": {
"id": "....",
"namespace": "",
"entityType": "site",
"description": "",
"i18n": "",
"title": "{{LAUNCHPAD_SAMPLE}}"
},
"payload": {
"groupsOrder": [
"user-applications",
"configuration-applications"
],
"config": {
},
"sap.cloud.portal": {
"_version": "1.2.0",
"config": {
"theme.id": "sap_belize",
"theme.active": "[\"sap_hcb\",\"sap_belize_plus\",\"sap_belize\"]"
}
}
}
},
"catalogs": {
"sah-technical-catalog": {
"_version": "1.1",
"identification": {
"id": "sah-technical-catalog",
"namespace": "sah-tech-catalog",
"title": "{{TECH_CATALOGS}}",
"description": "",
"entityType": "catalog",
"i18n": "i18n/i18n.properties"
},
"payload": {
"appDescriptors": [{
"id":"sah-grp-manage"
}, {
"id":"sah-msg-manage"
}, {
"id":"sah-ops-activities"
}, {
"id":"sah-quick-loader"
}]
}
}
},
"roles": {
"Everyone": {
"_version": "1.0",
"identification": {
"id": "Everyone",
"title": "Everyone",
"entityType": "role"
},
"payload": {
"catalogs": [
"sah-technical-catalog"
],
"groups": [{
"id": "user-applications"
},
{
"id": "configuration-applications"
}]
}
}
},
"applications": {
"sah-grp-manage":{
"sap.app": {
"_version": "1.5.0",
"id": "sah-grp-manage",
"type": "application",
"i18n": "i18n/i18n.properties",
"title": "{{appTitle}}",
"description": "{{appDescription}}",
"tags": {
"keywords": []
},
"crossNavigation": {
"inbounds": {
"groupManage": {
"semanticObject": "group",
"action": "manage",
"deviceTypes": {
"desktop": true,
"tablet": true,
"phone": true
}
}
},
"outbounds": {
}
}
},
"sap.platform.hcp": {
"_version": "1.1.0",
"uri": "/manageGroup",
"appName": ""
},
"sap.flp": {
"_version": "1.1.0",
"type": "UI5",
"config": {
"skipVariantResolving": ""
}
},
"sap.ui": {
"_version": "1.3.0",
"technology": "UI5",
"deviceTypes": {
"desktop": true,
"tablet": true,
"phone": true
}
},
"sap.ui5": {
"componentName": "com.sap.groups",
"_version": "1.1.0"
},
"sap.platform.cf": {
"oAuthScopes": ["$XSAPPNAME.DISPLAY_GROUPS"]
}
},
"sah-msg-manage":{
"sap.app": {
"_version": "1.5.0",
"id": "sah-msg-manage",
"type": "application",
"i18n": "i18n/i18n.properties",
"title": "{{MSG_BUILDER}}",
"description": "{{MSG_BLD_DESC}}",
"tags": {
"keywords": []
},
"crossNavigation": {
"inbounds": {
"groupManage": {
"semanticObject": "message",
"action": "manage",
"deviceTypes": {
"desktop": true,
"tablet": true,
"phone": true
}
}
},
"outbounds": {
}
}
},
"sap.platform.hcp": {
"_version": "1.1.0",
"uri": "/manageMessage",
"appName": ""
},
"sap.flp": {
"_version": "1.1.0",
"type": "UI5",
"config": {
"skipVariantResolving": ""
}
},
"sap.ui": {
"_version": "1.3.0",
"technology": "UI5",
"deviceTypes": {
"desktop": true,
"tablet": true,
"phone": true
}
},
"sap.ui5": {
"componentName": "com.sap.messageList",
"_version": "1.1.0"
},
"sap.platform.cf": {
"oAuthScopes": ["$XSAPPNAME.MANAGE_MESSAGES"]
}
},
"sah-grp-edit":{
"sap.app": {
"_version": "1.5.0",
"id": "sah-grp-edit",
"type": "application",
"i18n": "i18n/i18n.properties",
"title": "{{appTitle}}",
"description": "{{appDescription}}",
"tags": {
"keywords": []
},
"crossNavigation": {
"inbounds": {
"groupEdit": {
"semanticObject": "group",
"action": "edit",
"deviceTypes": {
"desktop": true,
"tablet": true,
"phone": true
}
}
},
"outbounds": {
}
}
},
"sap.platform.hcp": {
"_version": "1.1.0",
"uri": "/editGroup",
"appName": ""
},
"sap.flp": {
"_version": "1.1.0",
"type": "UI5",
"config": {
"skipVariantResolving": ""
}
},
"sap.ui": {
"_version": "1.3.0",
"technology": "UI5",
"deviceTypes": {
"desktop": true,
"tablet": true,
"phone": true
}
},
"sap.ui5": {
"componentName": "ALPAPP",
"_version": "1.1.0"
},
"sap.platform.cf": {
"oAuthScopes": ["$XSAPPNAME.DISPLAY_GROUPS"]
}
},
"sah-msg-create":{
"sap.app": {
"_version": "1.5.0",
"id": "sah-msg-create",
"type": "application",
"i18n": "i18n/i18n.properties",
"title": "{{MSG_CREATE}}",
"description": "{{MSG_CREATE_DESC}}",
"tags": {
"keywords": []
},
"crossNavigation": {
"inbounds": {
"groupEdit": {
"semanticObject": "message",
"action": "create",
"deviceTypes": {
"desktop": true,
"tablet": true,
"phone": true
}
}
},
"outbounds": {
}
}
},
"sap.platform.hcp": {
"_version": "1.1.0",
"uri": "/createMessage",
"appName": ""
},
"sap.flp": {
"_version": "1.1.0",
"type": "UI5",
"config": {
"skipVariantResolving": ""
}
},
"sap.ui": {
"_version": "1.3.0",
"technology": "UI5",
"deviceTypes": {
"desktop": true,
"tablet": true,
"phone": true
}
},
"sap.ui5": {
"componentName": "com.sap.messageBuilder",
"_version": "1.1.0"
},
"sap.platform.cf": {
"oAuthScopes": ["$XSAPPNAME.MANAGE_MESSAGES"]
}
},
"sah-ops-activities":{
"sap.app": {
"_version": "1.5.0",
"id": "sah-ops-activities",
"type": "application",
"i18n": "i18n/i18n.properties",
"title": "{{CONFIG_TITILE}}",
"description": "{{appDescription}}",
"tags": {
"keywords": []
},
"crossNavigation": {
"inbounds": {
"groupManage": {
"semanticObject": "activities",
"action": "operation",
"deviceTypes": {
"desktop": true,
"tablet": true,
"phone": true
}
}
},
"outbounds": {
}
}
},
"sap.platform.hcp": {
"_version": "1.1.0",
"uri": "/operationalActivities",
"appName": ""
},
"sap.flp": {
"_version": "1.1.0",
"type": "UI5",
"config": {
"skipVariantResolving": ""
}
},
"sap.ui": {
"_version": "1.3.0",
"technology": "UI5",
"deviceTypes": {
"desktop": true,
"tablet": true,
"phone": true
}
},
"sap.ui5": {
"componentName": "com.sap.operational_activities",
"_version": "1.1.0"
},
"sap.platform.cf": {
"oAuthScopes": ["$XSAPPNAME.OPERATIONS"]
}
},
"sah-quick-loader":{
"sap.app": {
"_version": "1.5.0",
"id": "sah-quick-loader",
"type": "application",
"i18n": "i18n/i18n.properties",
"title": "{{LOADER_TITILE}}",
"description": "{{appDescription}}",
"tags": {
"keywords": []
},
"crossNavigation": {
"inbounds": {
"groupManage": {
"semanticObject": "activities",
"action": "quickLoader",
"deviceTypes": {
"desktop": true,
"tablet": true,
"phone": true
}
}
},
"outbounds": {
}
}
},
"sap.platform.hcp": {
"_version": "1.1.0",
"uri": "/quickLoader",
"appName": ""
},
"sap.flp": {
"_version": "1.1.0",
"type": "UI5",
"config": {
"skipVariantResolving": ""
}
},
"sap.ui": {
"_version": "1.3.0",
"technology": "UI5",
"deviceTypes": {
"desktop": true,
"tablet": true,
"phone": true
}
},
"sap.ui5": {
"componentName": "com.sap.quickloader",
"_version": "1.1.0"
},
"sap.platform.cf": {
"oAuthScopes": ["$XSAPPNAME.OPERATIONS"]
}
}
},
"groups": {
"user-applications": {
"identification": {
"id": "user-applications",
"i18n": "i18n/i18n.properties",
"namespace": "user.applications",
"title": "{{LAUNCHPAD_TITLE}}"
},
"payload": {
"tiles": [{
"id": "sah-grp-manage",
"title": "{{GRP_MANAGEMENT}}",
"description": "{{SAH_APP}}",
"icon": "sap-icon://family-care",
"target": {
"semanticObject": "group",
"action": "manage",
"parameters": []
}
},{
"id": "sah-msg-manage",
"title": "{{MSG_BUILDER}}",
"description": "{{MSG_BLD_DESC}}",
"icon": "sap-icon://email",
"target": {
"semanticObject": "message",
"action": "manage",
"parameters": []
}
}]
}
},
"configuration-applications": {
"identification": {
"id": "configuration-applications",
"i18n": "i18n/i18n.properties",
"title": "{{CONFIGURATIONS_TITLE}}"
},
"payload": {
"tiles": [{
"id": "sah-ops-activities",
"title": "{{OPERATIONS}}",
"description": "{{SAH_APP}}",
"icon": "sap-icon://action-settings",
"target": {
"semanticObject": "activities",
"action": "operation",
"parameters": []
}
},{
"id": "sah-quick-loader",
"title": "{{quickLoader}}",
"description": "{{SAH_APP}}",
"icon": "sap-icon://upload",
"target": {
"semanticObject": "activities",
"action": "quickLoader",
"parameters": []
}
}]
}
}
},
"siteThemes": {
"sap_hcb": {
"description": "SAP High Contrast Black",
"name": "sap_hcb",
"path": "sap_hcb"
},
"sap_belize_plus": {
"description": "SAP Belize Plus",
"name": "sap_belize_plus",
"path": "sap_belize_plus"
},
"sap_belize": {
"description": "SAP Belize",
"name": "sap_belize",
"path": "sap_belize"
}
}
}
Have you created the tiles in the launchpad manager ?
Is this on prem or on the cloud ?
This blog covers MTA sorry, missed that part of your question:- https://blogs.sap.com/2018/10/29/develop-your-first-sap-fiori-launchpad-site-with-portal-service-on-sap-cloud-platform-multi-cloud-chapter-2/
This blog shows you how to set it up for on prem with some great easy to follow screen shots https://blogs.sap.com/2017/11/19/sap-fiori-ui5-app-configuration-in-sap-fiori-launchpad/
ANd here Meredith takes you through deployment from the cloud https://developers.sap.com/uk/tutorials/teched-2017-fiori-deploy.html
Why is this happening and how can i solve it?
I have a problem getting the data from hanatrial.ondemand.com, i keep getting an authentication alert:
heres my destination conf:
and heres my conf files:
neo-app.json
{
"welcomeFile": "index.html",
"routes": [{
"path": "/resources",
"target": {
"type": "service",
"name": "sapui5",
"entryPath": "/resources"
},
"description": "SAPUI5 Resources"
}, {
"path": "/test-resources",
"target": {
"type": "service",
"name": "sapui5",
"entryPath": "/test-resources"
},
"description": "SAPUI5 Test Resources"
}, {
"path": "/destinations/ES4",
"target": {
"type": "destination",
"name": "ES4"
},
"description": "ES4 Demo Service"
}
]
}
menifest.json
{
"_version": "1.3.0",
"sap.app": {
"_version": "1.3.0",
"id": "opensap.myapp",
"type": "application",
"title": "{{appTitle}}",
"description": "{{appDescription}}",
"applicationVersion": {
"version": "1.0.0"
},
"dataSources": {
"ES4": {
"uri": "/destinations/ES4/sap/opu/odata/IWBEP/GWSAMPLE_BASIC/",
"type": "OData",
"settings": {
"odataVersion": "2.0"
}
}
},
"i18n": "i18n/i18n.properties"
},
"sap.ui": {
"_version": "1.3.0",
"technology": "UI5",
"deviceTypes": {
"desktop": true,
"tablet": true,
"phone": true
},
"supportedThemes": [
"sap_bluecrystal"
]
},
"sap.ui5": {
"_version": "1.2.0",
"rootView": {
"viewName": "opensap.myapp.view.App",
"type": "XML",
"id": "app"
},
"autoPrefixId": true,
"dependencies": {
"minUI5Version": "1.34",
"libs": {
"sap.ui.core": {
"minVersion": "1.34.0"
},
"sap.m": {
"minVersion": "1.34.0"
},
"sap.ui.layout": {
"minVersion": "1.34.0"
}
}
},
"contentDensities": {
"compact": true,
"cozy": true
},
"models": {
"": {
"dataSource": "ES4"
},
"i18n": {
"type": "sap.ui.model.resource.ResourceModel",
"settings": {
"bundleName": "opensap.myapp.i18n.i18n"
}
},
"address": {
"type": "sap.ui.model.json.JSONModel",
"uri": "model/Address.json"
},
"helloPanel": {
"type": "sap.ui.model.json.JSONModel",
"uri": "model/HelloPanel.json"
}
}
}
}
Why is this happening and how can i solve it?
this is the file that i'm supposed to retrive the data, but still no success:
https://sapes4.sapdevcenter.com/sap/opu/odata/IWBEP/GWSAMPLE_BASIC/$metadata
So how can i solve this?
looks like the user or pw in the destination is wrong. use the same credentials in the destination configration as you would to access:
https://sapes4.sapdevcenter.com/sap/opu/odata/IWBEP/GWSAMPLE_BASIC/$metadata
The dialog is for you to provide the system credentials of ES4. However, you can eliminate this by adding it in the destination of your SAP Cloud platform.
Nonetheless, the system ES4 is no more active and you can use ES5 for the sample Odata by simply creating a user.
https://sapes5.sapdevcenter.com/sap/opu/odata/iwbep/GWSAMPLE_BASIC/
service fabric cluster communication fail when using my domainname.com certificate. I'm getting this error using the portal and/or using ARM template:
Failed to communicate with the cluster (get cluster health: Client certificate required).
Template (variables were removed):
{
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json",
"contentVersion": "1.0.0.0",
"parameters": {
},
"variables": {
"resources": [
{
"apiVersion": "[variables('storageApiVersion')]",
"type": "Microsoft.Storage/storageAccounts",
"name": "[parameters('supportLogStorageAccountName')]",
"location": "[parameters('computeLocation')]",
"dependsOn": [],
"properties": {},
"kind": "Storage",
"sku": {
"name": "[parameters('supportLogStorageAccountType')]"
},
"tags": {
"resourceType": "Service Fabric",
"clusterName": "[parameters('clusterName')]"
}
},
{
"apiVersion": "[variables('storageApiVersion')]",
"type": "Microsoft.Storage/storageAccounts",
"name": "[parameters('applicationDiagnosticsStorageAccountName')]",
"location": "[parameters('computeLocation')]",
"dependsOn": [],
"properties": {},
"kind": "Storage",
"sku": {
"name": "[parameters('applicationDiagnosticsStorageAccountType')]"
},
"tags": {
"resourceType": "Service Fabric",
"clusterName": "[parameters('clusterName')]"
}
},
{
"apiVersion": "[variables('vNetApiVersion')]",
"type": "Microsoft.Network/virtualNetworks",
"name": "[parameters('virtualNetworkName')]",
"location": "[parameters('computeLocation')]",
"properties": {
"addressSpace": {
"addressPrefixes": [
"[parameters('addressPrefix')]"
]
},
"subnets": [
{
"name": "[parameters('subnet0Name')]",
"properties": {
"addressPrefix": "[parameters('subnet0Prefix')]"
}
}
]
},
"tags": {
"resourceType": "Service Fabric",
"clusterName": "[parameters('clusterName')]"
}
},
{
"apiVersion": "[variables('publicIPApiVersion')]",
"type": "Microsoft.Network/publicIPAddresses",
"name": "[concat(parameters('lbIPName'),'-','0')]",
"location": "[parameters('computeLocation')]",
"properties": {
"dnsSettings": {
"domainNameLabel": "[parameters('dnsName')]"
},
"publicIPAllocationMethod": "Dynamic"
},
"tags": {
"resourceType": "Service Fabric",
"clusterName": "[parameters('clusterName')]"
}
},
{
"apiVersion": "[variables('lbApiVersion')]",
"type": "Microsoft.Network/loadBalancers",
"name": "[concat('LB','-', parameters('clusterName'),'-',parameters('vmNodeType0Name'))]",
"location": "[parameters('computeLocation')]",
"dependsOn": [
"[concat('Microsoft.Network/publicIPAddresses/',concat(parameters('lbIPName'),'-','0'))]"
],
"properties": {
"frontendIPConfigurations": [
{
"name": "LoadBalancerIPConfig",
"properties": {
"publicIPAddress": {
"id": "[resourceId('Microsoft.Network/publicIPAddresses',concat(parameters('lbIPName'),'-','0'))]"
}
}
}
],
"backendAddressPools": [
{
"name": "LoadBalancerBEAddressPool",
"properties": {}
}
],
"loadBalancingRules": [
{
"name": "LBRule",
"properties": {
"backendAddressPool": {
"id": "[variables('lbPoolID0')]"
},
"backendPort": "[parameters('nt0fabricTcpGatewayPort')]",
"enableFloatingIP": "false",
"frontendIPConfiguration": {
"id": "[variables('lbIPConfig0')]"
},
"frontendPort": "[parameters('nt0fabricTcpGatewayPort')]",
"idleTimeoutInMinutes": "5",
"probe": {
"id": "[variables('lbProbeID0')]"
},
"protocol": "tcp"
}
},
{
"name": "LBHttpRule",
"properties": {
"backendAddressPool": {
"id": "[variables('lbPoolID0')]"
},
"backendPort": "[parameters('nt0fabricHttpGatewayPort')]",
"enableFloatingIP": "false",
"frontendIPConfiguration": {
"id": "[variables('lbIPConfig0')]"
},
"frontendPort": "[parameters('nt0fabricHttpGatewayPort')]",
"idleTimeoutInMinutes": "5",
"probe": {
"id": "[variables('lbHttpProbeID0')]"
},
"protocol": "tcp"
}
}
],
"probes": [
{
"name": "FabricGatewayProbe",
"properties": {
"intervalInSeconds": 5,
"numberOfProbes": 2,
"port": "[parameters('nt0fabricTcpGatewayPort')]",
"protocol": "tcp"
}
},
{
"name": "FabricHttpGatewayProbe",
"properties": {
"intervalInSeconds": 5,
"numberOfProbes": 2,
"port": "[parameters('nt0fabricHttpGatewayPort')]",
"protocol": "tcp"
}
}
],
"inboundNatPools": [
{
"name": "LoadBalancerBEAddressNatPool",
"properties": {
"backendPort": "3389",
"frontendIPConfiguration": {
"id": "[variables('lbIPConfig0')]"
},
"frontendPortRangeEnd": "4500",
"frontendPortRangeStart": "3389",
"protocol": "tcp"
}
}
]
},
"tags": {
"resourceType": "Service Fabric",
"clusterName": "[parameters('clusterName')]"
}
},
{
"apiVersion": "[variables('storageApiVersion')]",
"type": "Microsoft.Storage/storageAccounts",
"name": "[variables('uniqueStringArray0')[copyIndex()]]",
"location": "[parameters('computeLocation')]",
"dependsOn": [],
"properties": {},
"copy": {
"name": "storageLoop",
"count": 5
},
"kind": "Storage",
"sku": {
"name": "[parameters('storageAccountType')]"
},
"tags": {
"resourceType": "Service Fabric",
"clusterName": "[parameters('clusterName')]"
}
},
{
"apiVersion": "[variables('vmssApiVersion')]",
"type": "Microsoft.Compute/virtualMachineScaleSets",
"name": "[parameters('vmNodeType0Name')]",
"location": "[parameters('computeLocation')]",
"dependsOn": [
"[concat('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]",
"[concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[0])]",
"[concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[1])]",
"[concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[2])]",
"[concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[3])]",
"[concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[4])]",
"[concat('Microsoft.Network/loadBalancers/', concat('LB','-', parameters('clusterName'),'-',parameters('vmNodeType0Name')))]",
"[concat('Microsoft.Storage/storageAccounts/', parameters('supportLogStorageAccountName'))]",
"[concat('Microsoft.Storage/storageAccounts/', parameters('applicationDiagnosticsStorageAccountName'))]"
],
"properties": {
"overprovision": "[parameters('overProvision')]",
"upgradePolicy": {
"mode": "Automatic"
},
"virtualMachineProfile": {
"extensionProfile": {
"extensions": [
{
"name": "[concat(parameters('vmNodeType0Name'),'_ServiceFabricNode')]",
"properties": {
"type": "ServiceFabricNode",
"autoUpgradeMinorVersion": false,
"protectedSettings": {
"StorageAccountKey1": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('supportLogStorageAccountName')),'2015-05-01-preview').key1]",
"StorageAccountKey2": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('supportLogStorageAccountName')),'2015-05-01-preview').key2]"
},
"publisher": "Microsoft.Azure.ServiceFabric",
"settings": {
"clusterEndpoint": "[reference(parameters('clusterName')).clusterEndpoint]",
"nodeTypeRef": "[parameters('vmNodeType0Name')]",
"dataPath": "D:\\\\SvcFab",
"durabilityLevel": "Bronze",
"certificate": {
"thumbprint": "[parameters('certificateThumbprint')]",
"x509StoreName": "[parameters('certificateStoreValue')]"
}
},
"typeHandlerVersion": "1.0"
}
},
{
"name": "[concat('VMDiagnosticsVmExt','_vmNodeType0Name')]",
"properties": {
"type": "IaaSDiagnostics",
"autoUpgradeMinorVersion": true,
"protectedSettings": {
"storageAccountName": "[parameters('applicationDiagnosticsStorageAccountName')]",
"storageAccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('applicationDiagnosticsStorageAccountName')),'2015-05-01-preview').key1]",
"storageAccountEndPoint": "https://core.windows.net/"
},
"publisher": "Microsoft.Azure.Diagnostics",
"settings": {
"WadCfg": {
"DiagnosticMonitorConfiguration": {
"overallQuotaInMB": "50000",
"EtwProviders": {
"EtwEventSourceProviderConfiguration": [
{
"provider": "Microsoft-ServiceFabric-Actors",
"scheduledTransferKeywordFilter": "1",
"scheduledTransferPeriod": "PT5M",
"DefaultEvents": {
"eventDestination": "ServiceFabricReliableActorEventTable"
}
},
{
"provider": "Microsoft-ServiceFabric-Services",
"scheduledTransferPeriod": "PT5M",
"DefaultEvents": {
"eventDestination": "ServiceFabricReliableServiceEventTable"
}
}
],
"EtwManifestProviderConfiguration": [
{
"provider": "cbd93bc2-71e5-4566-b3a7-595d8eeca6e8",
"scheduledTransferLogLevelFilter": "Information",
"scheduledTransferKeywordFilter": "4611686018427387904",
"scheduledTransferPeriod": "PT5M",
"DefaultEvents": {
"eventDestination": "ServiceFabricSystemEventTable"
}
}
]
}
}
},
"StorageAccount": "[parameters('applicationDiagnosticsStorageAccountName')]"
},
"typeHandlerVersion": "1.5"
}
}
]
},
"networkProfile": {
"networkInterfaceConfigurations": [
{
"name": "[concat(parameters('nicName'), '-0')]",
"properties": {
"ipConfigurations": [
{
"name": "[concat(parameters('nicName'),'-',0)]",
"properties": {
"loadBalancerBackendAddressPools": [
{
"id": "[variables('lbPoolID0')]"
}
],
"loadBalancerInboundNatPools": [
{
"id": "[variables('lbNatPoolID0')]"
}
],
"subnet": {
"id": "[variables('subnet0Ref')]"
}
}
}
],
"primary": true
}
}
]
},
"osProfile": {
"adminPassword": "[parameters('adminPassword')]",
"adminUsername": "[parameters('adminUsername')]",
"computernamePrefix": "[parameters('vmNodeType0Name')]",
"secrets": [
{
"sourceVault": {
"id": "[parameters('sourceVaultValue')]"
},
"vaultCertificates": [
{
"certificateStore": "[parameters('certificateStoreValue')]",
"certificateUrl": "[parameters('certificateUrlValue')]"
}
]
}
]
},
"storageProfile": {
"imageReference": {
"publisher": "[parameters('vmImagePublisher')]",
"offer": "[parameters('vmImageOffer')]",
"sku": "[parameters('vmImageSku')]",
"version": "[parameters('vmImageVersion')]"
},
"osDisk": {
"vhdContainers": [
"[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[0]), variables('storageApiVersion')).primaryEndpoints.blob, parameters('vmStorageAccountContainerName'))]",
"[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[1]), variables('storageApiVersion')).primaryEndpoints.blob, parameters('vmStorageAccountContainerName'))]",
"[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[2]), variables('storageApiVersion')).primaryEndpoints.blob, parameters('vmStorageAccountContainerName'))]",
"[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[3]), variables('storageApiVersion')).primaryEndpoints.blob, parameters('vmStorageAccountContainerName'))]",
"[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[4]), variables('storageApiVersion')).primaryEndpoints.blob, parameters('vmStorageAccountContainerName'))]"
],
"name": "vmssosdisk",
"caching": "ReadOnly",
"createOption": "FromImage"
}
}
}
},
"sku": {
"name": "[parameters('vmNodeType0Size')]",
"capacity": "[parameters('nt0InstanceCount')]",
"tier": "Standard"
},
"tags": {
"resourceType": "Service Fabric",
"clusterName": "[parameters('clusterName')]"
}
},
{
"apiVersion": "2016-09-01",
"type": "Microsoft.ServiceFabric/clusters",
"name": "[parameters('clusterName')]",
"location": "[parameters('clusterLocation')]",
"dependsOn": [
"[concat('Microsoft.Storage/storageAccounts/', parameters('supportLogStorageAccountName'))]"
],
"properties": {
"azureActiveDirectory": {
"clientApplication": "55dae335-8436-4900-8f33-abbff16e8036",
"clusterApplication": "d0392358-9fa2-4f9a-aa2a-101859e31c34",
"tenantId": "c8656f45-daf5-42c1-9b29-ac27d3e63bf3"
},
"certificate": {
"thumbprint": "[parameters('certificateThumbprint')]",
"x509StoreName": "[parameters('certificateStoreValue')]"
},
"clientCertificateCommonNames": [],
"clientCertificateThumbprints": [
{
"certificateThumbprint": "C5EFB021F5D8BA8966B43B523B2A6BF8EE8202C5",
"isAdmin": true
},
{
"certificateThumbprint": "C5EFB021F5D8BA8966B43B523B2A6BF8EE8202C5",
"isAdmin": false
}
],
"clusterState": "Default",
"diagnosticsStorageAccountConfig": {
"blobEndpoint": "[reference(concat('Microsoft.Storage/storageAccounts/', parameters('supportLogStorageAccountName')), variables('storageApiVersion')).primaryEndpoints.blob]",
"protectedAccountKeyName": "StorageAccountKey1",
"queueEndpoint": "[reference(concat('Microsoft.Storage/storageAccounts/', parameters('supportLogStorageAccountName')), variables('storageApiVersion')).primaryEndpoints.queue]",
"storageAccountName": "[parameters('supportLogStorageAccountName')]",
"tableEndpoint": "[reference(concat('Microsoft.Storage/storageAccounts/', parameters('supportLogStorageAccountName')), variables('storageApiVersion')).primaryEndpoints.table]"
},
"fabricSettings": [
{
"parameters": [
{
"name": "ClusterProtectionLevel",
"value": "[parameters('clusterProtectionLevel')]"
}
],
"name": "Security"
}
],
"managementEndpoint": "[concat('https://',reference(concat(parameters('lbIPName'),'-','0')).dnsSettings.fqdn,':',parameters('nt0fabricHttpGatewayPort'))]",
"nodeTypes": [
{
"name": "[parameters('vmNodeType0Name')]",
"applicationPorts": {
"endPort": "[parameters('nt0applicationEndPort')]",
"startPort": "[parameters('nt0applicationStartPort')]"
},
"clientConnectionEndpointPort": "[parameters('nt0fabricTcpGatewayPort')]",
"durabilityLevel": "Bronze",
"ephemeralPorts": {
"endPort": "[parameters('nt0ephemeralEndPort')]",
"startPort": "[parameters('nt0ephemeralStartPort')]"
},
"httpGatewayEndpointPort": "[parameters('nt0fabricHttpGatewayPort')]",
"isPrimary": true,
"vmInstanceCount": "[parameters('nt0InstanceCount')]"
}
],
"provisioningState": "Default",
"security": {
"metadata": "The Credential type X509 indicates this is cluster is secured using X509 Certificates.",
"ClusterCredentialType": "X509",
"ServerCredentialType": "X509",
"CertificateInformation": {
"ClusterCertificate": {
"Thumbprint": "[parameters('certificateThumbprint')]",
"X509StoreName": "My"
},
"ServerCertificate": {
"Thumbprint": "[parameters('certificateThumbprint')]",
"X509StoreName": "My"
},
"ClientCertificateThumbprints": [
{
"CertificateThumbprint": "[parameters('certificateThumbprint')]",
"IsAdmin": false
},
{
"CertificateThumbprint": "[parameters('certificateThumbprint')]",
"IsAdmin": true
}
]
}
},
"reliabilityLevel": "Bronze",
"upgradeMode": "Automatic",
"vmImage": "Windows"
},
"tags": {
"resourceType": "Service Fabric",
"clusterName": "[parameters('clusterName')]"
}
}
],
"outputs": {
"clusterProperties": {
"value": "[reference(parameters('clusterName'))]",
"type": "object"
}
}
}
hint?
It might be as simple as the client certificate is not imported (installed) in the machine from where you are trying to access the explorer. When you open the Service Fabric explorer, it might pop up to select one of the certificates installed in your machine. You have to choose the client certificate at this point.
I compared the ARM template with my (working) template and it looks OK. No obvious issues.
Your ARM template shows you are missing the client certificate within the VMSS OS Profile, which means it will not be installed to each of the nodes during deployment then it is missing when Service Fabric attempts to use it.
Here is an example from one of my ARM templates
"osProfile": {
"adminUsername": "[parameters('adminUsername')]",
"adminPassword": "[parameters('adminPassword')]",
"computernamePrefix": "[parameters('vmNodeType0Name')]",
"secrets": [
{
"sourceVault": {
"id": "[parameters('sourceVault')]"
},
"vaultCertificates": [
{
"certificateStore": "My",
"certificateUrl": "[parameters('clusterCertificateUrl')]"
},
{
"certificateStore": "My",
"certificateUrl": "[parameters('adminCertificateUrl')]"
}
]
}
]
},
EDIT:
Where you have two client certificates, I would expect your OS Profile to have three vault certificates for installation on deployment