Last modified on 26 June 2024, at 13:14

UBIK WinX Client Basics

UBIK® Client is the mobile application for viewing and modifying data, showing documents, starting navigation, visualizing POIs and much more.

Client applications are available for Android and WinX, however the features available on each of the platform dependent applications might differ. An overview of the available features can be found in the feature comparison table.


The standard UBIK® client supports multiple languages listed below.

  • Chinese (Simplified)
  • Czech
  • English
  • German
  • Polish
  • Portuguese
  • Spanish
IC Attention.pngAs we found out, you can only switch to one of the supported languages if it is installed as a system language in the Windows "Preferred languages / Add a language" setting. For example, if you have only English installed when you install UBIK®, you won't be able to switch to any other languages even if you add those later. In that case, you need to make sure your language of choice is installed in Windows first, then update or reinstall UBIK®. This is a Microsoft Store practice and does not apply to clients installed through sideloading, e.g. from our AppCenter.


Users need to login in order to access confidential data, this can be done in the Login View.

Confirm login

Certain pages might require to confirm the login data, even if the user is already logged in. This can be done in the following way: The CheckUserOfflineCommand needs to be called with the username and password as parameter, if the login was valid, the CheckUserOfflineSuccess boolean property is set to true, which causes the text "Login confirmed" to appear in the example.

        DataContext="{Binding AuthenticationViewModel, Source={StaticResource Locator}}"
        Text="{Binding UserName}" />
        DataContext="{Binding AuthenticationViewModel, Source={StaticResource Locator}}"
        PlaceholderText="Password" />
        Command="{Binding CheckUserOfflineCommand}"
        Content="Confirm login"
        DataContext="{Binding AuthenticationViewModel, Source={StaticResource Locator}}">
                        <uc:KeyValueParameter Key="UserName" Value="{Binding ElementName=Sign01User, Path=Text}" />
                        <uc:KeyValueParameter Key="Password" Value="{Binding ElementName=Sign01PW, Path=Password}" />
<TextBlock Text="Login confirmed" Visibility="{Binding AuthenticationViewModel.CheckUserOfflineSuccess, Source={StaticResource Locator}, FallbackValue=false, Converter={StaticResource BoolToVisConverter}}" />


Profiles are used to store connection information for UBIK® services. It specifies the location where to find the service along with other useful informations. Profiles are stored by UBIK whenever the user created connection information and stored it in the settings. However, profiles can also be created and edited with any text editor. Possible settings to be defined are:

  • InternalConnectionSettings: Connections settings how to connect to the Content and the USAM service that has been set up.
    • Application: the APPLICATION to use with the service
    • AuthenticationPort: Port Number of the authentication (USAM) service (default: 777)
    • AuthenticationProtocol: Protocol of the authentication service (default: https)
    • AuthenticationServer: the ip address of the authentication server
    • AuthenticationService: the path to the authentication service
    • ContentPort: Port Number of the content service (default: 777)
    • ContentProtocol: Protocol of the content service (default: https)
    • ContentServer: the ip address of the content server
    • ContentService: the path to the content service
    • Context: the CONTEXT to use with the service
    • SyncMode: the used sync mode (Online [= Auto], Manual, Offline; default:Online)
  • IsDefault: true, if the profile should be the default profile
  • Name: the name of the profile (will also be used to identify the database)
    • If the profile name contains invalid characters like: /, ", <, >, ... they will be replaced with %_
  • Project: the project name. Use this to share a single project name with more than one profile. If the project is defined, all profile with the same project will share one database.
  • Customizing: the XAML subfolder to use for customized UI. This parameter can be used to share one single XAML customizing folder for multiple profiles.
  • ShowHiddenSettings: show hidden settings (feault: false)


    <?xml version="1.0" encoding="utf-8"?>
<Profile xmlns:i="" xmlns="">
  <Description i:nil="true" />

Content Browser

Allows to navigate through the entire data model in a hierarchical manner, as it is published by the server.

Initially, a list of objects ("root objects") is shown. Upon selecting an object, a new browser is opened for that object, showing details about it. When an object is selected in the content browser, it is called the browser's context. For such a contextual object, child objects and selected properties are shown. Also, there is a context menu providing actions related to the currently selected object.

Status Bar

Saving Indicator

Saving Symbol
Saving Symbol

Whenever content is being saved into the local database (for example, after a branch is downloaded from the server), there will be a blinking symbol indicating the saving activity is happening in the background. During that time, the user is advised to not logout or close the app because the content might be lost otherwise. However, it is okay to undertake other tasks such as browsing, editing or downloading branches.

Uncommitted Changes Indicator

When there are uncommitted changes it is indicated by a button in the Status Bar displaying an icon and the number of uncommitted changes. Pressing this button opens a fly out list with all of the objects that have uncommitted changes to them. Pressing one of those list objects navigates directly to the corresponding object. The Uncommitted Changes Indicator button is only shown when there are uncommitted changes otherwise it is not visible. When in online mode all changes should be committed automatically so the Indicator is mainly useful in Manual or Offline Sync Mode.
Queries are now excluded from uncommitted changes.

Child Page

Child Page
Child Page

The child page shows the context of a selected object.

The global status bar shows the icon, the name and the description of the selected object. An arrow on the left side allows the user to navigate back to the parent object. On the right side the currently logged-in user is indicated. By clicking on the username one is able to navigate back to the home screen or log off.

The right side of the child page shows child objects of the current object. Each child object is represented by an icon, a name and a description. With the child info owner classification, one can additionally show the number of documents and regular grandchildren to be expected for a child object.

On the left side of the child page the current object´s high priority properties are shown. By clicking on a live value property, the live value details dialog opens. By clicking on an editable high priority property, an editor opens . If a property was edited a save button is shown in the lower left corner, allowing the user to commit the changes. If a property of a query object was edited an evaluate button is shown in the lower left corner, allowing the user to run the query with the changed propery.

Properties Page

On the properties page, one can see a list of all the current object's visible properties, and, given the respective rights, a possibility to edit them.

Context Menu

For any current object, there is a set of potential context-sensitive actions. These are displayed as buttons in the title bar, with a three-dot overflow menu button aggregating all the actions that wouldn't fit there anymore. There are many potential actions; some of them are only enabled for specifically classified objects, like objects with a geo location. Default actions are refresh, various download options, child object creation, copy/paste, commit/revert changes, geo-related actions, etc.


Root objects vs child objects

The first entry point in the Content Browser is the list of root objects.

Task objects

[[1]] and [packages] are special types of UBIK® objects used for maintenance, repair and overhaul (MRO) use-cases.

Query objects

Queries are special types of UBIK® objects with dynamic children. The child objects are looked up depending on the query object's criteria, which can be specified the same as property values for regular objects. There are online queries evaluated by the server, and [queries] evaluated on the client, thus requiring no internet connection.

Safety relevant objects

Object classified as safety relevant require the user to accept safety instructions to access the object, which can be required for hazardous MRO tasks, for example.

Commissioning objects

Similar to and based on MRO objects, commissioning objects are tasks and work packages for the commissioning use-case, e.g., commissioning check tasks.

Locked objects

In several use-cases, objects can be locked for editing.


Authentication Properties

Authentication Properties are properties which need a user authentication (through a password field) to be edited.

Min max properties

See Min Max Properties.

Live value properties

Live Values are specific property values extracted from a process control system like OPC-UA or OSIPI.

High priority properties

High priority properties are properties having a priority higher than the priority threshold.

Selective List Properties

For some properties, the user should be able to select from a predefined set of values. Such a predefined set is called a "selective list" in UBIK®. Furthermore, there are dynamic selective lists that can be filtered or assembled based on dependency property values.

Properties with value records

A property with value records
Property value records dialog

In addition to its value, a property might also bring along a series of value records showing "who changed the value at what time".

When such records exist, the property row shows a special symbol on the right side. After a right click (with mouse) or a long tap (with touch) on the property row, a dialog will be shown to present these records (sorted by their time, recent ones on top).

String properties with length restrictions

A string property can be configured with a length restriction. The client property editing UI doesn't allow users to confirm values exceeding the limit.


See Editors


UBIK supports and displays document objects and a bunch of actions related to them (editing, redlining, creation, thumbnails, ...).

Fit Mode

By default, documents are displayed in their original dimensions. But administrators can also configure different fit modes for each document. The following demonstrates how documents can look under different fit modes.

Unspecified / Unscaled / Default Fit to container Fit to width
UI UWP Fit Mode Default.png UI UWP Fit Mode Container.png UI UWP Fit Mode Width.png
IC Attention.pngWhen using a FlipView for documents in your customized XAMLs, you need to additionally apply the fit mode by yourself.
IC Attention.pngThis feature currently only works for PDFs (it is not supported for Images).

Auto zoom

When a PDF document is displayed in UBIK, it's possible that an initial zoom level is configured and applied to that document.

IC Attention.pngThe configured initial zoom level will be simply ignored if it's beyond the acceptable min/max zoom levels of the PDF viewer.


Button to edit a document

For editable documents, there is an edit button in the bottom app bar. It allows the user to edit a document file using the default app of the OS. If a file is changed during the edit, the same save button appears just like it does for content with changed properties.

IC Hint square.pngSimilar to saving, other app features also apply on edited documents. For example, reverting local changes for an edited document will throw away the changed document file and restore it to the server version.
Edit button in thumbnail overlay

An alternative way to start editing is to right click on a document's thumbnail, which brings up an overlay of buttons, and then select the edit button. The difference here is that there is no save button and any changes are automatically saved (and committed if in online mode).

Offline availability

When a user selects a branch to bring offline, files of all document objects underneath are downloaded in principle. However, they can also be selectively configured to be ignored with a classification on the server-side. Once a document is classified as offline available, the document file will not be removed when the storage for already synchronized document files is cleared.

IC Hint square.pngThis is not to be confused with the accessibility related to user rights. The logic here is "some documents do not have to be downloaded", not "some documents can not be downloaded/accessed". In other words, a user can browse to and open the document regardless of this configuration.

Clear Online Documents

By clearing the online documents, it is possible to free up system memory if needed. It can be triggered by pressing the button "Clear online documents" in the general settings tab. Online documents are documents already uploaded to the server. They can be downloaded anytime agian when the client is connected to the server. However, documents classified as offline available will not be affected and will always stay on the device.

AR Features

POI View

Brings up the POI View|Augmented Reality view and displays Points of Interest (POI's) related to the current location of the mobile device.


Map View

Opens the Map View and displays Points of Interest (POI's) related to the current location of the mobile device.


UBIK® clients use a Location Manager in order to gain knowledge about their position, so it can help the user navigate to his/her target.

The user can choose one of different positioning modes optimized for different environments. Most of them incorporate multiple technologies for calculating positions or checking their reliability.

Positioning modes

  • Use all - uses all available position sources
  • LLA only mode - used for positioning using markers only
  • Beacon Proximity mode - uses iBeacon proximity and LLA only



GPS is used as a primary positioning input source for outdoor areas. Its precision depends on the environment and satellite availability. With good circumstances, the accuracy varies between 1 and 10 meters.

LLA markers

LLA markers basically are QR codes with location data encoded into them - which can be used for positioning when they are scanned.

Object Proximity Positioning

The location of nearby Geo-Objects can be used for positioning.

The position of a Geo-Object can be used manually by pushing the button Use Location in the Context Menu.

The geo information of an object gets used automatically if exactly one single object is found through scanning. If more objects are found, their geo information doesn´t get used. Scanning includes Bar Code, QR Code, OCR and RFID. The automatic use of Geo-Object´s location can be turned off by disabling the "EnableObjectProximityPositioning" setting.

Beacon-Proximity Positioning

The Beacon Proximity Mode detects if the user is in the proximity of a beacon. The proximity region is defined by a proximity distance which creates a sphere around the beacon. Whenever the calculated distance to a beacon is smaller than the proximity distance, the user is supposed to be at the position of the beacon. If multiple regions intersect the user is supposed to be at the position of the nearest beacon. In order to use Beacon Proximity as a Positioning System, Bluetooth Low Energy has to be available and enabled on the mobile device. If a new environment should be equipped with iBeacon-Positioning, an expert has to mount iBeacons on known positions and calibrate the propagation factor of these beacons. Proximity beacons can be configured using SYSCLS PROXIMITY BEACON.

Finding Objects

Free Text Search

ID Marker

QR Code

Bar Code


Provides a fast and convenient way for users to find objects that are identifiable through RFID tags.


Linked objects

It is possible to display values of linked objects by using the "LinkedLevel" property. An example can be seen here, where Items[0] is a Guid property linking to another object. The ItemsControl then binds to the Properties of the linked object.

<Grid DataContext="{Binding Properties.Items[0].LinkedLevel}">
    <ItemsControl ItemsSource="{Binding Properties.AllItems}" />

See also