Skip to Content
Technical Articles

SAP Fiori Client (SP13+)

Previous   Home   Next

SAP Fiori is a set of applications that cover some of the most frequently used SAP software functions. These apps were written using SAPUI5 and hence can be accessed in a browser on a variety of devices. Details on the over 1000 apps are available at Fiori Apps Library. There is a demo of a few SAP Fiori apps available at SAP Fiori, Demo Cloud Edition.

When an SAP Fiori app is run in the SAP Fiori Client, it provides a set of enhancements to the app including the ability to customize or brand the app title, app icon, splash screen, first use tip screen, access native device functionality such as a barcode scanner, security enhancements such as the ability to set a whitelist of URLs the application can communicate with, handling of authentication challenges within a WebView via the AuthProxy plugin, improved attachment handling on Android and iOS and additional benefits when integrated with the SAP Cloud Platform Mobile Services or SMP 3.0 server.

A prebuilt version of the SAP Fiori Client is available from the iTunes, Android, and Windows stores at iOS SAP Fiori Client mobile app, Android SAP Fiori Client mobile app, and Windows 10 SAP Fiori Client.
Note, the Fiori Client for Android is also available from SAP at Android Fiori Client on SAP Market Place or MOB SAP FIORI CLIENT AND 1.X.X.

A custom version of the SAP Fiori Client for Android, iOS and as of SP13, Windows 10 can be created using the Kapsel SDK. Building the SAP Fiori Client yourself allows for the app to be customized. New plugins can be added or ones that are not being used can be removed.

See also the What’s New — Release Notes of the SAP Fiori Client Guide and What’s New in SAP Fiori Client 1.9 (User’s Guide)

For additional details see the script that creates the SAP Fiori Client at


the JavaScript file at


and the documentation at SAP Fiori Client.

The following steps will demonstrate how to create the SAP Fiori Client using SMP 3.0 SP15 SDK.

Building the SAP Fiori Client
Running the SAP Fiori Client
Changing the App Name, Icon, and Splash Screen
Changing the Background Image
Modifying the Version
Modifying the Status Bar
Hiding Last Screen from AppSwitcher and Enabling or Disabling Screen Capture
Using Push in the SAP Fiori Client
Opening the Fiori Client from an External Link
No Bridge
Using an X.509 Certificate
Using a Mobile Device Management Solution to Configure Initial Settings
Performance Settings
Proxying the Fiori Client through an SMP or SAP Cloud Platform Mobile Services Server
Proxying the Fiori Client through SAP Cloud Platform Mobile Services to the SAP Fiori Cloud

See also the following posts.
Creating a custom Fiori Client using the SAP Cloud Build
SAP Fiori & SMP
Introducing SAP Fiori Client 1.2
SAP Fiori – Mobile
Fiori Guidelines
SAP Fiori Launchpad
SAP Fiori Reference Apps
Mobile Single Sign-On for SAP Fiori with SAP Authenticator
Configuring SAP Fiori Client for Single Sign-On with iOS SAP Authenticator

Building the SAP Fiori Client

  • Edit the file
    C:\SAP\MobileSDK3\KapselSDK\apps\fiori_client\config.json or /Users/i82xxxx/SAP/MobileSDK3/KapselSDK/apps/fiori_client/config.json

    Only include the platforms you wish to build and remove the others. Note, building for iOS requires a Mac.

        "packageName": "",
        "targetFolder": "FioriClient",
        "appName": "FioriClient",
        "platforms": ["ios", "android", "windows"],
        "platforms": ["android"],
        "cordovaPluginIncludes" : [],
        "cordovaPluginExcludes" : ["kapsel-plugin-push","cordova-plugin-privacyscreen"],
        "crosswalkEnabled" : false
  • In a command window run the following commands.
    cd C:\SAP\MobileSDK3\KapselSDK\apps\fiori_client
    or on a Mac
    cd ~/SAP/MobileSDK3/KapselSDK/apps/fiori_client
    npm install
    node create_fiori_client.js
    cd FioriClient
  • Note it is also possible to debug the create_fiori_client.js script file. For additional details see V8 Inspector Integration for Node.js. Note this is an optional step.
    node --inspect --debug-brk create_fiori_client.js
  • Note that the create_fiori_client.js script has conveniently created a Cordova project containing Kapsel and Cordova plugins.
    C:\SAP\MobileSDK3\KapselSDK\apps\fiori_client\FioriClient>cordova plugins
    cordova-plugin-camera 2.4.0 "Camera"
    cordova-plugin-compat 1.1.0 "Compat"
    cordova-plugin-contacts 2.3.0 "Contacts"
    cordova-plugin-customurlscheme 4.2.0 "Custom URL scheme"
    cordova-plugin-device 1.1.5 "Device"
    cordova-plugin-dialogs 1.3.2 "Notification"
    cordova-plugin-file 4.3.1 "File"
    cordova-plugin-geolocation 2.4.2 "Geolocation"
    cordova-plugin-network-information 1.3.2 "Network Information"
    cordova-plugin-screen-orientation 1.4.2 "Screen Orientation"
    cordova-plugin-splashscreen 4.0.2 "Splashscreen"
    cordova-plugin-statusbar 2.2.2 "StatusBar"
    cordova-plugin-whitelist 1.3.2 "Whitelist"
    de.appplant.cordova.plugin.printer 0.7.0 "Printer"
    kapsel-plugin-apppreferences 3.15.2 "AppPreference"
    kapsel-plugin-attachmentviewer 3.15.2 "AttachmentViewer"
    kapsel-plugin-authproxy 3.15.2 "AuthProxy"
    kapsel-plugin-barcodescanner 3.15.2 "BarcodeScanner"
    kapsel-plugin-cachemanager 3.15.2 "CacheManager"
    kapsel-plugin-calendar 4.4.4 "Calendar"
    kapsel-plugin-cdsprovider 3.15.2 "CDSProvider"
    kapsel-plugin-corelibs 3.15.2 "CoreLibs"
    kapsel-plugin-encryptedstorage 3.15.2 "EncryptedStorage"
    kapsel-plugin-federationprovider 3.15.2 "FederationProvider"
    kapsel-plugin-fioriclient 3.15.2 "FioriClient"
    kapsel-plugin-i18n 3.15.2 "i18n"
    kapsel-plugin-inappbrowser 3.15.2 "InAppBrowser"
    kapsel-plugin-logger 3.15.2 "Logger"
    kapsel-plugin-logon 3.15.2 "Logon"
    kapsel-plugin-multidex 3.15.2 "Multidex"
    kapsel-plugin-online 3.15.2 "Online"
    kapsel-plugin-settings 3.15.2 "Settings"
    kapsel-plugin-toolbar 3.15.2 "Toolbar"
    kapsel-plugin-ui5 3.15.2 "ui5"
    kapsel-plugin-usage 3.15.2 "Usage"
    kapsel-plugin-voicerecording 3.15.2 "Voice Recording"
  • Edit the following file:

    Provide values such as those shown below.
    Note the fioriURL should be changed to reflect the webserver that hosts your SAP Fiori applications uses or to the trial SAP Fiori Launchpad.
    Note the website can be used to validate JSON such as the contents of the appConfig variable below.

    fiori_client_appConfig = {
        "appID": "",
        //"fioriURL" : "",
        "fioriURLIsSMP": false,
        "certificate": "",
        "autoSelectSingleCert": false,
        //"backgroundImage": "../../../nightsky.jpg",
        "disablePasscode": false,
        "passcodePolicy": {

    The fioriURLIsSMP setting indicates if the SAP Cloud Platform Mobile Services or SMP 3.0 server should be used as a proxy to access the SAP Fiori app enabling additional logging, authentication mechanisms, push notifications etc. An example of this being set to true is shown later in this document.
    The passcode policy can be set in the server management cockpit when fioriURLIsSMP is true or in the appConfig.js as shown above when fioriURLIsSMP is false. Since the passcode policy setting defaultAllowed is set to true, this allows the user the option to disable the Passcode screen.

  • Build and deploy the project via the following command.
    cordova run android
    cordova run ios
    cordova run windows -- --archs=x64

Running the SAP Fiori Client

Some of the functionality of the app is illustrated below.

If the fioriURL variable is not specified in the appConfig.js or if the app is the one downloaded from the public app stores, the first screen shown requests the user to choose between Log In or Demo Mode. Demo mode uses the trial URL automatically and disables the passcode screen.

If using SAP Mobile Secure, an email can be provided instead of a URL that the Fiori Client will then use the email domain to get the details on how to connect to the Fiori app. Entering an email is typically less error prone than entering a long URL.

Note the Fiori Client will send its package name and that must match the Application Configuration ID. In the example below that is The Fiori Client on the app stores uses the id of
The following is an example configuration in SAP Mobile Secure and the email address that would be entered.

New in SP14 is the ability to use the Barcode scanner to enter a URL.

The following QR code generated at QR Code Generator encodes the following trial URL.

This screen can be skipped via the disablePasscode setting in the appConfig.js file.
The passcode policy is configured in the appConfig.js or in the SMP management cockpit when fioriURLIsSMP is set to true.

The Enter Passcode screen is shown when the app is subsequently opened or resumed from the background when a passcode has been set and the locktimeout has expired.

The first use tip screen is shown the first time the app is opened. To customize this, see the method showFirstUseTips and also logonCompletedCallback in the following file.


To remove it, add the below line to deviceready event in the www\js\index.js file.

sap.AppPreferences.setPreferenceValue('skipShowFirstUseTips', true);

If the URL being accessed is not available or uses HTTPS and the certificate authority that signed the web server’s certificate is not trusted by the device, an error page will be shown.

For additional details see Installing a Certificate or the HTTPS in the Security Appendix. A quick test to see if the site can be opened is to open the URL on the device’s browser.

A new feature in SP15 is the ability to save entered credentials so the user does not need to re-enter them. Note this feature is only enabled when the app has a passcode and the setting allowSavingFormCredentials is set to true in the appConfig.js or set via an fioriURL parameter.

The next time the application opens, the credentials will be automatically entered.

Note in order to use allowSavingFormCredentials feature with SAML, the IDP host must be added to the nobridgewhitelist. The following is an example URL.


By double tapping, a native menu is shown. The menu items are added in the initClient method in the following file.


The ability to view the device log and send it in an email is shown below.

The settings are implemented in fioriclient.js (and validation.html for Android).


Changing the App Name, Icon and Splash Screen

The app name, icon and splash screen can be customized before create_fiori_client.js is run by modifying the appName in the following file.


The icon.PNG files are under the following folder.


The splash screen resources under the following folder.


As of SP11, the App Name in the Logon screen can be specified via the appName setting in the following file.


If it is not specified it defaults to SAP Fiori Client.

Changing the Background Image

The flowers background image of the SAP Fiori Client can easily be replaced via the backgroundImage setting in appConfig.js file as of SP13.

Modifying the Version

On Android and iOS, the version is specified in the following file.

<widget id="" version=""

In Xcode the build field should match the value in the config.xml file after running cordova prepare ios.

Note there is also a version displayed on the iOS settings screen. This version can be changed by editing the Resources > Settings.bundle > Root.plist file.

The version is specified in the following file on Windows:


Modifying the Status Bar

Note that on iOS, there are a few settings that can control how the status bar is displayed. The Fiori Client uses the StatusBar Plugin with the following settings set in config.xml.

<preference name="StatusBarOverlaysWebView" value="false" />
<preference name="StatusBarStyle" value="default" />
<preference name="StatusBarBackgroundColor" value="#FFFFFF" />

Note that statusbar can be removed by adding the following code to the file Resources/FioriClient-Info.plist.


Hiding Last Screen from AppSwitcher and Enabling or Disabling Screen Capture

As of SP11, the Fiori Client includes the Privacy Screen plugin which on Android prevents the screen from being captured and on iOS and Android, prevents the last displayed screen from appearing in the app switcher. To remove this functionality run the following command to remove this plugin.

cordova plugin remove cordova-plugin-privacyscreen

As of SP 15, the Fiori Client on Android will likely have a menu option to enable or disable this feature.

Using Push in the SAP Fiori Client

The following is an example demonstrating how to send a push notification to the iOS or Android Fiori Client downloaded from the Apple App Store or the Google Play Store. To send a notification to a custom Fiori Client or for further details on the Kapsel Push plugin see Push.

  • Host the following HTML page at a location that is available on the internet or use the SAP Cloud Connector to enable the SAP Cloud Platform Mobile Services server to access a page hosted on your internal network.
            <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width">
            function onSapLogonSuccess() {
                alert("EventLogging: onSapLogonSuccess");
            function initPush() {
                alert("EventLogging: initPush");
            function processNotification(notification) {
                alert("in processNotification: " + JSON.stringify(notification));
                if (sap.Push.setPushFeedbackStatus && notification.additionalData) {  //SP15 new feature
                    sap.Push.setPushFeedbackStatus('consumed', notification.additionalData.notificationId, pushFeedbackStatusSuccessCallback, pushFeedbackStatusErrorCallback);
            document.addEventListener("onSapLogonSuccess", onSapLogonSuccess, false);
        <h1>Push Demo</h1>
  • Configure an application in the SAP Cloud Platform Mobile Services management cockpit. Note the below is using the cloud connector and as such the Proxy Type is set to OnPremise.Below, the Predefined Push Configuration is enabled which can only be used with the App Store Fiori Client on iOS and Android. See also, Predefined Push Configuration.
  • Open the Fiori Client and enter a URL that will be used to register against the SAP Cloud Platform Mobile Services server.
  • Use the Push Desk or a REST client to send a notification to the Fiori Client. Note, in the Push Desk, you must click on the filter and select iOS and Android under the Device Type drop down.
    There are further instructions on using the postman REST client here.
  • The notifications will appear on the iOS or Android device.
    Notice below the badge count is set to 2 as that was the number specified in the REST client via the “badge” setting.
    When clicked on the Fiori Client will open and which can then take further action based on the contents of the notification.
  • For more on Fiori Notifications which occur within the Fiori Launchpad see Notification Center.


Opening the Fiori Client from an External Link

It is possible to provide a link to the Fiori Client or to a specific Fiori App within the Fiori Client on a webpage or an email. Here are a couple of examples. When the link is selected in a browser, the SAP Fiori Client will open.

<a href="">Deep Link to Fiori Client</a>
<a href="">My Contacts</a>

Note, the comes from the packageName specified in the file C:\SAP\MobileSDK3\KapselSDK\apps\fiori_client\config.json.
The second link contains the URL to be opened in the Fiori Client. In this case it contains #ContactPerson-MyContacts which will open the CRM app My Contacts.

See also Creating a Mobile Deep Link to an Application in SAP Fiori Client.

No Bridge

No Bridge prevents access to the native plugins added to the SAP Fiori Client unless the WebView URL has the same host as the fioriURL specified in the settings.
As the SAP Fiori Client from the app store can be used with a user provided Fiori URL the protection provided by the navigation whitelist in the Whitelist plugin are disabled as these must be configured at build time. Specifically, the SAP Fiori Client from the app store has the following setting in its config.xml file.

<allow-navigation href="*" />

Prior to the No Bridge security enhancement, with the combination of the Kapsel online plugin and the wildcard in the allow-navigation setting, it was possible for any page to be loaded by the WebView and that page would have access to the API’s provided by the plugins included in the SAP Fiori Client.
If you know in advance the URLs that a custom SAP Fiori Client will access, it may make sense to specify them using the whitelist plugin. It is not possible to change the settings in the config.xml for the app store versions of the SAP Fiori Client.

The following steps will demonstrate this feature.

  • Create the following HTML page at a location that is available over HTTP such as the following location.

    The contents for index1.html can be copied from below content.

            <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" />
            <title>No Bridge Demo index1</title>
                document.addEventListener("deviceready", init, false);
                function init() {
                    log("Device version: " + device.version);
                function log(line) {
                    var results = document.getElementById("log_lines");
                    results.innerHTML+= "<br>" + line;
            <h1>No Bridge Demo index1</h1>
            <button onclick="location.href=''">index1.html by Machine Name</button>&nbsp;&nbsp;
            <button onclick="location.href=''">index1.html by IP address</button><br><br>
            <button onclick="sap.Online.showBusyIndicator()">Show Busy Indicator</button>&nbsp;&nbsp;<button onclick="sap.Online.hideBusyIndicator()">Hide Busy Indicator</button>
        	<div id="log_lines"></div>

    Modify the above links to use your machine’s fully qualified domain name and the IP address.

  • Configure the fioriURL of the SAP Fiori Client to use index1.html referencing the fully qualified domain name such as the following URL.
  • Run the SAP Fiori Client.
  • Notice that the navigation to index1.html by Machine Name works, and the navigation to index1.html by IP address loads but it is not possible to successfully call methods of the added plugins such as sap.Online.showBusyIndicator() because the machine name is different. The following message appears in the Android logcat when attempting to show the Busy Indicator which invokes an API of the online plugin.

    The following appears in the Xcode All Output view when attempting to access this API.

    ERROR: Plugin 'Online' not found, or is not a CDVPlugin. Check your plugin mapping in config.xml.
    2015-11-04 12:05:33.398 FioriClient[576:104290] -[CDVCommandQueue executePending] [Line 159] FAILED pluginJSON = ["INVALID","Online","showBusyIndicator",[]]

    In SP14, logging was added at the DEBUG level on Android using the log tag of FEATUREVECTOR.

    In SP13 only, the showBusyIndicator does not work unless the following entry is added to the config.xml.

    <preference name="useBusyIndicator" value="false" />
  • Note: the following plugins are excluded from the No Bridge feature.
    • Logger
    • Toolbar
    • Whitelist
    • Device


  • It is possible to specify additional URL’s that should not be affected by the no bridge feature. This can be specified via a parameter in the appconfig.js file named noBridgewhitelist as shown below.

    Alternatively it can be specified as a URL parameter in the Fiori Client UI when the user provides the Fiori URL. For example on the Enter Fiori URL page, the following URL could be provided.*

    The following are a few examples of possible values.


    One common case where this may be needed is if your application contains links to attachments that are hosted on another server or if you wish to use the allowSavingFormCredentials feature with SAML.

  • This feature can be disabled on Android by renaming the following two files and recreating the Fiori Client.
    C:\SAP\MobileSDK3\KapselSDK\apps\fiori_client\template\scripts\android\after_platform_add\PluginAspect.aj to PluginAspect.aj.bak
    C:\SAP\MobileSDK3\KapselSDK\SP15\apps\fiori_client\template\scripts\android\after_platform_add\prepareRestriction.js to prepareRestriction.js.bak

  • This feature can be disabled on iOS by adding the following setting.
  • Note, if No Bridge is disabled, consider replacing * from allow-navigation in the config.xml with a more restricted pattern.
  • For additional security topics see the following documents.
    Technical setup of an SAP Fiori Landscape – Part 3: Mobilizing Fiori
    Configuration and Deployment Information and
    Configuring Security in SAP Mobile Platform.

Using an X.509 Certificate

When an X.509 certificate is installed on an iOS device, it is only accessible to select applications such as Mobile Safari or Mail. See Making Certificates and Keys Available To Your App.

It is possible to use SAP Afaria to provision the SAP Fiori Client with an X.509 client certificate. To do this include the on the URL as shown below.

If you wish to use a third party mobile device management solution to provide the X.509 client certificate, a custom SAP Fiori Client could be built that included a custom certificate provider. The fioriURL would then include the parameter &certificate=com.mycompany.certprovider.CustomCertificateProvider.

One other option on iOS would be to create a second application that is able to acquire a X.509 certificate and then to share that with a custom SAP Fiori Client through keychain sharing. See also Configuring Keychain Sharing.

In 3.1 SP01 PL04, the Fiori Client on Android has a new URL parameter named handleX509=false which can be useful if you wish it to not respond to a certificate challenge.

Using a Mobile Device Management Solution to Configure Initial Settings

A mobile device management solution such as SAP Afaria can be used to configure initial settings similar to those that can be set in appConfig.js file on iOS.
Note if using SAP Mobile Secure or SAP Afaria place this info in the managed App Configuration section.
If the MDM supports JSON format, create a JSON object as follows:

    "certificate" : "",

Note the appID must match the bundle ID.
If the MDM does not support JSON, convert the above JSON to base64-encoded.

Convert this:

    "certificate" : "",

To something like what is below:


Add a second parameter named version so it looks like this:


See also the following related content.
Configuring SAP Fiori Client Using an MDM Solution.
How to provision SAP Fiori client via Managed App Configuration using a JSON config. -Afaria/Mobile Secure.
Flow When Digital Signing is Enabled.

Performance Settings

There are a few things that can be done to improve the startup time of the Fiori Client.

  • The deviceready event fires after all the plugins have loaded. Remove any unused plugins.
  • The skipIndex setting can be specified in the config.xml file. This setting indicates that the Fiori Client will not load the index.html in the project directory and will only load the fioriURL. This can significantly decrease the startup time of the Fiori Client.
    <preference name="skipIndex" value="true" />

    For further details and limitations see skipIndex

  • The useLocalStorage setting can be specified in the appConfig.js file and when set to true does not use the datavault which can take a while to unlock.
     "useLocalStorage": true,

    For further details and limitations see Storing configuration data outside of the datavault

  • Release builds will generally run faster than debug builds.


If a problem is preventing the Fiori Client from successfully registering, the settings screen may not appear, preventing the user from changing the log level. One way to do this is to first use demo mode to show the trial SAP Fiori app, then set the log level to debug from settings screen by double tapping. Reset the app from setting screen and input the Fiori URL that is not working with the Fiori Client. The debug log level will persist across the application reset, so it will stay in debug log level.

If you cannot debug the app in Xcode, you can still view the device console output through Xcode’s Device menu. It will show the console output from all applications running on the device without debugging the application from Xcode.

The Fiori Client does not support URL shortener services or bitly URLs due to No Bridge. This feature may also cause troubles opening a URL that uses a different host or port than the one specified in the fioriURL.

Disabling the no bridge feature may correct some issues where a URL with a different host name or port are being opened.

Turning off the cachemanager which sends some extra requests to server from native library to help detect when the cache may need to be updated can be disabled via a URL parameter or in the appConfig.js.

"enableCacheManager": false

The section Troubleshooting SAPUI5 Apps contains some troubleshooting tips such as how to perform an end2end trace.

Finally the following link provides some steps to access a crash log on iOS. Note the instructions are for Chrome but could be adapted for the Fiori Client.
Retrieving Crash Reports on iOS

Proxying the Fiori Client through an SMP or SAP Cloud Platform Mobile Services Server

The following steps demonstrate how to proxy a SAP Fiori application through a SMP or SAP Cloud Platform Mobile Services server. Note the following appendix SAP Cloud Connector has an additional example. For further details see Configuration and Deployment Information.

  • Create a Kapsel application with the following ID.

    Set the endpoint to be a partial URL of your company’s Fiori launchpad URL.
    An example of a full URL to the app and then the partial URL follows.

    Add an SSO mechanism such as Basic for a URL that requires credentials.
    Rewrite mode should be Rewrite URL in Backend System.

    Select an HTTPS Authentication provider and provide a URL that requires authentication. The URL

    will be used during the registration step to verify that the provided user name and password on the registration screen. Since an SSO mechanism is used, the app will not need to display the app’s login screen. See also Single Sign-On Integration Across Client Applications.

    If the Save button is disabled, switch to the ADVANCED tab, and delete the Token Expiration Interval value.

    Save the application, and then attempt to ping the endpoint.
    A partial SAP Fiori URL such as

    should return a 404 not found error. You would see the same error if the URL was entered into a browser or possibly success if the 404 error is embedded in a 200 response.

  • Notice that the endpoint ( uses HTTPS. The certificate that the endpoint server uses was signed by SAPNetCA_G2. In Chrome this can be seen by clicking on the lock icon beside the URL and choosing Details, View certificate. This certificate and it’s the cert that signed it (SAP Global Root CA) need to be installed in the SMP 3.0 server’s keystore as shown below.

    The following are a couple of commonly seen error messages.

    Backend system cannot be reached:::Root cause:::Exception during connection execute: peer not authenticated

    This error may be seen if the SMP server does not trust the certificate used by the endpoint.

    Backend system cannot be reached:::Root cause:::Exception during connection execute:

    This indicates that the SMP server cannot reach the URL. Check if the URL is reachable in a browser. If it is, it may be that your network requires a proxy server to access external URLs. Check the Use System Proxy setting and ensure the proxy settings under Settings > System > HTTP proxy host are correct in the SMP server management cockpit.

  • In the following file set the variable fioriURLIsSMP to true to indicate that the connection to the app will be proxied through the SMP 3.0 server.

    Set the fioriURL to a URL as shown below.

    The methods parseAppConfig and handleFioriUrlWithFakeParameter will extract the host and port to connect to. Note there are additional settings that can be specified in the appConfig.js file. If the values are not specified in the appConfig.js file (for example in the version of the Fiori Client available on the Apple App Store and Android Play Store, the appConfig.js file is not editable), then they can be specified in the user provided fioriURL. If the fioriURL is not specified in the appConfig.js file then the Enter Fiori URL screen will appear and the parameters normally specified in the appConfig can be specified in the FioriURL. Here are a few examples.

    //Direct to the Fiori Server via user supplied URL
    //Direct to the Fiori Server via appConfig.js
    "appID": "",
    "fioriURL": "",
    "fioriURLIsSMP": false,
    //Proxying through an SMP server via user supplied URL
    //Proxying through an SMP server via appConfig.js
    "appID": "",
    "fioriURL": "",
    "fioriURLIsSMP": true,
    //Mutual Authentication using Afaria/SAP Mobile Secure to provide the client certificate via user supplied URL
    //Note that in SP08 of the SDK there is a new certificate provider named that is to only be used when not registering with the SMP server.
    //Mutual Authentication using Afaria/SAP Mobile Secure to provide the client certificate via appConfig.js
    "appID": "",
    "fioriURL": "",
    "fioriURLIsSMP": true,
    "certificate": afaria,
    //SAML Authentication via user supplied URL
    //SAML Authentication via appConfig.js
    "appID": "",
    "fioriURL": "",
    "fioriURLIsSMP": true,
    "auth": [
            "type": "",
            "config": {
                "": "",
                "": "/SAMLAuthLauncher",
                "": "finishEndpointParam"

    See also Enabling SAML Authentication and
    Configuring SAP Fiori Client Using URL Query Parameters

    One tool that can be used to verify the JSON is

    In order to use HTTPS the mobile device or simulator will need to trust the certificate used by the SMP server. For additional details see the HTTPS in the Security Appendix. Alternatively, use HTTP with port 8080 which is the default HTTP port for the SMP server.
    Note, if the Fiori Client does not trust the certificate used by the SMP server, an error such as the following will appear on the device’s log.

    "LogonController.getRegistrationErrorText: {\"errorCode\":\"80003\",\"errorMessage\":\" Trust anchor for certification path not found.\",\"errorDomain\":\"MAFLogonCoreErrorDomain\"}"

    The device log can be viewed on Android via Logcat or on iOS via Xcode or via the Fiori Client View Log menu item.

  • Deploy and run the app.Since fioriURLIsSMP is set to true and the fioriURL is specified, the first screen that appears is the user name and password screen.The passcode policy is retrieved from the SMP 3.0 server during a successful registration process and then the set app passcode screen is shown.The first use tips page is shown and then the app is loaded.
  • When the appConfig.js file has fioriURLIsSMP set to true, the settings screen has two additional read only settings: Proxy Through SMP and AppID.

    Note, if you wish to change the Fiori URL to point to a different SMP server and have not specified a value for fioriURL, click the Clear All Application Settings button under Reset Settings. This will cause the Enter SAP Fiori URL screen to appear.
  • When the SAP Fiori Client is used with the SMP 3.0 server or SAP Cloud Platform Mobile Services server, statistics can be viewed like those shown below.

    Items such as the log level, the log entry expiry, and the client policy can be remotely managed.
  • In addition, notifications can be sent to the device, and additional security authentication mechanisms are available.

Proxying Through SAP Cloud Platform Mobile Services to the SAP Fiori Cloud

The following URL could be used with the following configuration.

Previous   Home   Next

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

    I’m currently trying to create a custom Fiori Client for Android using SP13 and I’m having Trouble with the crosswalk plugins.
    – Windows 10 Pro
    – SMP SDK 3.0 SP13
    – Cordova 6.1.1

    When I create the project using create_fiori_client.js an error occurs when installing cordova-plugin-crosswalk-webview: “Plugin doesn’t support this project’s cordova-android Version. cordova-android: 5.1.1, failed Version requirement: >=6.”

    When I check the created Folder, I see that cordova-plugin-crosswalk-webview was installed with Version 2.2.0, even though the create_fiori_client.js defines Version 1.7.2. I have also tried to install Version 2.0.0 (as in your example above), but the error occurs with this one as well.

    When trying to build the apk, it Fails because of missing plugin Installation.

    Now to fix the error I’ve tried to navigate to the project, uninstall platform Android, uninstall plugin cordova-plugin-crosswalk-webview, install plugin cordova-plugin-crosswalk-webview@1.7.2, install Android and then build the apk. This works without Errors, but when I install the apk on a device or Emulator, the app crashes on start.

    The only way I have managed to create a functional Client, was by editing the create_fiori_client.js file and removing the crosswalk and xwalk plugins. However this is not satisfying, because of the missing benefits of crosswalk.

    Do you have any idea what I’m doing wrong and how the error could be fixed?

    Best regards,

  • What is the full version number of the Kapsel SDK that you are using?  The version number is shown in the plugin.xml file of most of the Kapsel plugins.

    I have not myself encountered that problem but can try it again using the same version you are using.  I would recommend trying the latest available PL if you are not on it already.

    SP 14 should also be coming out before too long.

    Finally crosswalk is particularily useful if you are deploying to devices that are older than Andorid 5.0.  The WebView component as of Android 5.0 is updated automatically via the app store.

    Dan van Leeuwen

    • Thanks for your reply. The Version number of Kapsel SDK is 3.13.6. I’ve been using PL 6 of SMP SDK 3.0 SP 13.

      We have devices with all kinds of Android versions, so the use of crosswalk would be preferred.

      Best regards,
      Patrick Bierbaums

      • I believe I was able to reproduce the problem.

        I think this is what is happening.

        The create_fiori_client.js script adds the plugins to the project.

        It adds kapsel-plugin-inappbrowser-xwalk which if you look in its C:\SAP\MobileSDK3\KapselSDK\3_13_6\plugins\inappbrowser-xwalk\plugin.xml file has a dependency to

        <dependency id=”cordova-plugin-crosswalk-webview”/>

        I am guessing that since this dependency does not list a specific version, the latest available version is added to the project which is 2.2.0.

        I would recommend changing the dependency to be
        <dependency id=”cordova-plugin-crosswalk-webview@2.0.0″/>
        and then recreate the Fiori Client.

        This worked for me.  Hope it helps.  I have also opened a bug to have the development team follow up further on this.


        Dan van Leeuwen


        • Thanks a lot for your help. I did the change and created a new project successfully. The APKs could also be built without problems, but when i deployed it to an Android Emulator (ARM (armeabi-v7a)) it can be installed, but crashes on start with message “FioriClient has stopped”.

          I will try to deploy it to an actual device tomorrow, but I expect the same outcome, as it is the same problem I described in my initial comment as well.

          I tried using command “cordova build android” as well as the build.bat, but it made no difference. The appConfig.js, has not been changed.

          Update: Installed the app on an actual device today  and it works! Thanks a lot!

  • Hello Daniel,

    Thanks for writing a detailed blog.

    In our case we want to achieve mutual authentication between Custom Fiori Client on mobile Device (android & iOS) and Reverse Proxy server. This means Server will challenge client for X.509 cert and client has to read it from device and present it.
    As per your blog, to achieve X.509 certificate based authentication, we need to build a custom fiori client having custom certificate provider.

    But Standard Fiori client user guide says that it supports mutual authentication. Also release notes for SDK SP09 says AuthProxy Plugin automatically selects client certificate.Also there is one of the SAP Note 2132513,  which explains on similar lines.

    I am assuming custom fiori client should be replica of standard and hence it should also support mutual authentication by default. 

    Can you please clarify if we need to code anything to achieve mutual authentication between Custom Fiori client on Mobile Device(android + iOS) OR it works out of the box?


  • I am using SDK SP 13 PL1 but not able to remove the passcode screen , can you help please , i tried replacing the code at r21 on the logoncontroller.js, but it did not help

    • Are you using a customFiori Client?  If so, modify the appConfig.js file and change the disablePasscode value to true.

      I assume you could also set this via a URL parameter when you specify the Fiori Client URL if you are using the App Store Fiori Client.


      Dan van Leeuwen

      • Hi Dan,

        Thanks for this wonderful blog i have followed your suggestions and developed, run the Custom

        Fiori Client successfully.

        Now customer wants to disable the passcode screen. So as you said i set the disablePasscode

        value to true in my appConfig.js file. but when i built and install the app i see blank screen(white

        screen). nothing is happening in that blank screen so could you please suggest.what should be

        need to change.

        Thanks in advance.









          Are you registering with an SMP or SAP Cloud Platform Mobile Service server?  If so, make sure that in the management cockpit, under client policy, the passcode policy is either disabled or if it is enabled, then make sure the Default Passcode Allowed setting is checked.


          Delete the app from your device and redeploy.

          The new setting should only take effect the next time you perform a registration.


          What version of the SDK are you using to build the Fiori Client?  If you are not on 3.15.x, perhaps consider upgrading to the latest available version.  You can see the version by editing the file



          If those don’t help, perhaps check the device log or JavaScript console to see if there are any clues.



          Dan van Leeuwen

  • Hi Dan,

    I am trying to create a Custom Fiori Client for offline usage using which I can login and send data to GW &ECC. For this project, offline functionality is a must.

    I see that odata can be made offline using SMP/HCP with defining requests.
    I also see that Fiori can be made offline using MobileSecure.

    But I would like combine both.

    So I first followed the steps to download Fiori content from front end server.
    Then to this project, I am adding android platform and plugins required.
    Then I am adding odata plugin to make odata offline.
    Then I will create android.apk file and install on Android phone.
    Then in SMP/HCP, I am adding define requests for odata offline.

    But It is not working for me. It gives me the registration error on SMP.
    I also want to understand, when we make odata calls from Fiori controller.js, where does it saves the data using offline store?

    When we use offline template from webide, it creates an offline store in fiori code. But it does not require SMP/HCP. So do we still need to write code manually to create an offline store in fiori js files?

    Pls guide me.


  • Hi Dan,


    I am facing a strange issue while using Custom Fiori Client,

    Technical Environment: KapselSP13PL06, Cordova Version: 6.1.1, SMP : True, SMP Server Version: 3.0, Passcode is Enabled and set by user.


    Issue: We have attachment upload functionality in Fiori Application, when we upload the attachment using Android device -> It navigates to Passcode screen. -> After entering the passcode, upload is happening & its a repetitive process whenever I upload new attachment.



    Shivesh Ranjan.

    • That is odd.  The one thing I would try taking a look at is the passcode policy and specifically the lock timeout value.  In the management cockpit for the SMP or HCPms server, edit your application and under the Client Policies, enable the passcode policy and then have a look at the lock timeout value.  This should control how long the app can be in the background before the lock screen appears. I think the default is 5 minutes or 300 seconds.


      After setting the above go to the settings screen in the Fiori Client and choose Clear All Application Settings.  This should then start a new registration with the server after which the new client policy settings would be in effect for.  They would also come down as part of a settings exchange but it may take a few app restarts before they take effect.

      Hope that helps,

      Dan van Leeuwen

  • Hello Dan,

    I have created Fioriclient Application as per steps mentioned above & it’s working.

    Could you please tell me that , the above steps mentioned in documents to create FioriClient app doesn’t required SMP server to deploy the application ?



    • I am not sure I follow you question exactly.  An SMP or HCPms server is optional for the Fiori Client.

      If you wish to deploy a customized Fiori Client you can do so using the Apple App store or the Google Play store.  You could also distribute your app to an internal store perhaps hosted by your company.  I believe functionality to do so is available with the SAP Mobile Secure product.

      You can also simply use the version of the Fiori Client that is already available on the Apple app store or Google play store.


      Dan van Leeuwen

  • HI Daniel,

    I am using SMP 3.0 run time SP11 on different system. I am trying to develop app using SAP Fiori Client Plugin.

    I am following the above steps.

    I am trying to create app on cockpit, At Authentication tab–>Authentication Provider

    Select as HTTP/HTTPS Authentication and write my launchpad URL and click on SAVE button. An error is coming “error connecting to URL”, I have already export all certificate on cockpit.




  • Hi Daniel,

    I tried Custom SAP Fiori Client through SAP Mobile Platform by following the steps mentioned in the above document.

    I’m getting an error “Whitelist Check Failed” while registering.

    Kindly, provide your help on the issue.

    Thanks in Advance.


    Sandeep K S

  • I am trying to install SP14 PL01 but I am getting below error  while executing the  “node create_fiori_client.js” . Can you please advise which version I have to check.

    /users/*****/SAP/moibileSDK3/KapselSDK/apps/fiori_client/node_modules/semver/semvr.js  293

    throw new error Type Error(“Invalid Version: ” + version);


  • Hi Daniel

    Thank you very mch for the detailled and informative blog post.

    Supposed you are not using smp or mobile services, no client certificates and the custom fiori client is directly configured for an on premise gateway system.

    What role has the kapsel logon plugin, if any?


    From my understanding the custom fiori client then starts the configured url and ends up on the launchpad logon page where the user enters username and password.

    I do not see any participation of the logon plugin in this scenario, correct?


    Best regards


    • One scenario that comes to mind is if the gateway challenges with basic authentication then the AuthProxy plugin in combination with the Logon plugin can respond with the user credentials.

      See also

      When the logon plugin is used in a direct case, the logon plugin is initialized in a different manner.  There is an example of this at the below link and search for sap.Logon.initPasscodeManager


      The Logon plugin is required by many of the other Kapsel plugins.  It contains a datavault where secure information may be stored.

      The logon plugin also provides a passcode screen to provide an additional passcode or fingerprint that a user would need to supply before they can access the app.  For the direct case, you can specify what the passcode policy should be in the appConfig.js file.



      Dan van Leeuwen

  • Hi Daniel,

    Thanks for the wonderful blog.I have created a custom fiori client app as per the steps posted.

    Now i see that app is not getting auto refreshed and count on the approval tiles are not getting auto updated after any transaction.I see this this only on the app in iOS device but this is not the behavior in browser.

    I need to manually clear cache for this to get  reflected on the app.

    Can you please let me know how should i handle this.


    Thanks in advance.

    • I have not myself come across this problem before.  You may wish to open a ticket with support on this.

      The one option that might have an effect on this is the enableCacheManager setting.  I believe it is mentioned in this blog posting.

      One other option to debug this further would be to use the Safari Web Inspector or Fiddler to examine the networking requests.  You could compare the requests between the case that is working  in the browser and the case that is not working in the Fiori Client.  It may be something about headers on the response do not indicate that the response should not be cached.


      Dan van Leeuwen

  • Hi Daniel,

    Thanks for an excellent blog.

    I have successfully followed the steps and developed the Custom Fiori Client with required

    applications Fiori url. once built the .APK file i am able to run on the android emulators

    successfully. but when i am trying to install the .APK file in my physical android device it is giving

    an error “App not installed. This app is not compatible with your phone” .

    Could you please suggest me what should be need to change, and how we can share and install

    .APK files in our physical device.

    Thank you,



    • Thanks for your comments on the blog.

      I have not myself encountered that error.  Does this happen for any APK file you build or just the Fiori Client?  At the start of this blog series are the steps to create a very simple Cordova app.

      Perhaps check to see what the version of the Android device is.  Note the Fiori  Client will run on Android devices 4.1 +.   uses-sdk android:minSdkVersion=”16″ (AndroidManifest.xml and config.xml)

      Check to see the value of Settings > Security > Unknown sources (Allow installation of apps from sources other than the Play Store)


      Dan van Leeuwen

      • Hi Daniel,

        Thanks for quick response,

        Yes, it is happening for any APK file,

        I tried with android Device 7.0 and 6.0 latest versions, I have checked with Settings > Security >

        Unknown sources also but I am unable to install the app.

        When my device is connected system through USB cable, that time when I run the command

        “cordova run android”, it is directly targeting to the connected device instead of android emulators

        and installed the app successfully and working fine.

        Here the problem is I could not able to install the .APK file directly in my device.

        How can we Deploy/Share the “Custom Fiori Client” .APK file to android device, Could you please


        Thank you,




  • Dan,

    Thanks for the blog, this is so helpful, I need one help on solution approach. we have requirement to deploy the Fiori client from 3rd party MDM(Microsoft SCCM)  to 200 mobile devices by preconfiguring Fiori Launchpad URL, is it the only option to develop custom fiori client and generate .APK file for android and .IPA file for IOS? what are the other options if any?

    Appreciate your help.



    Rami Reddy


  • Hi Dan ,

    Thanks for such a beautiful blog.

    I was able to create a custom client but have a little concern.

    We have an SSO between Portal and Gateway and Users can use their portal credentials to login.

    When i test .apk on vs emulator on API-19 (kit kat) , I get the attached Netweaver screen that fulfills my requirement. But the same Netweaver Screen does not run on API-23 (Marshmellow) devices , Rather , it looks like a browser page that needs to be manually zoomed to enter credentials.

    I need the attached Portal screen to be run on devices with latest API-23 Marshmellow version.

    Please advise how this can be achieved.

    Thanks & Rgds

    • One of the changes I have had to make for the samples in this guide when using Android platform at version 6.2.3 was to add a metadata tag to the top of each index.html.

      <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width">

      I wonder if the above would correct the issue you are seeing as well?


      Dan van Leeuwen

      • Hi Dan ,

        Thanks for your input , Edited each index.html files and generated the apk , but output not as expected.

        Still the below Attached Issue when run on API Level 21(Lollipop, 5.0) and above.


        • Have you tried connecting the Web Inspector to the page?  Is Netweaver returning different pages for different versions of Android?

          How does the page display in the device’s browser?

          Are you using crosswalk in your custom Fiori Client?  That is one way to ensure that the browser remains constant across different Android devices.

          There is more information on crosswalk at


          • Sorry Dan for my late response.

            When opened after installing the .apk file in the Emulator…

            When Launchpad link opened in the browser…

            Not using Crosswalk.

            My requirement is to get the Logon screen with Green Tick mark on all the Android versions.

            Thanks & Rgds


          • Since the behavior is the same in both the Fiori Client and in the device’s browser, I would recommend focusing on the Netweaver server.


            Dan van Leeuwen

          • Hi Dan ,

            Sorry if misunderstood , The .apk and the Link works as expected on devices with Kitkat(4.4) version – API Level 19.

            The Issue is on devices with Android 5.0(API Level 21) and above.i.e Both the .apk and the browser link opens up as a small landscape netweaver page that needs to be zoomed in to enter the credentials.



  • Hi Dan,

    As you said, at the first time when a user opens the Fiori Client they would be prompted to enter an email.  Then a REST call is made to retrieve configuration based on the appID and the domain portion of the email address, such as:'parameter1‘,EmailAddress=’parameter2’)

    My question is can we configure fiori client to point to other mobile secure landscape than Because we have no credential on this product landscape.

    I know this value is hard-coded with app store version, but can we made it by custom fiori client?





    • Take a look at the file LogonController.js and search for mobilePlaceHost.

      From looking at that I would expect that you could add

      mobilePlaceHost=”your mobile secure host”;

      in the C:\SAP\MobileSDK3\KapselSDK\apps\fiori_client\FioriClient\wwwappConfig.js file.

      Hope that helps,

      Dan van Leeuwen


      • Hi Dan,

        Thanks for you reply.

        I tried you suggestion by below steps:

        1. create custom fiori client
        2. redefine moblieplacehost in LogonController.js as: 
          var mobilePlaceHost = "";
        3. rebuild and run this application on emulator 

        But it still can not retrieve configuration from mobile place.

        Attached result from rest call and fiori client


        Is my steps correct? Or do i need some more configuration?


        Thanks again


        • I took another look at the code and I believe it should be even simpler.

          Have a look at this bit

          //update mobilePlaceHost if caller sets it in provided context
          if (context.appConfig.mobilePlaceHost != undefined) {
          mobilePlaceHost = context.appConfig.mobilePlaceHost;

          So, in your www\appconfig.js file add

          “mobilePlaceHost”: “”,


          Hope that helps,

          Dan van Leeuwen


  • Hi Dan,

    Thanks for helping by writing this blog. I am using kaspel sdk version 3.15.3, SMPSDK SP 15, PL 2.

    I am facing very strange issue where in at time of testing the app, i am able to open the attachment in IOS and Android but same is not working after wrapping the app and deploying it.

    In IOS, when i try to open any

    (i) image – it display me just a white screen and done option on click of which it takes me back to the previous screen.

    (ii) PDF – does not open pdf and shows blank screen

    In Android, when i try to open image, in few devices it opens up the image after displaying a white screen for 3 seconds but in few devices it gives error “unable to find the file” after displaying white screen.

    Kindly suggest what can be the issue.

    • Can you clarify by what is meant by wrapping the app?

      Have you looked at the JavaScript console, Xcode all output, the Android ADB logs or the Fiori Client  after increasing the debug log level?


      Dan van Leeuwen


  • Hi Daniel,


    Stumble into your blog as we’re exploring on using SMP to mobilize our existing Fiori Launchpad and enabling Push Notification feature via standard SAP Fiori Client (Appstore).


    We’ve configured the Cloud Connector to connect to our on-premise systems that host the Fiori Launchpad:

    Published the app on SAP Fiori Mobile Service:

    Configured the Discovery Service for configuration push to Fiori Client


    When we use our email for the configuration, i believe it picks up the config correctly. But at the next login page, we tried putting in our On-Premise Fiori Launchpad ID and it doesn’t work. Tried using Cloudplatform ID and it also doesn’t work. I’m wondering which ID is it actually requesting for.

    Or is there any other configuration or deployment method we’re missing.

    Thank you



    Managed to get the login credentials working, we missed out activating SICF service for PING. Afterward, I think the registration to SMP works. However, we haven’t managed to get the Fiori Launchpad to show. I’m getting 503 Error Resource not available.


    Best Regards,



  • Hi Daniel,

    Thank you for such a detailed blog. I have followed the steps and able to register the application on mobile device. But after registration i am getting blank scree.

    Do you have any suggestions where i have check the issue.



    • What platform (iOS, Android, Windows)?
      What type of a registration is it?  Is it a SAP Cloud Platform Mobile Services or SAP Mobile Platform server or a direct to your Netweaver Gateway?
      Have you tried attaching the Web Inspector to see the JavaScript logs or looked at the native logs in Xcode for an iOS app or the Android native logs?


      Dan van Leeuwen


      • What platform (iOS, Android, Windows)?


        What type of a registration is it? Is it a SAP Cloud Platform Mobile Services or SAP Mobile Platform server or a direct to your Netweaver Gateway?

        =We are using SAP mobile platform(SMP3.0 SP13 and SMP SDK 3.0.15)

        Have you tried attaching the Web Inspector to see the JavaScript logs or looked at the native logs in Xcode for an iOS app or the Android native logs?

        Inspector: http://<SMP URL>:8080/

        Error : 503 Service Unavailable


        APPconfig.js file:

        fiori_client_appConfig = {
        “appID”: “”,
        “fioriURL”: “http://<SMP URL>:8080/sap/bc/ui5_ui5/ui2/ushell/shells/abap/Fiorilaunchpad.html”,
        “fioriURLIsSMP”: true

        Please help.

          • One mistake I have made a few times is to forget to set the rewrite mode to rewrite URL on backend when proxying a Fiori app through the SMP server.

            Do you get the same error if you go directly against the SMP server instead of through the web dispatcher?

            The following blog post mentions how to do a server trace which shows the requests coming into the server and the requests it makes.  That might be helpful.


            Dan van Leeuwen

          • Hi Daniel,


            Thanks for the help!!!

            Now it is working!! This issue was in our Fiori URL which we were trying to access over web dispatcher. When we configure it to access directly it starts working with SMP.




  • Hi Dan,


    Thank you for this nice blog.

    I have just prepared SMP SDK SP15 and I am able to create custom FioriClient for android.

    I must do so to enable TLS 1.2 protocol in my FioriClient, as I used android 4.4.KitKat in which that protocol is supported but by default is disabled.

    I found the workarround in the following site:

    but I do not know where to put the custom code which makes TLS 1.2 protocol enabled.

    Could you help and tell in what script file of FioriClient KapselSDK that custom code should be inserted?


    Thank you in advance


    Slawomir Wrotniak



    • My first thought was to verify the version of TLS that occurs between the Fiori Client and a sever.  I ran an Android 4.4 emulator that has a custom Fiori Client on it.  The emulator is proxying its communications through Fiddler.  The following post mentions how you can use Fiddler to examine the version of TLS being used.

      In my case, I set the Fiori Client to demo mode and examined the Tunnel to entry in Fiddler and saw that TLS 1.2 is being used.


      CONNECT HTTP/1.1
      Proxy-Connection: keep-alive
      User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; Android SDK built for x86 Build/KK) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/ Mobile Safari/537.36

      A SSLv3-compatible ClientHello handshake was found. Fiddler extracted the parameters below.

      Version: 3.3 (TLS/1.2)


      Hope that helps,

      Dan van Leeuwen

  • Is there a way to customize the native menu showed when double tapping (Hiding Homepage-Button)? Or to change the event (double tapping can be frustrating for instance when there is a  StepInput-Control on the UI and you Tap – or + Buttons to increase/decrease values)

    • Unfortunately the double tapping was implemented at the native level as opposed to in JavaScript so it is not configurable.  You might try looking at fioriclient.js and search for sap.Toolbar.addItem but this wasn’t meant to be configurable so any change you would make to the file would have to be made again the next time you upgrade the SDK.


      Dan van Leeuwen

    • I am not seeing an error when I try it.  What error are you getting?  Note, I would recommend testing the startup time with Browserify on and off.  I don’t think there was much of a savings in terms of startup time on Android but it likely depends on the device.  Essentially, browserify is going to concatenate all of the JavaScript files into one file named cordova.js.


      Dan van Leeuwen

  • Hi Daniel,


    We tried Deploying an Kapsel App over App Store, while deployment we got this error.


    Technical Environment – SMP : False, Kapsel : SP15PL04.


    While deployment over App Store we choose – Language : English US, Country : India and other pre requisites.



    Shivesh Ranjan.

      • I am glad you were able to work around the issue.  I believe this issue has been addressed in the latest version of the product SP 16.  Apparently the issue was a case issue.  base.lproj should have been Base.lproj.

        Dan van Leeuwen

  • Hi Daniel,

    My requirement is to open Fiori client on click of direct URL. To test this feature I created a sample HTML page and put below code in it.

    I it in android, it’s opening Fiori client on click of direct url .

    <html><body><div id=”container”>

    <a href=””>Deep Link to Fiori Client</a> <a href=””>My Contacts</a>

    </div> </body> </html>


    But for IOS it’s not working, Do I need to make any further modification to this code for IOS?

    On IOS it’s not doing anything on click of the link.  I checked IOS device settings, there is no restrictions maintained.

    Kindly suggest.



    • I just tried this on an iOS 11 simulator and it worked.  I opened the link from the Safari mobile browser.  I assume you are using a custom Fiori Client using the same appConfig.js from this blog and not the Fiori Client from the app store.  The app store Fiori Client uses a different appID.


      Dan van Leeuwen

  • Hi Daniel,


    Thank you for the response.

    I am trying it using standard Fiori client app. Is there any way I can achieve it(opening fiori client from direct URL click) using standard Fiori client?

    As I feel a challenge in hosting Custom Fiori client app in Apple store as there extra is cost and Apple validation involved in this.



    • Try using
      <a href=””>Open Fiori Client App Store</a><br><br>

      Note the difference is in the appID (used in the custom Fiori Client in this blog) vs (used by the Fiori Client published to the App Store)

      Dan van Leeuwen

  • I tried this also

    <div id=”container”>
    <a href=””>Deep Link to Fiori Client</a> <a href=””>My Contacts</a> </div> </body> </html>


    But still if I am running it and clicking on My Contacs hyperlink it’s not working on IOS. On android if I am clicking this link it’s opening Fiori client app, Can you please suggest something for this.



    • I took the above HTML (replaced the quotes) and hosted it on a web server.
      I then opened the page on my iPhone using Mobile Safari.
      When I click on either link, I get a dialog that says Open in “SAP Fiori”?

      I am not sure what else to check other than to make sure you have the same version of the Fiori Client although I wouldn’t think that would matter as long as it is from the App Store.

      In the settings menu, under version I see 1.10.3

      Just to be clear, is either link working for you on iOS?

      Dan van Leeuwen

  • Hi

    We are also using Fiori client 1.10.3 in our Iphone.


    When I am clicking on any of this link it’s opening a pop up saying “Trying to open another page” But then when I hitting enter it’s not doing anything means it’s not going to Fiori client.


    Is it opening Fiori client for you when you click on any of this 2 links?


    Will it be possible to have a skyp call session .


    • Are you clicking on the link from Mobile Safari?
      Here are a few other debugging tips to try.

      With your iPhone connected to your Mac, are there any more errors or details shown in the Web Inspector(Safari, Develop, iPhone, yourIndex.html).

      In XCode, under Window, Devices and Simulators, if you select your device, it should be possible to view a console window by expanding the area at the bottom.  Are there any messages there related to the problem?

      I would recommend contacting support for further help,


      Dan van Leeuwen

  • I have a requirement where I need to open the Fiori Client if the Fiori Launchpad is accessed through an external link on a mobile device, but if this URL is being accessed through a browser on other devices(desktop), then the launchpad should open Normally, on the browser.

    To test if I can trigger calling the Fiori client on mobile, I created a test hyper link and there I used <URL scheme>://x-callback-url/openFioriUrl?url=<SAP Fiori URL>  and it is working fine in both iOS and Android Devices.

    My company wants to provide only one link to the users for the Fiori Launchpad. How can I deal with this and how would the URL look like if it has to work both on the browser on desktop and also trigger calling of Fiori Client on Mobile.

    Thanks in advance..

    • I found the following link and tried the below.
      The idea is to link to a page that you host which can then try to open the deep link in the Fiori Client and if it fails, open another URL such as the launchpad URL in the browser.

              <script type="text/javascript">
                  window.onload = function() {
                     window.location = '';
                     setTimeout(function() {
                          //Link to the launchpad to open in browser -- only fires if deep link fails                
                          window.location = "";
                      }, 1000);

      It seemed to work ok on iOS but not on Android.
      I think this is due to

      Dan van Leeuwen

      • Hello Dan,

        Thank you very much for your inputs. The approach almost worked for me. But instead of time out, I got the device type. In SICF, I created an external alias for the Launchpad service, and wrote the below code in the index.html file.

        It worked for me, with a little bit of modification, both on IOS and Android. Here is my code.

        <!DOCTYPE html>
        <script type=“text/javascript”>
        window.onload = function() {
        var isMobile = false; //initiate as false
        // device detection
        var isMobile = {
        Android: function() {
        return navigator.userAgent.match(/Android/i);
        BlackBerry: function() {
        return navigator.userAgent.match(/BlackBerry/i);
        iOS: function() {
        return navigator.userAgent.match(/iPhone|iPad|iPod/i);
        Opera: function() {
        return navigator.userAgent.match(/Opera Mini/i);
        Windows: function() {
        return navigator.userAgent.match(/IEMobile/i);
        any: function() {
        return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows());
        if (isMobile.any()) {
        window.location = ‘’
        } else {
        window.location = ‘<The actual link to our fiori launchpad URL>’


  • Hi expert, i notice the push notification method need SAP Cloud Platform mobile Service which is pay to use application. Im just wondering, is there any method which is free?

    My goal is to send push notification to fiori client (downloaded from google store)


  • Dear Dan ,

    I created Fiori Client for windows desktop, But when run shows up a blank screen.

    When i checked the settings , i dont see any url.

    kindly advise.



  • Hi Daniel!

    Thank you for the blog and all great work you’ve done!

    Do you have any plans to release an article about another approach for mobilizing fiori applications – packager?

    For instance there is just zero information at about customization and “beautyfication” of its local launchpad.


    Best regards,