The Documentation refers to the latest version of Simplifier (5.0). If you have an On-Premise installation and need help with an older version, please contact us via contact@simplifier.io, we are glad to support you.
Besides the already known features, such as real-time collaboration, the new WYSIWYG editoris our greatest achievement: You candrag&drop your widgetsinto the editor, which directly displays the preview of the interface in real time.
Live Preview
In addition,you can use the Live Preview on different device form factors to test the layout without deployment first. This makes application creation much easier and saves a lot of time!The different selection of corporate designs (themes) and your changes in the CSS editor are also directly visible.
Icon Explorer
To assign meaningful icons to your modern layout, we integrated an icon explorer for searching and using icons visually.
New Database Designer and No-SQL Access
A very special feature isthe new Database Designer. It drastically simplifies database creation, as you can now create your database scheme directly visually in Simplifier and deploy it to multiple target databaseslike MySQL, Oracle, Microsoft SQL Server and SQLite.
Invite developer
Working on an application with other people makes many things way easier. The new Share Buttonallows you to easily invite other team members via E-Mail to work on your current app project.
New Datatype Generation of Test results of Business Objects and Connectors
To reduce the manual work of data type definition, you can createsimple or complex datatypes from connector request or business objects results in the test dialog automatically.
Asset Editor
To help you better manage the static content of an app, we have created a new Asset dialog. This dialog allows you to upload and preview images as well as download them and provides more clarity.
Theming Administration
Corporate design is very important for every company. Accordingly, themes can be directly assigned and loaded to the Simplifier instance.
You can therefore use the application on different instances in different corporate designs. Separate loading of themes via business objects is now a thing of the past.
Attribute and Role Mapping from external IDP
Security and authentication are particularly important to us: The authentication mechanisms Active Directory, SAML 2.0, LDAP and OAuth 2.0 now offer central role and user attribute mapping based on defined rules.
Roles and attributes can thus be maintained centrally in your company’s user administration and automatically synchronized in Simplifier. A new standard role can also be defined. This is automatically assigned to a new user.
Not to forget the metadata exchange via URL: This ensures that client and provider always use the most up-to-date metadata.
Administration Interface Dark Mode
It gets dark in our administration dashboard so you won´t have to be in the dark when creating apps: The new Dark Mode follows the trend towards eye-friendly operation.
With the Crypto JavaScript library you can now both decrypt and encrypt data.The functions of the Lodash library offer you a wide range of data filters and manipulations.Via our Simplifier User API you can now add your own profile pictures to the user profile.
Mobile Actions
Now, you can also record a video configuratively with the camera on your mobile devices. Simply choose how many videos are created and how long they should be.
You can now use the test dialog for testing OData calls directly. We also support Function Imports in our OData wizard to easily use this kind of business logic as a connector call.
SQL Database Support for IBM DB2
In addition to the well-known databases, we now also support IBM DB2 and IBM DB2 for AS-400 systems for easy recycling of old Lotus Notes applications.
Support for Client X.509 Certificates
Simplifier allows you to manage X.509 certificates and use them as a login method for authentication on backend systems via our connectors.
Be it icons, widget wizard, revised interface or drag & drop zones for the WYSIWYG editor – all UI5 versions of a widget can be managed directly in the mask. This includes support for auto-generating controls from the commercial SAP UI5 library.
Optimized Process Designer
Links to Process Designer Items are now highlighted when selected. The selection of mobile actions has been reworked for better handling.
The Script Action now offers a selection of ready-made and useful JavaScript code to get results even faster.
Enhanced RFC connector
Our SAP RFC connector now also supports TABLES parameters for exchanging data from SAP function modules and Auto Commit to trigger automatic updates to the sap database.
The test results are now displayed in the test dialog for business objects and connectors formatted as JavaScript Object Notation (JSON) View including syntax highlighting.
Individual result rows can be folded in and out, to get a better overview.
SF_Developer(This roleprovidesthepermissionstocreate Apps and buildingblocks such asBusiness Objects, Connectors, etc.)
SF_ExtAuthUser (This is a roleforread-onlyusersthataresyncedfrom an external authenticationservice)
Optimizedlibraryadministration
Syntax highlighting is now also available for the inclusion of third-party libraries. This makes it easier to read the code and recognize its structure.
Simplifier now also supports the latest Oracle 19c database.
Security Enhancement
The legacy route for direct execution of connectors is locked by default – in special cases this lock can still be removed in the system settings. In Release 5.5 this option will be removed completely.
Mobile Features
Live Preview on mobile devices
Together with our brand new WYSIYWG UI Designer, we also offer the live preview in our simplifier mobile client (has to be activated in the developer settings. That means, that every change in the user interface will be published in real–time on your real hardware. This enables you to test your layout on different device factors and smartphone / tablet models in realtime.
Support for Honeywell Scanners
Our Simplifier Mobile client runs natively on Honeywell laser scanners with android operating system. This means you can use the information fromthelaser scanner directly in your business app without any extra interface.
Updated Mobile APIs
Our native mobile feature sets are updated to the latest version to give you the best native mobile experience.
IOS 13 Support
Our iOS Client was optimized for iOS13
New API for TCP socket connections
With our new native tcp support, you can exchange data directly with other devices over ethernet or wifi interface. We use this to support external fix-mounted laser scanners on a fork-lifter for intra-logistic use case in production environments or warehouses.
Discontinued Features
Support for the Simplifier Windows 10 Client will be discontinued as Windows discontinues its Mobile 10 platform.
Angular 2 Widgets and support for Angular 2 applications and runtime are no longer available.
The simple option for executing SQL statements within the SQL connector is no longer supported in Release 5.0 – the connector call is automatically migrated to execute. No effects on existing applications are to be expected.
Manual changes
The new UI Designer requires updated widgets and metadata such as aggregations and drop zones. For the OpenUI5 version 1.60 we provide these widgets at http://download.simplifier.io/transports
These must be imported and overwritten.
Attention: All customer specific changes to these widgets will be lost!
For the OpenUI5 version 1.38 and 1.44 you have to adjust the widgets manually in the widgeteditor.
Announcements
Client API for direct connector execution (without calls) will not be available in Version 5.5 anymore – please use only connectors with calls.
Getting Started
Simplifier is a low code platform for mapping business processes in integrated business and IoT applications and to interconnect internal and external IT infrastructures. Applications only need to be configured once to be available on any mobile device and operating system. Basically the functionality can be divided in two main categories:
Using state-of-the-art technologies, we accelerate your application creation. We have designed and built our platform in terms of logic and usability to accommodate the modern, agile development processes within companies. Due to the low-code approach, applications no longer need to be elaborately programmed but instead can be easily configured and integrated into any system. Thus, applications can be mapped process-oriented.
The main features of Simplifier can be accessed from the central Dashboard, that consists of the following parts:
Basically, creating an application with Simplifier can be divided into the following 5 steps:
1. Connect systems
In the future, for each application, you can access the data that is needed contextually to make the integration process more efficient. Standardized connectors enable you to quickly connect to any back-end system and various data sources.
2. Create user interface
Easily, quickly and intuitively create the user-friendly interface for all your applications. Use the pre-designed elements designed for this purpose and create a uniform look and feel for improved user experience.
3. Configure processes
Configure the application logic of each application using the Process Designer. Based on individual user stories, reusable application logic is encapsulated within User Stories in the Process Dashboard. Each user story can be stored individually so that you can work with several people on different stories at the same time and thus be able to create application logic collaboratively.
4. Test application
Test your application at any time in the Simplifier Mobile client or in the browser. Intermediate testing allows for faster detection of misbehavior of your application at any point in time. The Simplifier Mobile Client supports the testing process by ensuring that applications can be used across devices and that the correct responsive display of the application on each end device can be ensured.
5. Publish application
The Simplifier transport system allows you to transfer the application to your productive system quickly and easily. And all without compilation or complex deployment processes. Quickly create a transport file of the finished application – it contains all the components of your applications and can be downloaded and imported directly into your production instance. Finished! The application is now available to any authorized user.
Example Apps
To demonstrate various features of Simplifier the following Example Apps are available with every Simplifier Freemium Instance and can be downloaded here
AppName and Description
Video
ITIZ_Example_SmartMaintenanceDashboard
The Smart Maintenance Dashboard is used for real-time monitoring of machine data. A color-coded indicator shows immediately whether a production line is outside the predefined threshold values. This enables a quick reaction.
In the dashboard the user sees an overview of all machines assigned to him. For each machine he gets information about manufacturer and sensor data. The sensor data is displayed in the shape of a chart. In addition, the user can perform the following activities: Remote Service Call, Create notification in the SAP system and Detail view.
ITIZ_Mobile_Example_SimplifierExplored
This application shows a selection of functions of the Simplifier (e.g. Toggle Light, Vibrate, Scan Barcode, Take a picture…) IMPORTANT: most functions can only be used on a mobile device. Please run this application in the Mobile Client.
ITIZ_Template_OPCUA
In this application you can specify an OPC UA node. The sensor data will then be displayed in real-time.
ITIZ_Template_REST_ToDoList
In this application you can create different to-dos with subject, text and user. You can also edit or delete existing to-dos. This application is using a REST interface.
ITIZ_Template_SAPRFC_PurchaseOrder
With the Purchase Order Application, you can display the details of a purchase order and also change the quantity of existing items.
ITIZ_Template_SAPSOAP_FunctionalLocation
This application shows you the functional location of a machine. You get the information about the manufacturer, as well as details about the location with representation in a map. The machines are displayed in a structure list and it is possible, for example, to remove the equipment and install another one.
ITIZ_Template_SQL_ShoppingList
In this application you can add a product and the quantity to the shopping list. You have the possibility to delete existing values.
Prerequisites
For Simplifier Configuration & App Development within Simplifier Admin Interface we recommend using Google Chrome Browser.
Apps created with Simplifier are based on OpenUI5. As OpenUI5 is based on CSS3, HTML5, and the ECMAScript 5 (ES5) JavaScript API,
only browsers with HTML5 capabilities are supported, please find a detailed Overview of supported Browsers and Platforms
in the OpenUI5 Documentation
as Simplifier is a Low Code Platform there is at least basic web technology knowledge needed to build complex applications,
we recommend the following online courses regarding webtechnology skills:
A Simplifier application can be deployed in different ways. You can deploy to your local machine for development and testing, you can deploy to the Simplifier cloud, Cloud Foundry-based platforms, Azure, AWS, SAP Cloud, or a server you configured yourself.
Cloud installations are hosted and maintained by Simplifier AG. Each instance is reachable via a unique DNS name:
https://<instance-name>.simplifier.io
On-premise installations are hosted by our customers, on their own infrastructure. This scheme is especially useful if the Simplifier shall be integrated into a closed network infrastructure.
Checklist for Installation
For Installation of the Simplifier, the following persons and things are required:
IT Security Officer
System owner regarding Backend Interfacing
Firewall Administrators
Reverse Proxy Administrator
IT Administrators
SSL Certificates for HTTPS
The initial login credentials are admin / admin
Use the following checkpoints for a successful installation
We support you with on-premise installations of Simplifier. To do that, we deliver a prepared Docker image to you. The image comes pre-configured and contains all the required components, including a Simplifier server in its most recent version.
The target instance must fulfill the following requirements:
At least 12 GB RAM minimum, 16 GB recommended
x64 CPU with minimum 2 cores, 4 cores recommended and at least 2 GHz per core
At least 40 GB of free hard disk space
Opened incoming ports: http/80 (TCP), https/443 (TCP), https/8090 (TCP)
Optional: Opened outgoing ports for
preconfigured SMTP-Server (StartTLS Port 587) by Simplifier
your Backend Systems to configure and reach the Data Sources successfully
SSL Certificate for encrypted https traffic in frontend access
Operating system:
Linux (recommended)
In general, the Docker engine can run on all Linux versions with kernel version >= 3.10, but for the versions below, there are “official” releases. If you are uncertain about the compatibility go to the Docker website.
Tested Distributions:
Ubuntu: 64-Bit Versions of Ubuntu 18.04 (Bionic Beaver), 16.04 (Xenial) or 14.04 (Trusty)
RHEL (Redhat Enterprise Linux) and SUSE Enterprise are officially supported only by paid docker variants (EE), Installations from CentOS Repository respectively OpenSUSE Repository are possible to use
The runtime is given, but not as a Windows Service. The Docker Containers only stays up and runs in a locked user session.
The Simplifier Windows Deployment is not recommend for production use, because of the limited support for container
Mac Install Docker for Mac
Note: Our Docker containers, respectively the database server, require a file system which can be case-sensitive under MacOS. Therefore, it may be necessary to create a separate volume for the user data which is configured with the option “-v” when the container is started.
The Simplifier MacOS Deployment is not recommend for production use, because of the limited support for container
“D-Q-P”-landscape
To ensure high availability and qualified operations, it is necessary to build a three-stage system landscape (= DQP-landscape: development, quality, production). Please note that with a DQP-landscape the system requirements are tripled.
Reverse Proxy Requirements
The Simplifier Server needs a typcial Reverse Proxy as standard setup.
The Reverse Proxy should provide the following services for a secure setup
modern, secure TLS configuration (incl. HTTP Strict Transport Security)
HTTP2 if possible
Header:
“Upgrade”: Pass from client (for WebSockets)
“X-Real-IP”: IP address of the client
“X-Forwarded-Forwarded-For”: Remote address of the client, or X-Forwarded-For Header of the parent proxy server.
“X-Forwarded-Proto”: Original protocol of the request (“http” or “https”)
CORS Headers (see below)
(Temporary) Redirect from “/” to either AdminUI (“/UserInterface/”) or App of choice (“/appDirect/$appName”)
Proxy connection/read/send Timeout to high value, e. g. 10 min
Maximum body size (post, put) to appropriate value, e. g. 20 MB (doesn’t have to be too big, because packets > 20 MB are transferred as single chunks)
Proxy forwarding to Simplifier AppServer port 8080 (if on another server, must be reachable via firewall)
Proxy must be able to pass through WebSocket connections!
CORS headers
Cross-Origin Resource Sharing (CORS) is a mechanism that uses additional HTTP headers to allow a user agent to access selected resources from a server located on a different origin (domain) than the currently used Web site. A user agent makes a cross-origin HTTP request when requesting a resource from another domain, protocol, or port than the one from which the current document originates.
The CORS mechanism supports secure cross-domain queries and data transfers between browsers and web servers. Modern browsers use CORS in an API container such as XMLHttpRequest or Fetch to minimize the risks of cross-origin HTTP requests.
For request methods’ POST’,’ GET’,’ PUT’,’ DELETE’:
Verify that you now have the key with the fingerprint 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88, by searching for the last 8 characters of the fingerprint.
Use the following command to set up the stable repository. You always need the stable repository, even if you want to install builds from the edge or test repositories as well. To add the edge or test repository, add the word edge or test (or both) after the word stable in the commands below.
Note: The lsb_release -cs sub-command below returns the name of your Ubuntu distribution, such as xenial. Sometimes, in a distribution like Linux Mint, you might have to change $(lsb_release -cs) to your parent Ubuntu distribution. For example, if you are using Linux Mint Rafaela, you could use trusty.
Remote Service applications demand some additional requirements, especially on the network side. To successfully establish a connection between two clients, e.g. the Remote Service Portal, running in the browser on a Desktop machine and the Remote Service Client running on a Smart Glass, they must either reside in the same network, or a STUN-/TURN-server must be used.
The minimum requirements for using a remote service application are:
Simplifier server and clients must either be in the same physical network segment or be connected via a virtual private network (VPN). If this requirement can’t be fulfilled, a STUN-/TURN server can be used as an intermediate communication partner.
If you want to use a STUN-/TURN server, the following TCP and UDP ports must be open: 3478, 3479, 5349, 5350.
Fixed domain for the server and valid certificates for this domain. Remote Service requires these certificates because it runs exclusively over HTTPS for security reasons.
If you plan to use remote service over a cellular network, be sure that your provider allows these services in your contract. In case of Deutsche Telekom, this means that option “Voice over IP” must be enabled.
Additional Requirements for Oracle Databases as Backend
On-Premise Installation
Oracle as a DB backend for the Simplifier requires some additional server settings, which are listed below. The Simplifier is currently running with MySQL 5.7 and Oracle 11g.
Database Settings within the Oracle Database:
Parameter
Recommended Value
OPEN_CURSORS
3000
Supported Oracle version:
Oracle Database 11g Release 11.2 – 64bit
Desired/recommended instance names (Productive and Test):
simplifierp and simplified
Required tablespaces:
simplifier 5G, Temp 1G, Undo 512 MB, Users 5MB
Oracle user and required roles and permissions:
simplifier, simplifier_np (in Prod and Test) permissions to run DDL
Database Characterset:
AL32UTF8
National Characterset:
UTF8
Default language:
German, Germany
Processes and Sessions:
Value to 1000
Installing an On-Premise Image
We always prepare an all-in-one Docker image for our customers which contains all required components.
Given a target machine that matches the requirements described in the previous chapter, the installation is quite easy:
1. Create the directory which will host all external user-specific data:
2.1 If your server has an Internet connection, you can get the Docker image from Docker Hub.
$ docker pull simplifierag/onpremise:latest
# for the Onpremiseversion include MySQL and Nginx
$ docker pull simplifierag/netzportal:latest
# for the Netzportalversion with config files for your own Oracle DB
2.2 As an alternative we can provide a tarball for download. Copy the downloaded file with ending .tar.gz to a temporary directory on the target machine, e.g. /tmp and cd to this directory.
$ wget -O <filename>.tar.gz
Unpack the file in place:
$ tar xzvf <filename>.tar.gz
You will get two files: one readme.txt and the docker image with the ending .tar.
Inside the directory which contains the unpacked file, run the following commands as root- (super-) user:
Replace the <Docker Tag> with the selected variant, e.g. simplifierag/onpremise:latest
5. Open your browser
Now use your browser at your Client Computer to access http(s)://<IP> or <FQDN>/UserInterface. The Simplifier will prompt a license dialog. After pasting that license
you can start configuring Apps in the AdminUI.
Handling & Updating an On-Premise Installation
Docker Basic Commands
Start the Simplifier container:
$ docker start simplifier
Stop the Simplifier container:
$ docker stop simplifier
Restart the Simplifier container:
$ docker restart simplifier
Create a backup of the complete Simplifier data directory, e.g.
$ docker stop simplifier
$ tar cvzf simplifier_backup.tar.gz /home/simplifier
Updating
In case of updates, we will prepare a new docker image for you, preserving your personal settings. Please download the image to a temporary directory of your choice (e.g. /tmp) and change into the directory. Finally unpack and load it, as described in steps 2.2 in the installation instruction.
To perform the update, proceed as follows:
Stop the container and remove it from Docker.
Take care NOT to remove your data directory /home/simplifier/data !
Perform the following commands in order:
$ docker stop simplifier
$ docker rm simplifier
$ docker run --name simplifier {additional options as in step 4 before}
Provides augmented reality functionality by Wikitude
✔
✔
Live Debugging with Chrome DevTools
You can debug your applications on the Simplifier in real time on mobile devices.
Enter chrome://inspect into your Chrome browser.
Connect your mobile device via USB and enable “USB Debugging” within the device settings. Chrome will autodiscovering your mobile device and integrating it within the developer tools options.
When connected, you can begin screencasting by clicking the appropriate button in the developer tools window. Then your mobile device can be supplied directly with input from your desktop screen. Any changes are instantly displayed on your mobile device.
By the way, the “Port forwarding” button above provides some flexibility for those who don’t have their screen and developer machine on the same network. In this scenario, you can create a TCP port on your mobile device and assign it to a specific TCP port on your development machine. All forwarded traffic is transferred via USB, bypassing the mobile device’s network configuration.
Simulate a Mobile Device
By clicking the “Toggle device toolbar” button, the current page is reduced to the imitated screen parameters according to the set properties. This imitated display can be operated with the mouse in the same way as with the finger on a physical device.
In this view, you can simulate pinch zooming, finger scrolling and even multi-touch events.
Simplifier Mobile Client
Simplifier provides a Universal Mobile Client which uses an App-in-App Concept to run UI5 Applications as hybrid Apps on mobile Devices.
Login via Fingerprint, Face ID or QR-Code possible
Access to all Applications available on the Simplifier Instance, based on roles and rights
Rapid Deployment and Over-the-Air Updates of Applications
Access to all device specific native functions and additional mobile-features
Download the Simplifier Mobile Client in the appropriate stores, depending on your mobile device.
App Links
Through App Links you can launch specific Simplifier business applications via Deep Links / URL. Use this feature to crosslink different business applications on your mobile device.
App Links can be used with the following URL scheme:
simplifierclient:// – The url type, on that the simplifier client is registered. All uris with this link opens the client by default. If parameters or path components are missing, at least the client is always started.
/<action> – The action to take. For now only “appDirect” is available.
/<value> – The value for the action.
?<param>=<value> – The URL arguments are being passed to webview so business app can access them. So on the client the local href would be something like file:///some_very_long_ios_path/www/businessapps/Simplifier_Explored?foo=1&bar=2
The example above launches the simplifier client if installed and runs the app “Simplifier_Explored”.
Restrictions:
Simplifier Client needs to be installed
if client is not running, client will be startet and user has to login
shows popup with countdown when a link was clicked
url-launch is higher prioritized than automatic app-launch
if client is already running with a business app, nothing will happen to prevent misbehavoir in app lifecyle
shows warning if desired app is not installed
if autoupdate before launch is enabled, the business app will be updated before launch
broken or non valid links are not beeing processed
Simplifier Client API
All external programs, business applications and the mobile client access Simplifier via Simplifier Client API.
Simplifier Client API is documented by Swagger and can be accessed by opening the URL:
https://<simplifierbaseurl>/client/2.0/api-docs/
A detailed documentation of the client API is displayed and you can try out the API using the tools built into Swagger. All changes in the API are automatically transferred to the documentation.
Note: Make sure that you have select HTTPS under schemes.
Authentication
URL: https://<simplifierbaseurl>/genToken/
Method: POST
postBody:
{"user": "<username>", "pass": "<password>"}
Example Response:
{"result": "<simplifierToken>", "success": true}
The Simplifier token must be used for every following API request as header parameter simplifierToken.
As a user that is defined as an admin by the corresponding role, you can hit the settings button by clicking on your user profile name on the top right corner.
Within the settings panel, you can define several settings: Server, Password, License, Authentication, Messages, Log and Server Environment.
In addition to the settings, you can also send an error report, change the language (German or English) or the design (light or dark) to set or unset the dark mode. You can also view the version info of your Simplifier instance or log out.
Server Settings
The Server settings control your session. At the subtitle Authentication token, you can set the lifetime of the authentication token and its checking interval.
If you set the authentication token to active, the checking interval to 10 seconds and the maximum lifetime of the authentication token to 3600 seconds, that means that every 10 seconds it will be checked if you are inactive. If you are inactive for about 3600 seconds, you will be automatically logged out.
Define the email settings within the SMTP Settings.
SMTP Port
Specify the port of the outgoing mail server, e.g. 587
Authentication required
If activated, a user/password authentication from the outgoing mail server is required
Encrypted with TLS
If activated, the transmission is encrypted by TLS
Sender E-Mail
Enter the sender’s email address, e.g. no-reply@simplifier.io
Sender
Specify the name of the sender to be displayed
Password
Set a secure password
You can switch on Experimental Features. It’s not guaranteed that these features work properly.
Password Settings
The Password settings specify the password policy for the users.
Minlength
Minlength defines the minimum length of a password. Set a high number for added security
Count lowercase characters
Defines the minimum count of lowercase characters in passwords, e.g. setting it to 4 means that a password has to be “abcdEFG” (at least four lowercase characters)
Count uppercase characters
Defines the minimum count of uppercase characters in passwords, e.g. setting it to 4 means that a password has to be “ABCDefg” (at least four uppercase characters)
Count numbers
Defines the minimum count of numbers in passwords, e.g. setting it to 4 means that a password has to be “1234abc” (at least four numerical characters)
Force symbols
This forces the user to use at least one symbol such as $%&#
Prohibit parts of the username
This option prohibits users from using their username or parts of it for their password, e.g. the user ‘John’ cannot use a password like ‘John123’
Block user after specified number of failed attempts
Specify a limit for failing logins to prevent Brute Force Attacks. If the user exceeds the limit he will be blocked. To unlock the user, the admin has to do this via the user management or the user can reset his password to unlock himself
Demand captcha after specified number of failed attempts
This option demands a captcha after a specified number of failed attempts
License
The License settings offer information about the current license you use. If your license expires, you can update it here. Simply copy and paste the license key in the corresponding field.
The Message settings allow you to store system messages, which are transmitted to all logged-in users, e.g. if you want to inform them about maintenance work.
With corresponding rights (assigned role “System Messages”), you can add a validity date. The messages can be written in HTML. As soon as a message is stored, it is pushed to all user. A user who logs in later receive the message as well. The message is displayed as an overlay and must be closed manually.
Log
Within the settings, you find the settings for the logs. You can define per categories, which log level will write a log in the Logs & Monitoring.
Choose from the following categories:
Debug
Info
Warn
Error
Critical
Use the Log Archive Settings to specify the time period for archiving the logs. It runs every day at 3 a. m. when it’s activated.
The Authentication settings allow you to establish a connection to external Identity Providers in order to sync external user to the Simplifier.
The following Providers are supported:
LDAP
Active Directory (AD)
SAML 2.0
oAuth 2.0
SAP Single-Sign-On (SSO)
Note: if all authentication systems that are set have been run through and no result has been obtained, a login is executed against the Simplifier User database.
LDAP
LDAP is based on the client-server model and is used for directory services. It describes the communication between the LDAP client and the directory server. Object-related data, such as personal data or system configurations, can be read from such a directory.
General Settings
Name
Name under which this authentication mechanism settings is saved
Priority
The position of the execution of the respective authentication mechanism – the higher the number, the earlier the respective authentication mechanism is used. If same numbers are available, the sequence is determined lexicographically ascending
Mechanism
The authentication mechanism
Mechanism Settings
Hostname
The hostname of the server may be an IPv4 address or a fully-qualified hostname (FQHN)
Port
The port of the server
Base DN
The entry point for the directories
SAP Single Sign On via SOAP
You can use the SOAP service to authenticate via an SAP system and get an SSO2 Token for SAP SOAP web services. The user synchronization is done by the Simplifier AG own SAP RFC Module -ITIZ-_USER_READ or with a different SOAP-Webservice, which calls the standard SAP-Module BAPI_GET_USER_DETAIL.
General Settings
Name
Name under which this authentication mechanism settings is saved
Priority
The position of the execution of the respective authentication mechanism – the higher the number, the earlier the respective authentication mechanism is used. If same numbers are available, the sequence is determined lexicographically ascending
Mechanism
The authentication mechanism
Mechanism Type
The authentication mechanism type
Mechanism Settings
Hostname
Defines the IP/Host of the authentication service
Port
Defines the authentication port
URI Type
Defines the URI Type (HTTP or HTTPS)
WSDL Endpoint
Ending part of the WSDL URL without protocol, hostname, port and leading slash
SAP Client Number
Defines the SAP Client Number
Timeout [seconds]
Set a timeout in seconds
Create profile regardless of received SSO-Token
Activate or deactivate the creation of a profile regardless of received SSO-Token
Enforce default values for the profile extraction
Activate or deactivate the enforcement of default values for the profile extraction
Operation Name
Defines the Operation Name
Binding Name
Defines the Binding Name
SAP Single Sign On via RFC
You can use the RFC service to authenticate via an SAP system and get an SSO2 Token for SAP RFC web services. The user synchronization is done by the standard SAP-Module BAPI_GET_USER_DETAIL.
General Settings
Name
Name under which this authentication mechanism settings is saved
Priority
The position of the execution of the respective authentication mechanism – the higher the number, the earlier the respective authentication mechanism is used. If same numbers are available, the sequence is determined lexicographically ascending
Mechanism
The authentication mechanism
Mechanism Type
The authentication mechanism type
Mechanism Settings
Hostname
Defines the IP/Host of the authentication service
SAP Server Type
Type of the SAP Server: Application Server, Gateway Service, Gateway Host, Message Server, Message Server Port
SAP System ID
Defines the ID of the SAP System
SAP System Number
Defines the number of the SAP System
SAP System Language
Defines the language of the SAP System
SAP Client Number
Defines the number of the SAP Client
SAP Router Hostname
Defines the hostname of the SAP Router
SAP Router Port
Defines the authentication port of the SAP Router
Create profile regardless of received SSO-Token
If this switch is on, Simplifier will try to extract the profile. The used authentication method only will be {Basic-Authentication}. If the username or password consists of non-alphanumerical symbols, the authentication required for retrieving the user details might fail.
Enforce default values for the profile extraction
If this switch is on, all missing information in the profile will be replaced by default values. This will even happen when critical information, required for further extraction steps is missing. If this switch is off, the extraction process will be terminated and an error will be returned.
SAP Initial Logon Codepage Type
The type of the codepage for the logon process: Undefined, Non-Unicode or Unicode-Enabled
SAP Codepage
The number of SAP Codepage
SAP Client Type
The type of the SAP Client: Not defined, R2, R3 or External
SAP Username Alias
The assigned Alias for the SAP Username
SAP R3 System Name
Defines the number of the SAP R3 System
SAP System Group
Defines the group of the SAP System
Active Directory
Simplifier is able to sync users of Active Directories, like users from other LDAP sources.
General Settings
Name
Name under which this authentication mechanism settings is saved
Priority
The position of the execution of the respective authentication mechanism – the higher the number, the earlier the respective authentication mechanism is used. If same numbers are available, the sequence is determined lexicographically ascending
Mechanism
The authentication mechanism
Mechanism Settings
Hostname
The hostname of the server may be an IPv4 address or a fully-qualified hostname (FQHN)
Port
The port of the server
Base DN
The entry point for the directories.
Open Authorization (OAuth)
OAuth (Open Authorization) is an open standard for token-based authentication and authorization on the Internet.
To set OAuth as authentication, make sure you have administrator rights.
After you have logged in as usual in the login mask with your user credentials, click on your name in the upper right corner and then on the settings.
Switch to the Authentication tab in the upper toolbar.
To add a new authentication mechanism, click on the plus icon in the upper right corner.
General Settings
Name
Name under which this authentication mechanism settings is saved
Priority
The position of the execution of the respective authentication mechanism – the higher the number, the earlier the respective authentication mechanism is used. If same numbers are available, the sequence is determined lexicographically ascending
Mechanism
The authentication mechanism
Mechanism Settings
Display Name
The Display Name is shown on the login button
Client ID
Identifies the application and is defined by the configuration on the OAuth server
Client Secret
Authenticates the application and is defined by the configuration on the OAuth server
Scope
Determines which rights are gained with the access token, e.g. ‘profile’, ’email’, etc. for gaining rights to access the user profile/user email
Authorization Endpoint
The Authorization Endpoint is the URL to which an authorization request is sent
Token Endpoint
The Token Endpoint is the URL to which an access token request is sent
Redirect Endpoint
The Redirect Endpoint is the URL to which the browser is directed after successful authorization. This URL needs to be entered in the OAuth server configuration
Additional Query Parameters
It is possible to add Additional Query Parameters, such as name and value
Icon
The icon will be displayed on the login mask above the display name
Profile URL
The URL to which a user profile request is sent
Profile Path
The path which points to the user profile, e.g. ‘/’, ‘profile’,’profiles[1]’ etc.
Profile Verb
GET, POST, PUT
You can enable different types of OAuth 2.0 authentication mechanisms by applying the required data in a generic form. This allows using any OAuth 2.0 authorization service. On the subpages, you will find examples of authorizations with Google, Amazon and Azure.
User Management
The User Management module lets you define many different parameters for users and the roles they take.
The QR-Code generator for easy accessing, especially with smart glasses, is also located here.
The following table explains the different User Management functions and their meanings:
User
User Master data
Master data for a user account like Email, Username, Expire Date, Address Data
Roles
Collection of permissions
A role represents a number of permissions and can be assigned to a specific user
Permission
Permissions
Permissions are an authorization like granting access to a specific connector or business app
Groups
Collection of users
A user group contains several users and could be used for workflow logic in business apps like informing a team via email or push notification about a certain event or task
User Overview – Create a new user
The user overview display all users of your own Simplifier instance. Aside from the first name and last name you also can see the username and the expiry date of the user. Four icons on the left side allow you to see details of the user, edit or delete the user (only when your role has the permissions) and see if the user has been blocked.
To add a new user click on the “+” icon on the right above the user table. Within the User Details, fill out all required user information and assign a role or group for the user.
After creating a user, a one-time-link via email will be sent to the created user. After email activation via the link, a new password can be set.
It is also possible to assign different attributes to a user.
Role Overview
The section Role Overview defines permissions for the users. Here you can configure roles that can be applied to your users in order to permit or restrict certain actions, like administering applications and users or allow the use of special applications and restrict the use of others. Usually, there is one administrator-role that is allowed to use all features and functions of Simplifier.
Create a new role by clicking on the plus icon. To add a permission, use the selection helper on the right and choose the needed permission category. To enable or disable single permission, click on the checkbox in the corresponding column. Finally, assign the role to existing users. Hit the save button to finish the role creation or the update.
Within the right tab, you can add a user to the role. Use the selector for this.
Group Overview
A group contains several users and could be used for workflow logic in business apps like informing a team via email or push notification about a certain event or task.
Details View of a Group
To create a new group, you have to specify a unique name and an optional description, e.g. for a team or special task force group.
To add users to the group, click into the ‘Add User to Group’ Field and search for specific usernames. Mark (optional) several users and click OK to add them to the group.
Save your changes.
QR Login-Generator
The QR Login-Generator lets you generate your individual QR code for login purposes especially for wearable devices without a keyboard. You don’t need to type in your credentials anymore, just scan the QR code and you are logged in on your instance. Especially when using smart glasses, this feature is comfortable as it takes just a quick scan to enter Server URL, username and password without typing.
To generate such a QR code, go to the tile Users on the Simplifier dashboard and switch then to the tab QRGenerator in the user overview.
You have to enter the required user with password and the Server URL. By default, this is already filled in. Generate the login code and now you can log in to other devices easily and quickly by scanning the QR code.
Applications
Simplifier transforms your business process into a configured business application for
Web Portals for Desktop-Browsers
Mobile Phones and Tablets
Wearables Devices like Smartwatches and Glasses
Applications run on any device because it is generated on common open standard technology leveraging OpenUI5 / SAPUI5
Overview
By clicking on the Applications tile, you will be lead to the overview. At default, there you will see a table with all the created applications. Within this table, you’ll get information like the name of the app, created by, last edited by, version, customization ratio, framework, and several actions.
At the top, to the right of the plus icon, you can switch between the list and table view. By changing the view, all lists in the Simplifier are changed.
There you will see all created applications with information like the name of the app, the description, created by, last edited by, and the framework.
If you click on an application in the overview, further information and actions are displayed on the right side. On the one hand, you can edit the app name, switch directly to the application preview, or delete the application. On the other hand, you can customize the description, the app icon, look at the customization ratio and the version. Below this information, you then have various actions, in this case, Copy Application and Show Releases.
App
It’s the name of the application.
Created
The name of the person who has created the application (with date and time).
Last Edited
The name of the person who last edited the application (with date and time).
Version
It’s the version number of the releases.
Customization Ratio
After deploying an application, a code metric is available in the overview. It shows the generated lines of code and a comparison to the lines of code written by the customizer in events and script activities.
Framework
The framework – OpenUI5.
Actions
Edit application, copy application, show releases, edit meta-resources, preview and delete the application.
You can hide the details on the right with the button right of the search bar.
SAPUI5 and its open-source variant OpenUI5 help you build enterprise-ready Web apps that are responsive to all devices. The JavaScript UI library and development toolkit contains many feature-rich controls and implements the award-winning SAP Fiori user experience. It helps developers ease and speeds up the development of full-blown HTML5 Web applications.
The Simplifier App Generator generates OpenUI5 Applications based on OpenUI5 Controls. Within Simplifier OpenUI5 Controls are represented by Widgets.
Within Simplifier application logic is separated by user stories within the Process Dashboard. Every user story contains an isolated part of the overall application logic and can be edited with the Process Designer. The Process Designer is a visual scripting environment to create application logic based on configuration elements. To find out how to use configuration elements see chapter Process Designer.
How OpenUI5 concepts are handled within Simplifier
OpenUI5 controls are represented by widgets within Simplifier. A widget represents a specific element in the user interface like buttons, checkboxes, tables and input fields.
Define your workflow with simple visual events and actions.
Widgets
A widget represents a specific element in the user interface (e.g. checkbox, button or login screen, etc).
To customize a widget, click on the Applications tile in the Simplifier dashboard and choose the Widgets tab.
Within the overview, you can edit, take a look at the details, delete or copy a widget or take a look at the description, category, tags, and set it to deprecated or not.
Press the ‘+’ button on the right to add a new one.
Add a name and select the OpenUI5 version.
By clicking OK you will be forwarded to the Widget Customizer. On the left side are three different tabs: General, Template and Script.
General
In the tab General, you find the general information like Name, Version, Category, and Description. You can add tags or set the widget to deprecated.
Deprecated widgets are no longer displayed in the UI Designer. Deprecated widgets that were used before they were marked as deprecated are still displayed within the application content. The application will continue to be saved and deployed without issues or warnings and runs as before.
Add an icon to the widget by uploading it. You can delete it at any time.
Template
Enter the widget type in the tab Template – take a look at the constructor details in its API reference. It must match the name of the UI5 control. Use the wizard to automatically extract the widget data.
Choose a framework – OpenUI5 or SapUI5
By clicking on Next, the template for the widget is generated as well as the properties, events, and aggregations.
Script
The script of the widget is generated automatically if you use the widget assistant.
After hitting the Save button, you’ve successfully created or edited a widget.
Enumeration in Widget Properties
You can maintain enumeration for widget properties. Enumerated properties can only hold the defined values and will be displayed as a selection in the UI Designer.
In order to define the enumerations, you have to add them in an array notation to the default value of the property. It is not necessary to set the values in quotes.
Example
There are different predefined types of buttons in OpenUI5. The properties can be maintained as a list in the widget mask. In our example, we look at all different button types in the OpenUi5 API Reference and transfer them into the widget edit mask with the appropriate syntax: [typ1, typ2].
Result in the UI Designer
UI Designer
Create and design the user interface of an application with the UI Designer. The interface of the UI Designer is divided into four sections:
On the left side you find the overview of all created screens and can switch to the widgets to fill the screen content. The widgets are e.g. buttons, checkboxes and so on, but also whole login masks can be displayed via a widget. If the standard widgets are not sufficient, you can create your own widgets at any time.
Screen Content Tree
In this area, the Screen Content of the current selected screen is displayed as a tree structure. You can add the widgets here and arrange them using drag & drop, but also with the arrow buttons or WASD on your keyboard.
By clicking on Open, it opens a new browser tab. Every time you deploy your application, the browser tab reloads automatically.
Make sure that pop-ups are not blocked in the browser for the Simplifier instance.
You can simulate your preview for different mobile devices with the Chrome Developer Tools or use it for debugging.
To access the DevTools, open your app preview in Google Chrome and press F12.
Alternatives:
Select the Chrome menu at the top-right of your browser window, then select Tools > Developer Tools.
Or use Ctrl+Shift+I (or Cmd+Opt+I on Mac).
Via the toggle device toolbar, you can simulate different devices like Galaxy S5, iPhone 6 or iPad to preview your application. More information on Google Chrome DevTools Device Mode.
Assets
Use Assets to upload files like documents, images, videos, 3D models or office documents to an application. It can be found under the tab Other.
It is possible to upload the following file types:
Other files like .PDF documents, 3D-Models or Media-Files (audio, video, etc.)
To upload an image, choose it from your client via the Browse button. You can reference to the path in the properties of a widget.
In the following screenshot, the path of the image logo.png is img/logo.png.
To insert e.g. an uploaded image into the user interface of your application, copy the path of it and paste it into the source field (src) in the properties of a widget.
CSS Editor
Use the CSS Editor for styling your application with standard web cascading style sheets. It can be found under the tab Other.
Please keep in mind that CSS statements are mainly used for design purposes, not for the basic layout to maintain the responsiveness of UI5.
For the corporate design, we recommend the use of the UI5 theming functionality with the Theme Designer.
UI5 and CSS: Please be aware to use CSS directives mainly for design purposes, not for basic layouting to preserve the responsiveness of UI5. For design purposes, we recommend using the theming functionality of UI5. Therefore you can use the Theme Designer.
The syntax for accessing widgets by ID with CSS is: #<screenId>–<widgetId>
If you want to learn more about CSS, check out the tutorials of the w3 schools or Codecademy.
Language
Applications can be localized easily by adding language files (.po-format) to the application.
By default, the language depends on the user environment, browser or device language, however, a fallback language should still be defined.
For the translation of the individual applications, .po files are used in Simplifier. These can be viewed, up- and downloaded via Language under the Other tab.
To create a new translation file, download a template from this overview by clicking on the download button.
It’s the best way to edit the downloaded file in a POEditor.
Important: translatable values must be flagged within a widget in order to appear in the default language file.
In this template, all values that are marked as translatable in the widgets, are listed and can be translated into the target language.
To upload the file to the application, add it via the plus. Select the language and upload the PO-File.
In order to avoid cache problems, rename the file before uploading.
If the desired language is not available, please contact your administrator, as these are maintained in the server settings.
To change the language of an application at runtime, the following script can be inserted in the Process Designer or browser console:
With the “+” you can add an existing library to your application. The icon left computes all dependent libraries of the application itself and its widgets as well as all transitive dependent libraries.
When you create a new application, it does not have a screen yet. Add a screen by clicking Add Screen.
You can add more screens at any time by clicking on + New at the screen overview or just click on the + next to the tab of your screens.
A screen is always the start screen. To change the order of the screens, drag it to the required position.
To rename screens change the ID within the properties section on the right. Use the Description field to comment on the screen. This helps to identify the purpose of the screen later.
Widget Usage
Add Widgets to the Screen
To fill your screen with UI elements like text fields, charts or action buttons, use the widget panel on the left side. First, select the OpenUI5 version.
Via the filter, only the compatible widgets matching the stored UI5 version of the application are displayed.
Search for a specific widget using the name or just browse the list, then add the widget to the screen via the plus icon. The widget will appear in the content area of the selected screen.
Sort Widgets in the right order
Use the arrow keys to structure the widgets in the screen content tree into a hierarchy, or alternatively use WASD on your keyboard.
You can also use the arrow keys to structure the widgets in the screen content tree into a hierarchy, or alternatively use WASD on your keyboard (the widget needs to be selected).
nests the widget underneath the one above (if possible)
With the arrow keys on your keyboard, you can navigate through the screen content tree as follows:
Up ↑
Navigates up
Down ↓
Navigates down
Right →
Opens the currently selected tree item (if possible)
Left ←
Closes the currently selected tree item (if possible)
Copy Widgets within the Screen Content
You can copy Widgets and insert them on a different Screen or even another Application. For that, use the Copy, Cut and Paste function.
Edit Widget Properties
Every widget has properties to configure how the widget behaves. In the following example the properties of a button widget are shown.
Every widget has properties to configure how the widget behaves.
On the left are an example of the properties of a button widget.
Icon Explorer
Use the icon explorer to add icons to widgets that have an image or icon as property.
You can also add a font to an application that contains icons to use in the icon explorer. Images uploaded under Assets can also be selected.
Client Validation of Default Properties
The data type of default properties in application items can now be overwritten, but only domain types with the same basic type can be used.
You can find the settings in the Properties panel of the UI Designer. The button opens a popover, which lets you define the data type and the validation event. If the validation is enabled (checkbox), an indicator will be displayed. You can change the valueState and valueStateText as result.
In this example, we wanted to make sure, that the input field will be filled with the correct data, a ZIP Code. Therefore we added the validation for the predefined Datatype “ZIP” (a String with exactly 5 numbers) on the change Event.
Now, if you open the application in the preview and type in anything else than 5 numbers, the valueState of the input field would change to “ERROR” and the valueState text “Wrong Input” is displayed.
The Process Designer enables defining process flows as the result of an event in an intuitive, graphical way.
The tab for it is located next to the (UI) Designer.
By that, it follows the classic workflow of creating an application: First, you design the user interface for the application, followed by the definition of the workflow between these elements in the Process Designer.
Process Dashboard
By clicking on the tab Process, you get to the Process Dashboard.
The Process Dashboard is divided into different user stories that can be saved individually, so it is possible to work on it simultaneously with several people.
After deploying the entire application in the UI Designer or Process Designer, all user stories are merged into one.
If you save a user story in the Process Designer, the changes will not be visible in the preview of the application as long as it is not deployed.
To add a new user story, drag Story (on the left) into the middle. It opens a pop-up to define the Story Name (mandatory), set an External link with the Link text and define a Story Description.
It is possible to open multiple user stories at the same time. To switch between the user stories, simply switch between the tabs.
Edit or delete an existing user story with the equivalent icons. The user stories are ordered alphabetically (or by number – if used). You can sort the user stories in ascending or descending order with the icons on the right.
By double clicking on the whole tile of a user story or clicking on the edit icon, you are forwarded to the Process Designer to work on the currently user story.
If another user is editing the user story, it is displayed by a small avatar image of the user in the user story tile. By mouse over such an avatar image, a tooltip with the user’s login name is displayed.
Similarly, a small button in the upper left corner in the Process Designer itself displays users who are editing the same user story. The color of the button turns to red when another user starts editing the same user story. To view all editors, click on the button to open a pop-up.
It displays the avatar screen and the user’s login name. The colors depend on the user’s login name, so each user is given an individual color. The list of editors will always be up to date so you will get an instant response when someone starts editing the same user story.
Deep Search
It is possible to search within the Process Dashboard for elements.
You can search for General, Activities and elements In Mappings.
While the search for user stories is a live search, the search for other elements must be triggered by clicking the search button.
Note: Auto Fields cannot be found by name, only by the expression they represent.
Live search for user story names
Search for activities
As result, all activities that match the search term are highlighted in green within the Process Designer.
Process Designer
The main view of the Process Designer is split into three main sections:
The selection of the building blocks on the left: Event, Logic, Action, Data Object and Module. The activities are subdivided again. Take a look at the subitems of this page for more details.
The drawing area in the center.
On the right side, you can see the current user story, edit and save it. In addition, you can configure the current selected shape.
Process Documentation
For a better understanding of the application creation, use the Process Documentation. You can open it in the Process Dashboard as well as in the Process Designer itself.
It opens a dialog, that displays a textual documentation of the application process in Markdown format.
The description of the user stories as well as of the shapes are added into the documentation automatically. So make sure to use the description whereever possible.
Dynamic Process Settings
The toolbar within the Process Designer gives you control of the appearance of your process.
Number
Function
Description
1
Grid resolution
This slider changes the size of the grid in combination with the “snap to grid” function (2), you have full control to properly align your process.
2
Snap to grid
When deactivating (click on the icon), you can freely move all activities.
3
Zoom
You can zoom out (left icon), zoom in (right icon) and reset the zoom with the icon in the middle.
4
Connection settings
You can choose between three types of connections:
Angled
Curved
Direct (default in mapping dialogues)
5
Actions
With these icons, you can cut, copy, paste or delete shapes.
Cut, Copy, Paste and Delete Shapes
You can cut, copy, paste and delete shapes within the Process Designer. Therefore you have to click on the appropriate icons on the top right of the canvas.
Cut
With the left icon, you can cut your selected shapes from the canvas. So the shapes including connections and mappings of the configured shapes were copied and dropped.
Copy
With the second icon from the left, you can copy the selected shapes including the connections and mappings from the canvas.
Paste
With the third icon from the left, you can paste your copied (or cut) shapes including all connections and mappings. They appear slightly offset from the copied or cut shapes.
Delete
With the right icon, you can delete your selected shapes. You can also do this with the delete key on your keyboard.
Visual Feedback for Process Errors
If you have any errors in your process, you will receive feedback about that. Every error will be displayed within the process. The corresponding activity will be highlighted in red and a tooltip will be shown by hovering over it.
Each workflow in the Process Designer starts with an Event.
Click on the Event element under Activities on the left side and drag & drop it into the drawing area in the center.
By double-clicking on the shape, the event selection assistant opens. You can also open it by clicking on the right side underneath Subscribe event / Publish event.
It guides you to your required event. When subscribing to an event, you can select events from these categories: Widget Events, Screen Events, Custom Events and System Events.
Each category is sorted and searchable.
If you want to use the Event in the current user story, select one of the Events under the tab Subscribe Event.
Events related to screens, e.g. onInit and onAfterShow.
onAfterHide
This event is triggered when the app has made the screen invisible. In the case of animated transitions, this event is triggered after the end of the transition. This screen will no longer be displayed and animated.
onAfterShow
This event is fired every time when the app has made this screen visible. In case of animated transitions this event is fired after the transition finishes. This screen is now being displayed and not animated anymore.
onBeforeHide
This event is triggered before the app hides the screen. For animated transitions, this event is triggered before the transition begins.
onBeforeShow
This event is fired every time before the app shows this screen. In case of animated transitions this event is fired before the transition starts.
onBeforeFristShow
This event is fired before the app shows this screen for the first time.
onNavButtonPress
This event is fired when Nav Button is pressed.
Custom Events
Individual events within an application that can be published and subscribed at any time.
System Events
Events related to devices, e.g. onDeviceGoesOffline and onOrientationChange.
Publish Custom Events
To use an event in other user stories, create a new Custom Event on the Publish Event tab.
A shortcut for creating Custom Events is located in the upper right corner.
Subscribe to Custom Events
Subscribe to a custom event in another user story to connect the logic between different user stories.
Example:
You have a process in User Story 1 that contains a condition to check if an input field is filled out after clicking on a “Login” button. Afterwards, the user should be navigated forward to the next screen.
Imagine you have the other user story exclusively for the whole navigation of your application. So you want the end of the event from User Story 1 (the navigation) subscribed to User Story 2.
Therefore we published the new Custom Event “LoginButton” in User Story 1 and subscribed to it in User Story 2.
Conditions allow you to define the process flow dependent on the evaluation of certain expressions.
In such an expression, you can compare auto fields, variables, a current value of a widget, or a given constant with each other and use the result to decide whether the process continues in one direction or the other.
Alternatively, you may decide to continue the process only if a condition is true and decide to leave out the alternative, which will stop the process at that point.
Double-clicking on the shape adds a new condition. Alternatively, click on the plus icon on the right.
An AND condition is created by default.
Toggle between AND
and OR (not XOR) condition using the toggle switch.
Select the operator of the condition by the drop-down.
==
value1 is equal to value2 (not checking the data type, only the value)
!=
value1 is not equal to value2
<
value1 is less value2
>
value1 is greater than value2
<=
value1 is less or equal to value2
>=
value1 is greater or equal to value2
isSet
variable has a value
isNotSet
variable has not a value
Iterator
An iterator is an object that passes data structures sequentially. It returns the following element and determines if further elements follow.
Use the iterator activity to iterate over a variable. It has two output ports: each and after.
Port
Description
each
For every iteration, the following process will be executed.
after
After all the iterations ended, the following process will be executed.
The iterator selection helper can be called by opening the mapping dialog on the right side. The mapping dialog can also be opened by double-clicking the shape.
Drag and drop the parameter to the drawing area in the center. You can select the collection to be iterated by double-clicking on the parameter.
The Mapping dialog is aware of its type and only offers collection variables that are defined in the application.
Script
The Script element allows you to integrate your own JavaScript snippet. It is activated by the previous event.
It shows a preview of the JavaScript full screen and its (optional) description on the right side. You can also enter code in this area, the changes will be saved and also transferred in full screen.
The full screen view is opened by double-clicking on the shape or by clicking on the corresponding icon .
Pretty Print
You can prettify JavaScript code with just one click.
Important: the script activity must be in full-screen mode.
By clicking on the corresponding symbol (Format Code) your code will be simply prettified.
The Navigation element is used to trigger a navigation from one screen to another. By dragging it to the main screen, a list of screens to navigate to will appear in the right pane.
Set that the navigation should navigate back, or choose between several transitions: Slide, None, Fade or Flip.
UI Action
With the UI Action element, you can map different widgets, variables and auto fields to another.
Let’s say there is a very simple login screen with an input field for the name and a button to submit.
The button should not be responsive, as long as the login field is empty. This can be achieved with the UI Action in the Process Designer.
Step 1
At first, assign the input field to the Event (subscribe).
Step 2
Next, a condition is needed. Check, if the value of the input field equals an empty string.
Step 3
If the condition is true and there is nothing written in the input field, the button should not be responsive.
Add a UI Action and set within the mapping dialog the constant (Boolean, false) on the left side (source) and map it to the equivalent widget on the right side (target). Select the screen, widget, and property (in this case ‘enabled’).
For the other scenario, when there actually is an input written, you can connect the condition to a second UI Action and set the boolean via the constant on true.
Mobile Action
The Mobile Action element enables you to use mobile features within the application.
Drag and drop the activity ‘Mobile Action’ underneath Action into the drawing area.
Currently, there are 15 different actions implemented in Simplifier. Use the input/output mapping to define the source for the input (request) and the destination for its output (response).
The mobile actions are grouped into the following categories:
You can set and lock the screen orientation of the mobile device. Possible values are Landscape, Portrait, Landscape (Primary), Landscape (Secondary), Portrait (Primary), Portrait (Secondary) and Unlock.
Show Notification
This mobile action will trigger a native notification.
The notification will be displayed on your mobile device.
Show Toast
This mobile action will show a native toast, with a constant or by using the input mapping. You can specify the duration how long the toast should be displayed (Short or Long) and the position (Top, Center or Bottom).
Vibrate
Define how many milliseconds the mobile device should vibrate.
Connectivity
Audio/Video Call
This is a native feature for talking with a user via audio- or video live streaming. The user can be statically configured. Furthermore, you can set a fullscreen.
Information
Acquire GPS
The mobile action GPS need to be initialized at first. It’s recommended to do this in a screen onInit function.
When it’s initialized, you can access the longitude and latitude by the Auto Field type Geolocation.
For that, you need to open the mapping dialog of the UI Action. Then you can drag the auto field in the middle and by double-clicking on it you can select the longitude/latitude. Connect it with the appropriate widget.
Media
Capture Image
Determine how many pictures should be taken.
Capture Video
Determine how many videos should be taken and set the duration (default 60 seconds).
Play Audio
The mobile action Play Audio just needs an audio file path.
Play Video
By providing the mobile action a path to a video, it will play the video in a full-screen mode.
Scan Barcode
Set the format of the code you want to scan, the orientation of the camera and write a text in the prompt property.
Scan Meter
Parameter
Data Type
Valid Values
Meter appearance
String
see table below
Number of counts
Integer
1, 2 (from the dropdown)
Integer digits
Integer/String
AUTO, 1-n
Fraction digits
Integer/String
AUTO, 1-n
You can choose from the following values for meter appearance:
Key
Value
mechanical_black
White text on black rollers
mechanical_white
Black text on white rollers
lcd
LCD Display
lcd_edl21
EDL21 and similar meters with LCD 7 (three-digit OBIS code to the left)
For the output mapping you can use the following parameter:
Parameter
Data Type
Description
image
string
Image of the scanning process as data URL
line1
string
Result of scanning the first counter (always set)
line2
string
Result of scanning the second counter (only set if 2 counters were scanned)
line1ObisCode
string
Result of scanning the first counter’s OBIS code (only set if meter appearance was set to lcd_edl21)
line2ObisCode
string
Result of scanning the second counter’s OBIS code (only set meter appearance was set to lcd_edl21 and 2 counters were scanned)
Text to Speech
With this mobile action, you can specify a text to be read out, as well as the output language. You can choose between English (US) and German (DE).
Server Action
The Server Action enables you to configure the login or logout for an application, address a template or send an e-mail.
Login
After mapping the according parameters you can decide which port you’d like to connect.
Port
Description
success
The process will be executed after a successful login or logout.
error
The process will be executed after a failed login or logout.
already logged in
The process will be executed if the user is already logged in.
User Credentials
The Server Action needs two parameters as input if you want the user of the application to fill in his username and password.
You can map the widgets in which the user fills in the information with the equivalent input parameter. (By double-clicking on the widget, you can choose the exact property that you need).
You can use a Single Sign-on if you want to allow a user to use a single set of login credentials to access multiple applications. In difference to the first login method, you have to map an additional parameter, the authentication.
Therefore you have to add this authentication method to the Simplifier in advance (this will be an admin task – take a look at “Settings for Admins“).
The name that was given to the authentication is the one that is needed as an input parameter.
Select OAuth as login in the server action and open the mapping dialog.
Within the mapping dialog you have the opportunity to choose between two parameters:
Service describes the OAuth service provider (e.g. Google, Amazon, Azure…) that expects a string that represents the name of a provider configured in the server settings.
UserSync expects a Boolean value to switch between the following two possibilities:
Login via OAuth by synching a user profile (true)
This will synchronize the retrieved information with a Simplifier user (if there is one for the credentials) or create a new user. In both cases, the current login is overwritten and all permissions are revoked.
Login via OAuth by adding the OAuth token only to the Simplifier token of the current user or app (false)
This does not synchronize the user, but adds the received token to the current user or app profile (if the app is configured to allow anonymous users), retaining all previous logins and associated permissions.
SAML 2.0
It is possible to log into a business app via SAML 2.0.
Within the mapping dialog, you have the opportunity to choose between two parameters:
Service – must be an existing SAML authentication setting.
UserSync – should be true if a successful login replaces the primary user login.
The behavior is analogous to the OAuth login.
Logout
For the Server Action Logout you don’t have to configure anything additionally.
Template
Use the Server Action Template to address templates.
With the help of parameters, it is possible to pass data to the template.
Don’t forget to map the input and output. The complete template will be returned as a string.
E-Mail
The Server Action can be configured to send e-mails.
Enter the sender and receiver e-mail, optionally CC and Bcc. You can enter multiple e-mail addresses for the receiver, CC and Bcc – in this case, the e-mail addresses have to be separated with a semicolon. At least, enter the subject and the body in HTML. For better user experience, it is possible to maximize the editor.
It is also possible to use the mapping dialog to this instead of using the settings panel.
Important: If a mapping is set, the settings in the panel are not considered.
Data Objects represent data sources and destinations, which can be triggered for execution. You can choose either a predefined connector (you can activate it to asynchronous) or a business object.
Function
Description
Asynchronous
If you select this option, the value helper assistant only offers asynchronous connectors.
Value Helper
If you open the value helper, an assistant opens that guide you to your connector.
Show Busy Indicator
You have the possibility to configure if the UI is blocked by the busy indicator, or can configure which element on your screen should be blocked by it.
Input Mapping
You can map variables, auto fields, widget properties and constants to the input parameter of your connector.
Output Mapping
You can map the output parameter of your connector to variables and properties.
Connector
A typical example of a data object is a previously defined connector call. An assistant offers all configured connectors that own connector calls. You can search for the connector name or even the connector type. If you select a connector, all calls are listed on the right side.
Choose the required Connector and the Call you want to execute.
You have the possibility to configure if the complete UI should be blocked by the busy indicator, or which element(s) on your screen should be blocked by it.
If you want to assign a connector call to a data object, you have to define the sources for the connector input (the request) and the destination for its output (the response). This is called the Input Mapping and Output Mapping:
Clicking one of these two buttons opens a new pop up which allows you to connect widgets with the input or output attributes of a connector call.
Independent of whether you’re defining the input or output mapping, you’ll always find the mapping sources in the left pane and the destinations on the right.
If you define e.g. the input mapping, you’ll find the list of widgets in the left pane and the available connector call request parameters on the right.
Within the output mapping dialog, the widgets are on the right pane, as they are the destination of the received data. In this example, the request of the selected connector call provides only a single input parameter, an ID field named “TechnischerPlatzId”. This input parameter is connected with the value of the widget “CustomerType”. This means, that once the data object is triggered, e.g. through a button press event, the connector will be called with the actual value of the widget “CustomerType” as the request parameter. You can choose the exact source that you want to use for the input parameter by double-clicking on the widget. It opens a list of all properties so you can choose the one you need as input.
Asynchronous Connector
You can configure asynchronous connectors in the Process Designer. The configuration works as same as with the synchronous connector.
When setting a connector to asynchronous, the assistant only offers connectors with asynchronous interfaces (Push, MQTT, and OPC/UA).
It has two inputs “subscribe” and “unsubscribe” and one output.
subscribe
can be triggered with any output
unsubscribe
can be triggered with any output
output
will be triggered on any async. message the Data Object receives
By opening the value helper, an assistant opens that takes you to your business object.
Show Busy Indicator
You have the possibility to configure if the complete UI should be blocked by the busy indicator, or which element on your screen should be blocked by it.
Input Mapping
You can map variables, auto fields, widget properties, and constants to the input parameter of your business object.
Output Mapping
You can map the output parameter of your business object to variables and widget properties.
The dialog shows all configured business objects that include methods. You can search for the name of the business object. By selecting a business object, all methods are listed on the right-hand side.
Output Mapping
The output mapping of a data object to a table, a list or a selected widget can be easily done in the Process Designer.
Click on Output Mapping and add the output parameter (on the left) and your table widget (on the right) to the screen. Double click on each to select the items.
Now map the equivalent items together via drag & drop.
Validation of mandatory Parameters
All configured parameters have an indicator if it’s mandatory.
If you haven’t mapped all input parameters of a data object that has been marked as mandatory, the following warning will appear:
Mapping Structs
Structs describe a package of domain types. For example, the struct “address” contains different domain types like name, street, city, ZIP Code, etc.
You can map structs as input and output parameter within your data object or when using a UI action.
Example:
In the example below, we want to use a business object that needs the information first name, last name, street and city as input parameter. Prior to our work in the Process Designer, we have created the struct data type “Person” that contains several domain types like “Firstname” and another struct which is called “Address”.
Within the input mapping of our business object, we can assign the input fields with the equivalent data to the struct “Person” that the business object needs.
By double-clicking on the struct you can choose exactly which parameter you want to select.
Navigate higher or deeper in the struct by clicking on the arrows (e.g. to select the domain type “Street” within the struct “Address”).
Within the Data Workbench, it is possible to administer custom events, global variables and auto fields that you want to use cross-functional in the user stories.
Custom Events
Custom events can be imagined as tunnels that connect different user stories or processes.
By publishing an event, you open the entrance to the tunnel and by subscribing to this particular event, you create the exit of the tunnel. This enabled you to jump between the user stories and helps you to have a clearly laid out working space.
To create a new custom event, click on the plus icon. Enter a name and then you can use it in the Process Designer.
Go to Events for an example of using the custom event in the Process Designer. In this section, you can also find out how to create a custom event directly in the Process Designer.
Global Variables
Use global variables as a container to buffer data, e.g. if a connector returns a lot of data and you would like to use some of it later in your work process, you can save the parameter as variables and map them later.
To create a new one, click on the plus icon. Enter a variable name, variable type and default value (optional).
You can also select, e.g. a struct as the variable type.
If you have selected a struct as a variable type and clicking on the value helper for the default value, the dialog on the right appears.
The dialog lists the fields of the ‘Machine’ struct on the left side like a tree. The struct is expanded to its first children so that the user can immediately see which are the fields of the parent node ‘Machine’.
You get the information about the fields on the right panel to configure the default values.
In general, the fields have four different appearances depending on their own data type:
Data type
Appearance
Behavior/Usage
String, Integer, Float
Input field with validation (depending on data type)
Values are written in the input field and saved on live change.
Date
Date time picker
The date-time picker dialog opens and the user is able to select the date and time.
Boolean
Switch
The switch can be set to true or false.
Collection, Struct
Link
By clicking on the link, you will be navigated to a complex data type in the left tree, that will also be selected automatically.
Example of a link press for clarification:
By pressing the ‘lubricant’ link from the dialog above, there are also different appearances of the tree items depending on their datatype:
Data type
Icon
Is Expandable
Plus Button
Remove Button
Base (String, Integer, Float, Date, Boolean)
No
No
No
Domain
No
No
No
Struct
Yes
No
No
Collection
Depending on collection items
Yes
No (only if it is a collection in a collection)
Collection exception:
By adding a collection object, the item is inserted into the structure below the collection. The collection object can then be clicked like an ordinary tree element. The only difference is that a collection item can be removed using the delete button.
You can reference variables in data objects as in- or output parameter. To do so, drag a variable (that you’ve created previously in the Data Workbench) from the toolbar in the mapping dialog.
Global Auto Fields
Auto fields are automatically computed/filled fields. You can use them e.g. if you want to greet the user who is logged in with his actual name or load e.g. the version number.
To create a new auto field, click on the plus icon in the Data Workbench. Enter a name for the auto field, the type, and the characteristic.
It is possible to declare auto fields from five types:
The auto field can hold these values: desktop, phone, tablet, watch and smartglass.
In the overview, the type of the auto field is displayed underneath its name and the characteristic is displayed on the right-hand side.
To edit an auto field, use the edit icon. It opens the same dialog as creating the auto field, but of course, predefined with the data, you set before. If you no longer need an auto field, delete it by clicking the appropriate icon.
How to use Auto Fields
You can use auto fields within a data object. In this example, we created an auto field that automatically gets the user name. It is mapped with the input parameter ‘userName’ of a preconfigured business object.
We configured some more auto fields like “applicationVersion” or 2 URL parameter. The result is shown below:
At first, you can see the former way of typing in the information by hand. On the second Screen, we used the Auto Fields and you get the information automatically, simply by clicking on the button.
Code Designer
The Code Designer is a web-based development environment that can be used to write source code like in a normal IDE. Entered code will be highlighted according to the programming language used (e.g. JavaScript, HTML or CSS).
On the left side, there is a document tree view where all the files of an application are displayed in a structured hierarchy. New files can be created, uploaded or moved within the tree view.
All opened files are displayed in tabs and can thus be edited easily by switching tabs. The search function is used to search through code by keyword. Changes can be undone or redone with the Undo / Redo Buttons.
To get the code file, click on the “Download App” button.
If you add or change the code, it can not be displayed in the Process Designer. The connection is only unidirectional.
Security
Assignment
You can assign roles to apps, which is the first step in order to have anonymous logins.
All assigned roles to the app are imported and exported by the transport system. By default, it is not allowed for anonymous users to execute data operations in the app.
Allowing anonymous users must be allowed with explicit approval. For this you have to activate the checkbox next to “Allow anonymous users”. The plus icon will then be available.
To assign a role, click the plus icon. A pop-up appears in which you can select a role. Click on it to assign it directly.
After assigning a role, your changes are automatically saved.
You can also remove roles. All you have to do is click on the corresponding icon.
Runtime
When you navigate to an application, an authentication of the app for accessing an application token is triggered. All roles assigned to the app are linked to the application token. This feature allows anonymous users to e.g. execute connectors.
As a further security aspect, the app needs to provide security functionality in order to obtain an application token.
Integration of external Libraries
Sometimes it is necessary to add an extra library to your app, e.g. if you want to display some special charts. You can upload and manage those external libraries under the “Libraries” tab in the Application tile.
If you want to know how to implement them into your application, go to “Libraries”
Standard Equipment
Simplifier provides the following library by default:
App Technology
Library
Version
UI5
OpenUI5
1.60
Add a new Library
To add a new library click on the “+” in the right corner.
Now you can fill in the following parameter:
Parameter
Description
Name & Description
Name
The name of the library NOTE: The combination of name and version number must be unique!
Version
The version of the library
Vendor
The vendor of the library
Comment
A description of the library, or e.g. license information
Compatability
UI5 compatible
Controls the assignment to UI5 Apps
Default for UI5
Assigns the library automatically when creating UI5 Apps
Content
ZIP file
The ZIP file, that contains the library
JS code to include
Code snippet to integrate the library into Apps
Dependencies
Dependencies
Dependencies to other libraries can be added via the plus icon
Integration of Libraries – addScript
To integrate the library with a js code snippet, use the following parameter:
addScript(ScriptPath, Name, Dependencies)
Parameter
Type
Description
ScriptPath
String
Relative path in the uploaded ZIP structure to the .js file you want to include (e.g. src/js/includedScript.js)
Name
String
Name of the library you can use to access the .js file (e.g. includedScript). By using “includedScript” in your script code you can now use all methods of your integrated library
Dependencies
Array<String>
Dependent scripts (refers to the parameter “name” of “addScript”)
It guarantees, that all dependencies are loaded beforehand. Use this if your library needs other libraries to work properly
It is important to ensure that all scripts specified under “dependencies” are either integrated into the same library, or a dependency is set on the library in which the script is integrated.
Integration of Libraries – addStyle
To integrate the library with a js code snippet, use the following parameter:
addSyle
Parameter
Type
Description
StyleURL
String
Relative path to the uploaded ZIP structure of the library
Name
String
Style name (optional)
Integration of Libraries – addBeforeInitHandler
addBeforeInitHandler
Parameter
Type
Description
Handler
Function
Callback function, which is called immediately before the loading of the script begins.
Integration of Libraries – addAfterInitHandler
addAfterInitHandler
Parameter
Type
Description
Handler
Function
Callback function, which is called after all scripts have been loaded completely.
In the lower part of the window, you can activate the following deployment parameters for production environments:
ECMA 5
Transforms source code to ECMA5 standard.
Minify
Minifies source code to reduce download time.
Polyfill
Adds additional polyfill functions to reach full ECMA5 compatibility
Releases
By switching to the tab Release, you see an overview of all created releases of this application.
Use the button to the right of the entry to display the full release notes.
Create new Release
At the bottom right you can create a new release by clicking on New.
There you can add the Release Notes. By clicking on Create, a new transport for this application is generated.
Business Objects
Simplifier allows you to create complex integrated applications up to a high degree solely through configuration. Nevertheless, at some point in time, advanced business logic might be required, which can’t be implemented merely by configuration. This is when Business Objects come into play.
Business objects are implemented via JavaScript. This way they integrate seamlessly into Simplifier applications. They allow you to write arbitrary business logic and interact with other Simplifier artifacts like connectors, plugins or other business objects. They can also be used among different applications.
To copy a business object, just click in the overview of business objects on the ‘Copy Business Object’ button on the right of the selected entry.
After you have clicked on it, a pop-up appears in which you can specify the new name of the business object. Then click on ‘Save’.
Now the business object has been copied. All included connectors, plugins and other business objects, as well as the script templates, are available in the copy.
Press ‘+’ in the upper right corner to create a new one from scratch. This fires up the following screen:
First, choose a name for your business object and define a description (optional). Add some tags, so you can search in the overviews and the UI Designer by the tags.
You may then select any connector, plugin or other business objects you want to refer on the left side. It opens a dialog where you can select it. Each selected item appears in the list below, from where you might also remove it again by clicking the delete icon underneath ‚Actions‘.
When you’re done, leave the screen by hitting the ‘Save’ button and return to the overview page. Your new business object appears in the table.
Usage of server-side Business Objects
You can see which applications or interfaces are using the business object. For that, click on the appropriate icon on the right.
It opens a popup that displays all used applications:
By clicking on an entry, the application opens so that you can edit it directly.
Create and Manage Functions
The logic of a business object is implemented via script functions. Each business object can hold as many functions as wanted. Click on the ‘Edit functions’ icon.
You are forwarded to the overview of the functions of the business object. There you can go to the function details, edit a function, test it, copy or delete it.
The content corresponds to the inner body of a JavaScript function. In other words: your main code block must not be wrapped into a separate function definition but rests on the top-level context. It’s nevertheless possible to define sub-functions on top of your main code block.
It’s best practice to wrap your main code block in a try-catch-block to handle possible errors.
Let’s have a typical hello world example:
In the toolbar above you have several possibilities:
undo (ctrl+z)
redo (ctrl+y)
search (ctrl+f)
search and replace
format code
validate code
settings (ctrl+,)
fullscreen
This example reads a name that is provided to the business object as an input parameter, compiles it into a greeting message and writes the result to the output.
Take a look at the try-catch-block surrounding the main code section:
If no error occurs, the upper part of the code inside the “try”-section will execute and return the greeting message and output.success = true. However, if any error occurs, the function will jump down into the “catch” section and return output.success = false and assign any details of the failure to attribute output.error.
In order to use the script function correctly, you have to add the same input and output parameters you used in the payload. Those parameters will be shown in the mapping dialogs in the Process Designer. Please note the corresponding handling of in- and output through the (JSON) objects “input” and “output”.Both of them may carry arbitrary attributes.
In this example the object “input” carries the attribute:
input.name to read the inserted name.
The “output” object carries the attributes:
output.message to send a greeting message.
output.success (true/false) to indicate whether the script template executed successfully.
output.error to hold the root cause of an error in case of failure.
Validate
You can validate the input and output parameter in the backend. It validates:
Base type against type security
Domain type against security and restrictions
Structures against type security and underlying property types
Collections against type security and the underlying types/property categories
If the validation is not successful, the client is notified of all failed validations and it’s written to the business object log or system log at the same time.
For every new business object, this flag is set by default. Already existing business objectsdo not have this checkbox flagged to guarantee the compatibility.
You have the possibility to declare parameters as optional. When declaring a parameter as non-optional, the validation will fail if the parameter is not provided.
Server-Side – Access Connectors
You can access all connectors you’ve previously assigned to your business object inside your script template.
The payload has to be a stringified JSON object. The result of the business object method is a string and therefore it has to be parsed.
Example:
var otherMethodResult = Simplifier.BusinessObject.OtherBO.someMethod({"foo": "bar"});
var unparamtetrizedResult = Simplifier.BusinessObject.OtherBO.someMethod("{\"foo\": \"baz\"}", false);
var sameBoResult = Simplifier.CurrentBusinessObject.someMethodOnSameBO({"baz": "baz"});
var noArgsResult = Simplifier.CurrentBusinessObject.methodWithoutArgs();
Test Business Object Functions
You can test the function by clicking on the ‘Test Function’ icon in the functions overview of a business object or click on ‘Save & Test’ within the creation of a function.
The upcoming dialog provides an input field for all input parameters, that do not have a constant value.
After entering the test values, click on the ‘Test’ button. It runs the template and displays the result in JSON format.
A history entry is created for each test and displayed in a closable panel on the left side of the dialog. Parameters from a current template can be imported into the next test by clicking the corresponding icon of the history entry.
Values that are marked as constants in the current call definition are not imported!
History entries can be deleted by pressing the trash icon. The history entries also display detailed error messages if a call was unsuccessful (hover over the info symbol).
Generate Data Type
You can automatically create simple or complex data types in the test dialog by pressing the button Generate data type after a successful test.
JSON object with parameters as required by the called script
callback
function, which is called after the successful execution of the connector
showBusyIndicator
boolean value that indicates whether the screen has to be blocked by a loading bar (true) or not (false)
failOnError
boolean value that indicates whether the connector should be called in case of an error of the function passed via “failCallback” (false) or not (true)
failCallback
function, which is called in case of an error in the connector, if false “failOnError” is passed
parametrized
boolean value that indicates whether the called parameters in the payload according to the rules in the script template are to be verified (true) or not (false)
Connectors
Connectors are the interface between a backend system and Simplifier to communicate with each other. They consist of at least one connector call.
The REST (REpresentational State Transfer) connector is used for HTTP REST Services. The architecture uses standardized operations (GET, PUT, POST, DELETE) on web services. REST API is an alternative to other interfaces like SOAP. However, REST itself is neither protocol nor standard.
MQTT (Message Queuing Telemetry Transport) is an open message protocol for machine-to-machine communication (M2M) that allows telemetry data to be transmitted as messages between devices, despite high delays or limited networks.
This connector acts as a client and can publish or subscribe messages from an MQTT server (broker).
The Push connector sends push notifications over WebSockets directly to Simplifier Clients or Simplifier Browser Apps without using Google or Apple’s Cloud Services to support data protection and privacy.
OData (Open Data Protocol) is an open protocol based on HTTP for data access to enable CRUD operations. It enables the creation of REST-based data services to be published and edited by Web clients using simple HTTP messages.
To create a new connector, click on the plus icon on the upper right corner within the connector overview. It opens a new pop up where you can select the connector type and enter the required and optional information.
Set the connector active. You can see within the overview which connector is active
Timeout time (in seconds)
Set the time in seconds until the connector request will run. After the set timeout, the request will be discontinued
Tags
You can add tags to your connector (e.g. the name of a project)
Endpoints
After you have created the connector information, add your endpoints by clicking the plus icon.
You can set several, but at least one is required.
You can switch between endpoints and customize the Specific Parameters. Each connector has specific parameters that depend on the properties of the communication protocol. Read more on the following pages.
Login Method
You can add or select the login method for the specific backend systems. To select an existing login method, click on the corresponding field. It opens a drop-down where you can select it.
If you want to create a new one, you can choose between using Username/Password, Single-Sign-On, OAuth2 and SAML2.0.
If you’d like to get an overview of your existing login methods and manage them, click on the “Logins” tab in the connector overview.
Edit Calls
By clicking on Edit calls, you directly jump to the overview of connector calls.
With the Push Notification Connector, you are able to send a notification to all logged in users who have the selected role or are in the selected group on the Simplifier instance.
Select via the value helper the roles and/or the groups to which you want to send a message in the connector configuration mask. Unfortunately, a multi-select is not yet possible and you have to select several roles in succession.
Roles control who receives the messages. Any user who has the corresponding role and uses the Simplifier client at the time of sending a message will receive the message.
Enter the required roles in JSON notation as follows:
An object can be passed as a message by converting it into a JSON string:
JSON.stringify({propertyOne: 'abc', propertyTwo: 5})
var lo_payload = {
'msg:'<requestedmessage>'
};
function successCallback(po_result) {
//Enter any code that will be executed in case of success
}
function errorCallback(po_result) {
//Enter any code that will be executed in case of error
}
this.callConnector("<connector-name>", lo_payload, successCallback, true, true, errorCallback);
Send message via Process Dashboard
To send messages via the Process Dashboard, you need to take the following steps:
Select the appropriate connector and the connector call for receiving the message.
You can continue with or without script.
Continue with script:
var lv_msg = data.data.msg;
data.data.msg must eventually be adapted to the output parameter specified in the connector call. lv_msg is the received message (type String, can be e.g. a JSON string, then parse to get object:
JSON.parse(data.data.msg)
It returns the object:
{propertyOne: 'abc', propertyTwo: 5}
Continue without script:
Use the output mapping to map received messages, e. g. to a widget or to save it in a variable.
SOAP Connector
WSDL URL
The URL to the Web Service Description Language Document (WSDL) of the SOAP Service. Please don’t mix up with the SOAP Service Endpoint.
You can refresh the WSDL, show parsed bindings or download the WSDL with the according buttons.
Path Filepath and Filename to local .CSV File that should be written, relative to the current working directory of the application server. It is recommended to give an absolute path, so it doesn’t matter which directory is set as “Current Working Directory” from the app server start script.
If you want to provide the files by the Html5 uploader you have to specify the path to the uploads directory. By default the path to the upload directory is
/opt/simplifier/data/storage/uploads.
Please consider: If you have defined a different path in your Simplifier configuration file (settings.conf) or in your docker environment, then change the path accordingly.
Delimiter
Delimiter of the columns that separate the values like comma or semicolon. This must be exactly one character, more than one character is not supported by the library. **In order to use the tabulator character, the expression ‘\t’ can be used in the Admin UI.** If more than one character is specified, all but the first character will be discarded.
Charset
The character encoding used to read/write the file. If a charset is used that is unknown to the application server JVM, all read/write operations will fail.
Mode
Operation Mode of the Connector, either READ, WRITE or READ/WRITE – the CSV Connector can currently only read the referenced CSV file.
Attention!
Please make sure that the Simplifier application Server has the right permissions to access and read the file on the operating system level.
If you use the uploads directory, the Simplifier has full access rights by default. So please beware.
Header
Activate the checkbox if the CSV File has a header in the first row.
Quote all Items
Activate the checkbox if all items should be quoted in terms of strings (“). Otherwise only values that contain the delimiter are put in quotes. This setting is ignored when reading.
The name of the broker. This is used by the Call to select the correct broker.
Broker Hostname
Hostname of the broker IPv4 OR hostname!
Port
The port, the broker is running on (1883 is standard for TCP and 8883 is standard for SSL).
TLS
TLS Encryption. Not yet available!
Keep-Alive
The number of seconds the client should be kept alive if no activity takes place.
Clean-Session
Determines whether the session is cleaned after a reconnection.
Last will topic
The topic for which a message is sent if the client dies (testament).
Last will payload
The message for the testament.
Last will retained
Flag to decide whether the message should be retained by the broker.
Last will QoS
(Quality of Service)
Flag to decide how often the message will be sent.
Allow multiple executions in reordering
If you send the “order” list to rearrange the given operations, you can decide with the flag whether operations should be executed several times.
Continue after an exception
Flag to decide whether the next operation should be executed after an error or whether the execution completely stops.
How to use a MQTT Connector in a REST-Client
You can choose between 2 operations: PUBLISH and SUBSCRIBE.
Build the payload like this:
Parameter
Description
operationType
Type of the operation, PUBLISH or SUBSCRIBE.
brokerName
The name of the broker, as it is specified in the Connector Details. If no name is given, the default broker is selected.
returnSet (for SUBSCRIBE operations)
Option which information the incoming messages contain.
“STANDARD”: Only the payload and the topic are displayed.
“WITH_QUALITY_INFORMATION”: Equivalent to the “STANDARD” but additionally with information whether the message is duplicated / withheld and QoS.
“VERBOSE”: As before but with Client ID as well as message ID.
Parameter for the Object “clientInformation”
clientId
The ID of the client. Since no two clients can connect with identical ID on the same broker, caution is advised. Dropping this parameter causes a random ID to be generated by the program.
forceReconnection
Setting whether the client should reconnect.
Parameter for the Object “messages”
qos
The Quality of Service settings:
“AT_LEAST_ONCE”, the message is sent at least once.
“ONCE”, the message is sent exactly once.
“AT_MOST_ONCE”, the message is sent 0 or 1 time.
topic
The topic for which the message is published.
retain
Setting whether to keep the message in the broker.
payloadInformation
Meta information for the payload. ***Is not being used at the moment.***
OData (Open Data Protocol) enables the creation of REST-based data services that allow resources identified by Uniform Resource Identifiers (URIs) and defined in a data model to be published and edited through the use of HTTP messages by Web clients.
It allows flexible access to the databases and to create, read, update and delete (CRUD) valid data on the web. OData is able to provide consistent semantics for data exchange in client-server communication.
Contrary to the other connectors, OData does not require any connector calls because the metadata is updated automatically.
Create a new connector and select OData V2 as a connector type. Within the specific data on the right, define the endpoint. Optionally, you can also define request headers to pass through and response headers to pass through.
The JDBC Driver of the supported database: MySQL, Sybase, Oracle, PostgreSQL, SQLite, HANA, Microsoft SQL, IBM DB2 and IBM DB2 for AS-400 systems.
Connection-String
The connection string specifies information about a data source and the means of connecting to it. It is generated automatically, depending on your previous selections.
Result Type
The result type is a Monadic type holding a returned value or an error code. Choose between Multiple Results (e.g. Array), Single Result and No Result.
If you have created an SQL connector with the SQLite data source, files are created for a special directory for SQLite data files. The connector creates an SQLite database on the Simplifier server in the connector properties if it’s not available. When changing the connector, a backup of the file is created.
Attention: Deleting the connector also deletes the data file.
If enabled, the client attempt to authenticate the user using the AUTH command. Default to false.
SMTP StartTLS
If activated, it enables the use of the STARTTLS command (if supported by the server) to switch the connection to a TLS-protected connection before issuing any login commands. Note that an appropriate trust store must be configured, so that the client will trust the server’s certificate. Default to false.
Launch SAP Logon on your local machine, right click on the system and choose Properties.
Find the needed information in the following dialog.
Close the dialog and double-click on the system you want to log in to. You will see the following login screen where you can obtain the client ID and language.
3. Enter the information in the SAP RFC connector configuration within Simplifier
Create and manage connector calls
Connectors define the connection (entry point) to an external system. Given such a connection, you might send several different requests to the connected system. We call one such concrete pair of request / response a “connector call”. In order to use a connector call in the edit mode of a user story (Process Designer), you must create at least one connector call for each connector.
Attention
To use a connector within an app, you have to configure a specific connector call and assign data types within the configuration! Otherwise the connector will not be visible in the Process Designer.
Step 1
Choose a connector from the overview and click the call icon. In the call overview add a new call for each connector operation.
Step 2
For SOAP and SQL connectors, you have the possibility to use the Connector Wizard. It helps you to create your connector calls much easier and faster. If you click on it, you can choose the ones that you need.
Otherwise click on the plus icon in the upper right and enter a unique call name that describes the operation (e.g. read, write, update, delete, search, …).
Connector Call name Unique name without spaces to describe the operation.
Description
Description of the operation.
Step 3
For configuring a connector call, you have to specify input and output parameters in the following tables:
Each connector call has its own specific parameters.
Validate
You can validate the Input and Output parameter in the backend. It validates:
Base type against type security
Domain type against security and restrictions
Structures against type security and underlying property types
Collections against type security and the underlying types / property categories
If the validation is not successful, the client is notified of all failed validations and it’s written to the Connector log or System log at the same time.
For every new Connector Call, this flag is set by default. Already existing Connector Calls do not have this checkbox flagged to guarantee the compatibility.
Parametername
The technical path or name within a rest api definition or web service description language or csv header column.
Alias
A meaningful non-technical description for the technical parameter. This wording is used in the edit mode for a user story (Process Designer) for mapping data with ui elements.
Description
Optional description of the parameter.
Constant Value
A constant value like SAP Client or company code that can’t be overwritten by any business apps. The value will be validated, so that it’s not possible to use a constant value with a wrong base type in Connector Calls and Buisness Objects.
Data Type
Assigned Simplifier data type for validating data before it gets back or from a backend system.
Step 4
After finishing the parameters, you can save the connector call settings.
Connector Call Specific Parameters
The user interface for configuring a connector call is generic, thus it looks the same for all kinds of underlying types of connectors. Having the same interface for all kinds of connector calls is very convenient. But one drawback of this approach is, that some connectors require fixed parameters to be set, in order to work properly. This section tells you more about these details.
You can declare parameters of Connectors as optional.
When declaring a parameter as non optional, the validation of the call will fail if the parameter is not provided.
Data Type Selector
If you click on the data type field, a selector opens.
Number
Description
1
The currently selected data type.
2
In this filtering list of all data types, you can find manually and automatically built data types. Custom data types are only manual data types. When the dialog opens in an automatically generated connector call, the data types of the connector can also be selected.
3
Prefilter of base and domain types, structs and collections.
4
You can always step deeper in the structure to select a data type.
Push Notification Connector Calls
The Push Notifiaction Connector Call requires only one input parameter to be defined:
Parameter Name
Data Type
msg
String
Example:
You can subscribe to a push notification connector. For this, create a new connector call in which you only have to define one output parameter. Input parameters are not necessary for this.
Parameter Name
Data Type
msg
String
Email Connector Call
The email connector call requires 3 input parameters to be defined:
receiver
The email address of the receiver. Several email addresses can be specified separated by a comma
String
subject
The subject of your message
String
msg
The message itself
String
All data types should be set as String.
There are 3 optional parameters that can be configured as well:
receiverCC
The email address of the copy receiver. Several email addresses can be specified separated by a comma
String
receiverBCC
The email address of the blind copy receiver. Several email addresses can be specified separated by a comma
SOAP is a network protocol. You can either stick to the standard when using the protocol like SAP or use it manually like Microsoft. The way the protocol is used to decide on how you have to build your connector call.
A) Stick to the standard protocol
In this case, the SOAP connector call requires two input parameters to be defined:
bindingName
The name attribute of your wsdl:binding attribute in your WSDL file
operationName
The name of the wsdl:operation attribute in your WSDL file for the operation that you want to call in your connector call
Example:
Parameters, that are required by the called SOAP operation, take the following form:
soap/<operationName>/<parameterName>, e.g. soap/_-ITIZ_-BUS2038_CREATE/index
SOAP connectors provide one or more optional parameters prefixed with ‘queryParams/‘.
Those fields are appended as query parameters on the SOAP request URL to provide additional meta information. It works in the same way as queryParams on RESTconnectors.
B) Use the protocol manually
In this case, the SOAP Connector Call requires two additional input parameters to be defined:
bindingName
The name attribute of your wsdl:binding attribute in your WSDL file.
operationName
The name of the wsdl:operation attribute in your WSDL file for the operation that you want to call in your connector call.
strict
Determines whether services (strict == true) or local bindings (strict == false) are used to determine endpoints in the WSDL. If you don’t use the standards, you have to set this parameter.
The Data Type is “boolean”. Set the value to “false”.
endpoint
By adding this as parameter, you can choose the endpoint manually. If the endpoint is not set, the endpoint which is defined in the WSDL file will be used.
Example:
All possible nodes (even if marked as optional) have to be defined in the Connector Call. They take the same form as in the standard use of the protocol:
soap/<operationName>/<parameterName>, e.g. soap/Query/index
Inline attributes are characterized by this:
soap/<xml-node>/@attribute, e.g. soap/RequestServerVersion/@Version
C) Use the protocol as an expert
In this case, the SOAP Connector Call requires one or two additional input parameters to be defined:
bindingName
The name attribute of your wsdl:binding attribute in your WSDL file.
operationName
The name of the wsdl:operation attribute in your WSDL file for the operation that you want to call in your connector call.
configuration/soap/soapMode
Determines the mode the SOAP connector operates in.
endpoint
By adding this as parameter, you can choose the endpoint manually. If the endpoint is not set, the endpoint which is defined in the WSDL file will be used.
If the SOAP Mode (Direct_Ignore) is used the endpoint must be provided or an exception will occur.
The possible SOAP Modes are the following ones
Direct
Sends the SOAP-Envelope directly. The WSDL will be used only for determining the correct endpoint.
Direct_Ignore
Sends the SOAP-Envelope directly and returns the result directly without fetching and parsing of the WSDL. An endpoint ist required in with this mode
WSDL
The default mode, the WSDL will be used for parsing the request parameters and result.
Example:
The payload must be provided by the parameter soap/ which must be a String.
The payload must be a valid SOAP envelope.
Connector Wizard
In the connector call overview, you can find the Connector Wizard in the top right corner.
By clicking on it, the assistant helps you to create the connector calls.
First Step – Select Operations:
In the first step, you can select the operations you want to execute.
Second Step – Configure Operations:
In the second step, you can edit the name and description of the connector calls.
When creating a SQL connector call, you can create your SQL statement in the first tab “SQL”. Select the Mode parameter: simple, execute, query or transaction.
In the tab “Input Parameters”, the “mode” and “request” parameters are filled with the values from the “SQL” tab. These parameters are not optional and cannot be removed.
Their data type is “string” and the name cannot be changed.
An SQL connector call requires the two parameters “mode” and “request“.
You can choose between 3 different modes:
simple
query
execute
Simple Call
The ‘Simple Call’ corresponds to an unparameterized SQL call.
The SQL request is defined by a ‘String’ without variable substitution.
In order to be able to process the output of the SQL request, it must be defined in the output parameter of the connector call.
Currently, you can still map the entire JSON result to a single parameter.
This is possible by specifying a ‘/’ as the parameter name and the data type ‘String’ in the output parameters.
Query Call
The ‘Query Call’ is used to transfer the result from an SQL statement to the Simplifier.
(Usually, SELECT statements have a result)
The SQL request of the ‘Query Call’ is parameterized (in contrary to the ‘Simple Call’).
Definition of the constant value for the request parameter
The input value of the request parameter is represented by a name and a Simplifier data type. In our example, we used the name ‘mail’ and the data type ‘String’.
A parameter definition is initiated and ended with a colon. Between the colons is a pair of values, separated by a colon as well, which represents the name and the type of the parameter.
In a parameterized SQL request: select * from USER_Data where email like :mail:
If you use more values in an SQL statement you have to use a syntax separated by a comma, e.g. VALUES (:id:,:mail:).
Definition of the parameter in the Connector Call
In order to use the parameter that has been defined in the SQL request via the connector call interface, a new connector call parameter must now be inserted, which corresponds to the parameter definition of the SQL request.
All connector call parameters that refer to an SQL request have the prefix /params/.
In the example above, a new parameter name /params/mail with the Simplifier data type ‘String’ has been created.
The parameter expressions ‘alias’, ‘description’ and ‘constant value’ are equivalent to the usual connector calls.
The result of a ‘Query Call’ can be assigned via the output parameters equivalent to the ‘Simple Call’.
Execute Call
The ‘Execute Call’ is quite similar to the ‘Query Call’. But with the ‘Execute Call’, no result is sent back to the Simplifier.
Typically SQL INSERTs, UPDATEs, or DELETEs are displayed in that way.
Transaction Call
To execute multiple queries in a single transaction, use the mode ‘Transaction’. bundles all executed statements as one database transaction.
The transaction mode has a delimiter setting, which is semicolon by default. Each statement is executed in the specified order and returns the result set. MySql, MS SQL, and SQLite additionally return values for automatic increment.
Connector Wizard
In the connector call overview, you can find the Connector Wizard in the top right corner.
With the SQL Wizard, it’s easy to configure new connector calls based on SQL Connectors for MySQL and Oracle.
When opening the Wizard, all tables available for the schema are displayed.
First Step – Select Queries:
In the first step, you can search for the table, and then select under “Actions” whether you want to select all columns (right icon) or only certain ones (left icon).
If you only want to select certain ones, click on the left icon. A new popup opens in which you can select the desired columns. Then click OK.
A CSV Connector can be configured in 3 different modes:
* READ: The connector can only read from the specified CSV file path, no write operations are permitted.
* WRITE: The connector can only write to the CSV file, but not read from it.
* READ/WRITE: The connector can read from the file and also write to it.
READ
The CSV Connector Call for a READ operation requires 2 Input parameters: “action” and “resultmode“.
To execute a read operation, call the Connector with the parameter “action” and the constant value “read“.
Reading Connectors get the result as JSON array of arrays by default. There can be definied two “resultmode“parameter:
“columnnumber” returns an array of JSON objects, where the key is “col0”, “col1”, … “colX”for the column.
“columnname” returns an array of JSON objects where the key is the String taken from the header row (only available if `headerInFirstLine` is true – see CSV Connector Details).
“array” returns a two-dimensional array (array of arrays), where the first array contains the row and the second array the column. This mode is the stablest, as the data type conversion must be done by the user. This is also the standard mode if you do not provide a resultmode.
WRITE
The CSV Connector Call for a WRITE operation requires also 2 Input parameters: “action” and “data“.
The data parameter must be a two-dimensional array consisting of only Strings. You can specify the array in the call itself by adding the respective indices after the data parameter name e.g.
data[0][0], data[0][1]. In this case you can provide multiple fields of the parameter data. You have to be sure, that the indices are unique.
The Connector returns everything if you use “/” as Output parameter.
REST Connector Calls
This section describes the necessary parameters and data types for REST connector calls.
pathParams (optional): a sequence defining ordered list of path segments added to Rest endpoint.
Exp.: {(“pathParams[0]”: “add”, “pathParams[1]”: “to”, “pathParams[2]”: “path”)} will add the path segments “add/to/path” to the endpoint.
postBody (optional): a JSON defining the post body. If postBody PLAIN is selected, a string JSON representation of the key/value list will be sent to the REST Endpoint
*optional postFormat: format and Content-Type of postBody to be sent to REST Endpoint. Possible values are :
JSON: Json fomat
PLAIN: Plain text format
FORM: URLencoded from
XML: xml format
verb: REST Verb with possible values :
GET
POST (postFormat is mandatory)
DELETE
PUT (postFormat is mandatory)
PATCH (postFormat is mandatory)
OPTION
HEAD
headParams (optional): key/value object defining additional headers of the REST Request. Any head parameters concerning possible authentication will be added, regardless of any earlier definition by headerParams feature.
queryParams (optional): key/value object defining query path parameter added to the REST endpoint
Connector execute result
When the connector is executed, it will only return a JSON as a result, if the content-type of the http result is “application/json”. In all other cases, the connector will return a JSON object with the following keys:
RESTBinaryResult – with the BASE64 encoded result body
RESTTextResult (returns only if it can be displayed as text)
Content-Type – mime type of result body
SAP RFC Connector Calls
This section describes the necessary parameters and data types for RFC connector calls. There are two different kind of calls
Calls for GET operations
Calls for EXECUTE operations
SAP RFC Connector Call – GET
To use the RFC Connector Call with the operation GET, you have to configure the following input parameter in the Simplifier:
[X]/Z_C002_CHANGEING_W_DATE (with any constant value)
Z_C002_CHANGEING_W_DATE (with any constant value)
[X]/configuration/operation/operationType GET
configuration/operation/operationType GET
operation
In this case: GET
operationTarget
Defines the exact information you want to return from the function block. Choose between:
[X]/configuration/operation/operationTarget (list that is passed)
With the following values (but the value may only appear once in the list, e.g. [import, template];[export])
IMPORT (returns all parameter, that are passed to the function)
EXPORT (returns all export parameter)
CHANGING (returns the changing parameter that is used by the function)
TABLE (returns table structures, that are stored in the function)
EXCEPTION (returns exceptions, that are defined within the function)
TEMPLATE (returns all)
returnInformation
Lists the complete structure (with SAP metadata) of the function block. Choose between:
[X]/configuration/operation/returnInformation
configuration/operation/returnInformation
Enter the value as a list. [STRUCTURE, METADATA]
Structure is the default.
SAP RFC Connector Call – EXECUTE
To use the RFC Connector Call with the operation EXECUTE, you have to configure the following input parameter in Simplifier:
If you want to execute a function module, which has no parameter at all, you can either
Provide ONE non-existing parameter with an arbitrary value
Use this syntax [FUNCTION_MODULE_NAME_2] and pass an arbitrary value
Use the operationTarget configuration parameter and provide an empty array.
Please note:
You can pass an arbitrary number of parameters to a function module.
You can pass an arbitrary combination of parameter types to a function module.
You can also execute function modules without parameters in a batch calls
Optional configuration parameters
You can modify the behavior of the connector in various ways. By providing the appropriate configuration key and value.
operation
key: configuraton/operation/operationType
value: EXECUTE or GET
default: EXECUTE
description: Changes the operation. An EXECUTE operation executes a function module, a GET operation retrieves the function modules structure and metadarta.
operationTarget (Optional)
key: configuration/operation/operationTarget
value: An array consisting of an arbitraty or no combination of the following values
CHANGING
IMPORT
TABLE
default: All of the above mentioned values
description: Defines which parameters of the provided type will be passed to the function. If an empty array is provided, then no parameters will be passed to the function module. If nothing ist defined, then all parameters will be passed to the function module.
examples : The following parameters will be used for each exampls
value: An array consisting of an arbitrary combination of the following falues
IMPORT
TABLE
EXCEPTION
EXPORT
CHANGING
default: The default value is determined by the provided parameter.
Provided Parametertype
Recevied Parametertype
IMPORT
EXPORT
CHANGING
CHANGING
TABLE
TABLE
description: Defines which parameter types will be returned. If an empty array is returned then no parameter types will be returned at all.
useBase64
key: configuration/output/useBase64
value: A boolean (true or false)
default: true (Base64 will be returned)
description: Defines whether binary data (ABAP: XSTRING/BYTE) will be returned as Base64 or as a ByteArray.
soapCompatibility
key: configuration/output/soapCompatibility
value: A boolean (true or false)
default: true (Table data will be wrapped in the item-pseudoElement)
description: Defines whether Table data will be wrapped in a structure with the pseudo-key item. By default the RFC-Connector is SOAP-compatible, meaning you can pass SOAP responses from an SAP system to a RFC-Connector and vice-versa. This flag provides you the possibility to retrieve the original RFC-output
OPC-UA Connector Calls
This section describes the necessary parameters and data types for OPC-UA connector calls. There are 3 different kinds of calls
Calls for READ operations
Calls for WRITE operations
Calls for BROWSE operations
NOTE: Please refer for the necessary data types here.
READ Call – OPC/UA Connector
Call for READ operations (the name TIA_READ is the arbitrarily chosen name for this call)
Input Parameter
For the READ Connector Call, you need to configure the “operationType ” and the “nodeId” (consisting of 2 parameters: identifier and namespaceIndex). Furthermore, you can define the Identifier Type (optional) and the order of the operations in the code (optional).
operationType: Defines which operation you want to execute, in this case, “READ”. Parameter Name: operations[0]/operationType
Constant Value: READ
Data Type: String
nodeID: Defines the identification of the OPC/UA node. It is split in 2 Parameter:
Identifier:
Parameter Name: operations[0]/nodeId/identifier
Data Type: String or Numeric
NamespaceIndex:
Parameter Name: operations[0]/nodeId/namespaceIndex
Data Type: String
In every namespace, each ID must be unique (it is possible to use the String “7617” and the Numeric 7167 together in one namespace)
identifierType (optional): Searches for the Identifier with a fixes Data Type.
Parameter Name: operations[0]/identifierType
Constant Value: Numeric, UUID, String, Byte String
order (optional): Order in which the actions should be performed.
This parameter changes the execution order of the specified READ commands e.g. if we have three READ commands. Command 1 reads from node x, command 2 reads from node y and command 3 from node z, the normal execution order would be: x, y, z.
By specifying the read order with numbers starting from 0 to the last command number subtracted by one (e.g. for three commands it would be 2), the execution will be changed according to the defined number.
For example, by adding “order”:[2,1,0] to your code, you switched the operations, so the read commands would be executed the following way. z, x, y.
NOTE: The specific commands are NOT defined here!
Output parameters
You can return all Output Parameter like this:
Parameter Name: /
Data Type: String
If you want to get only selected Output Parameter, use the following syntax:
Parameter Name: operationsResult/[0]/dataType/name (exemplary)
Data Type: depends on the Parameter you want to be returned.
For now, only the complete unformatted JSON will be returned.
WRITE Call – OPC/UA Connector
Call for WRITE operations (the name TIA_WRITE is the arbitrarily chosen name for this call)
Input Parameter
For the WRITE Connector Call, you need to configure the “operationType ” and the “nodeId” (consisting of 2 parameters: identifier and namespaceIndex). Furthermore, you need to define the operationTarget and the value.
operationType: Defines which operation you want to execute, in this case, “WRITE”. Parameter Name: operations/arrayItem[0]/operationType
Constant Value: WRITE
Data Type: String
nodeID: Defines the identification of the OPC/UA node. It is split in 2 parameter:
Identifier:
Parameter Name: operations[0]/nodeId/identifier
Data Type: String or Numeric
Constant Value: 84
NamespaceIndex:
Parameter Name: operations[0]/nodeId/namespaceIndex
Data Type: String
Constant Value: 0
In every namespace, each ID must be unique (it is possible to use the String “7617” and the Numeric 7167 together in one namespace)
identifierType (optional): Searches for the Identifier with a fixes Data Type.
Parameter Name: operations[0]/identifierType
Constant Value: Numeric, UUID, String, Byte String
operationTarget:
Parameter Name: operations[0]/operationTarget
Constant Value: Choose between
WITHOUT_EVERYTHING
WRITE_ONLY
CONFIRM_ONLY
WRITE_THEN_CONFIRM
READ_ONLY
READ_THEN_WRITE
READ_THEN_CONFIRM
READ_THEN_WRITE_THEN_CONFIRM
values The values, which are going to be written into the nodes.
Parameter Name: operations[0]/value
Data Type: String
The position of the values will equal the position of the node. For example, if node a is on the first position and node b on the second, whereas value x is on the first and value y on the second position then value x will be written into node a and value y into node b.
NOTE: The specific commands are NOT defined here!
Output parameters
You can return all output parameter like this:
Parameter Name: /
Data Type: String
If you want to get only selected output parameter, use the following syntax:
Parameter Name: operationsResult/[0]/newValue/value (exemplary)
Data Type: depends on the parameter you want to be returned.
For now, only the complete unformatted JSON will be returned.
BROWSE Call – OPC/UA Connector
Call for BROWSE operations (the name TIA_BROWSE_ALL_VARIABLES is the arbitrarily chosen name for this call)
Input Parameter
For the Browse connector call, you need to configure the “operationType ” and the “nodeId” (consisting of 2 parameter: identifier and namespaceIndex). Furthermore, you need to define the operationTarget, a returnSet and filterSettings (optional).
operationType: Defines which operation you want to execute, in this case, “BROWSE”. Parameter Name: operations/arrayItem[0]/operationType
Constant Value: BROWSE
Data Type: String
nodeID: Defines the identification of the OPC/UA node. It is split in 2 parameter:
Identifier:
Parameter Name: operations[0]/nodeId/identifier
Data Type: String or Numeric
NamespaceIndex:
Parameter Name: operations[0]/nodeId/namespaceIndex
Data Type: String
In every namespace, each ID must be unique (it is possible to use the String “7617” and the Numeric 7167 together in one namespace)
identifierType (optional): Searches for the Identifier with a fixes Data Type.
Parameter Name: operations[0]/identifierType
Constant Value: Numeric, UUID, String, Byte String
operationTarget: You can browse references forward, backward or in both directions. Choose between the basic attributes (simple) or further ones, depending on the class (extended).
Parameter Name: operations/arrayItem[0]/operationTarget
Data Type: String
Constant Value: Choose between
SIMPLE_ALL_CHILDREN
SIMPLE_ALL_PARENTS
SIMPLE_BOTH
EXTENDED_ALL_CHILDREN
EXTENDED_ALL_PARENTS
EXTENDED_BOTH
returnSet: Parameter Name: operations[0]/returnSet
Data Type: String
Constant Value: LIST
filterSettings (optional):
Type:
Parameter Name: operations[0]/filterSettings/filter/filterType
Data Type: String
Constant Value: NODE_CLASS
Value:
Parameter Name: operations[0]/filterSettings/filter/filterValue
Data Type: String
Constant Value: Choose between
DATA_TYPE
METHOD
OBJECT
OBJECT_TYPE
REFERENCE_TYPE
VARIABLE
VARIABLE_TYPE
VIEW
UNSPECIFIED
NOTE: The specific commands are NOT defined here!
Output parameters
You can return all output parameter like this:
Parameter Name: /
Data Type: String
If you want to get only selected output parameter, use the following syntax:
Parameter Name: operationsResult/[0]/browseResult/children/nodes/
Data Type: depends on the parameter you want to be returned.
For now only the complete unformatted JSON will be returned.
Connector Call via Script
In order to execute a connector call please use this code snippet:
a JSON object with the required parameters for the call
callback
function, which is called after the successful execution of the connector call
showBusyIndicator
boolean value that indicates whether the screen has to be blocked by a loading bar during the call (true) or not (false)
failOnError
boolean value that indicates whether the connector call should be called in case of an error of the function passed via “failCallback” (false) or not (true)
failCallback
function, which is called in case of an error in the connector call, if false for “failOnError” is passed
Copy Connector Calls
You can copy a connector call within a connector in the connector call overview by clicking the appropriate copy button.
By clicking the button a new pop up opens in which you can specify the name of the copied connector call. The default value is the name of the copied connector call added _copy.
Once you have assigned a name, click on the save button. Your connector call has been copied with all input and output parameters.
Test a Connector Call
As an admin, you can test your connector call by clicking on the ‘Test Connectorcall’ icon in the connector call overview or click on ‘Save & Test’ within the create/edit dialog of a connector call.
The upcoming dialog provides an input field for all input parameters, that to not have a constant value.
After entering the test values, click on the ‘Test’ button. It runs the call and displays the result in JSON format.
A history entry is created for each test and displayed in a closable panel on the left side of the dialog. Parameters from a current call can be imported into the next test by clicking the corresponding icon of the history entry.
Note: Values that are marked as constants in the current call definition are not imported!
History entries can be deleted by pressing the trash icon. The history entries also display detailed error messages if a call was unsuccessful.
Parameter- and constant names, -aliases and datatypes can be inspected by hovering over the parameter name. If the parameter is of a complex type, an info symbol is displayed. Hovering over this symbol will show a tooltip containing the value.
Generate data type
You can automatically create simple or complex data types from connector requirements in the test dialog by pressing the button Generate data type after a successful test.
The input validation in the test UI only takes place if ‘Validate’ is active for input parameters. The test parameters are always passed as a string.
Websocket Communication
The following sections contain information about how to use asynchronous connector subscriptions and unsubscriptions. For now, the subscription and unsubscription process can be initialized only programmatically and solely with the OPC/UA Connector.
Token Generation
A token is required for a secure communictation with the application server. You can generate a token with the following AJAX-Request
The authorization data required for identification. Consisting of the authorization method here the String Basic and the [userName]:[userPassword] as a Base64 encoded String.
Websocket Generation
After receiving a token, as described here, a websocket connection can be established with the application server with the following code:
var webSocket = null
webSocket = new WebSocket("ws://localhost:8080/client/1.0/connectorAsync/" + [ConnectorName] + "?SimplifierToken=" + [Token]);
[ConnectorName]
This parameter represents the connector, that the websocket connection will be established to.
[Token]
The generated token object.
Websocket API Documentation (Incomplete)
This section contains a description for the websocket methods. As for now this API is considered incomplete.
onOpen
The function, which will be executed, when the websocket is opend. The code block can be found below:
A specific request will be send to the websocket and interpreted by the other side of the connection. In this case a connector:
webSocket.send([request]);
[FunctionLogic]
This parameter contains the function, which will be executed.
[request]
This parameter is a JSON object send to the respective function. The requests for the Connector can be found here.
Request Types (Asynchronous Connectors)
This section contains a description of all possible websocket requests for an asynchronous connector (For now only the subscription and unsubscription are documented).
Subscription Request
This request subscribes the websocket to an asynchronous connector and will receive messages from it.
This request unsubscribes the websocket from an asynchronous connector and will not receive messages from it any more. Whether the connector stops working or not depends on the connector implementation.
A unique String, which acts as the identification key.
An example key might be “bb827118-f1b0-2170-9937-f8c7e1620107”.
[requestData]
A JSON object, which will be sent to the respective connector. Examples can be found here and here.
Token, Websocket and Request Sending Example
This section contains a detailed code example for generating a token and establishing a websocket with a connector, then a complete subscription followed by a complete unsubscription example. The arbitrary chosen connector is the “TIA_Connector”
Using the admin as user might be a security risk. In productive systems the admin should be changed into an authorized user with the respective permissions.
Websocket Connection Example
var webSocket = null
webSocket = new WebSocket("ws://localhost:8080/client/1.0/connectorAsync/" + "TIA_Connector" + "?SimplifierToken=" + token);
After sending the subscription, the OPC-UA Connector will subscribe the given nodes for monitoring requests. Every change will be sent through the websocket to the client and can be received by the onMessagefunction, which has been described here.
The operation, which should be done by the asynchronous OPC-UA connector. Only the following options are valid at the moment.
MONITORING_SUBSCRIBE
nodes
The names of the nodes, which should be subscribed. The name is one of two parts, which defines a node Id.
NOTE: If more than one item should be subscribed with one request, then the amount of nodes must be the same as the amount of namespaceIndices.
namespaceIndices
The namespace indices where the nodes resides
NOTE: If more than one item should be subscribed with one request, then the amount of namespaceIndices must be the same as the amount of nodes.
publishingInterval
The interval, in which the OPC-UA server will publish the changes in the subscribed nodes. According to the queueSize all changes, which are still stored in the queue will be published. The used timeunit are milliseconds.
clientHandlingID
An internal unique handling key for the OPC-UA server to distinguish the monitoring subscriptions.
NOTE: Each request must have an unique clientHandlingID or else only message from the latest subscription will be returned.
samplingInterval
The interval in which the OPC-UA server will sample the subscribed nodes for changes. This parameter will be only used if SAMPLING is the chosen monitoringMode. The used timeunit are milliseconds.
queueSize
The size of the queue that logs all changes of the subscribed nodes. Each node has an own queue. If the queue is full and new changes occurs, then the oldest changes are discarded automatically.
discardOldestItem
If this option is selected, then the oldest entry in the queue of each subscribed node will be discarded regardless whether the queue is not full or not.
monitoringMode
The monitoring mode. The following two modes are available:
Reporting: Reports all changes after a defined publishing interval.
Sampling: Samples the nodes after a defined interval and then returns the changes.
returnedTimestamps
This option decides what timestamps are returned in each message. The application server timestamp will be returned every time. For now the following options are allowed:
Both: The timestamp of the OPC-UA Server as well as the source will be returned.
Neither: Only the application server timestamp will be returned.
Server: The timestamp of the OPC-UA server will be returned.
Source: The timestamp of the source of the node will be returned.
OPC-UA Monitoring Requests Examples
This section contains examples for the OPC-UA Monitoring Request Subscriptions
Attention
The status code of a frame might return either “Good” or “Bad” if later case occurs, then also the OPC-UA Error Message will be returned!
This request subscribes the nodes “myNode” and “myOtherNode” that resides in namespace 2 to the OPC-UA server, which will report the latest 2 changes after 1 second. The returning message frame contains the application server, OPC-UA server and source timestamps. The oldest item will be dropped.
“nodeName”:”myNode”,
“namespaceIndex”:2,
“value”:”448828049″,
“appServerTime”:”Wed Oct 19 19:37:42 CEST 2016″,
“OPCUAServerTime”:”Mon Jan 01 01:00:00 CET 1601″,
“OPCUASourceTime”:”Mon Jan 01 01:00:00 CET 1601″,
“statusCode”:”Good”
“nodeName”:”myOtherNode”,
“namespaceIndex”:2,
“value”:”22223423″,
“appServerTime”:”Wed Oct 19 19:37:43 CEST 2016″,
“OPCUAServerTime”:”Mon Jan 01 01:00:00 CET 1601″,
“OPCUASourceTime”:”Mon Jan 01 01:00:00 CET 1601″,
“statusCode”:”Good”
This request subscribes the nodes “myNode” and “myOtherNode” that resides in namespace 2 to the OPC-UA server, which will report the last change after 500 milliseconds. The returning message frame contains the application server and source timestamps. The oldest item will be dropped but it does not matter, as the queue can contain only one element.
“nodeName”:”myNode”,
“namespaceIndex”:2,
“value”:”324234″,
“appServerTime”:”Wed Oct 19 19:37:42 CEST 2016″,
“OPCUASourceTime”:”Mon Jan 01 01:00:00 CET 1601″,
“statusCode”:”Good”
“nodeName”:”myOtherNode”,
“namespaceIndex”:2,
“value”:”2333543″,
“appServerTime”:”Wed Oct 19 19:37:43 CEST 2016″,
“OPCUASourceTime”:”Mon Jan 01 01:00:00 CET 1601″,
“statusCode”:”Good”
This request subscribes the nodes “myNode” and “myOtherNode” that resides in namespace 2 to the OPC-UA server, which will report the last 20 changes after 2 seconds. The returning message frame contains the application server and OPC-UA server timestamps. The oldest item will not be dropped.
“nodeName”:”myNode”,
“namespaceIndex”:2,
“value”:”4488280898″,
“appServerTime”:”Wed Oct 19 19:37:42 CEST 2016″,
“OPCUAServerTime”:”Mon Jan 01 01:00:00 CET 1601″,
“statusCode”:”Good”
“nodeName”:”myOtherNode”,
“namespaceIndex”:2,
“value”:”22223425″,
“appServerTime”:”Wed Oct 19 19:37:43 CEST 2016″,
“OPCUAServerTime”:”Mon Jan 01 01:00:00 CET 1601″,
“statusCode”:”Good”
This request subscribes the nodes “myNode” and “myOtherNode” that resides in namespace 2 to the OPC-UA server, which will report the last 5 changes after 100 millieconds. The returning message frame contains only the application server timestamp. The oldest item will be dropped.
This request subscribes the nodes “myNode” that resides in namespace 2 to the OPC-UA server, which will sample the node every 100 milliseconds and return the last 10 changes after 1 seconds. The returning message frame contains only the application server timestamp. The oldest item will be dropped.
a JSON object with the required parameters of the call
callback
function, which is called after the successful execution of the connector
showBusyIndicator
boolean value that indicates whether the screen has to be blocked by a loading bar during the call (true) or not (false)
failOnError
boolean value that indicates whether the connector should be called in case of an error of the function passed via “failCallback” (false) or not (true)
failCallback
function, which is called in case of an error in the connector, if false “failOnError” is passed
Simplifier SAP
Simplifier as SAP Silver Partner offers its own SAP Addon for Interfaces with supporting the whole bunch of SAP transactions within SAP ECC core and IS-U module.
These interfaces can be accessed via SOAP (SAP Enterprise Webservices) and SAP RFC.
The following subpages contain the SAP interfaces.
SAP ERP6 Business Partner
SAP ERP6 (Enterprise-Resource-Planning) Business Partner
Method
SAP Transaction
Description
CREATE
BP
Create Business Partner master data.
READ
BP
Load a Business Partner.
UPDATE
BP
Update Business Partner master data.
DELETE
BP
Delete Business Partner.
CREATE_BANK_DATA
BP
Create bank data.
CREATE_TAX_DATA
BP
Create tax data.
CREATE_INDUSTRY_SECTOR
BP
Create industry sector.
LINK
BP
Create Business Partner Relation.
UNLINK
BP
Delete Business Partner Relation.
SAP ERP6 Object Status
SAP ERP6 (Enterprise-Resource-Planning) Object Status
Method
SAP Transaction
Description
READ
Various (e.g. QM03)
Read an object status based on the object numbers.
READ_HISTORY
Read system / user status change documents.
SET_STATUS_OF_OBJ
Set system / user status of an object.
RESET_STATUS_OF_OBJ
Removing the system / user status with no reference number to object X.
SAP ERP6 Status Profile
SAP ERP6 (Enterprise-Resource-Planning) Status Profile
Method
SAP Transaction
Description
READ
BS03
Load an status profile based on the object numbers.
SEARCH
BS03
Search a status scheme.
SAP ERP6 Document
SAP ERP6 (Enterprise-Resource-Planning) Document
Method
SAP Transaction
Description
CREATE
CV01N
Create document object master data.
READ
CV03N
Load a document using the document object key.
UPDATE
CV02N
Update document object master data.
DELETE
CV02N
Mark document for deletion.
CREATE_ORIGINAL_FILE
CV02N
Create a file from raw content, including original.
READ_ORIGINAL_FILE
CV03N
Read a file’s contents with document number and file ID.
UPDATE_ORIGINAL_FILE
CV02N
Update file details.
DELETE_ORIGINAL_FILE
CV02N
Delete file from document, including original.
SAP ERP6 Change Document
SAP ERP6 (Enterprise-Resource-Planning) Change Document
Method
SAP Transaction
Description
READ
SE38 – RSSCD200
Load a change document usign the object key.
SEARCH_BY_DATA
SE38 – RSSCD200
Search for a change document.
SEARCH_BY_DATE
SE38 – RSSCD200
Search for a change document via date range.
READ_ALL
SE38 – RSSCD200
Read all change documents of an object class.
SAP ERP6 Material
SAP ERP6 (Enterprise-Resource-Planning) Material
Method
SAP Transaction
Description
CREATE
MM01
Create material master data.
READ
MM03
Load material using the material number.
UPDATE
MM02
Update material master data.
DELETE
MM02
Mark material for deletion.
READ_ADDITIONAL_DATA
mm03
Read additional material master data.
READ_MATERIAL_AVAILABILITY
ATP information.
READ_SALES_TEXT
Read sales text.
SAP SD Sales Order
SAP SD (Sales & Distribution) Sales Order
Method
SAP Transaction
Description
CREATE
VA01
Create sales order object master data.
READ
VA03
Loading a sales order object based on the customer order object number.
UPDATE
VA02
Update sales order object master data.
DELETE
VA02
Mark a sales order for deletion.
SEARCH
VA03
Search a sales order.
READ_ORD_STATUS
VA03
Read sales order status.
CREATE_BY_CUSTOMER_QUOTATION
VA01
Create a sales order with reference to the customer quotation.
REJECT
VA02
Reject a sales order.
REJECT_POS_NO
VA02
Reject sales order individually.
SAP ERP6 User
SAP ERP6 (Enterprise-Resource-Planning) User
Method
SAP Transaction
Description
READ
SU01D
Read an SAP User.
GET_CURRENT_USER
SU01D
Read current SAP User.
SAP SD Customer
SAP SD (Sales & Distribution) Customer
Method
SAP Transaction
Description
CREATE
XD01
Create customer object master data.
READ
XD03
Load a customer object based on the customer object number.
UPDATE
XD02
Update of customer object master data.
DELETE
XD06
Mark a customer for deletion.
SEARCH
XD03
Search for customer.
CREATE_BY_REFERENCE
XD01
Create a customer modelled on customer X.
SEARCH_BY_ADRC
XD03
Search for a customer based on the address.
READ_LINE_ITEMS
FBL5N
Read customer line items.
SAP SD Customer Quotation
SAP SD (Sales & Distribution) Customer Quotation
Method
SAP Transaction
Description
CREATE
VA21
Create Quotation object master data.
READ
VA23
Loading a Quotation object using the offer object number.
UPDATE
VA22
Update Quotation object master data.
DELETE
VA22
Mark the Quotation for deletion.
DELETE_POSITION_BY_NO
VA22
Delete a Quotation item.
CREATE_POSITION_BY_NO
VA22
Create a Quotation item.
REJECT
VA22
Select a reason for rejecting the Quotation.
REJECT_BY_POS
VA22
Select a reason for rejecting the Quotation by position.
GET_COND_TYPE
Get condition types from quotation.
GET_POSITION_TYPE
Get position types from quotation position.
GET_TERMS_OF_PAY
Get terms of payment from quotation.
SAP SD Vendor
SAP SD (Sales & Distribution) Vendor
Method
SAP Transaction
Description
CREATE
XK01
Create an SD Vendor.
READ
XK03
Load an SD Vendor.
UPDATE
XK06
Update SD Vendor.
DELETE
XK02
Mark an SD Vendor for deletion.
SEARCH
XK02
Search an SD Vendor.
DELETE_UNDO
XK06
Undo deletion of an SD Vendor.
SAP SD Billing Document
SAP SD (Sales & Distribution) Billing Document
Method
SAP Transaction
Description
CREATE
VF01
Create a Billing Document.
READ
VF03
Load a Billing Document based on the Billing Document Number.
DELETE
VF02
Mark a Billing Document for deletion.
READ_ADDITIONAL_DATA
VA03
Read additional data from a Billing Document.
SAP IS-U Connection Object
SAP ISU (Industry Solution for Utilities) Connection Object
Method
SAP Transaction
Description
CREATE
ES55
Create connection object master data.
READ
EBAA
Loading a connection object based on the connection object number.
UPDATE
ES64
Update connection object master data.
DELETE
N/A
Deletion of a connection object is not possible.
SEARCH
EBAA
Search for a connection object.
READ_HIERARCHY
EBAA
Read the hierarchy of a connection object.
SAP IS-U Business Partner
SAP ISU (Industry Solution for Utilities) Business Partner
Method
SAP Transaction
Description
CREATE
BP
Create ISU Business Partner master data.
READ
BP
Load a ISU Business Partner.
UPDATE
BP
Update ISU Business Partner master data.
DELETE
BP
Mark a ISU Business Partner for deletion.
SEARCH
BP
Search for a ISU Business Partner.
CREATE_FLAT
BP
Simplified creation of ISU Business Partner.
SAP ISU Premise
SAP ISU (Industry Solution for Utilities) Premise
Method
SAP Transaction
Description
CREATE
ES60
Create premise master data.
READ
ES62
Load a premise using the premise object number.
UPDATE
ES61
Update premise master data.
DELETE
ES61
Mark a premise for deletion.
SEARCH
ES62
Search for a premise.
SAP ISU Device Location
SAP ISU (Industry Solution for Utilities) Device Location
Method
SAP Transaction
Description
CREATE
ES65
Create device location master data.
READ
ES67
Load a device location using the device location object number.
UPDATE
ES66
Update device location data.
DELETE
ES66
Set delete flag of device location.
INSTALL
IE02
Installation of a device location.
DISMANTLE
IE02
Dismantling of a device location.
SAP MM Service Master
SAP MM (Material Management) Service Master
Method
SAP Transaction
Description
CREATE
AC01
Create MM Service Master.
READ
AC03
Load a MM Service Master based on the Service Master number.
UPDATE
AC02
Update MM Service Master.
DELETE
AC02
Mark MM Service Master for deletion.
SAP MM Purchase Order
SAP MM (Material Management) Purchase Order
Method
SAP Transaction
Description
CREATE
ME21N
Create Purchase Order master data.
READ
ME23N
Load a Purchase Order using the Purchase Order object number.
UPDATE
ME22N
Update Purchase Order master data.
DELETE
ME22N
Mark a Purchase Order for deletion.
SEARCH
ME23N
Search for purchase orders by vendor ID / purchase organization / factory / group / order type / status.
SAP MM Entry Sheet
SAP MM (Material Management) Entry Sheet
Method
SAP Transaction
Description
CREATE
ML81
Create a MM Entry Sheet.
READ
ML82
Load a MM Entry Sheet using the Entry Sheet number.
DELETE
ML81
Mark a MM Entry Sheet for deletion.
SAP MM Goods Movement
SAP PM (Material Management) Goods Movement
Method
SAP Transaction
Description
CREATE
MIGO
Create a goods movement.
READ
MIGO
Load a goods movement using the object key.
CANCEL
MBST
Cancel a goods movement.
SAP PM Equipment
SAP PM (Plant Maintenance) Equipment
Method
SAP Transaction
Description
CREATE
IE01
Create equipment master data.
READ
IE03
Load an equipment using the equipment number.
UPDATE
IE02
Update equipment master data.
DELETE
IE02
Mark an equipment for deletion.
SEARCH
IE03
Search for an equipment.
READ_CLASSES
IE03
Read the class characteristics of an equipment.
READ_STATUS
IE03
Read the user and system status of an equipment.
CHANGE_CLASSES
IE02
Update the equipment class charactersitics.
CREATE_BY_REFERENCE
IE01
Create an equipment according to a model X.
LOAD_BY_BAPI_GETLIST
Search for the point of use via BAPI_EQUI_GETLIST.
INSTALL
IE02
Installation of an equuipment.
DISMANTLE
IE02
Dismantle an equipment.
READ_STATUS
Read status of equipment.
CHANGE
Change equipment data.
GETDETAIL
Read equipment informations.
SAP PM Functional Location
SAP PM (Plant Maintenance) Functional Location
Method
SAP Transaction
Description
CREATE
IL01
Create functional location master data.
READ
IL03
Load a functional location.
UPDATE
IL02
Update a functional location.
DELETE
IL02
Delete a functional location.
READ_HIER
IL03
Read the hierarchy of a functional location.
SEARCH_GETLIST
IL05
Search functional locations.
CONVERT_KEY
IL03
Converts any Functional Location key to the internal and external format.
CONV_EXT_2_INT
IL03
Converts the primary key from the external format to the internal format.
READ_CLASS
IL02
Read class characteristics of a functional location.
READ_CD_CLASS
Read change documents for class characteristics of a functional location.
CHDO_SEARCH_DATA
Read change documents for functional location.
SAP PM Maintenance Notification
SAP PM (Plant Maintenance) Maintenance Notification
Method
SAP Transaction
Description
CREATE
IQS1
Create a maintenance notification.
READ
IQS3
Load a maintenance notification.
UPDATE
IQS2
Update a maintenance notification.
DELETE
IQS2
Delete a maintenance notification.
SEARCH
IQS3
Search for maintenance notification.
ADD_DATA
IQS2
Adds data to a maintenance notification.
ASSIGN_TO_ORDER
Assign an order to a maintenance notification.
CLOSE
Close a maintenance notification.
CREATE_BY_REFERE
Create a maintenance notification with a reference notification.
DELETE_DATA
IQS2
Deletes data from a maintenance notification.
PUT_IN_PROGRES
Set the in-progress status of a maintenance notification.
QMGRP_BY_TECHREP
Get codegroup definition of a given cataloge profile.
SEARCH_NOTF_LIST
Search maintenance notifications.
SET_TASK_COMPL
Set the completion.
SAP PM Service Notification
SAP PM (Plant Maintenance) Service Notification
Method
SAP Transaction
Description
CREATE
IW54
Create a service notification.
READ
IW53
Load a service notification using the object key.
UPDATE
IW52
Update a service notification.
DELETE
IW54
Delete a service notification.
ADD_DATA
IW52
Add data to the service notification.
CREATE_BY_REF
Create a service notification with a reference notification.
SEARCH
Search for a service notification.
SEARCH_NOTF_LIST
IW53
Search for a service notification with the notification list.
SAP PM Service Order
SAP PM (Plant Maintenance) Service Order
Method
SAP Transaction
Description
CREATE
IW31
Create a service order using the object key.
READ
IW33
Load a service order using the object key.
UPDATE
IW32
Update a service order.
SEARCH_GETLIST
Search for service orders.
SEARCH_OPERATION
Search for service orders.
DEL_SRULE_BY_SEQ
Remove settlement rule from a service order.
SAP WM Transfer Order
SAP WM (Warehouse Management) Transfer Order
Method
SAP Transaction
Description
CREATE
LT01
Create a Transfer Order with a single position.
READ
LT21
Load a Transfer Order using the stock number and the Transfer Order number.
DELETE
LT15
Cancel a Transfer Order.
CONFIRM
LT12
Confirm a Transfer Order.
CREATE_BY_REFERENCE
Create a Transfer Order with reference to a delivery.
SAP PM Maintenance Order Confirmation
SAP PM (Plant Maintenance) Maintenance Order Confirmation
Method
SAP Transaction
Description
CREATE
IW41
Create a maintenance order confirmation.
READ
IW43
Load a maintenance order confirmation using the object key.
SAP ITIZ DB Table
SAP ITIZ DB (Database) Table
Method
SAP Transaction
Description
READ
SE16n
Read a database table.
READ_FIELDS
SE16n
Read the available fields to a database table.
READ_METADATA
Read the Metadata of a database table.
SAP HR Personal Time Management
SAP HR Personal Time Management
Method
SAP Transaction
Description
CREATE
PA61
Load contemporary document master data using the contemporary document object key.
READ
PA61
Read contemporary document object master data.
UPDATE
PA61
Update contemporary document object master data.
DELETE
PA61
Delete a contemporary document.
READ_TIME_STATEMENT
PT40
Read remaining leave.
SAP ITIZ Key Value
SAP ITIZ Key Value
Method
SAP Transaction
Description
READ
SE16n
Load data from the SAP database, which can be used as a key value.
READ_DATA_ELEM
SE11
Read ABAP domain fixed values of data element X.
READ_TEXT
SE16n
Load data from the SAP database, which can be used as a key value.
SAP QM Quality Notification
SAP QM Quality Notification
Method
SAP Transaction
Description
READ
QM03
Read a quality notification with a primary key.
SAP PP Production Order Confirmation
SAP PP Production Order Confirmation
Method
SAP Transaction
Description
READ
CO14
Read a Production Order Confirmation using the primary key.
CREATE_BY_HDR_LEVEL
CO14
Creation of a confirmation message for the production order.
CREATE_BY_TIME_EVENT
CO14
Creation of a confirmation message for the production order with time events.
CREATE_BY_TIME_TICKET
CO14
Creation of a confirmation message for the production order with time ticket.
SAP PP Production Order
SAP PP Production Order
Method
SAP Transaction
Description
CREATE
CO01
Create production order.
READ
CO03
Load a production order using the primary key.
UPDATE
CO02
Update a production order.
READ_DOCUMENTS
CO03
Read the document overview of a production order.
RELEASE
CO02
Release of a production order.
Data Types
The tile “Data Types” is the central way to define different types of data, structures and collection of Data Types and their validation rules.
Data Types are a way to ensure data are sent and received in the right type format to and from the backend systems. With this feature, you can define data definitions to validate your data with client and server-side validation to prevent security issues and backend saving problems due to wrong data formats or hacker attacks.
Data Types can be assigned to widgets and connector calls to validate input and output data.
There are six Base Data Types defined in the Simplifier:
Date
Date Format
String
Characters, numbers and any other symbols from the Unicode Character Set
Boolean
True or False
Integer
Positive and negative numbers like -2, -1, 0, 1, 2 …
Float
Numbers with precisions like 2,503
Any
Accept all kind of Data Types even heterogeneous Arrays.
With the “Data Types” tile, you are able to enhance the Base Types and define your own logic.
The new Data Types are split into three different types:
Domain types
Structs
Collections
You can assign tags to Data Types to find them easily in the search bar.
Domain Type
A Domain type represents a single Data Type that inherits from a Base Type like String, Integer, Float, Date, etc. and can include different properties.
For example, a ZIP Code is an inherited type of string with the property of a maximum of 5 chars length.
To create a new Domain Type click on the “+” button.
Enter a unique Name for the Domain Type and an optional Description.
Also, select a Parenttype to inherit from by clicking on the appropriate field.
In the area below you can set the properties of your Data Type:
Min
Minimum length of a String, minimum number of a range, earliest date of a date range.
Max
Maximum length of a String, maximum number range, latest date of a date range.
Simple JSON Array of Strings repesenting literals of chosen Base Type.
Nullable
If activated, this value can be empty (null).
Struct Type
Structs describe a package of fields. For example, the Struct “address” contains different Domain Types like Name, Street, City, ZIP Code, Mobile Number, etc and Base Types.
To create a new Struct Type click on the “+” button.
You can define a unique struct name:
Click into the appropriate field to select the type.
Click e.g. on Domain Types on the top and search for the domain type in the search bar.
After clicking on apply, the type will be applied.
In the fields table can you add the following Data Types:
Name
Name of the field in the structure.
Optional
With this setting, it isn’t necessary to provide all fields in Connector or Business Object Calls.
Type
Base or Domain Type or even another structure or collection.
Description
Description of the field.
Collection Type
Collections represent multiple results of structs. For example, a database request may deliver a list of addresses from numerous people.
To create a new collection type click on the “+” button.
Define a unique collection name and a description.
By clicking on Parenttype a new pop up opens, where you can choose the parent type from.
After you have clicked on Apply, the parent type will be used.
Copy Data Types
You can copy any Data Type of Simplifier. The copy will have all attributes/fields and any tags are given to the copied template.
Click on the copy icon and a new pop-up will appear.
By default, “_Copy” is added to the current Data Type Name. However, you can also assign a new name. Click ‘Save’ and the copy has been created.
OPC-UA Connector Data Types
This section describes the nescessary collections as well as their meaning, required to use OPC-UA READ/WRITE connector calls.
Collections
Values: List of values that should be written into nodes.
Actions: List of actions consisting of READ or WRITE that should be performed.
Order: List of the order in which the actions should be performed.
Node Names: List of node names, that should be either written into or read from.
Namespace Indices: List of the corresponding name space index for each node.
Jobs
Jobs are server-side executed and recurring tasks that use business objects as logic. They can be found by clicking on the ‘Jobs‘ tile on the dashboard.
Jobs are used to automating business objects. The selected business object method will be executed by Simplifier on a periodic basis. You may schedule the jobs in order to trigger them without further user intervention.
To create a new job, you have to name it and set an interval after which the job is called in repeatedly. Selecting the business object and the function provides the job with functionality. Furthermore, you can choose the user who should execute the job (in case he has all the required permissions). The active time zone on the server applies to all dates and time settings.
Interval
It’s a recurring interval at which the job is executed in the format <hh>:<mm>:<ss>. If the new execution overlaps with a previous run, it’s only started after it has been completed and after a further interval.
One Time
With this you can set an actual date <dd>.<MM>.<yyyy> and time <hh>:<mm>:<ss>.
If the selected time is in the past, the job will not be executed!
Daily
You can set a daily time in the format: <hour>:<minute>:<second>
Weekly
If you select this interval, it will be repeated every week. Set it in <hour>:<minute>:<second> and the appropriate day(s).
Monthly
Set this interval if you want that it’s repeated monthly. Set it in <hour>:<minute>:<second> and the day(s) within this month.
If the selected day doesn’t occur in this month, e.g. the 30th February, the job will not be executed in this month.
Logs & Monitoring
The error log is the central logging and monitoring area where all data-streams and errors are logged and saved.
Filter
The Logs & Monitoring tile uses all search features of the backend (i.e. pagination or filtering).
On the left-hand side, you can set filters.
You can choose between the following filters.
Filter
Function
User
Filter for specific user actions
Log Level
Filters based on the severity of the message:
DEBUG, INFO, WARNING, ERROR, CRITICAL
Category
The categories:
System, Execution, Customize, User, Mobile
From
From Date
Until
Until Date
In the logs on the right-hand side, you can click a detail button, which will open further information.
User-Log
User-Log logs the Login and Logout activities of the users.
Execution Log
You can use the execution log to trace the execution of e.g. connectors.
The following type of entries are logged:
Type
Description
Open App
When the direct path to an app is opened (appDirect)
Download App
When downloading the app to the client (user context is provided)
In short: Every time you are not able to configure logic, interfaces or UI elements within the Simplifier, you can do it with your own plugin.
Plugins are microservices that can be developed in any available coding language. Plugins run standalone and remotely and communicate with Simplifier via AKKA message bus system over HTTP. Every Plugin has its own port number and, if necessary, also its own IP addresses.
Overview
To see the active Plugins, click on the Plugin tile.
Every Plugin can be an own configuration app, that is visible in the upper menu bar.
Offers a Key/Value Store Database based on Java MapDB
pdfPlugin
Offers a PDF Template Designer and Generator based on wkthmltopdf
contentRepoPlugin
Offers a Content Repository for saving and sharing documents in a folder hierarchy with own permission objects
jsonStore
Offers a Database Plugin to save and read back customer information (and application data) from apps in json format.
sessionPlugin
Offers a User-Session Plugin to save and manage User Session
stepByStepGuidancePlugin
Offers a generator (like a wizard) to build simple apps consisting of one information (image, text, video) per screen and one of the predefined functions.
captcha
Server-Side Generation of Captcha Images for the UI5 Captcha Widget
PDF Plugin
The PDF Plugin can be used to generate files with a fixed layout but dynamic values.
It is structured in such a way that you can create a new template for the PDF plugin on the left. Use the plus icon on the left. In the middle you see the content, which you can create according to your needs in HTML, CSS and JSON. On the right you will see a preview of your template.
The sub-articles describe how to use it.
Installation PDF Plugin
Configuration
To use the pdf Plugin, you have to configure it first.
Copy the file “settings.conf.dist” from the directory “plugins/pdfPlugin/src/main/resources”, save it as “settings.conf” and adjust it as follows:
In order to start the conversion, you need to install the program wkhtmltopdf on your operation system. The path to the wkhtmltopdf executable must be stated in the “settings.conf” file. Furthermore you need two folders, one to file your template and the other for the temporary data during the conversion. You can either use relative or absolute paths for the folders.
The Plugin is located in the directory: plugins/pdfPlugins. It can be activated with the SBT/Activator via a “run” command. The STDIN command “stop” ends the Plugin execution.
You can adapt the logback-configuration file “plugins/pdfPlugin/src/main/resources/logback.xml” to configure the log output or display it in another file.
Build a PDF Template
Administration
To generate a PDF and manage templates, the role “pdfPlugin” has to be assigned to your user.
Templates
You can build a PDF Template by using HTML, CSS and JSON. A live preview is provided on the right, so you can see changes in real-time.
The rendering is executed with wkhtmltopdf, therefore every HTML format and feature that supports the QT Webkit render engine is working.
With every template, a stylesheet in LESS format is generated and will be embedded automatically. You can maintain this stylesheet via the same interface as the HTML template.
The inclusion of graphics (<img src=”…”>) and additional stylesheets (<link rel=”stylesheet” href=”…”>) is also supported.
These external asserts are retrieved via the “assets” slot of the AppServer (they should be uploaded there in advance). You can refer to them in the template with a relative filename (no “http://” prefix, no path, etc.!).
Example: <img src=”image.jpg”> (if the file was uploaded as “image.jpg”)
Furthermore, you can add expressions in mustache format. These “variables” are later replaced by values from the update file to a session.
The dynamic data is retrieved as a JSON string in the key-value-store with the key: “sessiondata/$session“.
($session= the session ID that is specified for the generation)
Merging
You can combine your PDF document with other PDFs or images from the key-value store.
For this purpose, you can call the list of all the resources you want to merge with the key “merge/$session” in the key-value store. The list should correspond to a JSON-Array, where the entries of the JSON-Array are the keys of the resources to be merged. For example: [“document1.pdf”, “document2.pdf”, “image.jpg”].
The binary data of the corresponding documents should be filed in the key-value store under the keys “document2.pdf”, “document2.pdf” and “image.jpg”.
If the list of merge resources is not found for a session or if the list is empty, the merge is skipped.
Saving the generated PDF
After a PDF has been successfully generated, the binary data is stored in the Key-Value Store under the key “pdf/$jobid.pdf“. ($jobid = the job ID, that will be returned after the generation has started)
If the generation can not be executed successfully due to an error, a fault reporting is stored under the key “pdf/$jobid.log” in the key-value store.
Technical call of a PDF Plugin
The following subpages show the calls that can be executed via the interface. Therefore they do not have to be implemented.
Administration and Generation
You can manage your templates or start a new creation via REST.
All calls are started via a POST request, which may contain parameters in JSON format in the body.
The return is always in JSON format. It includes the result parameter “success” to indicate whether the call was successful.
If the call is not successful, an error code (as a return parameter “code”) and an error message (as a return parameter “message”) are returned.
The specified parameters for the config correspond to the parameters for wkhtmltopdf or the PdfConfig class of the wrapper. This can be used to control page formats, margins, headers, footers, etc.
Delete a PDF Template
Delete Template
To delete a template, you need the following parameter:
Create a HTML template for PDF generation, including variables and loops in Mustache format.
Upload the template with a selected name via the REST interface.
If you want to correct your template later, change it via the REST interface.
Upload all required images and stylesheets as uploads in the AppServer.
In the App:
Generation of dynamic data.
Upload the generated dynamic data under a unique session ID in the key-value store (via the REST interface of the key-value store).
The payload needs a unique key and the dynamic data you want to save.
Within the tile for Templates, you can create templates in HTML-format.
Administrate Templates
Templates are HTML templates that allow you to create and consistently use patterns.
To create a new template, click on the plus icon in the template overview. Select the folder name and enter a template name, optionally a description. Now enter the HTML template content. On the right side, you see a preview of the template. Once you have created the template content, click Save.
In the Template Editor, you have several options in the toolbar:
Undo
Redo
Search
Search and Replace
Settings
Fullscreen
In addition, it is possible to parameterize templates. To do this, switch to the tab ‘Parameters’. Via the plus icon, you can add new input parameter.
Transports
If you’ve built an application on a Simplifier instance that you’ve reserved exclusively for development tasks, you may be faced with the question on how to bring this application finally to the quality assurance or productive Simplifier instance?
How to export and import it, preserving all its dependencies, like connectors and associated roles?
That’s when Transports come into play. They allow you to define all of your app’s artifacts and let Simplifier collect them to create a bundle.
By clicking on the tile “Transports” you get to the overview of all packages. From there you also have the possibility to switch to the tabs Transports and Import.
For more information, look at the subpages.
Create a Transport
If you switch to the Transports tab, the overview of transports appears. It allows you to define transport requests that group one or more packages.
Click on the plus icon to create a new transport. The name of a new transport is generated automatically and is unique within the server environment. It always consists of the instance name and a 10-digit number.
You can add a description, that will be displayed in the overview, and below you can add the packages to your transport with the > button and remove them again with the < button.
After you have saved your changes, you return to the overview of transports.
On the right side you have the following possibilities:
It executes the export, which contains all the items of the selected packages. A transport can only be released once and is stored in the file system of the current Simplifier instance. It retains the items at the time of the release and additional metadata about the release creation.
It triggers automated transport to a remote Simplifier instance. The import-target can be selected from the instances that are defined within the Server Environment. In addition, the strategy (Overwrite or Don’t Overwrite) and login credentials on the remote instance must be specified.
During and after the import, a summary of the artifacts is collected and displayed in a progress dialog.
It downloads the transport file so that it can be imported manually.
A copy of the transport is created. The copied transport is not released automatically.
Import Manual Transport
Switch to the tab Import to import a file to the Simplifier instance.
Importfile
Choose the file you want to import.
Options
If you select Overwrite, all features that already exist are overwritten with those from your transport file. Otherwise, only the new features are transported.
Import
If you select Dry Run, the content of the transport file is analyzed and a list of all features is displayed. It does not import the data so you can simply test how the transport would work out.
After selecting your transport file and setting it all up, click Start Import.
The whole import log will be copied to clipboard.
History
Switch to the History tab to view an overview of all imported transports.
On the right side, you get information about the Import Date, Strategy, Importer and Source.
If you click on Import Protocol, the list of all imported artifacts is displayed.
Press ‘+’ in the upper right corner to create a new one from scratch. This fires up the following screen:
First, choose a name for your client-side business object and define a description (optional). Add some tags, so you can search in the overviews and the UI Designer by the tags.
You may then select any connector, plugin, server-side business object, client-side business object or managed libraries on the left side. It opens a dialog where you can select it. Each selected item appears in the list below, from where you might also remove it again by clicking the delete icon underneath ‘Actions’.
When you’re done, leave the screen by hitting the ‘Save’ button and return to the overview page. Your new business object appears in the table.
Usage of client-side Business Objects
You can see which applications or interfaces are using the business object. For that, click on the appropriate icon within the business object overview underneath ‘Actions’.
It opens a popup that displays all used applications:
By clicking on an entry, the application opens so that you can edit it directly.
Accessing input and output parameters of client-side Business Objects
You can access your input parameters via oPayload.<myInputParameter>.
To use the output parameters you have to return an object that has your parameters as properties. E.g.
return {
myOutputParameter : myOutputValue
}
As client-side Business Objects and their contents are called asynchronously, it may happen when a connector call is called that it is not yet finished and is returned undefined or null.
To avoid this, you must call fnSuccess instead.
fnSuccess ({
myOutputParameter : myOutputValue
})
It must be called in your last callback/function of your client-side Business Object and returns the data.
In the case of an error, the following can be specified:
The ownership concept provides that a user only can use artifacts, that were created by himself.
You have the possibility to share your own artifacts with other users. The permissions a user receives for a shared artifact has to be set by the admin.
Testing WebSocket Connection through Reverse Proxy
Testing WebSocket Connections through Reverse Proxy
The WSS Protocol is used for realtime data communication and server to client push mechanism.
To test a successful connection, following the steps below
Login via /UserInterface/ to the Administration Interface
Set a System Message like “Web Connection Test” within Settings (Chapter Messages)
Logout
Login again into the Administration UI via the Reverse Proxy and you should see the message pushed by Websocket from Server
Here you will find general and Simplifier specific abbreviations, technical terms and their meaning.
DQP System
Simplifier usually consists of 3 environments:
Development
Quality Assurance
Productive
An environment can be configured within global Simplifier Settings- Server Environment and is used to transportapplications within the defined Simplifier Instances (D,Q,P). Following is an example for deploying a DQP system on three virtual machines.
A fully qualified domain name (FQDN) is sometimes also referred to as an absolute domain name.
Example on our Simplifier cloud:
Development
dev-yourcompany.simplifier.io
Quality Assurance
qa-yourcompany.simplifier.io
Productive
yourcompany.simplifier.io
Example for onpremise installation:
Development
dev-simplifier.yourcompany.com
Quality Assurance
qa-simplifier.yourcompany.com
Productive
simplifier.yourcompany.com
Checklist – Simplifier onPremise Installation
Here you will find a checklist for all On Premise installations. You can check off the points when you’ve finished them. During this time, please do not reload this page.
Make sure that the Simplifier server reaches the Internet and make sure that the clients have access to the required ports of the Simplifier: 80 (TCP), 443 (TCP), 8090 (TCP)
Create or specify the Simplifier workspace, set the environment variables, and ensure that enough space is available. Also for future updates. We recommend at least 60 GB Storage.
Use the image from the Docker Hub “simplifierag/onpremise:latest” or use the image provided by our Infrastructure Team
Provide the SSL Certificate and Intermediate Certificate. Best practice is a globally valid certificate issued by a trusted certification authority.
If you do not want to use the database already provided in the on-premise Docker, set up an external database for the Simplifier Core platform
Start the Simplifier Docker by “docker run…” with the Docker Hub command
Use the internal reverse proxy or your own external proxy. Take a look at the requirements
Contact your project manager or our sales team to get a license
Log in to Simplifier with username admin and password admin
To get Simplifier support the following requirements should be fulfilled:
Local user on the Simplifier Server with read and write access in the Simplifier directory and access to the Docker Engine
SSH and HTTP, HTTPS access to the Simplifier Server via a VPN connection (the VPN connection should be person-independent – no personal RSA token or similar)
The following tables refer to the OWASP Top 10 Security Measures 2017 and explain the security measurements and relevant settings to avoid security flaws within the Simplifier platform.
A1: Injection
Simplifier Prevention
User-supplied data is not validated, filtered or sanitized by the application.
Double validation against data type definition (client and backend validation).
Hostile data is used directly with dynamic queries or non-parameterized calls for the interpreter without context-aware escaping.
All connector calls are parameterized, including SQL queries.
Hostile data is directly used or concatenated so that the SQL or command contains both structure and hostile data in dynamic queries, commands, or in stored procedures.
All connector calls are parameterized, including SQL queries.
A2: Broken Authentication
Simplifier Prevention
You may have authentication weakness if your application…
Simplifier is using token authentication. This token expires after x seconds (depends on the server security settings).
Permits credential stuffing, where the attacker has a list of valid usernames and passwords.
The permission object view owns user details prevents the application to access all user data.
Permits brute force or other automated attacks.
We secure the authentication by deactivating the account after x times of failed logins.
Permits default, weak or well-known passwords.
The admin can secure the password by setting password rules in the password settings.
Uses weak or ineffectual credential recovery and forgot password processes, such as “knowledge-based answers”, which cannot be made safe.
Actual we provide a one-time link to reset the password via email, but no other security questions.
Using plain text, encrypted, or weakly hashed passwords permit the rapid recovery of passwords using GPU crackers or brute force tools.
Our password does not exist in the database. We are using encrypted hashes via bcrypt algorithm.
Has missing or ineffective multi-factor authentication.
We provide multi-factor authentication through OAuth 2.0 authentication method.
A3: Sensitive Data Exposure
Simplifier Prevention
Data of a site is transmitted in clear text, internally or externally.
Simplifier runs behind a web proxy and all data is encrypted via HTTPS based on TLS 1.2
Sensitive data is stored in clear text, including backups.
Simplifier doesn’t save personal data or sensitive data on its own database – we are using existing backend systems for that.
Old or weak cryptographic algorithms are used either by default or in older code.
We rely on bcrypt.
Default crypto keys are in use, weak crypto keys are generated or re-used, or proper key management or rotation is missing.
We rely on bcrypt.
Encryption is not enforced, e.g. security policies or headers are missing.
If you use our provided reverse proxy template, this can not happen.
A4: XML External Entities (XXE)
Simplifier Prevention
Your application accepts XML directly or XML uploads, especially from untrusted sources, or inserts untrusted data into XML documents, which is then parsed by an XML processor.
We only support XML formats with REST and SOAP connectors from trusted backend sources and no direct upload or data processing within an application.
Any of the XML processors in the application or SOAP-based web services has document type definitions (DTDs) enabled.
Yes, we parse WSDL and consider DTD if available and generate corresponding data type definitions within Simplifier itself.
If your application uses SOAP prior to version 1.2, it is likely susceptible to XXE attacks if XML entities are being passed to the SOAP framework.
We support SOAP version 1.2
SAST tools can help detect XXE in source code, although manual code review is the best alternative in large, complex apps with many integrations.
We only support XML formats with REST and SOAP connector from trusted backend sources and no direct upload or data processing within an application.
Being vulnerable to XXE attacks likely means that you are vulnerable to other billion laughs denial-of-service attacks.
We only support XML formats with REST and SOAP connectors from trusted backend sources and no direct upload or data processing within an application.
A5: Broken Access Control
Simplifier Prevention
Bypassing access control checks by modifying the URL, internal app state, or the HTML page, or simply using a custom API attack tool.
This can not happen because every API is secured by permission objects independent from the user interface itself.
Allowing the primary key to be changed to another’s users record, such as viewing or editing someone else’s account.
This can not happen because every API is secured by permission objects independent from the user interface itself.
Elevation of privilege. Acting as a user without being logged in, or acting as an admin when logged in as a user.
The Simplifier authentication token is assigned to the client fingerprint that contains a lot of unique attributes like system configuration, browser version, screen resolution, browser plugins, etc. If you use a foreign authentification token to gain privileges, you have to be on the same client system and using the same browser and user credentials – so it is very unlikely to misuse a foreign token.
Metadata manipulation, such as replaying or tampering with a JWT access control token or a cookie or hidden field manipulated to elevate privileges.
The Simplifier authentication token is not stored in a cookie and is encrypted on the client with the client fingerprint.
CORS misconfiguration allows unauthorized API access.
If you use our recommend reverse proxy example you will be safe in terms of CORS misconfiguration.
Force browsing to authenticated pages as an unauthenticated user or to privileged pages as a standard user or API not enforcing access controls for POST, PUT and DELETE.
All APIs are secured by permission objects.
A6: Security Misconfiguration
Simplifier Prevention
Unnecessary features are enabled or installed.
Features are enabled via permission objects.
Default accounts and their passwords are still enabled and unchanged.
Every single installation will get an automatically generated complex administrator password. We are not using default passwords.
Does your error handling reveal stack traces or other overly informative error messages to users?
The logging and monitoring feature clears backend passwords out of the logs, so we will not include security-related information within the logs.
Old configurations are used with updated software which may not be backward compatible.
All configuration objects are automatically migrated to the newest release versions.
Every customer is forced to upgrade once a year – older versions are supported via long term support that includes also security patches.
A7: Cross-Site Scripting (XSS)
Simplifier Prevention
Reflected XSS: Your app or API includes unvalidated and unescaped user input as part of HTML output or there is no content security policy header.
We use the content security header.
Stored XSS: Your app or API stores unsanitized user input that is viewed at a later time by another user or an administrator.
All API fields are validated against data type definitions to prevent unsanitized data.
DOM XSS: JavaScript frameworks, single page apps, and APIs that dynamically include attacker-controllable data to a page are vulnerable to DOM XSS.
We provide encoding function also for JavaScript for HTML, URL, CSS and JavaScript.
A8: Insecure Deserialization
Simplifier Prevention
The serialization mechanism allows for the creation of arbitrary data types, AND
We transform every data to JSON format with sanitize options.
There are classes available to the application that can be chained together to change application behavior during or after deserialization, or unintended content can be used to influence application behavior, AND
We only accept valid JSON data. Each data object will be checked against the API data definition by default.
The application or API accepts and deserializes hostile objects supplied by an attacker, or an application uses serialized opaque client-side state without appropriate tamper-resistant controls. OR
We only accept valid JSON data. Each data object will be checked against the API data definition by default.
Security state sent to an untrusted client without some form of integrity control is likely vulnerable to deserialization.
Every client has to be authenticated to check if the client is trusted.
A9: Using Components with Known Vulnerabilities
Simplifier Prevention
You don’t know the versions of all components you use (both client-side and server-side). This includes components you directly use as well as nested dependencies.
All depending libraries are checked against security exploits with VersionEye Service.
Your software is out of date. This includes the OS, Web/App Server, DBMS, applications, APIs and all components, runtime environments, and libraries.
All components are checked against update with VersionEye.
You don’t know if they are vulnerable. Either if you don’t research for this information or if you don’t scan them for vulnerabilities on a regular base.
All components are checked against update with VersionEye.
You don’t fix nor upgrade the underlying platform, frameworks, and dependencies in a timely fashion.
We provide security hotfixes for the last 2 major releases (1 year).
You don’t secure the components’ configurations.
We secured the complete configuration.
A10: Insufficient Logging & Monitoring
Simplifier Prevention
Auditable events, such as logins, failed logins, and high-value transactions are not logged.
Failed login attempts and valid logins are logged as such as every business object or connector call. No matter what kind of value this transaction is.
Logs of applications and APIs are not monitored for suspicious activity.
Alerting thresholds and response escalation according to the risk of the data held by the application is not in place or effective.
Actual it is not possible to alert security response teams or administrator via email after certain security events – this will be available in further releases.
The following section documents the most common errors with possible solutions.
Q: What should I do when HTTPS/SSL is not available?
A: If you have problems with the connection set it from SSL to None
Q: What if the WSDL Consumer has problems parsing the WSDL?
A: Manually replace the string ws_policy in the WSDL with standard
Q: How can I monitor the error log of SAP Web services?
A: The error log can be viewed with transaction “srt_util”.
Q: How can I change the SAP web service login language?
A: The standard login language is also via SAP Webservices in English. Thus, all data determinations according to e.g.: Status texts, material text ect. always return in English language.
To be able to change it to German, the following prefix must be appended to the SOAP Webservice operation URL: “?sap-language=DE”
This does NOT mean the WSDL URL!
Q: How can I call the web service from another SAP client?
A: The web service operation call must be done with the parameter?sap-client=[client] so that the system can recognize the client.
Q: What if the Simplifier does not have access to the SAP system?
A: Check the following points:
Please make sure that there is a physical connection between the Simplifer (host) instance and the system. Firewall/Ports may need to be enabled to allow communication in both directions.
The Simplifier Docker or host system must be maintained with the correct network settings for on premise installations. This includes, for example, the setting for DNS servers.
On Premise
On-Premise means that as a customer you run the Simplifier on your own servers. Whether this is a dedicated root server, a virtual machine in VM Ware or a cloud computing instance at a cloud provider like Amazon does not matter in this case.
You are responsible for the installation, operation, maintenance, updates of the Simplifier instance and guaranteed availability.
The Simplifier Cloud is the default deployment option when you get started with the Simplifier. As an integrated solution, the Simplifier Cloud includes automatic backups, monitoring, high availability, and more. The availability is at least 99.7%.
The Simplifier Cloud will be deployed in Deutsche Telekom’s data centers OTC. Data protection and data security are a matter of trust.
The protection and security of your data has the highest priority. The Open Telekom Cloud is operated and data is secured in our own, highly secure twin-core data centers in Germany. Data processing is subject to the strict requirements of the European Data Protection Ordinance (DSGVO).
In addition, the Open Telekom Cloud is certified according to the Trusted Cloud Data Protection Profile (TCDP) 1.0. This certifies that the Open Telekom Cloud – currently one of the few cloud offerings on the market – offers companies the technical requirements necessary to meet the basic European data protection requirements (DSGVO).
Further information can be found here.
Other Clouds / PaaS
By providing the Simplifier Image on Docker Hub, we enable deployment on various public clouds and structures, e.g. Container as a Service (CaaS) on Amazon Web Services (AWS), Google Container Engine (GKE), Azure, SAP Cloud Platform, IBM Bluemix and Cloud Foundry.
Or launch your own instance by using the images on the various marketplaces:
AWS Marketplace
Azure Marketplace
SAP AppCenter
Docker Hub
The Simplifier is also available on Docker Hub.
Short Instructions
Create the directory which will host all external user-specific data: $ mkdir -p /home/simplifier/data
$ export SIMPLIFIER_DIR="/home/simplifier/data"
If your system does not meet the requirements to run Docker for Windows, you can install Docker Toolbox, which uses Oracle Virtual Box instead of Hyper-V.
README FIRST for Docker Toolbox and Docker Machine users: Docker for Windows requires Microsoft Hyper-V to run. The Docker for Windows installer enables Hyper-V for you, if needed, and restart your machine. After Hyper-V is enabled, VirtualBox no longer works, but any VirtualBox VM images remain. VirtualBox VMs created with docker-machine (including the defaultone typically created during Toolbox install) no longer start. These VMs cannot be used side-by-side with Docker for Windows. However, you can still use docker-machine to manage remote VMs.
Virtualization must be enabled in BIOS and CPU SLAT-capable. Typically, virtualization is enabled by default. This is different from having Hyper-V enabled. For more detail see Virtualization must be enabled in Troubleshooting.
The current version of Docker for Windows runs on 64bit Windows 10 Pro, Enterprise and Education (1607 Anniversary Update, Build 14393 or later).
Containers and images created with Docker for Windows are shared between all user accounts on machines where it is installed. This is because all Windows accounts use the same VM to build and run containers.
Getting Started with Windows Containers (Lab) provides a tutorial on how to set up and run Windows containers on Windows 10 or with Windows Server 2016. It shows you how to use a MusicStore application with Windows containers.
Docker Container Platform for Windows Server 2016 articles and blog posts on the Docker website
Install Docker for Windows desktop app
Double-click Docker for Windows Installer.exe to run the installer.If you haven’t already downloaded the installer (DockerforWindowsInstaller.exe), you can get it from download.docker.com. It typically downloads to your Downloads folder, or you can run it from the recent downloads bar at the bottom of your web browser.
Follow the install wizard to accept the license, authorize the installer, and proceed with the install.You are asked to authorize Docker.app with your system password during the install process. Privileged access is needed to install networking components, links to the Docker apps, and manage the Hyper-V VMs.
Click Finish on the setup complete dialog to launch Docker.
Start Docker for Windows
Docker does not start automatically after installation. To start it, search for Docker, select Docker for Windows in the search results, and click it (or hit Enter).
When the whale in the status bar stays steady, Docker is up-and-running, and accessible from any terminal window.
If the whale is hidden in the Notifications area, click the up arrow on the taskbar to show it. To learn more, see Docker Settings.
If you just installed the app, you also get a popup success message with suggested next steps, and a link to this documentation.
When initialization is complete, select About Docker from the notification area icon to verify that you have the latest version.
Congratulations! You are up and running with Docker for Windows.
Docker on Mac
Install Docker for Mac
Docker for Mac is the Community Edition (CE) of Docker for MacOS. To download Docker for Mac, head to Docker Store.
README FIRST for Docker Toolbox and Docker Machine users
If you are already running Docker on your machine, first read Docker for Mac vs. Docker Toolbox to understand the impact of this installation on your existing setup, how to set your environment for Docker for Mac, and how the two products can coexist.
Relationship to Docker Machine: Installing Docker for Mac does not affect machines you created with Docker Machine. You have the option to copy containers and images from your local default machine (if one exists) to the new Docker for Mac HyperKitVM. When you are running Docker for Mac, you do not need Docker Machine nodes running at all locally (or anywhere else). With Docker for Mac, you have a new, native virtualization system running (HyperKit) which takes the place of the VirtualBox system. To learn more, see Docker for Mac vs. Docker Toolbox.
Mac hardware must be a 2010 or newer model, with Intel’s hardware support for memory management unit (MMU) virtualization, including Extended Page Tables (EPT) and Unrestricted Mode. You can check to see if your machine has this support by running the following command in a terminal: sysctlkern.hv_support
macOS El Capitan 10.11 and newer macOS releases are supported. We recommend upgrading to the latest version of macOS.
At least 4GB of RAM
VirtualBox prior to version 4.3.30 must NOT be installed (it is incompatible with Docker for Mac). If you have a newer version of VirtualBox installed, it’s fine.System Requirements: Docker for Mac launches only if all of these requirements are met.
Note: If your system does not satisfy these requirements, you can install Docker Toolbox, which uses Oracle VirtualBox instead of HyperKit.
Double-click Docker.dmg to open the installer, then drag Moby the whale to the Applications folder.
Double-click Docker.app in the Applications folder to start Docker. (In the example below, the Applications folder is in “grid” view mode.)
You are prompted to authorize Docker.app with your system password after you launch it. Privileged access is needed to install networking components and links to the Docker apps.The whale in the top status bar indicates that Docker is running, and accessible from a terminal.If you just installed the app, you also get a success message with suggested next steps and a link to this documentation. Click the whale () in the status bar to dismiss this popup.
Click the whale () to get Preferences and other options.
Select About Docker to verify that you have the latest version.
Congratulations! You are up and running with Docker for Mac.
Verify that you now have the key with the fingerprint 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88, by searching for the last 8 characters of the fingerprint.
Use the following command to set up the stable repository. You always need the stable repository, even if you want to install builds from the edge or test repositories as well. To add the edge or test repository, add the word edge or test (or both) after the word stable in the commands below.
Note: The lsb_release -cs sub-command below returns the name of your Ubuntu distribution, such as xenial. Sometimes, in a distribution like Linux Mint, you might have to change $(lsb_release -cs) to your parent Ubuntu distribution. For example, if you are using Linux Mint Rafaela, you could use trusty.
Now you can open the Simplifier in your browser. http(s)://localhost/UserInterface
To avoid certificate errors, you can create a local host entry for your domain stored in the certificate for the HTTPS connection.
e.g. https://simplifier.<yourcompany>/UserInterface
Backups
Every instance is backed up daily in the Simplifier Cloud.
Both files and a logical database backup (dump) are stored directly on the machine. These are held locally for 4 weeks. This is very useful when restoring a single Simplifier instance.
Furthermore, the Simplifier Cloud is image-based backed up every day. These backups are held for 14 days.
Should the system fail completely, we can initiate a complete restore at any time.
Type of backup
Backup interval
How long are the backups stored?
tarball of files and a logical database backup
daily
4 weeks
image-based backup of the whole Simplifier Cloud
daily
2 weeks
Data Centers of Simplifier Cloud
The Simplifier Cloud is hosted in data centers of T-Systems Germany.
The locations of the twin-core data centers are:
Lübecker Str. 2
39124 Magdeburg
Germany
Am Schiens 10-11
39221 Bördeland/Biere
Germany
T-Systems data center
ISO Certificates and Audits
Our cloud infrastructure provider, T-Systems operates data networks for customers worldwide and processes data in its own data centers – data protection and data security have absolute priority. The ICT provider, therefore, has its services regularly audited by independent institutions and has itself certified that it complies with global standards and norms, for example through ISO certifications.
Here you will find an overview of the current certificates:
For security reasons, it is always a good idea to update your password regularly.
In order to change your password, you have to switch to the ‘Users‘ tile in the Simplifier dashboard. After that, search for the user whose password you want to change and click on Send Change password link on the right side.
You will receive an email with a link to change your password.
If you need help, please contact an admin.
If you’re an admin and want to change someones password, click on the ‚Password‘ tab in the upper left corner. Now all you have to do is enter the new password, confirm it and finally click on ‚Change Password‘.
Simplifier Cloud SLA
You will find the SLA of the Simplifier Cloud below:
The Licensor operates the provided Platform under the criteria of highest possible care, reliability, and availability of 99.7%, 7 days a week, 24 hours a day, 365 days a year.
Downtimes are not considererd in the calculation of availability if the Licensee expressly agreed to it in writing or if these downtimes are default times mentioned in paragraphs 4 and 5.
The Licensee has the right to reduce the agreed monthly fee for the maximum of 2% for every full percentage point that is below the assured availability. Any further claims of the customer remain unaffected.
Down times for maintenance, servicing and upgrades are explicitly pre-announced in writing between the parties, if these deviate from the default times mentioned in paragraphs 4 and 5.
The maintenance of the Simplifier is carried out by default on Saturday from 22:00 to 24:00 CET (Central European Time). Divergent or in addition necessary maintenance must be announced to the Licensee in writing, at least four weeks in advance and require the Licensee‘s written approval.
Every six months a release upgrade will be installed, namely on Saturday of the month’s last weekend, unless the contracting parties agree in a specific case for a different arrangement.
Updates and upgrades, that change the process, have to be announced to the Licensee in writing and before the implementation and will require written approval.
First, you have to authenticate yourself on the login screen with your Simplifier username and password.
Enter the instance you want to access.
If the device has Touch ID or Face ID, you can choose to restore your password with it.
You can save your login so you don’t have to re-enter it every time.
Tip: Use the QR code login that fills in your username, password and instance URL. Read here how to create a corresponding QR code in Simplifier.
Application Overview
Once you have been successfully authenticated, you are in the overview of all applications.
Start your apps easily by clicking on the desired entry.
To return to the general overview from a started app, use the “Exit” button in the upper left corner.
A dialog pops up asking if you really want to leave the application.
If so, confirm this dialog.
Settings
To get to the settings or to logout, click on the hamburger menu button in the upper left corner. In addition, you get the information about which username you are logged in with and on which version the client is running.
By clicking on Settings, you have several options.
Section
Setting
Description
General
Automatic login
After opening the client login directly (default off).
Automatically update authentication
Sessions will be automatically extended (default off).
Remote Call
Default settings
Uses default remote call settings (default on). Custom settings will be visible if default is off.
Local Stream
Resolution
Select a maximum target resolution supported by a camera (640x480px).
Frames per second
Set the frames per seconds to be sent (default 30).
Maximum video bandwith
Set the maximum video bandwith in kb/s (default 5000 kb/s).
Maximum audio bandwidth
Set the maximum audio bandwidth in kb/s (default 200 kb/s).
Audio codec
Set the audio codec: OPUS (default), PCMA, PCMU
Remote Stream
Resolution
Select a maximum target resolution supported by a camera (640x480px).
Frames per second
Set the frames per seconds to be sent (default 30).
Bitrate multiplier
Reduce the bitrate by chosen value (default 1.0).
Developer Mode
Developer mode
With this setting, the developer mode can be activated (default off).
WebView Caching
Enable or disable webview caching (default enabled).
First, you have to authenticate yourself on the login screen with your Simplifier username and password. Enter the instance you want to access. If the device has Touch ID, you can choose to restore your password with it. You can save your login so you don’t have to re-enter it every time.
Tip: Use the QR code login that fills in your username, password and instance URL. Read here how to create a corresponding QR code in Simplifier.
Once you have been successfully authenticated, you are in the overview of installed applications. In the beginning, this overview is empty. At any time, you can log out by clicking on the logout button in the top left corner. At the top right, on the Simplifier icon, various information will be displayed.
Browse Apps
To use apps on your mobile device, switch to the screenBrowse Apps. You see an overview of all applications that are on the specified instance. To install apps, simply click on the entries. When the apps are downloaded, Installed will display a notification with the number of newly installed apps. You can delete the installed application by swiping to the left.
Application Updates
If an app, that you have already installed, has been newly deployed on the instance, you will be informed about updates of the application.
Settings
To define the settings, click on the right tab Settings.
send logs to support (requires an email client and you need to agree to the privacy policy)
Server-Side Business Object API
You can access any methods, like Logging, Utils/Tools, Email, Connectors, Business Objects, Plugins, Users, Permissions, Groups and Roles of Simplifier by using the Simplifier object.
Variables marked with question marks are optional parameters.
var otherMethodResult = Simplifier.BusinessObject.OtherBO.someMethod({"foo": "bar"});
var unparamtetrizedResult = Simplifier.BusinessObject.OtherBO.someMethod("{\"foo\": \"baz\"}", false);
var sameBoResult = Simplifier.CurrentBusinessObject.someMethodOnSameBO({"baz": "baz"});
var noArgsResult = Simplifier.CurrentBusinessObject.methodWithoutArgs();
Set a user password for the provided one-time-hash
Input: (number, string)
Result: ()
oneTimeHash: string
–
tnewPassword: string
Permissions
Simplifier.Permission.checkPermission
Checks whether the current logged in user has the granted permission characteristic for the provided permission name.
Input : (string,string)
Result: Boolean
permissionName: string
true, false
characteristic: string
Simplifier.Permission.checkPermission
Checks whether the current logged in user has the granted permission characteristic value for the provided characteristic for the provided permission name.
The Content Repository Plugin is used to implement a persistence layer for data so that you can store images and videos using this plugin. It contains a repository, folders and files, so you create a repository (parent folder) in which subfolders can be stored in any hierarchy.
var payloadClearFileSystem = {
slot: "contentRepositoryAdd",
payload: {
"provider": "ClearFileSystem",
"name": input.name,
"description": input.description
}
};
var result = JSON.parse(PLUGIN_contentRepoPlugin.run(JSON.stringify(payloadClearFileSystem)))
The payload configuration depends on the required slot.
Difference between File System and Clear File System:
The file system stores the received content repository data in a database.
The clear file system stores this data in an actual file system (compare Windows Explorer).
Content Repositories
Add
Slot
Description
contentRepositoryAdd
This function adds a new content repository
FileSystem:
Input parameters
Key
Type
Description
name
String
Name of the repository
description
String (optional)
Description of the repository
provider
String
Content provider (must be specified as ‘FileSystem’)
{
"id" : 15,
"permissionObjectType" : "App",
"permissionObjectID": "DummyApp",
"name": "MyTestRepo",
"description": "My new description",
}
ClearFileSystem:
Input parameters
Key
Type
Description
id
Integer
Primary key (ID of the repository)
name
String
Name of the repository
description
String (optional)
Description of the repository
{
"id" : 15,
"name": "MyTestRepo",
"description": "My new description"
}
Delete
A repository can only be deleted if it does not contain any content folders.
Slot
Description
contentRepositoryDelete
This function deletes a content repository
Input parameter
Key
Type
Description
id
Integer
Primary key
{
"id": 15
}
Security Assertion Markup Language (SAML)
SAML (Security Assertion Markup Language) is an Extensible Markup Language (XML) standard that allows users to log in to networked but separate websites with just a single login.
To set SAML 2.0 as authentication, make sure you have administrator rights.
After you have logged in as usual in the login mask with your user credentials, click on your name in the upper right corner and then on the settings.
Switch to the Authentication tab in the upper toolbar.
To add a new authentication mechanism, click on the plus icon in the upper right corner.
General Settings
Name
Name under which this authentication mechanism settings is saved
Priority
The position of the execution of the respective authentication mechanism – the higher the number, the earlier the respective authentication mechanism is used. If same numbers are available, the sequence is determined lexicographically ascending
Mechanism
The authentication mechanism
Mechanism Settings
Service Provider Endpoint
The endpoint URL which needs to be configured in the SAML IDP Provider
Display Name
The display name is shown on the login button
Force Authentication
If set, the identity provider must authenticate the presenter directly rather than rely on a previous security context. When both ‘Force Authentication’ and ‘Passive’ are activated, the identity provider must not freshly authenticate the presenter unless the constraints of ‘Passive’ can be met
Passive
If set, the identity provider and the user agent itself must not visibly take control of the user interface from the requester and interact with the presenter in a noticeable manner
Sign Assertions
If set, also the assertions within the SAML Response will be signed
Maximum Lifetime (in seconds)
Used to determine whether a user login request is sent within a valid time period of the user’s last login. If yes, the user is automatically logged in without the need to enter a user name and password again. Important: ADFS setting is 480 minutes (8 hours), so increase this value if authenticating with an ADFS service
Service Provider Entity ID
By default, the entity ID of your application (the Service Provider) is equal to the callback URL, but you can force your own entity ID by setting this parameter
IDP Metadata
XML containing the configuration of your IDP (Identity Provider). Contains e.g. the certificate to sign the communication. This file is usually distributed by your IDP
Icon
Configures an icon, which will be shown on the login page for this authentication mechanism
Automated Testing
On application deployment, the app generator provides a basic self-test for the business application. The automated tests are based on the SAP OPA5 test framework.
The URL of the test page is relative to the deployed business application used under the subpath /test/integration/opaTests.qunit.html and can be opened with a browser.
As an admin, you can perform an automated test. Make sure you are already in the UI Designer for the testing application. Switch to the tab Testing.
To create a new test case, click on the plus icon.
Select the type in the opened pop-up and enter a test case name.
Click on Save.
Select the new Journey or Page Object on the left and add the testing code.
Deploy the Journeys or Page Objects and click on Show test page.
Using OAuth for authorization on Google
Authentication Settings
OAuth 2.0 Settings
These settings depend on the third-party provider.
Display Name
The display name is shown on the login button.
Client ID
The client ID identifies the application and is defined by the configuration on the OAuth server.
Client Secret
The client secret authenticates the application and is defined by the configuration on the OAuth server.
Scope
The scope determines which rights are gained with the access token. E.g. ‘profile’, ’email’, etc. for gaining rights to access the user profile/user email.
Authorization Endpoint
The authorization endpoint is the URL to which an authorization request is sent.
Token Endpoint
The token endpoint is the URL to which an access token request is sent.
Redirect Endpoint
The redirect endpoint is the URL to which the browser is directed after successful authorization. This URL needs to be entered in the OAuth server configuration.
Additional Query Parameters
You can add additional query parameters, such as name and value.
Icon
The icon will be displayed on the login mask above the display name.
OAuth Profile
Profile URL
The URL to which a user profile request is sent.
Profile Path
The path which points to the user profile. E.g. ‘/’, ‘profile’, ‘profiles[0]’ etc.
Profile Verb
GET, POST, PUT
First Name
The path which points to the entry of the user profile containing the first name. E.g. ‘givenName’, ‘person/firstName’, etc.
Last Name
The path which points to the entry of the user profile containing the last name. E.g. ‘surName’, ‘person/lastName’, etc.
E-Mail Address
The path which points to the entry of the user profile containing the email address. E.g. ‘mail’, ’emails[0]/value’, etc.
Mobile Phone Number
The path which points to the entry of the user profile containing the mobile phone number. E.g. ‘phone’, ‘phones/mobile’, etc.
Test Authentication
The settings for OAuth 2.0 can be tested within the configuration. Since the test procedure includes several steps, it is necessary to save the settings first.
The assignment of an access token can be tested by pressing the ‘Test authentication’ button, while pressing the ‘Test profile extraction’ button initiates the complete OAuth 2.0 procedure, which assigns an access token and also collects a user profile with the required data.
Using OAuth for authorization on Amazon
Authentication Settings
OAuth 2.0 Settings
These settings depend on the third-party provider.
Display Name
The display name is shown on the login button.
Client ID
The client ID identifies the application and is defined by the configuration on the OAuth server.
Client Secret
The client secret authenticates the application and is defined by the configuration on the OAuth server.
Scope
The scope determines which rights are gained with the access token. E.g. ‘profile’, ’email’, etc. for gaining rights to access the user profile/user email.
Authorization Endpoint
The authorization endpoint is the URL to which an authorization request is sent.
Token Endpoint
The token endpoint is the URL to which an access token request is sent.
Redirect Endpoint
The redirect endpoint is the URL to which the browser is directed after successful authorization. This URL needs to be entered in the OAuth server configuration.
Additional Query Parameters
You can add additional query parameters, such as name and value.
Icon
The icon will be displayed on the login mask above the display name.
OAuth Profile
Profile URL
The URL to which a user profile request is sent.
Profile Path
The path which points to the user profile. E.g. ‘/’, ‘profile’, ‘profiles[0]’ etc.
Profile Verb
GET, POST, PUT
First Name
The path which points to the entry of the user profile containing the first name. E.g. ‘givenName’, ‘person.firstName’, etc.
Last Name
The path which points to the entry of the user profile containing the last name. E.g. ‘surName’, ‘person.lastName’, etc.
E-Mail Address
The path which points to the entry of the user profile containing the email address. E.g. ‘mail’, ’emails./value’, etc.
Mobile Phone Number
The path which points to the entry of the user profile containing the mobile phone number. E.g. ‘phone’, ‘phones.mobile’, etc.
Test Authentication
The settings for OAuth 2.0 can be tested within the configuration. Since the test procedure includes several steps, it is necessary to save the settings first.
The assignment of an access token can be tested by pressing the ‘Test authentication’ button, while pressing the ‘Test profile extraction’ button initiates the complete OAuth 2.0 procedure, which assigns an access token and also collects a user profile with the required data.
Using OAuth for authorization on Azure
Authentication Settings
OAuth 2.0 Settings
These settings depend on the third-party provider.
Display Name
The display name is shown on the login button.
Client ID
The client ID identifies the application and is defined by the configuration on the OAuth server.
Client Secret
The client secret authenticates the application and is defined by the configuration on the OAuth server.
Scope
The scope determines which rights are gained with the access token. E.g. ‘profile’, ’email’, etc. for gaining rights to access the user profile/user email.
Authorization Endpoint
The authorization endpoint is the URL to which an authorization request is sent.
Token Endpoint
The token endpoint is the URL to which an access token request is sent.
Redirect Endpoint
The redirect endpoint is the URL to which the browser is directed after successful authorization. This URL needs to be entered in the OAuth server configuration.
Additional Query Parameters
You can add additional query parameters, such as name and value.
Icon
The icon will be displayed on the login mask above the display name.
OAuth Profile
Profile URL
The URL to which a user profile request is sent.
Profile Path
The path which points to the user profile. E.g. ‘/’, ‘profile’, ‘profiles[0]’ etc.
Profile Verb
GET, POST, PUT
First Name
The path which points to the entry of the user profile containing the first name. E.g. ‘givenName’, ‘person/firstName’, etc.
Last Name
The path which points to the entry of the user profile containing the last name. E.g. ‘surName’, ‘person/lastName’, etc.
E-Mail Address
The path which points to the entry of the user profile containing the email address. E.g. ‘mail’, ’emails[0]/value’, etc.
Mobile Phone Number
The path which points to the entry of the user profile containing the mobile phone number. E.g. ‘phone’, ‘phones/mobile’, etc.
Test Authentication
The settings for OAuth 2.0 can be tested within the configuration. Since the test procedure includes several steps, it is necessary to save the settings first.
The assignment of an access token can be tested by pressing the ‘Test authentication’ button, while pressing the ‘Test profile extraction’ button initiates the complete OAuth 2.0 procedure, which assigns an access token and also collects a user profile with the required data.
Content Files
Add
Slot
Description
contentFileAdd
This function adds a new content file
FileSystem:
Input parameters
Key
Type
Description
folderId
Integer
ID of the parent folder
name
String
File name (also used to determine the MimeType)
description
String (optional)
Description of the file
securitySchemeID
String
‘public’: file is public, ‘private’: file is not public
permissionObjectType
String
Must be specified as ‘Session’
permissionObjectID
String
The ID of the Object Type can be freely selected
data
String (optional)
Base64 encoded content of the file
uploadSession
String (optional)
Session of an AppServer Html5 Upload
copyFrom
Integer (optional)
ID of the copied file
Note:
The content of the file can be transferred in three different ways. Exactly one of the following parameters must be passed:
data: The content is passed directly with the JSON request as a Base64 encoded byte array.
uploadSession: The content is first transferred to the AppServer via chunked HTML5 upload and the returned session is used as source. The Content Repository plugin downloads the file from the app server and uses it as content of the file
copyFrom: The content is copied from another existing content file (copyFrom contains the ID of the file to be copied). Attention: The calling user must have the appropriate permissions to read the content file. Only the content is copied, not other properties (such as names, access rights, etc.). Any content file can be used as a source file, even in a different repository.
If the flag has the value ‘true’, any existing file with the same name will be overwritten;
If not set or ‘false’, the creation leads to an error if a file with the same name already exists
Note:
The content of the file can be transferred in three different ways. Exactly one of the following parameters must be passed:
data: The content is passed directly with the JSON request as a Base64 encoded byte array.
uploadSession: The content is first transferred to the AppServer via chunked HTML5 upload and the returned session is used as the source. The Content-Repo plugin downloads the file from the AppServer and uses it as the content of the file
copyFrom: The content is copied from another existing content file (copyFrom contains the ID of the file to be copied). Attention: The calling user must have the appropriate permissions to read the content file. Only the content is copied, not other properties (such as names, access rights, etc.). Any content file can be used as a source file, even in a different repository.
ID of the content repository in which the file is stored
sourceFilePath
String
Path of the file to be edited
destFilePath
String
Path incl. new name under which the file is to be stored
forceOverwrite
Boolean (optional)
If the flag has the value ‘true’, any existing file with the same name will be overwritten;
If not set or ‘false’, the creation leads to an error if a file with the same name already exists
The connector calls were generated automatically using the Connector Wizard:
Aside from the automated generated connector calls, you always have the possibility to add other connector calls via the plus icon.
In this example, we will only go in detail on SalesOrderCollection_ReadAll.
Test the connector call to make sure it works before you use it in the application.
Create the UI
Remember, we want to display the data of the Odata service in a table. The data should be loaded by pressing a button.
So at first, add the widget Button to the screen. Change the ID of the button accordingly (e.g. Button_Read) and add the appropriate text (e.g. Read) to the Properties.
For the UI you also need the Widget Table, so add it to the screen. Here you have to customize the properties as follows:
1. Make sure that itemsTemplate is activated.
2. Click on the Selection Helper at items.
A dialog opens in which you have to select the connector on the left and then the CollectionSalesOrder_Collection.
Since we want to display three values of the OData service, we still need three Columns in the table and a ColumnListItem that contains three Text widgets.
Your screen content should look like this:
Switch to the Process Designer and create the user story for the process logic.
Configure the Process Logic
Start the process with a Subscribe event of the read button (Widget Event: press). Then add the Data Object Connector and select the Connector and the corresponding Connector CallCategories_ReadAll.
For the Read Connector Call you don’t need an Input Mapping, because you don’t have to pass a value to read all data.
Only the output mapping has to be defined.
Open the Output Mapping and drag the Parameter from the left. Go deeper into Output – SalesOrderCollection.
Select the fields you need. For example, select BuyerId, GrossAmount and CurrencyCode by clicking on the plus.
After you have added the fields, click Ok.
Now you have to define the widgets (drag it from the right) in which the selected parameters should be mapped.
Select the screen, the widget Table and switch to Data Aggregation within the section Properties and Aggregations.
Go deeper into items.
Now go deeper into the items of the Table – ColumnListItem.
You will now see the three Text widgets as cells of the list item. For each Text you have to select String text as property. It then appears on the right under Selected Properties.
When you’ve done this for all three of them, click Ok.
Now map the parameters into the table. The Output Mapping should look like this:
After successful deployment the data will be read and displayed by clicking the button.
For this screenshot, in the UI Designer a label has been added to each column for the Buyer Id, Gross Amount and Currency Code.
SAP ERP6 ArchiveLink
SAP ERP6 (Enterprise-Resource-Planning) ArchiveLInk
Method
SAP Transaction
Description
READ
Read ArchiveLink Object.
READ_DOC
Read ArchiveLink Document.
UPLNK
Upload and link file to ArchiveLink.
SAP ERP6 Generic Object Services
SAP ERP6 (Enterprise-Resource-Planning) Generic Object Services
Method
SAP Transaction
Description
READ
Read Generic Object Service.
ADD_ATTACHEMENT
Add File to Generic Object Service.
DELETE_ATTACHEMENT
Delete File of Generic Object Service.
READ_ATTACHEMENT
Read File of Generic Object Service.
SAP ERP6 Object Classification
SAP ERP6 (Enterprise-Resource-Planning) Object Classification
Method
SAP Transaction
Description
READ
Read Object Classification.
CHANGE_CLASSES
Change Object Classification.
READ_CD_CLASS
Read Change Documents of Classification.
READ_CHARACTERISTIC
Read Characteristic.
SAP ERP6 Text
SAP ERP6 (Enterprise-Resource-Planning) Text
Method
SAP Transaction
Description
READ
Read a Text Object.
UPDATE
Update a Text Object.
SAP ERP6 Partner Schema
SAP ERP6 (Enterprise-Resource-Planning) Partner Schema
Method
SAP Transaction
Description
READ
Read a Partner Schema.
SEARCH
Search a Partner Schema.
SAP HR Time Sheet
SAP HR (Human Resources) Time Sheet
Method
SAP Transaction
Description
CREATE
CAT2
Create entries within a time sheet.
SAP IS-U Account
SAP IS-U (Industry Solution for Utilities) Account
Method
SAP Transaction
Description
READ
CAA3
Load an Account based on the Account number.
SAP IS-U Contract
SAP ISU (Industry Solution for Utilities) Contract
Method
SAP Transaction
Description
READ
ES22
Load a Contract based on the Contract number.
SEARCH_BY_INSTALLATION
Search Contracts based on Installation numbers.
SEARCH_BY_LIST
Search Contracts.
SAP ISU Meter Reading Order
SAP ISU (Industry Solution for Utilities) Meter Reading Order
Method
SAP Transaction
Description
CREATE
EL01
Create a Meter Reading Order object master data.
READ
EL31
Load a Meter Reading Order with the Meter object number.
SEARCH_BY_DEV
Search a Meter Reading Order by a Device object.
UPDATE_BY_DEV
Update a Meter Reading Order by a Device object.
SAP ISU Installation
SAP ISU (Industry Solution for Utilities) Installation
Method
SAP Transaction
Description
CREATE
ES30
Create Utility Installation object master data.
READ
ES32
Load a Utility Installation based on the Utility Installation object number.
UPDATE
ES31
Update Utility Installation.
CREATE_WITH_POD
ES30
Create Utility Installation object with Point of Delivery object.
DEVICE_INSTALL
EG34
Install Device into Installation object.
DEVICE_REMOVE
EG35
Remove Device from Installation object.
GET_SYNPROF_CONSUMPTION
Get Consumption values from Synthetic load profile.
SEARCH
Search Installation object.
SEARCH_BY_POD
Search Installation object based on Point of Delivery object.
SAP ISU Meter
SAP ISU (Industry Solution for Utilities) Meter
Method
SAP Transaction
Description
READ
IE30
Load a Meter with the Meter object number.
SEARCH_BY_INSTLN
Search a Meter by Installation object.
SAP ISU Owner Allocation
SAP ISU (Industry Solution for Utilities) Owner Allocation
Method
SAP Transaction
Description
CREATE
ES51
Create Owner Allocation object master data.
READ
ES53
Load an Owner Allocation on the Owner Allocation object number.
UPDATE
ES52
Update Owner Allocation.
CANCEL
ES54
Cancel an Owner Allocation object.
SAP ISU Point of Delivery
SAP ISU (Industry Solution for Utilities) Point of Delivery
Method
SAP Transaction
Description
CREATE
EEDM11
Create Point of Delivery object master data.
READ
EEDM11
Load a Point of Delivery based on the Point of Delivery object number.
UPDATE
EEDM11
Update Point of Delivery.
SEARCH
Search Point of Delivery object.
UPDATE_EXT_UI
Update External identification of Point of Delivery object.
SAP ISU Service Order
SAP ISU (Industry Solution for Utilities) Service Order
Method
SAP Transaction
Description
CREATE
EE73
Create Service Order object master data.
READ
EE73
Load a Service Order with the Service Order object number.
SAP ISU Street
SAP ISU (Industry Solution for Utilities) Street
Method
SAP Transaction
Description
READ
SR22
Load a Street using the Street object number.
SAP ITIZ Handler
SAP ITIZ Handler
Method
SAP Transaction
Description
EXECUTE
Execute the Handler Object.
SAP ITIZ SDSH
SAP ITIZ SDSH (SAP Determine Search Help)
Method
SAP Transaction
Description
EXECUTE
SE11
Execute a Search Help
READ_METADATA
SE11
Read Metadata of a Search Help
SAP ITIZ UI5
SAP ITIZ UI5
Method
SAP Transaction
Description
CREATE
Upload an UI5 App
SAP MM Purchase Requisition
SAP MM (Material Management) Purchase Requisition
Method
SAP Transaction
Description
READ
ME53N
Load a MM Purchase Requisition using the Purchase Requisition number.
SAP PM Measurement Point
SAP PM (Plant Management) Measurement Point
Method
SAP Transaction
Description
READ
IK03
Load a measurement point using the object key.
SEARCH_BY_REPORT
Search for measurement point by a report.
SAP PP Material BOM
SAP PP Material BOM
Method
SAP Transaction
Description
CREATE
CS01
Create a material BOM object.
READ
CS03
Load a material BOM using the object key.
Collaboration
You will receive a notification at the bottom right as soon as another user starts editing the same application:
As soon as the user starts editing the same screen, the color of the button (in the upper right as well as in the screen content tree) changes to red. To show all editors, click on the button to open a popover with the editing users.
The list of editors is always up to date, so you get an immediate response if someone else starts editing the screen.
Due to the autosave function, there are possibilities to make changes undo or redo. That means, that user actions within the screen content and properties can be undone by clicking on the undo-icon.
The undo-list offers the last actions on the current screen, starting with the last one. If you select an entry from the list, it will be undone including its subsequent actions.
An avatar screen of the corresponding user is displayed within the list. In the case of collaboration, it becomes obvious that the operation will eventually undo the work of another user.
edit widget properties, including ID, data aggregation, validations and events
Please note:
The undo lists at the application level are only retained as long as a user is active in the UI Designer. When the last user leaves the application, the lists and all deleted screens are permanently deleted.
The redo-icon provides recently undone actions to redo. The list is cleared when regular editing takes place.
Here you can find information about all specific data of an SAP RFC connector. To set up a basic SAP RFC connector, please follow the instructions in SAP RFC Quickstart.
SAP System Mandatory Information
The following parameters are mandatory:
Parameter
Description
Example
Mandatory
JCo Configuration Key
System ID
Unique ID of the SAP System
ID4
Yes
–
System Number
SAP System instance number, maximum two digits
80
Yes
jco.client.sysnr
Client Number
Number of the SAP Client, always three digits
100
Yes
jco.client.client
Language
Default language of the SAP System that must have the language installed
en
Yes
jco.client.lang
SAP System Optional Information
The following parameters are optional:
Parameter
Description
Example
Mandatory
JCo Configuration Key
User name alias
Alias for the user name
RFCtest
No
jco.client.alias_user
R3 system number
Number of the SAP R3 system
80
No
jco.client.r3name
SAP system group
SAP system group
GRP
No
jco.client.group
SAP Client Type
SAP internal value
Not Defined
No
jco.client.type
SAP Internal Value
Name
Description
SAP Internal Value
Not Defined
It is never set in the configuration, it serves only as default value.
–
R2 System
The R2 system.
2
R3 System
The R3 system.
3
External System
An external system.
E
Connection Pool
Parameter
Description
Mandatory
JCo Column Key
Peak Limit
Peak Limit in [Milliseconds]
No
jco.destination.peak_limit
Pool capacity
Pool capacity (default value is 1)
No
jco.destination.pool_capacity
Expiration Time
Expiration Time in [Milliseconds]
No
jco.destination.expiration_time
Expiration Period
Expiration Period in [Milliseconds]
No
jco.destination.expiration_check_period
Maximum Client Get Time
Maximum Client Get Time in [Milliseconds]
No
jco.destination.max_get_client_time
SAP System Host-Information
Please fill out either application server or gateway server hostname to define the endpoint to the SAP backend system.
A maximum of one router can be configured, so it is currently not possible to connect them in series.
Parameter
Description
Mandatory
Use an SAP Router
Activate the use of an SAP Router
No
Router name
The IPv4 address or hostname of the SAP router
Yes
Use a default port
Activate the use of a default port
No
Port
Port of Router (0-65535)
Yes
SNC Settings (Optional)
The Simplifier can authenticate itself via X509 server certificates for RFC connections to SAP systems.
It is necessary that the environment variables for the SAP Key Store and Secure Lib are set correctly. The user name of the X509 certificate must match the name specified with the user name of the specified User Credentials login method.
Parameter
Description
Mandatory
JCo Configuration Key
SNC Mode Active
Activates the SNC communication. SNC Parameters may be configured
Yes
jco.client.snc_mode
SNC Name
The name of the SNC user that is used for the SNC communication
No
jco.client.snc_myname
SNC Partner
The name of the SNC Communication Partner
Yes
jco.client.snc_partnername
SNC-SSO Mode
Determines whether SSO attempts should be included in SNC communication
Yes
jco.client.snc_sso
SNC Quality of Protection
The protection quality of the SNC communication determines which part of the communication is encrypted
Yes
jco.client.snc_qop
SNC Quality of Protection
Name
Description
SAP Internal Value
Only Authentication
Minimum protection
1
Integrity Protection on top of authentication
Authentication and integrity
2
Privacy Protection on top of integrity protection and authentication
Maximum protection
3
Default Protection
Use the value from snc/data_protection/use on the application server
8
Maximum Protection
Use the value from snc/data_protection/max on the application server
This call can only be used with an asynchronous connector.
Parameter
Description
Data Type
Mandatory
operationType
The type of the performed operation here: MONITORING
String
Yes
publishingInterval
The interval in [milliseconds] when changes are published
Double
Yes
returnedTimestamps
Enumeration value, which type of timestamp should be returned, see ReturnedTimestampEnumeration
String
Yes
globalMonitoringParameters
Global configuration for all monitored items. See MonitoringParameters
MonitoringParameters
Yes
monitoredItems
The list of items, which should be monitored i.e. from which value changes should be pushed by the connector.
List[MonitoredItem]
Yes
ReturnedTimestampEnumeration
NEITHER_TIMESTAMPS: No timestamp should be retruned at all.
SERVER_TIMESTAMP: The timestamp from the OPC-UA Server should be returned.
SOURCE_TIMESTAMP: The timestamp from the Source should be returned.
BOTH_TIMESTAMPS: The timestamp from the OPC-UA Server as well as the Source should be returned.
MonitoringParameters
Parameter
Description
Data Type
Mandatory
monitoringMode
The monitoring mode enumeration value see MonitoringModeEnumeration
String
Yes
samplingInterval
The sampling interval in [milliseconds] in which the OPC-UA Server looks if changes occurred for the monitored items
Double
Yes
queueSize
The queue size of changes, which are aggregated for a publishing interval
Int
Yes
discardOldestItem
A flag, which indicates, that the oldest change may be dropped.
Boolean
Yes
MonitoringModeEnumeration
REPORTING: Each change will be propagted.
SAMPLING: Changes will be determined by samples in a provided samplingInterval.
DISABLED: No Changes will be propagated at all.
MonitoredItem
Parameter
Description
Data Type
Mandatory
nodeId
The node Id information, see NodeId
[NodeId]
Yes
monitoringParameters
The optional monitored item parameter definition, see MonitoringParameters
[MonitoringParameters]
No
NodeId
Parameter
Description
Data Type
Mandatory
identifier
The identifier name.
String
Yes
namespaceIndex
The namespace index from 0 to 65535
String
Yes
identifierType
The identifier type enumeration, see IdentifierTypeEnumeration, the identifier will be searched as the provided identifier type.
String
No
IdentifierTypeEnumeration
NUMERIC: The identifier is a numerical value.
UUID: The identifier is a 16-characters Unique Identifier.
STRING: The identifier is a string.
BYTE_STRING: The identifier is a byte array in a string representation.
Using SAML with Google – G Suite
The prerequisite for using SAML with Google is G Suite with administration rights.
Log in at admin.google.com with your Google account, select the item “Apps” and then the item “SAML-Apps”.
Use the “+” button to create an SSO for a SAML application.
At the bottom of the pop-up, you can select “SETUP MY OWN CUSTOM APP”.
Google will provide you with two options. Please download the IDP Metadatafile under option two and press NEXT.
Here you can assign a freely selectable name, in our example “Simplifier-Tutorial” with the description “Simplifier SAML”. In the lower area you can upload a logo. Here you can download the Simplifier logo.
Now open the user interface of Simplifier parallel in a new tab and open the settings and select “Authentication”.
Here you create a new authentication method with the “+” symbol, set a name for this method e.g. “Google”, set priority to “0” and select Mechanism to “SAML 2.0”.
Now you can specify a display name and set the maximum lifetime to “486000” seconds (8 hours) as suggested by us.
Copy the Service Provider Endpoint and paste it into the Service Provider Entity ID.
Now open the IDP Metadata File already downloaded from Google: GoogleIDPMetadata-<your-domain>.xml with a text editor of your choice and copy the content into IDP Metadata. Additionally you can define a logo.
Please copy the Service Provider Entity ID again and switch to the Google Admin Portal. There you paste the previously copied URL under ACS URL and Entity ID. In the field ACS URL, the domain must be added “:443”.
Leave the Start URL field empty and tick the checkbox at Signet Response.
Click on NEXT and then on FINISH.
Then you have to edit the attributes Mapping.
Click on ADD NEW MAPPING.
Please transfer the values from the Simplifier Settings page as in the example and save them in Simplifier as well as in the Google Admin Portal.
Finally, the SAML app must be activated for all or certain users in Google. Click on EDIT SERVICE and select “ON for everyone” and SAVE.
Now you can login to Simplifier with your Google account by clicking on the SAML button, in our case “Google”. This will open the Google Login page. After successful authentication, you will be redirected to the Simplifier dashboard.
Using SAML with Microsoft ADFS
Open the user interface of Simplifier, open the settings and select “Authentication”.
Here you create a new authentication method with the “+” icon, set a name for this method e.g. “ADFS”, set priority to “0” and select Mechanism to “SAML 2.0”.
Now you can specify a display name and set the maximum lifetime to “486000” seconds (8 hours) as suggested by us.
Important: The ADFS setting for maximum lifetime is 480 minutes (8 hours), so increase this value when authenticating with an ADFS service.
Copy the Service Provider Endpoint and paste it into the Service Provider Entity ID.
For using Microsoft ADFS as SAML Service Provider, you must build an XML metadata file with the use of SAML TOOL.
Go to SAML TOOL to build the XML metadata and fill out the required fields:
SAML TOOL
Simplifier
Description
Attribute Consume Service Endpoint (HTTP-POST)
Service Provider Entity ID
Endpoint URL that needs to be configured in SAML IDP. It is set by the instance name and the previously assigned authentication name by Simplifier.
EntityId
Service Provider Endpoint
At default, the entity ID of your application (Service Provider) is equal to the callback URL, but you can force your own entity ID by setting this parameter.
SP X.509 cert
The certificate bundle is created in the next step and inserted into Simplifier data storage.
Only the certificate (*.crt) is required.
A certificate bundle is required for SAML authentication. To create the XML metadata, the CRT in x.509 format is needed and Simplifier needs a JKS bundle.
To create the required certificates, we have created a bash script in the Simplifier Docker Container.
Insert the output of the script (certificate) into the SAML tool and click on the button ‘BUILD SP METADATA’.
Now copy the content into IDP Metadata into a text editor of your choice and save the IDP Metadata File with a suffix equal to .xml
Now open the AD FS Management.
Open the “Add Relying Party Trust…” wizard, choose “Claims aware” and click on “Start”.
Use the option “Import data about the relying party from a file”, upload the previously created XML file and click on “Next”.
Enter a name, a note if necessary and click on “Next”.
Use the default setting “Allow everyone access” and click “Next”.
Make sure that the checkbox “Configure claims issuance policy for this application” is ticked.
Then click on “Close”.
A new pop-up will open, in which a new rule has to be created.
Set: “Send LDAP Attributes as Claims” and click on “Next”.
Enter a name for the rule, select Attribute store to “Active Directory”, transfer the values from the Simplifier Admin UI to the role and add an additional entry:
“User-Principal-Name” -> “Namens-ID”
Press “Finish” and then “OK”.
The IDP metadata file required for Simplifier can now be obtained from the SPE. This must be entered in the IDP metadata field.
With ADFS ( Windows Server 2016 ) this would be:
After you have saved the Simplifier settings, the Simplifier Container must be restarted.
docker restart <SimplifierContainerName>
Now you can log in to Simplifier via SAML.
Users newly created by SAML do not yet have any permissions in Simplifier and only see their own user. You can assign them the desired rights and roles after the initial login.
Packages
The Packages define a number of items that are bundled in an export.
Once you have selected a package, you will see information about Creator and Create Date on the right. If the package is not approved yet, you can do it with the button “Approve”, if you have the appropriate rights. Below you can see which items are assigned to the package.
By pressing the “Export” button, the current versions of all selected items are written to an export file and downloaded.
Furthermore, you have the possibility to edit a package, to switch to the detail view or to delete it.
Edit a package
If you edit a package (you can do this by pressing the Edit button or double-clicking on the entry), you will be redirected to the package’s edit screen.
Tick the items on the left that should be in your package.
Click the > button to add the item to your package. With the < button you can remove items from your package.
You can add a new instance by pressing the plus icon in the upper right corner.
The following dialog appears:
Set a name, the URL, optional a description. Select the type and upload an icon, otherwise a default icon is set. Save your settings.
In the overview, you have the usual possibilities. Once you have selected an entry, you can adjust your previously defined settings on the right and activate or deactivate the instance.
Connector calls are always executed with the settings of the active instance.
Modules
Modules enable the logical separation of user interfaces and application logic. It divides your application into smaller components, increasing reusability, improving runtime performance through dynamic loading, and improving maintenance.
Add a new module by pressing the plus button in the top right corner.
Set a Name and a Description. The Default Language is American English; you can change it by pressing the drop down. You don’t need to set the Transport-Name, because it is generated automatically.
Now the module has been created and is displayed in the overview. You can search for name, description, author or framework.
On the right side, you have the usual possibilities. You can edit the module, which leads you to its UI Designer, switch to the preview, or delete it. There is also the option to edit the description, copy the module or show the module usage in apps, which allows you to jump directly into the application by clicking on it.
Within the editing of the modules, you have almost the same possibilities as in the editing of applications.
All dependencies that a module uses will be available within its own namespace as follows:
Before: io.simplifier.widgets.Text→ After: <ModulName>Widgets.io.simplifier.widgets.Text→ MyModuleWidgets.io.simplifier.widgets.Text (example)
Permissions and Auto fields
A module has its own permissions and auto fields when it is launched standalone, i.e. anonymous logins, user logins, and auto fields, etc. are handled as in a normal app. When the module is loaded within an app, it does not provide its own auto fields or permissions but instead uses the permissions and auto fields of the parent app.
When a module is loaded by an app and defines any asset that is also defined by the app itself, the module’s assets are overwritten by the app’s assets. If there is a conflict between the modules, a warning is displayed explaining the merge behavior:
If libraries with the same name and different versions are used in different modules within the same app, all these libraries will be loaded. The library definition therefore determines what happens when running the app. (One could overwrite the other, or both could coexist, based on the include section of the library).
CSS is merged in the order in which modules are received by the app generator (randomly). If two modules define the same CSS rule, one wins randomly. The same rule applies to images, .js or other files.
Languages
Translation files of modules loaded by apps are merged into the app’s translation files so that the app’s language files contain all translations. The module’s translation keys are therefore prefixed with the module name, but if a module defines a language that does not exist in the main application, it is not included.
Theming
Modules cannot provide their own design, therefore the design of the app is used when loading.
FrontendIdentifier
For modules, the FrontendIdentifier cannot be edited and is fixed to the name of the module to avoid conflicts. It is still possible to edit the frontend identifier of apps.
Simplifier Client
Modules are not listed in the app list of the Simplifier Client.
HTML-Ids Prefixed
HTML elements in modules are always prefixed with the module name to avoid conflicts with elements of the same name in apps.
Interfaces are used for communication between the application and the modules to exchange data bidirectionally.
When creating a new interface via the plus button on the top right, the following pop-up appears:
An interface of a module is defined by its unique name and a set of parameters, where Input Parameters are passed from the application to a module and Output Parameters are sent from a module to an application.
Use Interfaces in Process Designer
The Process Designer of the modules is similar to the Process Designer of the applications. However, among the activities, there is an explicit point for modules: App Interface.
Receive from App
This shape starts an action when the application is calling the module via an interface. Double click on it or open the selection helper on the right side to configure the shape by selecting an interface of the current module and the mapping of parameters, that are received from the app.
Send to App
This shape is used to return parameter data and/or trigger an action in the controlling app. Double click on it or open the selection helper on the right side to configure the shape by selecting an interface of the current module and the mapping of parameters to send it to the application.
You also have the option to switch between these two activities.
Use Modules
To integrate a module into an app, a sap.ui.core.ComponentContainer must first be defined in the UI Designer.
In the Process Designer, you can configure your process with the activity “Module”, that includes Setup Module, Receive from Module and Send to Module.
Setup Module
The shape Setup Module has two different types, “Load” and “Unload”. You can change the type within the settings panel on the right. By changing the type, the shape and the settings are changed. The default type of Setup Module is “Load”.
Load Module
This shape has one input port and two output ports (Success and Error). Its setting options are the selection of a module and the selection of a container element.
Unload Module
This shape has one input port and two output ports (Success and Error). By selecting a Module, it will be unloaded in the process.
Receive from Module
This shape has only one output port. In the settings panel on the right you can select the Module, the Interface and set the mapping of the selected interface. Only output parameters of the interface can be mapped for the subscription.
Send to Module
This shape is the counterpart to “Receive from Module”. It has only one input port. In the settings panel on the right you can select the Module, the Interface and set the mapping of the selected interface. Only input parameters of the interface can be mapped.
OData V2 Connector Calls
Once you have created the connector, you are navigated directly to the overview of connector calls. You can either create them yourself using the “+” or simply use the Connector Wizard.
First Step – Select Entity Sets:
In the first step, select the required entity sets. The table on the left shows all possible entity sets. Select the required entity sets and move them to the right table using the arrow keys in the middle.
Second Step – Select Operations:
In the second step, select the operations for that connector calls should be created. The left table shows all possible operations for the previously selected entity sets. Select the required ones and move them to the right table using the arrow keys in the middle. Operations that already have a connector call are printed bold.
The Proxy Connector allows the usage of any HTTP services that are not based on specific protocol architectures such as REST, SOAP or OData.
Create a new connector and select Proxy as a connector type. Within the specific data on the right, define the endpoint. Optionally, you can also define request headers to pass through and response headers to pass through.
The Advanced Encryption Standard (AES) is a U.S. Federal Information Processing Standard (FIPS). It was selected after a 5-year process where 15 competing designs were evaluated.
MD5 is a widely used hash function. It’s been used in a variety of security applications and is also commonly used to check the integrity of files. Though, MD5 is not collision resistant, and it isn’t suitable for applications like SSL certificates or digital signatures that rely on this property.
File
Type
Usage
Example
md5.js
Hash
Integrity checks
CryptoJS.MD5(“Message”)
PBKDF2
PBKDF2 is a password-based key derivation function. In many applications of cryptography, user security is ultimately dependent on a password, and because a password usually can’t be used directly as a cryptographic key, some processing is required.
A salt provides a large set of keys for any given password, and an iteration count increases the cost of producing keys from a password, thereby also increasing the difficulty of attack.
Rabbit is a high-performance stream cipher and a finalist in the eSTREAM Portfolio. It is one of the four designs selected after a 3 1/2-year process where 22 designs were evaluated.
RC4 is a widely-used stream cipher. It’s used in popular protocols such as SSL and WEP. Although remarkable for its simplicity and speed, the algorithm’s history doesn’t inspire confidence in its security.
It was discovered that the first few bytes of keystream are strongly non-random and leak information about the key. We can defend against this attack by discarding the initial portion of the keystream. This modified algorithm is traditionally called RC4-drop.
By default, 192 words (768 bytes) are dropped, but you can configure the algorithm to drop any number of words.
Strengthend version of the now insecure RIPEMD hash function.
File
Type
Usage
Example
ripemd160.js
Hash
Cryptocurrencies
CryptoJS.RIPEMD160(“Message”)
SHA-1
The SHA hash functions were designed by the National Security Agency (NSA). SHA-1 is the most established of the existing SHA hash functions, and it’s used in a variety of security applications and protocols. Though, SHA-1’s collision resistance has been weakening as new attacks are discovered or improved.
File
Type
Usage
Example
sha1.js
Hash
Integrity checks
CryptoJS.SHA1(“Message”)
SHA-2
File
Description
Type
Usage
Example
sha256.js
SHA-256 is one of the four variants in the SHA-2 set. It isn’t as widely used as SHA-1, though it appears to provide much better security.
Hash
Integrity checks
CryptoJS.SHA256(“Message”)
sha512.js
SHA-512 is largely identical to SHA-256 but operates on 64-bit words rather than 32.
CryptoJS.SHA512(“Message”)
sha224.js
CryptoJS also supports SHA-224 and SHA-384, which are largely identical but truncated versions of SHA-256 and SHA-512 respectively.
CryptoJS.SHA224(“Message”)
sha384.js
CryptoJS.SHA384(“Message”)
SHA-3
SHA-3 is the winner of a five-year competition to select a new cryptographic hash algorithm where 64 competing designs were evaluated.
NOTE: I made a mistake when I named this implementation SHA-3. It should be named Keccak
. Each of the SHA-3 functions is based on an instance of the Keccak algorithm, which NIST selected as the winner of the SHA-3 competition, but those SHA-3 functions won’t produce hashes identical to Keccak.
File
Type
Usage
Example
sha3.js
Hash
Integrity checks
CryptoJS.SHA3(“Message”)
DES
DES is a previously dominant algorithm for encryption and was published as an official Federal Information Processing Standard (FIPS). DES is now considered to be insecure due to the small key size.
Attribute or path which points to the entry of the user profile containing the first name, e.g. ‘id’, ‘user.userName’, etc
First Name
Attribute or path which points to the entry of the user profile containing the first name, e.g. ‘givenName’, ‘person.firstName’, etc
Last Name
Attribute or path which points to the entry of the user profile containing the last name, e.g. ‘surName’, ‘person.lastName’, etc
E-Mail Address
Attributes or path which points to the entry of the user profile containing the email address, e.g. ‘mail’, ’emails.0.value’, etc
Mobile Phone Number
Attribute or path which points to the entry of the user profile containing the mobile phone number, e.g. ‘phone’, ‘phones.mobile’, etc
Salutation
Attribute or path which points to the entry of the user profile containing the salutation, e.g. ‘salutation’, ‘user.salutation’, etc
User Attributes Synchronization
To map attributes from external authentication systems, activate the toggle Activate External Attribute Synchronization.
It is possible to control which attribute of the external user profile should be assigned to the Simplifier user.
User Attribute
Describes the key under which the external attribute is assigned to the Simplifier user.
Profile Attribute
Describes the value which should be taken from the external user profile
If the external user profile does not possess an entry for the provided attribute, then no attribute will be assigned to the Simplifier user. Already existing attributes under names, which are not defined in the table are not affected.
User Roles Synchronization
The specified roles are assigned if external role synchronization is deactivated (default roles).
If no roles are specified, the role iTZ_Ext_Auth_User is assigned.
If external role synchronization is activated, the default roles are only assigned if no mapping criteria could be applied (fallback roles).
It is possible to define a ruleset to add roles for external Simplifier users. The rules work with the profile attributes returned by the external authentication mechanism.
By defining one or more rules for a Simplifier user role in combination with a profile attribute, the desired value and the desired rule, at least one rule that matches is assigned to the user.
There are 14 condition rules to choose from:
Symbol
Name
Description
∃
Profile Attribute exists
The profile attribute for the provided name was returned by the external authentication system
∄
Profile Attribute does not exist
The profile attribute for the provided name was not returned by the external authentication system
=
Equals
The profile attribute value for the provided name equals the provided value to check against
≠
Not equal
The profile attribute value for the provided name does not the provided value to check against
>
Greater
The profile attribute value for the provided name is greater than the provided value to check against
≥
Greater or equal
The profile attribute value for the provided name is greater or equal than the provided value to check against
<
Lower
The profile attribute value for the provided name is lower than the provided value to check against
≤
Lower or equal
The profile attribute value for the provided name is lower or equal than the provided value to check against
⊃
Contains
The profile attribute value for the provided name contains than the provided value to check against
Contains does not mean, Equal! Equality will not match.
⊅
Does not contain
The profile attribute value for the provided name contains than the provided value to check against
Contains does not mean, Equal! Equality will not match.
⊃ Key
Key exists
The profile attribute value for the provided name is an object/array and has the provided value as key
⊅ Key
Key does not exist
The profile attribute value for the provided name is an object/array and does not have the provided value as key
⊃ Value
Value exists
The profile attribute value for the provided name is an object/array and has the provided value as value
⊅ Value
Value does not exist
The profile attribute value for the provided name is an object/array and does not have the provided value as value
Test Authentication
The settings for the mechanism can be tested within the configuration. Since the test procedure includes several steps, it is necessary to save the settings first.
The assignment of an access token can be tested by pressing the Test authentication button.
SAP RFC Connector Call Configuration
Each call can have its own configuration. With this, the behavior relayed input and output can be configured. Values can depend on the operation, therefore this page is an overview page. Each configuration parameter has to be provided with the keyword configuration. Meaning configuration parameter X should be configuration/X. When using batch calls you have to provide the configuration parameters for each entry [0]/configuration/X for the first entry or [2]/configuration/X for the third entry. If a parameter requires a special path it will be mentioned, it has to be applied before the parameter and after the configuration key.
Using the examples above, you can allow or block the paths to the applications for the public in your firewall, web application firewall, load balancer or reverse proxy settings.
Here you find a selection of our standard widgets. Please take a look at the OpenUI5 Documentation if the widget you are looking for is not listed here.
The Bar control consists of three areas to hold its content. It has the capability to center content, such as a title, while having other controls on the left and right side.
A wrapper around the IMG tag. The image can be loaded from a remote or local server.
Density related image will be loaded if image with density awareness name in format [imageName]@[densityValue].[extension] is provided. The valid desity values are 1, 1.5, 2. If the original devicePixelRatio isn’t one of the three valid numbers, it’s rounded up to the nearest one.
There are various size setting options available, and the images can be combined with actions.
Provides a textual label for other controls. Labels are used as titles for single controls or groups of controls. Labels for required fields are marked with an asterisk.
Label appearance can be influenced by properties, such as textAlign, design, displayOnly, wrapping and wrappingType.
The Text control can be used for embedding longer text paragraphs, that need text wrapping, into your app. If the configured text value contains HTML code or script tags, those will be escaped.
The sap.m.FlexBox control builds the container for a flexible box layout. Note: Be sure to check the renderType setting to avoid issues due to browser inconsistencies.
The SimpleForm control provides an easy-to-use API to create simple forms. Inside a SimpleForm control, a Form control is created along with its FormContainer elements and FormElement elements, but the complexity in the API is not exposed to the user.
A layout control which positions its child controls in a 12 column flow layout.
The Grid control’s children can be specified to take on a variable amount of columns depending on available screen size. With this control, it is possible to achieve flexible layouts and line-breaks for extra large-, large-, medium- and small-sized screens, such as large desktop, desktop, tablet, and mobile.
The Grid control’s width can be percentage- or pixel-based and the spacing between its columns can be set to various predefined values.
Defines layout data for the sap.ui.layout.Grid. Note: When GridData is used for controls inside a form, the linebreak property has to be set to true if the next form element has to be displayed on a new line. Otherwise, the GridData overrides the layout provided by the Form.
sap.m.ColumnListItem can be used with the cells aggregation to create rows for the sap.m.Table control. The columns aggregation of the sap.m.Table should match with the cells aggregation. Note: This control should only be used within the sap.m.Table control. The inherited counter property of sap.m.ListItemBase is not supported.
The List control provides a container for all types of list items. For mobile devices, the recommended limit of list items is 100 to assure proper performance. To improve the initial rendering of large lists, use the “growing” feature. Please refer to the SAPUI5 Developer Guide for more information.
sap.m.Table control provides a set of sophisticated and convenience functions for responsive table design. To render the sap.m.Table properly, the order of the columns aggregation should match with the order of the items cells aggregation (sap.m.ColumnListItem). Also sap.m.Table requires at least one visible sap.m.Column in columns aggregation. For mobile devices, the recommended limit of table rows is 100 (based on 4 columns) to assure proper performance. To improve initial rendering on large tables, use the growing feature.
The CheckBox control consists of a box and a label that describes its purpose. If it’s checked, an indicator is displayed inside the box.
To select/deselect the CheckBox, the user has to click or tap the square box or its label. Clicking or tapping toggles the CheckBox between checked and unchecked states. The CheckBox control only has 3 states – checked, unchecked and partially selected.
The text area is used to enter multiple lines of text. When empty, it can hold a placeholder similar to an input. You can define the height and width of the text area and also determine specific behavior when handling long texts.
Implementation of Web Application Firewalls
As an example, a policy configuration of the OTC WAF for the use of the customer marketplace application “KUN” based on Simplifier
Example as an intuitive graphic of the network structure for public access to Simplifier
Network – High Secure Modell
The used structure is a redundant data storage in two data centers. The Web Application Firewall, as well as the database and block storage, are operated redundantly in both data centers. If the active data center fails, the passive instance is made completely automatically operational and is now activated by the load balancer.
Authentication for Web Applications
When authenticating for web applications, you should differentiate between internal and external employees.
Internal employees should only authenticate via single sign-on and internal IDP.
For external employees, you should define password policies and set up a logon configuration.
Access Control for Web Applications
Access control is very important because it prevents unauthorized persons from having access.
Use the standard roles for access control
SF_Administrator
This is a role for all AdminUI permissions
SF_AppBuilder
This role provides the permissions for App creation
SF_AppUser
This role provides the permission to execute Apps
SF_Developer
This role provides the permissions to create Apps and building blocks such as Business Objects, Connectors, etc.
SF_ExtAuthUser
This is a role for read-only users that are synced from an external authentication-service
In general, you should only assign permissions with the Characteristic Execute to end-users.
Never assign the Permission Roles with the Characteristic Assign to external users!
Never select this checkbox for external or non-administrative users!
Monitor role changes in the system centrally
All changes are written to the system log. This enables you to monitor role changes centrally, as well as role and permission assignments.
Secure Session Management
To ensure a secure session management, you should configure the session parameters as required.
If you set the authentication token to active, the checking interval to e.g. 10 seconds and the maximum lifetime of the authentication token to 3600 seconds, that means that every 10 seconds it will be checked if you are inactive. If you are inactive for about 3600 seconds, you will be automatically logged out.
Controlled Integration of Data and Content into Web Applications
Recommendation: In general, uploads to Simplifier should be checked by a Web Application Firewall (WAF) virus scanner or by connecting an external virus scanner via ICAP interface in the configuration of the reverse proxy.
If a virus is found, the WAF or ICAP connected virus scanner should respond with an HTTP header status code to 409 (Conflict).
The body of the response (JSON format) should look like this:
{
success: false,
msg: "A virus was found in the file. The file cannot be uploaded."
}
The widget “FileUploader” is configured to process a status code 409 as a virus discovery.
Logging of security-relevant Events of Web Applications
You can centrally monitor Simplifier for security-relevant events.
Protection against Unauthorized Automated Usage of Web Applications
To protect the web application from unauthorized automated usage, you should:
In the tab Widget Categories, you get an overview of all categories. These are the categories including the widgets, that are displayed in the UI Designer.
On the right side, you can create a new category, delete a category and take a look at the description or which widgets are assigned to the category.
Click on the + on the right side to create a new category.
The category needs to be assigned on the widget itself, not in the overview of the widgets.
Mobile Real-Time Preview
Use the Mobile Real-Time Preview to see the changes in UI Designer directly on several mobile devices simultaneously.
Click on the Show on Mobile Device button
and scan the QR code with the mobile client on your mobile device.
For this you need to activate the developer mode in the Mobile Client.
The mobile device is not only able to display the current screen preview, but even shows all changes made during editing. If you switch to another screen, the mobile device follows accordingly.
If you leave the editor, the live preview on the mobile device is also closed.
Database Designer
Introduction
With the Database Designer, it is possible to easily define database schemas and deploy them to a database endpoint via Connectors. Deployed database schemas can be used as a backend for the Simplifier applications.
This documentation covers the whole functionality of the Database Designer.
Schema Overview
The Database Designer can be reached via the tile “Database Designer“. The main screen of the Database designer contains a list of all currently existing database schemas. The user has the option to create a new database schema via the “plus”-icon in the top-right corner. It is also possible to select an existing database schema and view, edit or even delete it.
Schema Details
Schema-Details-View
When you decide to create a new schema or view/edit an existing schema, you get to the Schema-Details view. Here you can see all the important information about the schema.
On the left side, there is an Entity-Relation Diagram (ER-Diagram) representing the schema. Each database table in the schema is represented as a box. In the box, you can see the name of the database table and a list of all columns of the table. If the database table has a foreign key to another table, it is displayed as an arrow pointing to the target table. When creating or editing a database schema, you can add a new entity to the diagram by hitting the “Add Entity” button in the top right corner of the ER-Diagram.
In the ER-Diagram, you can select a table to see or edit its properties like name or description. These are displayed on the right side of the screen in the “Properties“-section. You can also select a foreign key to view its properties. These can however only be changed in the Table-Details-View (see below). If no table or foreign key is selected, you can see the general properties of the database schema.
Properties can only be edited if the table or foreign key is not deployed to a data source.
When a database table is selected, you can edit the columns, indexes and foreign keys of that table by clicking on the “Edit table details“-button in the Properties section. This will take you to the Table-Details-View.
Table-Details-View
The Table-Details-View consists of three sub-views: Columns, Indexes, and Foreign Keys.
Columns
In this view, you can add new columns to the database table or edit the properties of existing columns. It is also possible to remove a column from the table.
The following properties can be edited for a column:
Name
The name of the column (cannot be edited if the column is already deployed to a data source).
Description
A description for the column.
Type
The datatype of the Column (e.g. String, Integer, …).
Character limit
With a checkbox whether or not the column should be limited. Only String-Type columns can have a character limit.
Default Value
With a checkbox whether or not a default value should be used.
NotNull
Indicating if the column is able to store null values or not.
Auto-Increment
Whether or not the column should have automatically incrementing values. It is only possible to have one Auto-Increment column per table and it has to be an Integer-Type column.
Indexes
In this view, you can add new indexes to the database table or edit the properties of existing indexes. It is also possible to remove an index from the table.
The following properties can be edited for an index:
Name
A unique name for the Index.
Description
A description for the index.
Type
The type for the index (Index, Primary Key, Unique).
Columns
The columns to which the index should be mapped. This input provides an auto-complete for the existing column names in the table.
Foreign Keys
In this view, you can add new foreign keys to the database table or edit the properties of existing foreign keys. It is also possible to remove a foreign key from the table.
The following properties can be edited for a foreign key:
Name
A unique name for the foreign key.
Description
A description of the foreign key.
Target table
The target table for the foreign key. The dropdown contains the names of existing tables of the schema.
Target columns
The Column mapping to the target table. When a target table is selected, you can see a list of all primary key columns of the target table. You can then choose a column of the current table that should be mapped for each of these primary key columns. You can only choose columns that match the datatype of the target column (e.g. if the target column is an Integer-Type column, only the Integer-Type columns of the current table are listed as possible mapping columns).
On Update
The “ON UPDATE” property of the foreign key. Can be set to “RESTRICT”, “CASCADE”, “SET_NULL”, or “SET_DEFAULT”. The default value is “RESTRICTED”, which is also the default value for most databases.
On Delete
The “ON DELETE” property of the foreign key. Can be set to “RESTRICT”, “CASCADE”, “SET_NULL”, or “SET_DEFAULT”. The default value is “RESTRICTED”, which is also the default value for most databases.
Deploy Schema to Datasource
You can deploy a schema to a data source by clicking the “Deploy schema to data source“-Button in the top right corner of the SchemaDetails-View. This will open the schema deployment dialog. You can deploy a schema to any SQL Connector that is defined in the system. Deployment is currently only supported for MySQL, SQLite, MSSQL, and Oracle Databases.
In the schema deployment dialog, you can choose a target SQL connector. After choosing a SQL connector you can start the deployment to the data source. Additionally, there are two flags that can change the mode of deployment:
Safe Mode
The safe mode flag only impacts the deployment when you are re-deploying a schema that was already deployed and edited afterward. In this case, the deployment will not start if any ALTER or DELETE operations would be performed on the deployed schema to ensure that no data is lost in the database.
Dry Run
With the Dry Run flag set, the system will only run a simulation of the deployment instead of the deployment itself.
Deployment Log
The Deployment Log stores information about all past schema deployments. It can be accessed from the Schema Overview by switching to the “Deploy Log”-Tab. Here you find a list of all deployments with the name of the deployed schema, the target SQL connector, the user who executed the deployment, the date and time when the deployment was started and whether the deployment was successful.
For each Deployment, you can open a view containing further details.
The details contain parameters of the deployment like which schema was deployed to which connector and other metadata. The statements executed during the deployment are shown in the Statements tab. For debugging purposes the deployed schema, the state of the database before and after the deployment are displayed in the Schema, Before and Afterwards tabs. A Zip-Archive containing all these detail information can be downloaded both from the Deploy log overview and the details view by clicking on the “Download as Zip“-Button.
Login Methods
Login Methods are credentials which will be used by connectors to authenticate each connection. They can be either static like Username/Password credentials or dynamic like an OAuth2 Token, which requires a previous login.
Standardized Login Method Types in Simplifier
Login Method Type
Description
Username or Alias
Only a username is used as theredential.
Username or Password
A username and password combination is used as the credential.
SAP Logon Ticket
An SAP Logon Ticket is used as the credential.
Token
A generic token is used as the credential.
OAuth 2.0
A OAuth 2.0 token is used as the credential.
SAML 2.0
A SAML 2.0 assertion token is used as the credential.
Certificate
A certificate is used as the credential.
Simplifier Conferencing Server
Checklist Conferencing – Installation and Configuration
1. Download the Docker Image from Docker Repository
docker pull simplifierag/conferencing:latest
2. Execute the Run Command
Don’t forget to change the parameters to match your environment.
Change “C:/opt/intelmcu/data” to target the mounting directory of your host system.
This is the volume of the Conferencing Docker from which the config files are taken to create the container.
The part “:/opt/mcu_server/data” for the internal path must not be changed
simpleNetwork: Name of the Docker network where Simplifier and Conferencing Docker reside
After the run command, the following directories and files are created (if not exist)
This volume should contain…
…/data/certs – contains all certificates for the HTTPS and/or secure socket.io connection
…/data/logs – contains all log files from internal docker apps
…/data/conf – contains all config files to create the docker container
agent.toml – webRTC main settings
portal.toml – socket.io settings
settings.json – settings for registration to Simplifier Docker
…/data/recordings – contains video files of recorded sessions
3. Change the Settings of Config Files
agent.toml:
Set the network bridge so that the Conferencing and Simplifier Docker can connect to each other
Set the min- and max ports for video/audio streams (UDP)
If you want to access from another network to your Docker, you have to add the public server IP in the network interface
maxport = 40250 #default: 0
minport = 40000 #default: 0#Note: Two ports per user (for audio/video streams)
portal.toml
change ip_address or hostname to the public server address where the socket server can be reached
change the port to 8082 for the socket.io server
settings.json
registration::Array[::Object]- Tells the plugin where to connect to within the container network. It’s an array and can serve multiple Simplifier instances (e.g. D-Q-P).
host::String – Simplifier hostname in Docker network (e.g. “Simplifier”)
To use HTTPS and/or secure socket.io connection, you should use your own certificate for each server. MCU works with PFX formatted certificates. Add your SSL certificates to …/data/certs.
You can also add .crt and .key files to this directory – the .pfx file is generated during initialization of the Docker.
5. Change the settings.conf in Simplifier Docker
Update the following config file /opt/simplifier/appserver/settings.conf (or include.conf to override settings.conf) of Simplifier Docker.
Start Simplifier Docker and search the settings.conf
In the settings.conf navigate to the following code section and replace the “interface” line with 0.0.0.0 (see example). Now, the Conferencing Docker can register to Simplifier.
If the config files have been updated, the Conferencing Docker can be restarted to apply all changes:
docker restart conferencing
Finally, the Conferencing Docker registers to Simplifier and installs the conferencing plugin. If the installation is complete, you can check the results by navigating to the Simplifier plugin section (web browser) and test the conferencing plugin.
AAC Codec and FFmpeg
If you want to use the audio codec aac for external stream output or mp4 format recording, you have to compile and deploy libfdk_aac manually.
Step 1: Navigate to the Conferencing Docker: docker exec -ti conferencing bash
Step 2: Execute the following command to install the libfdk_acc package: apt-get install libfdk-aac-dev
Step 3: Navigate to {PROJPATH}/audio_agent directory and execute compile_ffmpeg_with_libfdkaac.sh
Step 4: Copy all files from {PROJPATH}/audio_agent/ffmpeg_libfdkaac_lib/ to {PROJPATH}/audio_agent/lib/
Step 5: Restart the Conferencing Docker
Without aac you can’t create .mp4 files, only MKV is available.
Invite Developer
In addition to the Collaboration, with which you work together on an application, you can also invite another developer to a particular application, who does not yet have an account on your instance.
Click on Share in the tab Other.
Enter the email address of the developer and confirm. A user will be automatically created and will be active for 30 days to work on your current application project.
Username or -alias
General Information | Sources | Targets | Configuration
General Information
The Login Method type Username or -alias consists of a username or alias.
It can be accessed through 5 sources and has currently 1 possible targets. This Login Method type does not feature any configuration.
Possible Sources
Shortname
Longname
Description
Requires configuration
Default
Default Source
The default source for this Login Method Type (Provided)
Yes
System Reference
Source referenced by the System
The currently logged in user
No
Profile Reference
User Profile Reference
An attribute in the user profile.
Yes
User Attribute Reference
User Attribute Reference
An attribute in the User attributes of the currently logged in user.
Yes
Provided
Provided Source
A statically provided username or -alias
Yes
Possible Targets
Shortname
Longname
Description
Default
Default Target
The default target for this Login Method Type (System will determine the target)
Sources
Sources define the kind how the value of this Login Method is obtained.
Default Source / Provided Source:
Parameter
Datatype
Description
Mandatory
username
String
The username or alias
Yes
Source referenced by the System:
The system reference uses the login name of the currently logged-in user. If an Anonymous User logs in and this Login Method will be used, then an exception will occur.
User Profile Reference:
An attribute in the currently logged-in user’s profile which is referenced by the provided key will be used as a login method. The attribute in the profile must be a string.
Parameter
Datatype
Description
Mandatory
String
The key to the attribute for the currently logged in user.
Yes
User Attribute Reference:
An attribute in the currently logged-in user’s user attributes which is referenced by the provided name and category will be used as a login method. The attribute in the profile must be a string.
Parameter
Datatype
Description
Mandatory
String
The name of the referenced attribute in the user attributes.
Yes
User Attribute Category
String
The category of the referenced attribute in the user attributes.
Yes
Targets
Targets define how the Login Method should be used in connectors.
Default Target:
The Default Target let the Simplifier define how this Login Method should be used. For example in SQL, this Login Method will result in an user without a password.
Configure
This Login Method does not require specific configuration parameters.
Username/Password
General Information | Sources | Targets | Configuration
General Information
The Login Method type Username/Password consists of a username and an optional password.
It can be accessed through 4 sources and has currently 1 possible targets. This Login Method type does not feature any configuration.
Possible Sources
Shortname
Longname
Description
Requires configuration
Default
Default Source
The default source for this Login Method Type (Provided)
Yes
System Reference
Source referenced by the System
The currently logged in user
No
Profile Reference
User Profile Reference
An attribute in the user profile.
Yes
User Attribute Reference
User Attribute Reference
An attribute in the User attributes of the currently logged in user.
Yes
Provided
Provided Source
A statically provided username and optional password.
Yes
Possible Targets
Shortname
Longname
Description
Default
Default Target
The default target for this Login Method Type (System will determine the target)
Sources
Sources define the kind how the value of this Login Method is obtained.
Default Source / Provided Source:
Parameter
Datatype
Description
Mandatory
Username
String
The username
Yes
Password
String
The password for this user
No
User Profile Reference:
An attribute in the currently logged-in user’s profile which is referenced by the provided key will be used as a login method. The attribute in the profile must be an object. This object must contain the username and optional password with the following keys (username, user) for the username and (password, pass) for the password.
Parameter
Datatype
Description
Mandatory
String
The key to the attribute for the currently logged in user.
Yes
User Attribute Reference:
An attribute in the currently logged-in user’s user attributes which is referenced by the provided name and category will be used as a login method. The user attribute must be an object. This object must contain the username and optional password with the following keys (username, user) for the username and (password, pass) for the password.
Parameter
Datatype
Description
Mandatory
String
The name of the referenced attribute in the user attributes.
Yes
User Attribute Category
String
The category of the referenced attribute in the user attributes.
Yes
Targets
Targets define how the Login Method should be used in connectors.
Default Target:
The Default Target let the Simplifier define how this Login Method should be used. For example in SQL, this Login Method will result in an user without a password.
Configure
This Login Method does not require specific configuration parameters.
SAP Logon Ticket
General Information | Sources | Targets | Configuration
General Information
The Login Method type SAP Logon Ticket consists of a specific valid SAP Logon Ticket.
This Method is formerly known as Single-Sign-On.
It can be accessed through 5 sources and has currently 1 possible targets. This Login Method type does not feature any configuration.
Possible Sources
Shortname
Longname
Description
Requires configuration
Default
Default Source
The default source for this Login Method Type (System Reference)
No
System Reference
Source referenced by the System
The SAP Logon Ticket of the currently logged in user
No
Profile Reference
User Profile Reference
An attribute in the user profile.
Yes
User Attribute Reference
User Attribute Reference
An attribute in the User attributes of the currently logged in user.
Yes
Provided
Provided Source
A statically provided valid SAP Logon Ticket.
Yes
Possible Targets
Shortname
Longname
Description
Default
Default Target
The default target for this Login Method Type (System will determine the target)
Sources
Sources define the kind how the value of this Login Method is obtained.
Default Source / Provided Source:
Parameter
Datatype
Description
Mandatory
String
The valid SAP Logon Ticket
Yes
Source referenced by the System:
The system reference uses the the provided SAP Logon-Ticket of the currently logged in user. The user must have been authenticated through an SAP-SSO Client beforehand.
User Profile Reference:
An attribute in the currently logged-in user’s profile which is referenced by the provided key will be used as a login method. The attribute in the profile must be a string.
Parameter
Datatype
Description
Mandatory
String
The key to the attribute for the currently logged in user.
Yes
User Attribute Reference:
An attribute in the currently logged-in user’s user attributes which is referenced by the provided name and category will be used as a login method. The attribute in the profile must be a string.
Parameter
Datatype
Description
Mandatory
String
The name of the referenced attribute in the user attributes.
Yes
User Attribute Category
String
The category of the referenced attribute in the user attributes.
Yes
Targets
Targets define how the Login Method should be used in connectors.
Default Target:
The Default Target let the Simplifier define how this Login Method should be used. The SAP-RFC Connector will use the SAP Logon Ticket in its properties.
Configure
This Login Method does not require specific configuration parameters.
Plugin Secrets
Create your own keys in the plugin administration to register your own plugins securely.
For that, switch from the Overview to the Plugin Secrets.
Create a new secret via the plus and enter a name and description (optional)
…and then generate the secret.
Afterward, you can download the generated secret.
Plugin Secrets Overview
After you have created a Secret, it appears in the Plugin SecretsOverview.
All existing entries are displayed.
On the right side, you can delete it or generate a new secret if necessary.
Attention: If you generate a new secret, it must be changed in every plugin.
Besides that, the Total Registrations and Registrations per pluginare displayed on the right.
Token
General Information | Sources | Targets | Configuration
General Information
The Login Method type Token consists of a generic token.
It can be accessed through 5 sources and has currently 1 possible targets. This Login Method type does not feature any configuration.
Possible Sources
Shortname
Longname
Description
Requires configuration
Default
Default Source
The default source for this Login Method Type (System Reference)
No
System Reference
Source referenced by the System
The Simplifier Token of the currently logged in user
No
Profile Reference
User Profile Reference
An attribute in the user profile.
Yes
User Attribute Reference
User Attribute Reference
An attribute in the User attributes of the currently logged in user.
Yes
Provided
Provided Source
A statically provided valid Token.
Yes
Possible Targets
Shortname
Longname
Description
Default
Default Target
The default target for this Login Method Type (System will determine the target)
Header
Header Parameter
The token will be provided in a header.
Sources
Sources define the kind how the value of this Login Method is obtained.
Default Source / Provided Source:
Parameter
Datatype
Description
Mandatory
String
The valid Token
Yes
Source referenced by the System:
The system reference uses the the provided Simplifier Token of the currently logged in user.
User Profile Reference:
An attribute in the currently logged-in user’s profile which is referenced by the provided key will be used as a login method. The attribute in the profile must be a string.
Parameter
Datatype
Description
Mandatory
String
The key to the attribute for the currently logged in user.
Yes
User Attribute Reference:
An attribute in the currently logged-in user’s user attributes which is referenced by the provided name and category will be used as a login method. The attribute in the profile must be a string.
Parameter
Datatype
Description
Mandatory
String
The name of the referenced attribute in the user attributes.
Yes
User Attribute Category
String
The category of the referenced attribute in the user attributes.
Yes
Targets
Targets define how the Login Method should be used in connectors.
Default Target:
The Default Target let the Simplifier define how this Login Method should be used. It is the same as the header parameter
Header Parameter:
The Header Parameter will provide the Token in an Http-Header.
Parameter
Datatype
Description
Mandatory
String
The name of the (Http) Header
Yes
Configure
This Login Method does not require specific configuration parameters.
Support
The Simplifier Support occurs as 3rd level support as standard. In general we’ll provide support if it is a clear technical malfunction in Simplifier or in an application (if a additional support contract exists for this purpose).
The Simplifier Support will provide an error correction for the fastest possible restoration of the defined operating state.
A differentiation is made for support between freemium users and paying customers:
Paying Customer
You get support with service hours. The SLA listed below apply.
Use the forum for free to ask questions to the community. No SLA applies.
Non-paid License
Service-Level-Agreement
The response times, as well as the versed solution times, are defined as follows depending on the priority of the support case:
Priority
Level
Description
Availability
Time until qualified feedback
Planned solution time
1
Emergency
A complete shutdown of the productive system, no more work can be done.
No availability
< 4 hours
24 hours
2
Critical
A problem causes a failure of central functions, which leads to the disruption of productive daily business.
Limited availability
12 hours
48 hours
3
Non-Critical
Minor interruptions to normal business operations due to malfunctions. In addition, any error in a test- or consolidation system.
Availability
24 hours
28 days
4
Minor
Problems with non-critical functions that cause no or minor malfunctions. These can be caused by malfunctions or functions that are used irregularly or not in standard operation.
Availability
48 hours
28 days
Below you see the process of the standard support.
Enabling
What is Enabling?
Enabling is a special consulting service by Simplifier AG – we are here to provide you with the right skills to work with Simplifier. Low Code and Simplifier can unlock tremendous potential through the combination of the right persons, methods and tools. When used in the right way this approach can drive your application creation capabilities and boost your digitization initiatives to a new level.
Our Mission:
We want to empower your app builders to become experts in building apps with Simplifier
The following topics are covered by our enabling team:
Training on the job (no classroom training)
Hands-on Problem solving with your App Builders in One-to-One Sessions
Choose Ticket-Type Enabling and add as URL your Simplifier Instance
Describe the matter and the way you want to solve the issue (ticket answer, remote enabling, training on the job)
Send it to us and we will take care of your request.
Response Times for Enabling Tickets
For our monthly hour packages, we guarantee the following response times to provide you valuable support:
Package
Response Time*
Bronze
< 5 Workdays
Silver
< 3 Workdays
Gold
< 2 Workdays
Platin
< 4 hours
*workday means Monday till Friday except weekend and public holidays in Germany.
Account Creation for Support Portal
Before creating a user, please ensure that you fulfill the requirements for support.
The following information is used to create a personalized user account. With this personalized access you can create tickets via this page: https://support.simplifier.io
Please fill out this form to get access to the support portal.
Support Portal – Quick Guide
Get Credentials to our Support System
If you don’t have user and login credentials, please fill out this form to get access.
The Simplifier Support Portal can be accessed via the following link:
To activate your access to this support portal, you must reset your password. The following video shows you how to do this:
Change the Profile
If you have logged in with your user name and password, click in the Overview on the icon below and then on Profile:
You now have the possibility to adjust the language and save it with Submit:
You can also change the avatar of your profile:
Select your desired image and click on Save.
Change the Initial Password
You can change the initial password by selecting Password. Enter your current password and your new password and confirm it. You can save your entry by clicking Submit.
Accounts such as Facebook or Twitter can be linked via Linked Accounts. This function is not provided in the Simplifier Support System for the moment.
Create Ticket
Click the “+” symbol to create a ticket:
Please enter the following information:
Title (the subject of your ticket)
Text (description of your ticket)
Select attachment (for screenshots or PDF documents that describe the ticket in more detail)
State: open
Priority
Browser/operating system
Browser version/OS version
Client Build/Simplifier Version
Device
Username
Web address
After you have filled in all fields, you can submit your ticket via Create.
Ticket Overview
Via My assigned Tickets you can view all tickets you have created including their state:
You can also view all tickets created by your company including their state.
Support Requirements
To ensure fast support, the following two prerequisites are mandatory.
All necessary logs should be collected centrally and accessible to the Simplifier support team:
In UI5, so-called controls (respectively UI elements; in Simplifier they are called Widgets) are used to assemble the user interface. A major benefit of UI5 is that they come with a wide variety of bread & butter, layout, and complex controls to build your application.
Today, OpenUI5 offers more than 300 and SAPUI5 adds more than 350 additional UI5 controls to OpenUI5.
Learn more about the difference between OpenUI5 and SAPUI5 here.
What is SAP Fiori?
SAP Fiori is the design language that defines the user experience of SAP enterprise applications.
The SAP Fiori design philosophy is based on five core principles. The SAP Fiori user experience is role-based, adaptive, simple, coherent, and delightful.
The UI5 framework is aligned with the SAP Fiori design guidelines so that Web applications created with UI5 deliver a consistent user experience.
Is UI5 self-contained or does it use open source?
UI5 uses open-source software. There are a number of open-source libraries that are included in the UI5 framework. The best-known example of using open-source is jQuery.
Many more open-source libraries are used, and a complete list of these libraries can be found in the OpenUI5 project’s LICENSE.txt.
What is a UI5 control?
A UI5 control is a UI element that consists of its API:
the metadata (such as properties, aggregations, events), the behavior (the internal event handling), the renderer (the markup creation) and the CSS. In Simplifier the UI5 controls are called Widgets.
UI5 controls are the built-in offering of the UI5 framework for writing UI elements. A special feature is the out-of-the-box data binding support, which allows the controls to be easily bound to data from different models.
Take a look at this blog post to learn more about UI5 Framework and UI5 Web Components.
Login with invalid SSL Certificates
Normally you should operate the simplifier server with a valid, certified SSL Certificate. In case of expired ssl certificates or self-signed certificates, the connection from mobile client to server can’t be established due security restrictions.
To login in such a situation, you can enable the developer mode with several clicks on the simplifier logo see video below:
A widget represents a specific element in the user interface (e.g. checkbox, button or login screen, etc).
To customize a widget, click on the Applications tile in the Simplifier dashboard and choose the Widgets tab.
Within the overview, you can edit, take a look at the details, delete or copy a widget or take a look at the description, category, tags, and set it to deprecated or not.
Press the ‘+’ button on the right to add a new one.
Add a name and select the OpenUI5 version.
By clicking OK you will be forwarded to the Widget Customizer. On the left side are three different tabs: General, Template and Script.
General
In the tab General, you find the general information like Name, Version, Category, and Description. You can add tags or set the widget to deprecated.
Deprecated widgets are no longer displayed in the UI Designer. Deprecated widgets that were used before they were marked as deprecated are still displayed within the application content. The application will continue to be saved and deployed without issues or warnings and runs as before.
Add an icon to the widget by uploading it. You can delete it at any time.
Template
Enter the widget type in the tab Template – take a look at the constructor details in its API reference. It must match the name of the UI5 control. Use the wizard to automatically extract the widget data.
Choose a framework – OpenUI5 or SapUI5
By clicking on Next, the template for the widget is generated as well as the properties, events, and aggregations.
Script
The script of the widget is generated automatically if you use the widget assistant.
After hitting the Save button, you’ve successfully created or edited a widget.