<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.augmensys.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=JKN</id>
		<title>UBIK Wiki / Augmensys - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.augmensys.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=JKN"/>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Special:Contributions/JKN"/>
		<updated>2026-08-24T14:10:07Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.24.2</generator>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=UBIK_Client_Getting_Started&amp;diff=30463</id>
		<title>UBIK Client Getting Started</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=UBIK_Client_Getting_Started&amp;diff=30463"/>
				<updated>2026-08-18T09:34:20Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [[Client_Feature_Table]] (Link) =&lt;br /&gt;
&lt;br /&gt;
= UBIK.UWP (UBIK.WinX) =&lt;br /&gt;
=== [[UBIK_WinX_Client_Basics|Basics about UBIK.UWP]] ===&lt;br /&gt;
=== [[XAML_Basics]] ===&lt;br /&gt;
=== Hot topics ===&lt;br /&gt;
* [[XAML_Changes_in_UBIK_WinX_3.5#Filtering_by_expressions|Configure content filtering in XAML customizing]]&lt;br /&gt;
* [[EvalExpression|Using result of an expression for data binding]]&lt;br /&gt;
* [[Developer_Mode|Tool for trouble shooting &amp;amp; more]]&lt;br /&gt;
&lt;br /&gt;
=== [[:Category:WinX|All pages in this category]] ===&lt;br /&gt;
&lt;br /&gt;
= UBIK.Mobile =&lt;br /&gt;
=== [[XAML_Basics]] ===&lt;br /&gt;
=== Hot topics ===&lt;br /&gt;
* [[Xamarin_XAML#Content_filtering|Configure content filtering in XAML customizing]]&lt;br /&gt;
* [[EvalExpression|Using result of an expression for data binding]]&lt;br /&gt;
* [[Xamarin_XAML#Default_XAMLs|Getting default XAML resources]]&lt;br /&gt;
&lt;br /&gt;
=== [[:Category:Xamarin|All pages in this category]] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= UBIK.Hololens =&lt;br /&gt;
=== [[UBIK HoloLens Client Basics]]  ===&lt;br /&gt;
=== [[UBIK HoloLens 2 Client Basics]]  ===&lt;br /&gt;
=== [[:Category:HoloLens|All pages in this category]] ===&lt;br /&gt;
&lt;br /&gt;
= UBIK.Android =&lt;br /&gt;
{{DeprecatedStartTag}}&lt;br /&gt;
=== [[UBIK_Client_Basics|Basics about UBIK.Android]] ===&lt;br /&gt;
=== [[:Category:Android|All pages in this category]] ===&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|UBIK Client Getting Started]]&lt;br /&gt;
[[Category:Mobile|UBIK Client Getting Started]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=HowTo:Switch_to_Offline_Mode&amp;diff=30023</id>
		<title>HowTo:Switch to Offline Mode</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=HowTo:Switch_to_Offline_Mode&amp;diff=30023"/>
				<updated>2026-06-23T13:48:52Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DeprecatedStartTag}}&lt;br /&gt;
&lt;br /&gt;
First make sure the root object(s) is/are fetched from the service.&lt;br /&gt;
&lt;br /&gt;
There are three ways to initiate this process.&lt;br /&gt;
&lt;br /&gt;
== Switch to offline mode through action bar ==&lt;br /&gt;
# Open the [[UBIK Client Basics#Navigation Drawer|navigation drawer]];&lt;br /&gt;
# Press the offline button;&amp;lt;br/&amp;gt;[[File:UI_Android_Offline_Button_In_Nav_Drawer.png|200 px|border|alt=Offline Button|Offline Button]]&lt;br /&gt;
# A dialog listing all the root objects should be shown now. Users can select any of these objects/branches to work with in offline mode.&amp;lt;br/&amp;gt;[[File:UI_Android_SelectForOffline.jpg|300 px|border|alt=Select Branch(es) for Offline|Select Branch(es) for Offline]]&lt;br /&gt;
&lt;br /&gt;
Depending on users' selections, there are two follow-up scenarios.&lt;br /&gt;
&lt;br /&gt;
=== Nothing selected ===&lt;br /&gt;
If nothing is selected when {{key press|OK}} is pressed, the client will switch to offline mode immediately.&lt;br /&gt;
&lt;br /&gt;
=== Root object(s) selected ===&lt;br /&gt;
# If any root object is selected when {{key press|OK}} is pressed, the client will start to prepare the necessary branches.&lt;br /&gt;
# At the end of offline preparation, a dialog will be shown to indicate so. And the client should also be switched to offline.&amp;lt;br/&amp;gt;[[File:UI_Android_OfflinePreparationFinished.jpg|300 px|border|alt=End of Offline Preparation|End of Offline Preparation]]&lt;br /&gt;
&lt;br /&gt;
== Manually change sync mode in {{UBIK}} settings ==&lt;br /&gt;
# Go to [[Settings|Settings]];&lt;br /&gt;
# Find setting '''SyncMode''' and change its value to offline&lt;br /&gt;
# The branch selection dialog should show up. Please refer to step 3 and the further steps in [[#Switch to offline mode through action bar|Switch to offline mode through action bar]].&lt;br /&gt;
&lt;br /&gt;
== Start offline mode from context aware action bar ==&lt;br /&gt;
It is also possible to select an arbitrary branch (not necessarily starting from the root) to prepare for offline mode. This can be done in the following steps:&lt;br /&gt;
# Browse to any object whose child branch (including itself) is to be prepared;&lt;br /&gt;
# Press the '''Prepare Branch for Offline''' button in the context aware action bar;&amp;lt;br/&amp;gt;[[File:UI_Android_BranchDownloadIcon.jpg|500 px|border|alt=Context Aware Action Icon for Branch Download|Context Aware Action Icon for Branch Download]]&lt;br /&gt;
# The preparation of the branch should start right away. Once it is finished, offline mode should be activated with a dialog informing the users.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Sync Mode]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Switch to Offline Mode]]&lt;br /&gt;
[[Category:How-To|Switch to Offline Mode]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=HowTo:Save_Settings_as_Presets&amp;diff=30022</id>
		<title>HowTo:Save Settings as Presets</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=HowTo:Save_Settings_as_Presets&amp;diff=30022"/>
				<updated>2026-06-23T13:48:27Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DeprecatedStartTag}}&lt;br /&gt;
&lt;br /&gt;
In order to save all the settings into a [[Preset|preset]], users have to login first.&lt;br /&gt;
&lt;br /&gt;
After logging in, perform the following steps:&lt;br /&gt;
# Go to [[Settings]]&lt;br /&gt;
# Press {{key press|Save PreSet as}} at the bottom of the screen&amp;lt;br/&amp;gt;[[File:UI_HowTo_Save_Settings_As_Presets_01.jpg|220 px|border|alt=Save preset as|Save preset as]]&lt;br /&gt;
# Enter a name for the new preset&amp;lt;br/&amp;gt;[[File:UI_HowTo_Save_Settings_As_Presets_02.jpg|300px|border|alt=Enter name for preset|Enter name for preset]]&lt;br /&gt;
# Press {{key press|OK}} to save&lt;br /&gt;
# If a preset with the same name already exists, either:&amp;lt;br/&amp;gt;[[File:UI_HowTo_Save_Settings_As_Presets_03.jpg|300 px|border|alt=Confirm to overwrite|Confirm to overwrite]]&lt;br /&gt;
#* Press {{key press|OK}} to overwrite the existing one or&lt;br /&gt;
#* Press {{key press|Cancel}} and start over with a different name.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[HowTo:Load Presets]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Save Settings as Presets]]&lt;br /&gt;
[[Category:How-To|Save Settings as Presets]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=RFID_tags&amp;diff=30021</id>
		<title>RFID tags</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=RFID_tags&amp;diff=30021"/>
				<updated>2026-06-23T13:47:44Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: /* Android (obsolete) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In order for the users to find objects more efficiently, {{UBIK}} objects can be marked with values for RFID/NFC codes. Whenever a user scans an RFID code, the resulting code value can be used to find all matching objects, namely objects that have the [[#Technical_background|right property]].&lt;br /&gt;
&lt;br /&gt;
{{Hint|[http://en.wikipedia.org/wiki/Near_field_communication NFC] stands for &amp;quot;Near Field Communication&amp;quot; and is a set of ideas and technologies for data transfer between devices, typically in close distances.&lt;br /&gt;
Technically, it is based on [http://en.wikipedia.org/wiki/Radio-frequency_identification RFID] (&amp;quot;Radio-Frequency Identification&amp;quot;), which describes specific technical solutions.}}&lt;br /&gt;
&lt;br /&gt;
Amongst the use cases for NFC, there is communication between smartphones and other devices, but also the scanning of RFID tags.&lt;br /&gt;
&lt;br /&gt;
The {{UBIK}} RFID scanning feature specifically is the ability to scan RFID tags in order to identify {{UBIK}} objects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= WinX/Mobile Internal Scanner =&lt;br /&gt;
&lt;br /&gt;
Availability: {{Version/WinXSince|2.5.4}}&lt;br /&gt;
&lt;br /&gt;
== Supported RFID Tags ==&lt;br /&gt;
&lt;br /&gt;
There are three types of RFID markers supported by {{UBIK}}:&lt;br /&gt;
* NfcA (RFID standard: ISO-14443A)&lt;br /&gt;
* NfcB (RFID standard: ISO-14443B)&lt;br /&gt;
* NfcV (RFID standard: ISO-15693) &lt;br /&gt;
&lt;br /&gt;
{{UBIK}} WinX scans these tags for an NDEF message. Tags which are not NDEF formatted are not supported by the WinX client.&lt;br /&gt;
{{UBIK}} Mobile instead just looks for the serial numbers of the tags and use them for searching.&lt;br /&gt;
&lt;br /&gt;
=== Choose which information to use from a tag {{Version/XamarinSince|4.9}} ===&lt;br /&gt;
Starting from version 4.9 (Mobile only), it's possible to choose whether you want to use the NDEF message or the serial number of a scanned tag. The relevant setting in the profile is [[Settings#Scan|&amp;quot;UseNdefMessage&amp;quot;]].&lt;br /&gt;
&lt;br /&gt;
{{Attention|This settings determines which information to use in all NFC/RFID usecases in the client, e.g. [[#Presenting_results_of_a_search|scan to search]], [[#Scan_to_input_mode|scan to input]], [[MRO_Objects_(Client)#Supervisor_Task|supervisor task]].}}&lt;br /&gt;
{{Hint|If &amp;quot;UseNdefMessage&amp;quot; is set to true and there is no text NDEF message available in the scanned tag, the client does nothing except logging. A text NDEF message is one with a record of mime type &amp;quot;text/plain&amp;quot;. Although type Uri is also considered text according to our testing.}}&lt;br /&gt;
&lt;br /&gt;
== Supported Devices ==&lt;br /&gt;
When your client supports NFC, you can see this by opening the side menu. If NFC is supported, a NFC button should be enabled.&lt;br /&gt;
&lt;br /&gt;
== Scanning an RFID tag == &lt;br /&gt;
[[File:NFCButton.jpeg|thumb|alt=Scanning for NFC tag|Scanning for NFC tag]]&lt;br /&gt;
A NFC Scan button is shown in the Global App Bar if the device is capable of scanning NFC tags. Pressing the NFC Scan button enables/disables NFC scanning throughout the whole application. That means once the NFC scanning is activated, one can use the application just as usually while {{UBIK}} scans for NFC tags in the background. &lt;br /&gt;
&lt;br /&gt;
== Presenting results of a search ==&lt;br /&gt;
Once a tag is successfully scanned, an object search is executed.&lt;br /&gt;
# if no objects are found a message is popping up at the right side of the screen.&lt;br /&gt;
# if more than one object is found the results are represented in a separate view (dialog in WinX, side panel in Mobile) along with their matching probability. One can than select one object that should be opened in the content browser.&lt;br /&gt;
# if exactly one object is found, this object is directly opened in the content browser.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;400&amp;quot;&amp;gt;&lt;br /&gt;
File:NFCResultNotFound.jpeg|alt=No object found message|No object found message&lt;br /&gt;
File:NFCResultFound.jpeg|alt=Multiple search results dialog|Multiple search results&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Search modes ==&lt;br /&gt;
&lt;br /&gt;
{{UBIK}} provides two modes for searching objects: [[Sync Mode#Possible sync modes|online and offline]].&lt;br /&gt;
&lt;br /&gt;
=== Searching offline ===&lt;br /&gt;
&lt;br /&gt;
In any case (regardless of the network connection and [[Sync Mode|sync mode]]), {{UBIK}} always goes through all the objects currently available on the device and find the ones that match the scanned results.&lt;br /&gt;
&lt;br /&gt;
=== Searching online ===&lt;br /&gt;
&lt;br /&gt;
When the Internet is avaiable and {{UBIK}} is not running under offline mode, the search result is enhanced by online search. This means any objects that match the scanned results can be found even if they don't yet exist locally.&lt;br /&gt;
&lt;br /&gt;
== Multiple codes on a single object {{Version/WinXSince|4.4}}{{Version/XamarinSince|4.4}} ==&lt;br /&gt;
It's possible have multiple NFC/RFID codes on a single object. This allows the same object to be found when you scan any of those codes.&lt;br /&gt;
For [[SYSCLS_OBJECTWITHRFIDTAGS|such objects]], the general scan and potentially the search behaviors are exactly the same as those with only a single code. For example, if an object with multiple codes is found when you scan one of the codes, it could also get unlocked.&lt;br /&gt;
&lt;br /&gt;
== Scan to input mode {{Version/XamarinSince|4.2}} ==&lt;br /&gt;
Instead of performing object searches for scan results, {{UBIK}} can also use the scan results as input for property value editing. In this so called scan to input mode, no searches are performed.&lt;br /&gt;
&lt;br /&gt;
At the moment, there is no standard UI to control this mode. However, it can be easily customized. The two relevant properties are:&lt;br /&gt;
* AppStatus.ToggleNfcScanToInput: Controls the scan to input mode. True to turn it on, false to turn it off so that it returns to the default scan to search mode. This value automatically resets to the default value false when a property edit session ends;&lt;br /&gt;
* AppStatus.NfcScanToInputResult: The last NFC/RFID scan result while scan to input mode is on. This value gets automatically cleared when a property edit session ends.&lt;br /&gt;
&lt;br /&gt;
{{Hint|Except on iOS, the scan to input mode doesn't override the overall NFC/RFID toggle (AppStatus.ToggleNFCScanning) which controls whether {{UBIK}} should scan NFC/RFID tags. It's different on iOS simply because scanning is performed in a session in general and gets turned off automatically after a scan. }}&lt;br /&gt;
&lt;br /&gt;
== Classifications ==&lt;br /&gt;
&lt;br /&gt;
In order for objects to be identifiable through RFID, they have to carry the [[SYSCLS OBJECTWITHRFIDTAG]] classification or (optional) the new [[SYSCLS OBJECTWITHRFIDTAGS]] {{Version/ServerSince|4.4.0}}.&lt;br /&gt;
&lt;br /&gt;
The service query used for online searching is [[SYSCLS RFIDTAGSCANQUERY]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[SYSCLS OBJECTWITHRFIDTAG]]&lt;br /&gt;
* [[SYSCLS OBJECTWITHRFIDTAGS]]&lt;br /&gt;
* [[SYSCLS RFIDTAGSCANQUERY]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= WinX External Scanner =&lt;br /&gt;
&lt;br /&gt;
Since {{Version/WinX|3.6.0}} it is possible to use external Bluetooth RFID Readers for Scanning RFID Tags. &lt;br /&gt;
&lt;br /&gt;
== Preliminaries ==&lt;br /&gt;
&lt;br /&gt;
To use an external Bluetooth RFID Reader within {{UBIK}}, the device has to be brought into the Bluetooth SPP (Serial Port Profile) Mode first. Check the manual of the device on how to do that. Once SPP is active, the reader has to be paired with the {{UBIK}} host device. Afterwards it can be used for scanning RFID Tags.&lt;br /&gt;
&lt;br /&gt;
== RFID Configuration File ==&lt;br /&gt;
&lt;br /&gt;
Information needed for communicating with an external Bluetooth RFID Reader are stored in a &amp;quot;.rfconfig file&amp;quot;. This file has to be placed in the local RFIDConfiguration folder: ''{AppData}\LocalState\RFIDConfiguration\.rfconfig''. The name of the &amp;quot;.rfconfig&amp;quot; file is irrelevant. The configuration file contains the following information:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | width = &amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Information !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| ScannerIdentifier || String || The Bluetooth Name of the RFID Scanner.&lt;br /&gt;
|-&lt;br /&gt;
| DefaultScanning || Boolean (true,false)|| Specifies wheter scanning is active as default or not.&lt;br /&gt;
|-&lt;br /&gt;
| IgnoreReply || Boolean (true,false) || Some Scanners might send reply messages once a Blue-tooth Command was applied. If IgnoreReply is set to true, these messages aren´t used for further processing.&lt;br /&gt;
|-&lt;br /&gt;
| Substring || String of format: x,y || Extracts a substring of the scanned RFID Tag for further processing. x…index of the first character y… length of the substring&lt;br /&gt;
|-&lt;br /&gt;
| Replace || String of format: x,y || Replaces a character of the scanned RFID Tag for further processing. x…old character y…new character&lt;br /&gt;
|-&lt;br /&gt;
| StartCommands || List of Strings || List of Bluetooth Commands that are send to the RFID Reader when scanning is started. &lt;br /&gt;
|-&lt;br /&gt;
| ScanningCommands || List of Strings || List of Bluetooth Commands that are send to the RFID Reader when a Tag got scanned.&lt;br /&gt;
|-&lt;br /&gt;
| StopCommands || List of Strings || List of Bluetooth Commands that are send to the RFID Reader when scanning is stoped.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The ScannerIdentifier is typically the Bluetooth Name of the RFID Scanner. In some cases however it might deviate from the Bluetooth Name. The correct ScannerIdentifier can the be found in “Windows Settings&amp;gt;Devices and Printers&amp;gt;Right click on the Bluetooth Device&amp;gt;Properties&amp;gt;Services”.&lt;br /&gt;
Bluetooth Commands are ASCII Strings which can be send to the RFID Reader in the SPP Mode in order to configure the device. These commands can be found in the documentation of the respective RFID Reader. Often they are terminated with a stop character like “\r”.&lt;br /&gt;
An example of an .rfconfig file is given below. Note that elements of the configuration file have to be ordered alphabetically.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;RFIDConfiguration xmlns=&amp;quot;UBIK.AR.RFID&amp;quot;&lt;br /&gt;
	xmlns:i=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;br /&gt;
	xmlns:a=&amp;quot;http://schemas.microsoft.com/2003/10/Serialization/Arrays&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;DefaultScanning&amp;gt;false&amp;lt;/DefaultScanning&amp;gt;&lt;br /&gt;
	&amp;lt;IgnoreReply&amp;gt;true&amp;lt;/IgnoreReply&amp;gt;&lt;br /&gt;
	&amp;lt;Replace&amp;gt;),=&amp;lt;/Replace&amp;gt;&lt;br /&gt;
	&amp;lt;ScannerIdentifier&amp;gt;RNI-SPP&amp;lt;/ScannerIdentifier&amp;gt;&lt;br /&gt;
	&amp;lt;ScanningCommands&amp;gt;&lt;br /&gt;
		&amp;lt;a:string&amp;gt;cw 0E,01\r&amp;lt;/a:string&amp;gt;&lt;br /&gt;
	&amp;lt;/ScanningCommands&amp;gt;&lt;br /&gt;
	&amp;lt;StartCommands&amp;gt;&lt;br /&gt;
		&amp;lt;a:string&amp;gt;cw 04,00\r&amp;lt;/a:string&amp;gt;&lt;br /&gt;
		&amp;lt;a:string&amp;gt;cw 0E,01\r&amp;lt;/a:string&amp;gt;&lt;br /&gt;
	&amp;lt;/StartCommands&amp;gt;&lt;br /&gt;
	&amp;lt;StopCommands&amp;gt;&lt;br /&gt;
		&amp;lt;a:string&amp;gt;cw 0E,01\r&amp;lt;/a:string&amp;gt;&lt;br /&gt;
	&amp;lt;/StopCommands&amp;gt;&lt;br /&gt;
	&amp;lt;Substring&amp;gt;0,18&amp;lt;/Substring&amp;gt;&lt;br /&gt;
&amp;lt;/RFIDConfiguration&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Start Scanning ==&lt;br /&gt;
&lt;br /&gt;
There are two possibilities to start scanning using the configured RFID Reader: Either scanning is active per default (see RFID Configuration) or by pressing the RFID Scan button in the GlobalAppBar. &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:NotConnected.PNG]]&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When pressing the RFID Scan button UBIK tries to establish a Bluetooth connection to the RFID Reader. This is indicated by a Progress Ring on top of the RFID Scan button. If no connection could be established, the RFID Scan button falls back to its original state.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Connecting.PNG]]&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If a connection was successful, the RFID Scan button appears toggled. Afterwards the StartCommands of the RFID Configuration are applied and UBIK starts to listen for Messages from the Bluetooth RFID Reader. That means one can use the application just as usually while UBIK® scans for RFID Tags in the background.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Connected.PNG]]&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Scanning ==&lt;br /&gt;
&lt;br /&gt;
Once scanning was successfully started as described above, UBIK is continuously listening for new Messages from the RFID Reader. When a RFID Tag gets scanned, the result is received and manipulated based on the RFID Configuration. If the Substring option is configured properly, a substring of the Message is extracted and used for further processing. If the Replace option is configured properly specified characters are replaced. Afterwards processing an action is triggered for the received Message. If a string editor is currently opened, the Message is written into the property field of the editor (Teach-In). Otherwise an object search is triggered. UBIK is then searching for Objects classified as [[SYSCLS_OBJECTWITHRFIDTAG]] having the scanned content as the RFIDTag property value. Finally the ScanningCommands defined in the RFID Configuration are applied. &lt;br /&gt;
&lt;br /&gt;
== Stop Scanning ==&lt;br /&gt;
&lt;br /&gt;
Scanning can be stopped manually by pressing the RFID Scan button in the GlobalAppBar or simply by switching off the RFID Reader. UBIK will notice the device got disconnected and will indicate so using the RFID Scan button state. If the RFID Reader is disconnected by pressing the RFID Scan button manually, StopCommands defined in the RFID Configuration are applied.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
The RFID Scan Button is not visible. Check the following:&lt;br /&gt;
* Is there a .rfconfig file in the specified RFIDConfiguration folder?&lt;br /&gt;
* Is the .rfconfig file formatted properly?&lt;br /&gt;
* Are the elements of the .rfconfig file ordered alphabetically?&lt;br /&gt;
* Are the elements of the .rfconfig file of the correct type?&lt;br /&gt;
* Is the RFID Reader running in Bluetooth SPP Mode?&lt;br /&gt;
* Is the RFID Reader paired with the host device?&lt;br /&gt;
* In the .rfconfig file, does the specified ScannerIdentifier match the Bluetooth name of the RFID Reader?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Its not possible to start scanning. Check the following:&lt;br /&gt;
* Is the RFID Reader on and in the proximity of the host device?&lt;br /&gt;
* Try to restart scanning by again pressing the button&lt;br /&gt;
* Try to restart the RFID Reader&lt;br /&gt;
* Try to restart UBIK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
UBIK does not find any RFID Objects. Check the following:&lt;br /&gt;
* Is the RFID Reader properly configured (Some readers need to get pre-configured using Bluetooth Commands in order to send scanned RFID Tags to UBIK – Check the manual)&lt;br /&gt;
* Try to open a String editor and scan a RFID Tag. Is the scanned message as expected?&lt;br /&gt;
* Are the Objects of interest classified as SYSCLS_OBJECTWITHRFIDCODE?&lt;br /&gt;
* Are the Objects of interest properly configured (property value equals the associated RFID Tag)?&lt;br /&gt;
* If no Online Query is defined, are the Objects of interest available locally?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Android (obsolete) =&lt;br /&gt;
{{DeprecatedStartTag}}&lt;br /&gt;
&lt;br /&gt;
Availability: {{Version/AndroidSince|2.4.2}}&lt;br /&gt;
&lt;br /&gt;
== Supported RFID Tags ==&lt;br /&gt;
&lt;br /&gt;
There are three types of RFID markers supported by {{UBIK}}:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | width = &amp;quot;75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Standard!! Tested Tag technologies&lt;br /&gt;
|-&lt;br /&gt;
| NfcA (RFID standard: ISO-14443A) {{Version/AndroidSince|2.4.2}} || EV1(MFOUL11), NTAG 216, NTAG 210, NTAG 213&lt;br /&gt;
|-&lt;br /&gt;
| NfcB (RFID standard: ISO-14443B) {{Version/AndroidSince|2.4.5}} || -&lt;br /&gt;
|-&lt;br /&gt;
| NfcV (RFID standard: ISO-15693) {{Version/AndroidSince|2.4.5}} || ICode SLIX(SL2S2002), ICode SLI(SL2ICS20)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== NFC Scan Result Type ==&lt;br /&gt;
Depending on the [[Settings#AR_settings|NFC Scan Result Type]] setting, {{UBIK}} can extract different types of information from a scanned RFID tag:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | width = &amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! NFC Scan Result Type !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| Identifier (Hexadecimal) {{Version/AndroidSince|2.4.2}} || Extracts the write-protected identifier of a scanned tag in hexadecimal form. The identifier is given by the manufacturer and can´t be manipulated. &lt;br /&gt;
|-&lt;br /&gt;
| Content (Hexadecimal) {{Version/AndroidSince|3.0.0}} || Extracts the raw content of a scanned tag in hexadecimal form. Not supported on the Getac Z710. NfcB tags are not supported.&lt;br /&gt;
|-&lt;br /&gt;
| Content (ASCII) {{Version/AndroidSince|3.0.0}} || Extracts the raw content of a scanned tag in ASCII form. Not supported on the Getac Z710. NfcB tags are not supported.&lt;br /&gt;
|-&lt;br /&gt;
| Content (NDEF) {{Version/AndroidSince|3.0.0}} || Extracts NDEF messages of type &amp;quot;Text&amp;quot; or &amp;quot;text/plain&amp;quot; from a scanned tag. Not supported on the Getac Z710.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Configurable start screen RFID button ==&lt;br /&gt;
&lt;br /&gt;
In order to use this feature, a RFID scanning entry point is provided using a [[HowTo:Configure_Start_Screen_Content#Buttons|configurable start start screen button]]. &lt;br /&gt;
The following xml shows an example start screen configuration including RFID scanning entry point: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;StartScreenConfiguration&amp;gt;&lt;br /&gt;
 	    &amp;lt;Tab caption=&amp;quot;Content&amp;quot;&amp;gt;&lt;br /&gt;
	      &amp;lt;ContentBrowserButton caption=&amp;quot;Content Browser&amp;quot;/&amp;gt;&lt;br /&gt;
	      &amp;lt;RFIDScanButton caption=&amp;quot;RFID Scan&amp;quot; /&amp;gt;&lt;br /&gt;
	    &amp;lt;/Tab&amp;gt;&lt;br /&gt;
	  &amp;lt;/StartScreenConfiguration&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
== Scanning an RFID tag == &lt;br /&gt;
[[File:rfid_button_on_startscreen.jpg|thumb|alt=RFID button on Start Screen|RFID button on Start Screen]]&lt;br /&gt;
[[File:Scanning.jpg|thumb|alt=Scanning for RFID tag|Scanning for RFID tag]]&lt;br /&gt;
Once the RFID button in the start screen is clicked, the corresponding RFID scanner starts. The user is then able to scan RFID tags continuously.&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
== Presenting results of a search ==&lt;br /&gt;
[[File:Scanned_searching.jpg|thumb|alt=Searching for Objects|Searching for Objects]]&lt;br /&gt;
[[File:Scanned_search_result.jpg|thumb|alt=Displaying Objects|Displaying Objects]]&lt;br /&gt;
[[File:Scanned_no_result.jpg|thumb|alt=No corresponding Objects|No corresponding Objects]]&lt;br /&gt;
Once the ID of the tag is scanned, {{UBIK}} starts searching for objects with the scanned RFID.&lt;br /&gt;
# During the search, the list might show a searching text before any objects are found;&lt;br /&gt;
# If any objects are found, they will be displayed in a  list. The users can then browse to any of the objects for more information by clicking on the objects;&lt;br /&gt;
# If no objects are found, the list will show a corresponding text.&lt;br /&gt;
{{Clear}}&lt;br /&gt;
== Searching Mechanism ==&lt;br /&gt;
&lt;br /&gt;
{{UBIK}} provides two mechanisms for searching objects: [[Sync Mode#Possible sync modes|online and offline]].&lt;br /&gt;
&lt;br /&gt;
=== Searching offline ===&lt;br /&gt;
&lt;br /&gt;
In any case (regardless of the network connection and [[Sync Mode|sync mode]]), {{UBIK}} always goes through all the objects currently available on the device and find the ones that match the scanned results.&lt;br /&gt;
&lt;br /&gt;
=== Searching online ===&lt;br /&gt;
&lt;br /&gt;
When the Internet is available and {{UBIK}} is not running under offline mode, the search result is enhanced by online search. This means any objects that match the scanned results can be found even if they don't yet exist locally.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Technical background ==&lt;br /&gt;
&lt;br /&gt;
In order for objects to be identifiable through RFID, they have to carry the [[SYSCLS OBJECTWITHRFIDTAG]] classification.&lt;br /&gt;
&lt;br /&gt;
The service query used for online searching is [[SYSCLS RFIDTAGSCANQUERY]].&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[SYSCLS OBJECTWITHRFIDTAG]]&lt;br /&gt;
* [[SYSCLS RFIDTAGSCANQUERY]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Category/Version|2.4.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;headertabs/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:2.4.0|RFID tags]]&lt;br /&gt;
[[Category:Android|RFID tags]]&lt;br /&gt;
[[Category:Mobile|RFID tags]]&lt;br /&gt;
[[Category:Version 2.5|RFID tags]]&lt;br /&gt;
[[Category:Version 3.0|RFID tags]]&lt;br /&gt;
[[Category:WinX|RFID tags]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Restricted_Login_Dialog&amp;diff=30020</id>
		<title>Restricted Login Dialog</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Restricted_Login_Dialog&amp;diff=30020"/>
				<updated>2026-06-23T13:47:03Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DeprecatedStartTag}}&lt;br /&gt;
&lt;br /&gt;
For confidentiality reason, users are required to login before they have access to most of the {{UBIK}} features. Since the free configuration of settings by the user could be a common source of problems, the possibility to predefine them via a web service and make them not alterable via the client is introduced through a restricted login screen.&lt;br /&gt;
&lt;br /&gt;
== Accessing Restricted login dialog ==&lt;br /&gt;
[[File:Loginscreen_loaded_successfully.png|thumb|alt=Login dialog|Start screen]]&lt;br /&gt;
Near the bottom of the start menu which users see immediately after launching {{UBIK}} application, there is a {{key press|Login}} button. Clicking it opens the login dialog.&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
== Logging in ==&lt;br /&gt;
[[File:Login_restricted_screen_without_remember.png|thumb|alt=Login dialog|Login dialog]]&lt;br /&gt;
In the login dialog, users can only choose their name and type in the password to identify themselves. If the authentication is successful, the dialog will be dismissed and users will have access to all the {{UBIK}} features. Otherwise, the error details will be given in the [[#Authentication messages|authentication messages]].&lt;br /&gt;
The settings which were configurable in the normal login dialog are predefined and not accessible by the user. Therefore the interface changed and the {{key press|Load PreSet}} button has disappeared.&lt;br /&gt;
&lt;br /&gt;
In order to visualize whether the predefined settings were loaded, a notification appears indicating if the settings were loaded or an error has occured. Possible notifications are:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; | width = &amp;quot;75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Notification || Reasons of occurrence&lt;br /&gt;
|-&lt;br /&gt;
| ''Settings successfully loaded''|| Everything went fine, data is loaded&lt;br /&gt;
|-&lt;br /&gt;
| ''Check local server configuration''|| The local source.conf file does not contain a valid URL or does not exist&lt;br /&gt;
|-&lt;br /&gt;
| ''Error loading PreSets''|| There are no settings defined on the webservice&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In the case that there is no web service defined either as static URL in the code or via the source.conf file, the normal login dialog is shown instead of the notification.&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Authentication messages ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Password missing ===&lt;br /&gt;
[[File:Login_restricted_screen_password_empty.png|thumb|alt=No password| No password]]&lt;br /&gt;
[[File:Login_restricted_screen_password_wrong.png|thumb|alt=Wrong password| Wrong password]]&lt;br /&gt;
When users try to login without passwords, the indicating message says &amp;quot;Type the password for this account.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Invalid Password ===&lt;br /&gt;
&lt;br /&gt;
When the password being used is invalid, the indicating message says &amp;quot;The password isn't valid. Please try again.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Web service messages ===&lt;br /&gt;
[[File:Login_restricted_screen_authenticating.png|thumb|alt=Authenticating|Authenticating]]&lt;br /&gt;
In case an error occurred while/when the client sends a request to the web service for authentication, a message detailing the reason for failure will be displayed according to the following&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | width = &amp;quot;75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Cause!! Message displayed&lt;br /&gt;
|-&lt;br /&gt;
| ''Invalid satellite''|| The satellite isn't valid.&lt;br /&gt;
|-&lt;br /&gt;
| ''Locked satellite''|| The satellite is locked.&lt;br /&gt;
|-&lt;br /&gt;
| ''Service unavailable''|| The service is unavailable.&lt;br /&gt;
|-&lt;br /&gt;
| ''Service maintenance''|| The service is in maintenance.&lt;br /&gt;
|-&lt;br /&gt;
| ''Internal error''|| An internal error occurred at server side.&lt;br /&gt;
|-&lt;br /&gt;
| ''Unknown error''|| An error occurred at service side.&lt;br /&gt;
|-&lt;br /&gt;
| ''Authorization error''|| An authorization error occurred. Erroneous HTTP status code 401.&lt;br /&gt;
|-&lt;br /&gt;
| ''Service not found''|| The service couldn't be called. Please check the configuration. Erroneous HTTP status code 404.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{Clear}}&lt;br /&gt;
{{Hint|Verification of username and password happens only if the [[Web_Service_Configuration|web service]] is configured accordingly.}}&lt;br /&gt;
{{Clear}}&lt;br /&gt;
{{Hint|Detailed failed login error messages Available since {{Version/Android|2.4.1}}}}&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
== Remembering passwords ==&lt;br /&gt;
(Available since {{Version/Android|2.4.1}})&lt;br /&gt;
[[File:Login_restricted_screen_remembered.png|thumb|alt=Login dialog for remembered user|Login dialog for remembered user]]&lt;br /&gt;
&lt;br /&gt;
{{UBIK}} allows users to remember their passwords for easy login. In the login dialog, there’s an extra checkbox below the password field. Once a user has successfully logged in with it checked, he/she will be remembered. During next time’s login, as soon as the same username is selected, {{UBIK}} detects the remembered state and updates the password field (&amp;quot;*****&amp;quot; regardless of what the real password is) and the checkbox. Similarly, users can uncheck the checkbox to forget their remembered states.&lt;br /&gt;
&lt;br /&gt;
{{Attention|The user and password can only be remembered / forgotten if the login is successful.}}&lt;br /&gt;
{{Hint|It is possible to enter a password even when the user is remembered. In this case, the entered password will be used for login.}}&lt;br /&gt;
&lt;br /&gt;
== Offline Login ==&lt;br /&gt;
Once a user has successfully logged in online, the account is remembered locally and an offline login can be done.&lt;br /&gt;
{{Attention|The same password the online login succeeded with has to be used for subsequent offline logins.&lt;br /&gt;
So even if the authentication web service is not password-restrictive, the client always is.}}&lt;br /&gt;
{{Attention|For the UBIK WinX client, offline login only is possible if the user data is sent to the client via the web service first. The logins have to be configured in the ACM infrastructure therefore.}}&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
[[File:Login_restricted_screen_settings.png|thumb|alt=Settings grayed|Settings not longer editable]]&lt;br /&gt;
The main target of the new login activity was to ensure, that the user can not unintentionally change the settings of the application. Therefore, the possibility to change the settings via the menu-entry settings is as consequence of that no longer editable. What has been preserved is the possibility to save the settings as file, in order to share them with a support person easily.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Login_Dialog]]&lt;br /&gt;
* [[Settings]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Restricted Login Dialog]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Preset&amp;diff=30019</id>
		<title>Preset</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Preset&amp;diff=30019"/>
				<updated>2026-06-23T13:45:57Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DeprecatedStartTag}}&lt;br /&gt;
&lt;br /&gt;
A preset is a collection of [[Settings|{{UBIK}} settings]]. It provides users a convenient way of switching between different sets of settings.&lt;br /&gt;
&lt;br /&gt;
Users have the following options to cope with presets:&lt;br /&gt;
# Save all the current settings into a preset;&lt;br /&gt;
# Load an existing preset and apply the setting values to the current ones.&lt;br /&gt;
&lt;br /&gt;
== Technical Background ==&lt;br /&gt;
&lt;br /&gt;
=== Prior to version 2.4.0 ===&lt;br /&gt;
&lt;br /&gt;
Presets are stored in the following directory as [http://en.wikipedia.org/wiki/JSON JSON] files.&lt;br /&gt;
&lt;br /&gt;
'''/Android/data/APP_PACKAGE_NAME/files/preset_folder'''  on the public internal storage (Google calls that the &amp;quot;Primary External Storage&amp;quot;), which is NOT the SD-card. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | width = &amp;quot;50%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter!! Purpose&lt;br /&gt;
|-&lt;br /&gt;
| ''APP_PACKAGE_NAME''|| is the concatenation of &amp;quot;com.augmensys.ubik.&amp;quot; and the application name, e.g. ''demo'', ''manualtest'', ''companyname'' etc.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Starting from version 2.4.0 ===&lt;br /&gt;
&lt;br /&gt;
Presets are stored under a new location: '''/UBIK/preset_folder''' on the public internal storage (Google calls that the &amp;quot;Primary External Storage&amp;quot;), which is NOT the SD-card.&lt;br /&gt;
&lt;br /&gt;
{{hint|In addition, the stored presets are shared between different {{UBIK}} apps and will no longer be removed after apps' uninstallation.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[HowTo:Save Settings as Presets]]&lt;br /&gt;
* [[HowTo:Load Presets]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Preset]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=POI_dialog&amp;diff=30018</id>
		<title>POI dialog</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=POI_dialog&amp;diff=30018"/>
				<updated>2026-06-23T13:44:32Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DeprecatedStartTag}}&lt;br /&gt;
&lt;br /&gt;
[[File:content_dialog.png|thumb|alt=POI dialog|POI dialog]]&lt;br /&gt;
[[File:UI_UBIK_Android_POI_Dialog_With_Properties.jpg|thumb|alt=POI dialog with important properties|POI dialog with important properties]]&lt;br /&gt;
A [[HowTo:Declare_an_Object_as_Point_of_Interest_(POI) | POI]] dialog is used for displaying information of the POI object.&lt;br /&gt;
Such a dialog contains the following elements:&lt;br /&gt;
* Title, which displays the name of the object;&lt;br /&gt;
* Descriptive text, which displays the description of the object;&lt;br /&gt;
* Property list, which displays the important properties of the object or nothing if there are none. {{Version/AndroidSince|2.4.4}}&lt;br /&gt;
{{Hint|Properties with priorities higher/bigger than the [[Settings#User_specific_settings|PriorityThreshold]] are considered important.}}&lt;br /&gt;
* Browse button, which shows the POI object in a {{UBIK}} content browser;&lt;br /&gt;
* Navigate button, which opens a third-party application and navigate to the POI object's geo location;&lt;br /&gt;
* Open group button, which opens the [[POI_Groups|POI group]].&lt;br /&gt;
{{Hint|The navigate button will not be available/visible if the POI object does not have any geo information. Similarly, the group related button will not be available if the object is not a group.}}&lt;br /&gt;
&lt;br /&gt;
To close the dialog, the user can click anywhere else on the map.&lt;br /&gt;
&lt;br /&gt;
== POI Info window ==&lt;br /&gt;
[[File:UI_UBIK_Android_POI_Info_Window.png|thumb|alt=POI Info window|POI Info window]]&lt;br /&gt;
In later versions the POI dialog is replaced by a new POI Info window in the map. {{Version/AndroidSince|2.5.5}}&lt;br /&gt;
&lt;br /&gt;
Compared to the dialog the Info window has the following characteristics.&lt;br /&gt;
* It is anchored to the POI on the map and moves with the latter when the user pans the map;&lt;br /&gt;
* It is not dismissed the same way like the dialog. Instead, the user has to click/tap the same POI again or the {{key press|X}} button to close it;&lt;br /&gt;
* It is possible to have multiple Info windows open at the same time;&lt;br /&gt;
* If an object is shown as multiple POIs (E.g., an object is a [[SYSCLS_GEO|geo object]] and at the same time a [[Geographies|geography object]]), only one Info window will be shown for these POIs (anchored to whichever the user clicks/taps).&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|POI dialog]]&lt;br /&gt;
[[Category:Client|POI dialog]]&lt;br /&gt;
[[Category:POI|POI dialog]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=HowTo:Make_a_Document_ready_for_Redlining&amp;diff=30016</id>
		<title>HowTo:Make a Document ready for Redlining</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=HowTo:Make_a_Document_ready_for_Redlining&amp;diff=30016"/>
				<updated>2026-06-23T13:42:27Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: /* Android */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[Documents_(UBIK_Android)#Redlining|redlining]] feature creates a copy of the [[DOCUMENT|document]] and opens it for editing with any installed 3rd party application. Enabling redlining for certain document objects requires that the following criteria are met:&lt;br /&gt;
&lt;br /&gt;
= Studio =&lt;br /&gt;
'''Criterion 1:''' A [[FILEDOCUMENT|file document]] [[MetaClass]] is prepared for Redlining&lt;br /&gt;
# Set the [[SYSCLS_REDLINEDFILE]] classification on a [[MetaClass]] for [[FILEDOCUMENT|file documents]] using the {{Class_Details}} control (the MetaClass must derive from [[FILEDOCUMENT]])&amp;lt;br/&amp;gt;[[File:UI_HowTo_Prepare_a_Document_for_Redlining_01.png|330 px|border|alt=Redlined document|Redlined document classification]]&lt;br /&gt;
# Check if all required MetaProperties are implemented&lt;br /&gt;
&lt;br /&gt;
'''Criterion 2:''' File documents can be created as child objects of other file documents&lt;br /&gt;
# Create a new relation between the MetaClasse of the original file document and the redlined file document&amp;lt;br/&amp;gt;[[File:UI_HowTo_Prepare_a_Document_for_Redlining_02.png|700 px|border|alt=Create relation|Create relation]]&lt;br /&gt;
&lt;br /&gt;
'''Criterion 3:''' [[:Category:Views|View items]] for the (redlined) file document exist&lt;br /&gt;
# Create the view items for the file documents if they do not already exist (existing view items for file documents might be sufficient)&lt;br /&gt;
# Relate the view items to the according [[View]] and test the result in the [[View Test Environment]] (redlined documents can be created as child objects of other documents)&lt;br /&gt;
&lt;br /&gt;
'''Criterion 4:''' [[CONTEXTSCOPE|Context scopes]] for the redlined file document exist and such file [[Documents_(UBIK_Android)#Creating_Documents|document can be created]] on the {{UBIK Client|mobile client}}&lt;br /&gt;
# Create a context scope for the redlined file document (an existing context scope for file documents might be sufficient&amp;lt;br/&amp;gt;[[File:UI_HowTo_Prepare_a_Document_for_Redlining_03.png|700 px|border|alt=Create context scopes|Create context scopes]]&lt;br /&gt;
# Enable the creation of the document on the {{UBIK Client}} and configure at least the ''Description'' property in the [[ACM]]&amp;lt;br/&amp;gt;[[File:UI_HowTo_Prepare_a_Document_for_Redlining_04.png|500 px|border|alt=Create context scopes|Create context scopes]]&lt;br /&gt;
# If a thumbnail should be displayed on the mobile client configure the ''Thumbnail'' property as well&lt;br /&gt;
&lt;br /&gt;
= Android =&lt;br /&gt;
{{DeprecatedStartTag}}&lt;br /&gt;
&lt;br /&gt;
Once the configuration has been completely accomplished on the server side the '''Redline Document''' function should be available on the mobile client.&lt;br /&gt;
# Long-click a document's thumbnail [[UBIK_Client_Basics#Content_Browser|Content Browser]]&lt;br /&gt;
# Access the menu and choose '''Redline Document'''&amp;lt;br/&amp;gt;[[File:UI_HowTo_Prepare_a_Document_for_Redlining_05.png|200 px|border|alt=Redline document|Redline document]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[HowTo:Assign a Classification to a MetaClass]]&lt;br /&gt;
* [[HowTo:Add a MetaProperty to a MetaClass]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Make a Document ready for Redlining]]&lt;br /&gt;
[[Category:Document|Make a Document ready for Redlining]]&lt;br /&gt;
[[Category:How-To|Make a Document ready for Redlining]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Login_Dialog&amp;diff=30015</id>
		<title>Login Dialog</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Login_Dialog&amp;diff=30015"/>
				<updated>2026-06-23T13:41:58Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DeprecatedStartTag}}&lt;br /&gt;
&lt;br /&gt;
For confidentiality reason, users are required to login before they have access to most of the {{UBIK}} features.&lt;br /&gt;
&lt;br /&gt;
== Accessing login dialog ==&lt;br /&gt;
[[File:UI_Android_LoginButtonInStartMenu.jpg|thumb|alt=Login button in the start menu|Login button in the start menu]]&lt;br /&gt;
Near the bottom of the start menu which users see immediately after launching {{UBIK}} application, there is a {{key press|Login}} button. Clicking it opens the login dialog.&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
== Logging in ==&lt;br /&gt;
[[File:UI_Android_LoginDialog.jpg|thumb|alt=Login dialog|Login dialog]]&lt;br /&gt;
In the login dialog, users can provide their credentials to identify themselves. If the authentication is successful, the dialog will be dismissed and users will have access to all the {{UBIK}} features. Otherwise, the error details will be given in the [[#Authentication messages|authentication messages]].&lt;br /&gt;
&lt;br /&gt;
=== Logging in with the current UBIK settings ===&lt;br /&gt;
[[File:UI_Android_LoginProgressDialog.jpg|thumb|alt=User authentication in progress|User authentication in progress]]&lt;br /&gt;
If all the [[UBIK_Client_Basics#Options|{{UBIK}} setting]] values are already configured correctly before login, users can simply click {{key press|Login}} in the dialog. During the time of authentication, there will be a progress dialog displayed. Once users' identities are confirmed, both dialogs will be dismissed.&lt;br /&gt;
&lt;br /&gt;
=== Logging in with a selected [[Preset]] ===&lt;br /&gt;
[[File:UI_Android_LoadPresetDuringLogin.jpg|thumb|alt=Selecting a preset before login|Selecting a preset before login]]&lt;br /&gt;
It is also possible to specify a collection of setting values to use before login. In this case, simply click {{key press|Load Preset}}. A preset selection dialog will then be shown.&lt;br /&gt;
After choosing the desired preset, users can click {{key press|Login}} in the selection dialog to trigger the authentication.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== PreSet can not be loaded ====&lt;br /&gt;
&lt;br /&gt;
[[HowTo:Load_Presets#PreSet can not be loaded|PreSets can not be loaded]] eventually. If this happens when attempting to login, a notification is shown and the user is navigated back to the login dialog after pressing {{key press |Login}}. Settings are not changed if the PreSet was erroneous.&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Authentication messages ==&lt;br /&gt;
=== No user input ===&lt;br /&gt;
[[File:UI_Android_LoginDialogNoInput.jpg|thumb|alt=Before any user input|Before any user input]]&lt;br /&gt;
When users try to login with no input at all, the indicating message says &amp;quot;Please enter your username and password.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Password missing ===&lt;br /&gt;
[[File:UI_Android_LoginDialogNoPassword.jpg|thumb|alt=Password missing|Password missing]]&lt;br /&gt;
When users try to login with only usernames but not passwords, the indicating message says &amp;quot;Type the password for this account.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Invalid user credentials ===&lt;br /&gt;
[[File:invalid_username.jpg|thumb|alt=Invalid username entered|Invalid username entered]]&lt;br /&gt;
[[File:invalid_password.jpg|thumb|alt=Invalid password entered|Invalid password entered]]&lt;br /&gt;
When the usernames being used is invalid, the indicating message says &amp;quot;The username isn't valid. Please try again.&amp;quot;. Also when the password being used is invalid, the indicating message says &amp;quot;The password isn't valid. Please try again.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{Attention|Usernames are not case sensitive, which means &amp;quot;Admin&amp;quot; and &amp;quot;admin&amp;quot; designate the same account.}}&lt;br /&gt;
&lt;br /&gt;
{{Hint|Verification of username and password happens only if the [[Web_Service_Configuration|web service]] is configured to use [[USAM]].}}&lt;br /&gt;
&lt;br /&gt;
=== Offline login: Unkown user credentials ===&lt;br /&gt;
When logging in without network access, the client tries to compare the given credentials to a successful, earlier login. If this fails (even if the credentials would be correct when tried against the server) the offline login is unsuccessful. A respective message is shown to the user: &amp;quot;Offline login failed: There was no previous login with the given credentials. Please try to login when connected to the server!&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Web service messages ===&lt;br /&gt;
In case an error occurred while/when the client sends a request to the web service for authentication, a message detailing the reason for failure will be displayed according to the following&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | width = &amp;quot;65%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Cause!! Message displayed&lt;br /&gt;
|-&lt;br /&gt;
| ''Invalid satellite''|| The satellite isn't valid.&lt;br /&gt;
|-&lt;br /&gt;
| ''Locked satellite''|| The satellite is locked.&lt;br /&gt;
|-&lt;br /&gt;
| ''Service unavailable''|| The service is unavailable.&lt;br /&gt;
|-&lt;br /&gt;
| ''Service maintenance''|| The service is in maintenance.&lt;br /&gt;
|-&lt;br /&gt;
| ''Internal error''|| An internal error occurred at server side.&lt;br /&gt;
|-&lt;br /&gt;
| ''Unknown error''|| An error occurred at service side.&lt;br /&gt;
|-&lt;br /&gt;
| ''Authorization error''|| An authorization error occurred. Erroneous HTTP status code 401.&lt;br /&gt;
|-&lt;br /&gt;
| ''Service not found''|| The service couldn't be called. Please check the configuration. Erroneous HTTP status code 404.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Hint|Detailed failed login error messages available since {{Version/Android|2.4.1}}}}&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Remembering passwords ==&lt;br /&gt;
(Available since {{Version/Android|2.4.1}})&lt;br /&gt;
[[File:UI_Android_Login_Remembered_Password.jpg|thumb|alt=Login dialog for a remembered user|Login dialog for a remembered user]]&lt;br /&gt;
&lt;br /&gt;
{{UBIK}} allows users to remember their passwords for easy login. In the login dialog, there’s an extra checkbox below the password field. Once a user has successfully logged in with it checked, he/she will be remembered. During next time’s login, as soon as the same username is entered and the focus leaves the name field, {{UBIK}} detects the remembered state and updates the password field (&amp;quot;*****&amp;quot; regardless of what the real password is) and the checkbox. Similarly, users can uncheck the checkbox to forget their remembered states.&lt;br /&gt;
&lt;br /&gt;
{{Attention|The user and password can only be remembered / forgotten if the login is successful.}}&lt;br /&gt;
{{Hint|It is possible to enter a password even when the user is remembered. In this case, the entered password will be used for login.}}&lt;br /&gt;
&lt;br /&gt;
== Offline Login ==&lt;br /&gt;
Once a user has successfully logged in online, the account is remembered locally and an offline login can be done.&lt;br /&gt;
{{Attention|The same password the online login succeeded with has to be used for subsequent offline logins. &amp;lt;br/&amp;gt;So even if the authentication web service is not password-restrictive, the client always is.}}&lt;br /&gt;
{{Attention|For the UBIK WinX client, offline login only is possible if the user data is sent to the client via the web service first. The logins have to be configured in the ACM infrastructure therefore.}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[HowTo:Load Presets]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Login Dialog]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=HowTo:Load_Presets&amp;diff=30014</id>
		<title>HowTo:Load Presets</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=HowTo:Load_Presets&amp;diff=30014"/>
				<updated>2026-06-23T13:40:58Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DeprecatedStartTag}}&lt;br /&gt;
&lt;br /&gt;
In order to apply previously defined setting values, presets can be loaded.&lt;br /&gt;
&lt;br /&gt;
== The preset selection dialog ==&lt;br /&gt;
[[Preset|Presets]] can be loaded using the preset selection dialog. &lt;br /&gt;
&lt;br /&gt;
The correct PreSet is indicated as loaded both as title in the [[Settings]] and when opening the {{key press|Load PreSet}} dialog. If there are changes, this is also reflected by a symbolic pencil next tos the preset name. {{Version/AndroidSince|2.4.6}}&lt;br /&gt;
&lt;br /&gt;
=== Load a preset via the settings activity ===&lt;br /&gt;
# Go to [[Settings]]&lt;br /&gt;
# Press {{key press|Load PreSet}} at the bottom of the screen&amp;lt;br/&amp;gt;[[File:UI_HowTo_Save_Settings_As_Presets_01.jpg|200 px|border|alt=Load preset|Load preset]]&lt;br /&gt;
# Choose a preset by tapping the row&lt;br /&gt;
# Press {{key press|OK}}&amp;lt;br/&amp;gt;[[File:UI_Android_LoadPresetDuringLogin.jpg|340 px|border|alt=Selecting a preset before login|Selecting a preset before login]]&lt;br /&gt;
&lt;br /&gt;
=== Load a preset via the login dialog ===&lt;br /&gt;
# Open [[Login Dialog]]&lt;br /&gt;
# Enter username and password&lt;br /&gt;
# Press {{key press|Load PreSet}} next to {{key press|Login}}&amp;lt;br/&amp;gt;[[File:UI_Android_LoginDialog.jpg|240 px|border|alt=Login dialog|Login dialog]]&lt;br /&gt;
# Choose a preset by tapping the row&lt;br /&gt;
# Press {{key press|OK}}&amp;lt;br/&amp;gt;[[File:UI_Android_LoadPresetDuringLogin.jpg|340 px|border|alt=Selecting a preset before login|Selecting a preset before login]]&lt;br /&gt;
&lt;br /&gt;
=== Icons ===&lt;br /&gt;
Each icon within the loadPreSet dialog and the Settings activities headline has a different meaning.&lt;br /&gt;
&lt;br /&gt;
* The pencil indicates that the current settings differ from the settings defined in the currently loaded PreSet. Upon entering the loadPreSet dialog, an extra row with the name of the currently loaded preset with this pencil symbol is shown and selectable.&lt;br /&gt;
* The offline symbol (white rectangle with a black shutdown symbol in it) indicates that the preset is stored locally on the device.&lt;br /&gt;
* The online symbol (white rectangle with a black mouse pointer in it) indicates that the preset is fetched online via the [[Serverside_Account_Configuration]]. &amp;lt;br/&amp;gt; [[File:UI_load_preset_with_changed_preset.png|340 px|border|alt=Load Preset dialog with changed PreSet|Load Preset dialog with changed PreSet]]&lt;br /&gt;
&lt;br /&gt;
=== PreSet can not be loaded ===&lt;br /&gt;
It is possible under special circumstances, that a PreSet file can not be loaded (e.g. if the file is modified manually). In that case, a notification is shown.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Login Dialog]]&lt;br /&gt;
* [[HowTo:Save Settings as Presets]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Load Presets]]&lt;br /&gt;
[[Category:How-To|Load Presets]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=HowTo:Customize_Status_LED_on_Mobile_Client&amp;diff=30013</id>
		<title>HowTo:Customize Status LED on Mobile Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=HowTo:Customize_Status_LED_on_Mobile_Client&amp;diff=30013"/>
				<updated>2026-06-23T13:39:34Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DeprecatedStartTag}}&lt;br /&gt;
&lt;br /&gt;
It is possible to customize the [[Status Colour LED (UBIK Android)|status LED]] for applications on a mobile device. This can be done by simply placing/replacing the image file '''status_led.png''' in the [[UI_Configuration_(Mobile_Client)|UI Configurations folder]].&lt;br /&gt;
&lt;br /&gt;
{{Hint|The recommended max resolution/dimension of the image file is 48x48 pixels for phones and 72x72 pixels for tablets. Once the image size exceeds the row height, the views might not be displayed in an optimal way.}}&lt;br /&gt;
&lt;br /&gt;
{{Hint|The color of the image will affect the final color of the status LED. Therefore, it is recommended to use an image with light colors such as grey or white.}}&lt;br /&gt;
&lt;br /&gt;
The customization can be achieved through the following steps:&lt;br /&gt;
&lt;br /&gt;
# Launch any file browser application;&lt;br /&gt;
# Choose an image file to be used as the status LED, rename it to '''status_led.png''';&lt;br /&gt;
# Navigate to the predefined directory, create it if not found;&lt;br /&gt;
# Place the renamed file under the selected directory, replace the old file with the same name if exists.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;300&amp;quot; heights=&amp;quot;150&amp;quot;&amp;gt;&lt;br /&gt;
File:UI_Android_Default_Status_LED.jpg|Default Status LED (Status Color: Orange)&lt;br /&gt;
File:UI_Android_Custom_Status_LED.jpg|Custom Status LED (Status Color: Orange)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[UI_Configuration_(Mobile_Client)]]&lt;br /&gt;
* [[HowTo:Make_an_Object_show_a_Status_LED]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Customize Status LED on Mobile Client]]&lt;br /&gt;
[[Category:How-To|Customize Status LED on Mobile Client]]&lt;br /&gt;
[[Category:Publishing|Customize Status LED on Mobile Client]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=HowTo:Configure_Start_Screen_Content&amp;diff=30012</id>
		<title>HowTo:Configure Start Screen Content</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=HowTo:Configure_Start_Screen_Content&amp;diff=30012"/>
				<updated>2026-06-23T13:39:11Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DeprecatedStartTag}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
The Dynamic Configurable start screen feature allows the {{UBIK}} user to tailor the buttons on the start screen according to the needs of the customer.&lt;br /&gt;
&lt;br /&gt;
== Setup ==&lt;br /&gt;
* The first step is to configure the start screen data using an xml in order for {{UBIK}} to recognize the different tabs and buttons. The xml file, which must have the name '''css_config.xml''', should be placed in the [[UI_Configuration_(Mobile_Client)|UI Configurations folder]].&lt;br /&gt;
&lt;br /&gt;
* After the folder is configured, the next step is to validate the XML configuration file against the [http://wiki.augmensys.com/index.php/File:Start_Screen_Configuration_Schema.zip schema] using an online validator. A solution can be found at [http://www.utilities-online.info/xsdvalidation/ Online XML Schema Validator].&lt;br /&gt;
The following xml shows an example configuration (also can be downloaded as {{FileLink|Start_Screen_Configuration.zip|Start_Screen_Configuration.zip}} an xml file):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;StartScreenConfiguration&amp;gt;&lt;br /&gt;
    &amp;lt;Tab caption=&amp;quot;Content&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;ContentBrowserButton caption=&amp;quot;Content Browser&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;ContentBrowserButton caption=&amp;quot;Events&amp;quot; UBIK-UID=&amp;quot;31aaa5c9-85dd-4243-9cf8-89d712d32405&amp;quot; iconPath=&amp;quot;events.png&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/Tab&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
    &amp;lt;Tab caption=&amp;quot;AR1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;MapsButton/&amp;gt;&lt;br /&gt;
      &amp;lt;POIViewButton caption=&amp;quot;AR View&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;CustomIntentButton caption=&amp;quot;Map of Linz&amp;quot; iconPath=&amp;quot;linz.png&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;TargetURI&amp;gt;&lt;br /&gt;
          https://www.google.com/maps/place/Linz/@48.295065,14.327405,12z/data=!3m1!4b1!4m2!3m1!1s0x47739595fa99854d:0x7c53292c577975c4&lt;br /&gt;
        &amp;lt;/TargetURI&amp;gt;&lt;br /&gt;
      &amp;lt;/CustomIntentButton&amp;gt;&lt;br /&gt;
      &amp;lt;CustomIntentButton caption=&amp;quot;Skype&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;TargetClass&amp;gt;&lt;br /&gt;
          com.skype.raider.Main&lt;br /&gt;
        &amp;lt;/TargetClass&amp;gt;&lt;br /&gt;
      &amp;lt;/CustomIntentButton&amp;gt;&lt;br /&gt;
      &amp;lt;CustomIntentButton caption=&amp;quot;Maps&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;TargetClass&amp;gt;&lt;br /&gt;
         com.augmensys.ubik.demo.lib.ui.activities.ar.map.UBIKMapActivityDemo&lt;br /&gt;
        &amp;lt;/TargetClass&amp;gt;&lt;br /&gt;
      &amp;lt;/CustomIntentButton&amp;gt;&lt;br /&gt;
      &amp;lt;TargetMapsButton caption=&amp;quot;Flow Controller 213&amp;quot;  UBIK-UID=&amp;quot;2ccd91c0-9cee-42f3-9d1d-be745908457d&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/Tab&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
    &amp;lt;Tab caption=&amp;quot;AR2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;IDMarkerScanButton caption=&amp;quot;ID Marker Scan&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;QRCodeScanButton caption=&amp;quot;QR Code Scan&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;ConfigurableARButton caption=&amp;quot;Configurable AR&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;ConfigurableImageMarkerButton caption=&amp;quot;Configurable Image Marker&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;ARNavigationButton caption=&amp;quot;Flow Controller 213&amp;quot; UBIK-UID=&amp;quot;2ccd91c0-9cee-42f3-9d1d-be745908457d&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;NavigationMapsButton caption=&amp;quot;Flow Controller 213&amp;quot; UBIK-UID=&amp;quot;2ccd91c0-9cee-42f3-9d1d-be745908457d&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DemoMapsButton caption=&amp;quot;Flow Controller 213&amp;quot; UBIK-UID=&amp;quot;2ccd91c0-9cee-42f3-9d1d-be745908457d&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;RFIDScanButton caption=&amp;quot;RFID Scan&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Tab&amp;gt;&lt;br /&gt;
  &amp;lt;/StartScreenConfiguration&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Hint|The config file has to be named '''css_config.xml'''. }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tab groups ==&lt;br /&gt;
The user can configure tab groups in the XML. They will be used as groupings for buttons.&lt;br /&gt;
&lt;br /&gt;
== Buttons ==&lt;br /&gt;
Buttons should be placed inside tab elements and can be parameterized. Buttons are configurable in terms of&lt;br /&gt;
* Icon (Parameter: ''iconPath'')&lt;br /&gt;
* Caption (Parameter: ''caption'')&lt;br /&gt;
* Group/tab (name of tab group)&lt;br /&gt;
* Object UID if needed (Parameter: ''UBIK-UID'')&lt;br /&gt;
&lt;br /&gt;
{{Hint|The icons are specified by their relative paths under '''''SD_CARD''/Android/data/''APP_PACKAGE_NAME''/files/UIConfigurations/CSSButtonIcons''' }}&lt;br /&gt;
&lt;br /&gt;
The supported button types are as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery heights=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;
File:UI_Android_CSS_Buttons_Content_Browser.jpg‎|Content Browser Button&lt;br /&gt;
File:UI_Android_CSS_Buttons_Custom_Intent.png‎|Custom Intent Button&lt;br /&gt;
File:UI_Android_CSS_Buttons_Maps.jpg|Maps Button&lt;br /&gt;
File:UI_Android_CSS_Buttons_Maps.jpg|Target Maps Button&lt;br /&gt;
File:UI_Android_CSS_Buttons_ID_Marker_Scan.jpg|ID Marker Scan Button&lt;br /&gt;
File:UI_Android_CSS_Buttons_QR_Code_Scan.jpg|QR Code Scan Button&lt;br /&gt;
File:UI_Android_CSS_Buttons_POI_View.jpg|POI View Button&lt;br /&gt;
File:UI_Android_CSS_Buttons_Config_AR.jpg|Configurable AR Button&lt;br /&gt;
File:UI_Android_CSS_Buttons_Config_Image.jpg|Configurable Image Marker Button&lt;br /&gt;
File:UI_Android_CSS_Buttons_Nav_Maps.jpg|Navigation Button&lt;br /&gt;
File:UI_Android_CSS_Buttons_AR_Navigation.jpg|AR Navigation Button&lt;br /&gt;
File:UI_Android_CSS_Buttons_Barcode.png|Barcode Scan Button&lt;br /&gt;
File:UI_Android_CSS_Buttons_RFID_Scan.jpg|RFID Scan Button&lt;br /&gt;
File:UI_Android_CSS_Buttons_OCR_Scan.png|OCR Scan Button {{Version/AndroidSince|2.5.0}}&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; | width = &amp;quot;70%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Button!! Purpose !! Parameters&lt;br /&gt;
|-&lt;br /&gt;
| ''ContentBrowserButton''|| Opens a content browser for displaying an object or the root if no object/uid is specified. || ''UBIK-UID'': UID of object to be shown on map&lt;br /&gt;
|-&lt;br /&gt;
| ''[[Custom_Intent_Button|CustomIntentButton]]'' || Launches a certain application or URI for the specified intent (using a customized intent URI or target class). || ''TargetClass'': name of an activity or an application&amp;lt;br /&amp;gt;''TargetURI'': link information&lt;br /&gt;
|-&lt;br /&gt;
| ''MapsButton''|| Opens {{UBIK}} map. || -&lt;br /&gt;
|-&lt;br /&gt;
| ''TargetMapsButton''|| Opens {{UBIK}} map for a target object. || ''UBIK-UID'': UID of object to be shown on map&lt;br /&gt;
|-&lt;br /&gt;
| ''ID MarkerScanButton''|| Starts ID marker scanning. || -&lt;br /&gt;
|-&lt;br /&gt;
| ''QRScanButton''|| Starts QR code scanning. || -&lt;br /&gt;
|-&lt;br /&gt;
| ''POIViewButton''|| Opens {{UBIK}} POI view. || -&lt;br /&gt;
|-&lt;br /&gt;
| ''ConfigurableARButton''|| Opens the ID marker 3D view. || -&lt;br /&gt;
|-&lt;br /&gt;
| ''ConfigurableImageMarkerButton''|| Opens the markerless view. || -&lt;br /&gt;
|-&lt;br /&gt;
| ''ARNavigationPOIViewButton''|| Opens {{UBIK}} POI view with the AR navigation support. || ''UBIK-UID'': UID of object to be navigated to&lt;br /&gt;
|-&lt;br /&gt;
| ''ARNavigationMapsButton''|| Opens {{UBIK}} map for the specified object.Starts navigating to the specified object. || ''UBIK-UID'': UID of object to be navigated to&lt;br /&gt;
|-&lt;br /&gt;
| ''BarcodeScanButton''|| Starts barcode scanning. || -&lt;br /&gt;
|-&lt;br /&gt;
| ''RFIDScanButton''|| Starts RFID scanning. || -&lt;br /&gt;
|-&lt;br /&gt;
| ''OCRScanButton''|| Starts OCR scanning. {{Version/AndroidSince|2.5.0}} || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Color of Buttons ===&lt;br /&gt;
&lt;br /&gt;
If no user is logged in the buttons are de-saturated. Once a user is logged in the buttons are colored according to following behaviour:&lt;br /&gt;
* If default buttons are used the buttons are colored programmatically. The button and the color can be customized by the Development.&lt;br /&gt;
* If custom buttons are used (specified by the parameter &amp;quot;iconPath&amp;quot;) the original color of the button is retained.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configuration guidelines ==&lt;br /&gt;
&lt;br /&gt;
* See [[UI_Configuration_(Mobile_Client)]]&lt;br /&gt;
* The '''maximum number of tabs is 6'''. Once this limit is exceeded, the configuration is invalid and won't be shown.&lt;br /&gt;
* The captions of tabs are optional. In case there's only one tab, the tab will be invisible.&lt;br /&gt;
* The '''buttons''' should always be '''nested inside tabs'''. Otherwise, the configuration is also invalid.&lt;br /&gt;
* Captions and icons of buttons are optional. Default values are used for the unspecified ones.&lt;br /&gt;
* While configuring the [[Custom Intent Button|custom intent button]], one should always specify one and only one of the target class and the target URI. Otherwise, the button is invalid and an error will be shown.&lt;br /&gt;
* The configuration of the ''UBIK-UID'' parameter should always be specified for AR Navigation POI View Button, AR Navigation Maps Button, Demo Maps Button and Target Maps Button.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Attention|The configuration is only applied when the app starts. Close the app completely (not only move it to the background) and restart it to make sure the configuration is read.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
The result is that the tabs and buttons configured in the XML file will be visible and open the right activity once they are clicked.&lt;br /&gt;
&lt;br /&gt;
The following screenshots demonstrate the results of the example XML configuration.&lt;br /&gt;
&amp;lt;br/&amp;gt;[[File:UI_Android_CSS_Buttons_Tab1.png|500px|border|alt=The First Tab|The First Tab]]&lt;br /&gt;
&amp;lt;br/&amp;gt;[[File:UI_Android_CSS_Buttons_Tab2.png|500px|border|alt=The Second Tab|The Second Tab]]&lt;br /&gt;
&amp;lt;br/&amp;gt;[[File:UI_Android_CSS_Buttons_Tab3.png|500px|border|alt=The Third Tab|The Third Tab]]&lt;br /&gt;
&lt;br /&gt;
After users log in, the buttons are enabled and colored. Upon being clicked, they should trigger different actions.&lt;br /&gt;
&amp;lt;br/&amp;gt;[[File:UI_Android_CSS_Buttons_After_Login.png|500px|border|alt=Buttons After Login|Buttons After Login]]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[UI_Configuration_(Mobile_Client)]]&lt;br /&gt;
* [[Custom_Intent_Button]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Configure Start Screen Content]]&lt;br /&gt;
[[Category:How-To|Configure Start Screen Content]]&lt;br /&gt;
[[Category:Publishing|Configure Start Screen Content]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=HowTo:Customize_Logo_and_Background_on_Mobile_Client&amp;diff=30011</id>
		<title>HowTo:Customize Logo and Background on Mobile Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=HowTo:Customize_Logo_and_Background_on_Mobile_Client&amp;diff=30011"/>
				<updated>2026-06-23T13:37:42Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DeprecatedStartTag}}&lt;br /&gt;
&lt;br /&gt;
[[File:bg_landscape.png|thumb|Template background landscape]]&lt;br /&gt;
[[File:bg_portrait.png|thumb|Template background portrait]]&lt;br /&gt;
&lt;br /&gt;
It is possible to customize logo and background images for {{UBIK}} Android.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
In order to configure images, place the required files under the [[UI_Configuration_(Mobile_Client)|UI Configurations folder]].&lt;br /&gt;
&lt;br /&gt;
== File requirements ==&lt;br /&gt;
&lt;br /&gt;
The following files can be used:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | width = &amp;quot;50%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter!! Purpose !! Recommended Resolution (px)&lt;br /&gt;
|-&lt;br /&gt;
| ''bg_landscape.png''|| background for landscape mode || 1000x447&lt;br /&gt;
|-&lt;br /&gt;
| ''bg_portrait.png''|| background for portrait mode || 600x871&lt;br /&gt;
|-&lt;br /&gt;
| ''icon.png''|| logo to display in the ActionBar || 48x48&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Hint|The resolution values are for a device with a 1000x600 pixels screen like the Getac Z710; the values may vary for other devices with different screen resolutions}}&lt;br /&gt;
&lt;br /&gt;
The customization can be achieved through the following steps:&lt;br /&gt;
&lt;br /&gt;
# Launch any file browser application;&lt;br /&gt;
# Choose image files to be used as logo and/or background, rename them according to the default naming;&lt;br /&gt;
# Navigate to the predefined directory, create it if not found;&lt;br /&gt;
# Place the renamed files under the selected directory, replace the old files with the same names if exist.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[UI_Configuration_(Mobile_Client)]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Customize Logo &amp;amp; Background on Mobile Client]]&lt;br /&gt;
[[Category:How-To|Customize Logo &amp;amp; Background on Mobile Client]]&lt;br /&gt;
[[Category:Publishing|Customize Logo &amp;amp; Background on Mobile Client]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Custom_Intent_Button&amp;diff=30010</id>
		<title>Custom Intent Button</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Custom_Intent_Button&amp;diff=30010"/>
				<updated>2026-06-23T13:37:20Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DeprecatedStartTag}}&lt;br /&gt;
&lt;br /&gt;
The Custom Intent Button is a button with special parameters defined. Namely the target class parameter, and the target URI parameter. In order for the Custom Intent Button to work as intended, either the Target Class or Target URI should be specified, but not both. Also they shouldn’t be both undefined for the same button instance. &lt;br /&gt;
== Target Class ==&lt;br /&gt;
The Target Class parameter is used to specify the name of an activity or an application to launch when the button is clicked. In the case that an internal {{UBIK}} activity is to be launched, the full activity name has to be included. As in the following example.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;StartScreenConfiguration&amp;gt;&lt;br /&gt;
    &amp;lt;Tab caption=&amp;quot;AR1&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;CustomIntentButton caption=&amp;quot;Maps&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;TargetClass&amp;gt;&lt;br /&gt;
         com.augmensys.ubik.demo.lib.ui.activities.ar.map.UBIKMapActivityDemo&lt;br /&gt;
        &amp;lt;/TargetClass&amp;gt;&lt;br /&gt;
      &amp;lt;/CustomIntentButton&amp;gt;&lt;br /&gt;
    &amp;lt;/Tab&amp;gt;&lt;br /&gt;
  &amp;lt;/StartScreenConfiguration&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Only the activities that are stated as a main entry point for {{UBIK}} can be used as target classes. &amp;lt;br/&amp;gt;&lt;br /&gt;
In the case that an application is to be launched, the main entry point class name has to be specified, as in the following example if Skype application is to be launched.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;StartScreenConfiguration&amp;gt;&lt;br /&gt;
    &amp;lt;Tab caption=&amp;quot;AR1&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;CustomIntentButton caption=&amp;quot;Skype&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;TargetClass&amp;gt;&lt;br /&gt;
         com.skype.raider.Main&lt;br /&gt;
        &amp;lt;/TargetClass&amp;gt;&lt;br /&gt;
      &amp;lt;/CustomIntentButton&amp;gt;&lt;br /&gt;
    &amp;lt;/Tab&amp;gt;&lt;br /&gt;
  &amp;lt;/StartScreenConfiguration&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Target URI ==&lt;br /&gt;
The target URI parameter, used to specify the URI of the resource to launch when the button is clicked. As in the following example.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;StartScreenConfiguration&amp;gt;&lt;br /&gt;
    &amp;lt;Tab caption=&amp;quot;AR1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;CustomIntentButton caption=&amp;quot;Map of Linz&amp;quot; iconPath=&amp;quot;linz.png&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;TargetURI&amp;gt;&lt;br /&gt;
          https://www.google.com/maps/place/Linz/@48.295065,14.327405,12z/data=!3m1!4b1!4m2!3m1!1s0x47739595fa99854d:0x7c53292c577975c4&lt;br /&gt;
        &amp;lt;/TargetURI&amp;gt;&lt;br /&gt;
      &amp;lt;/CustomIntentButton&amp;gt;&lt;br /&gt;
    &amp;lt;/Tab&amp;gt;&lt;br /&gt;
  &amp;lt;/StartScreenConfiguration&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Custom Intent Button]]&lt;br /&gt;
[[Category:How-To|Custom Intent Button]]&lt;br /&gt;
[[Category:Publishing|Custom Intent Button]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Query_Objects_(UBIK_Android)&amp;diff=30009</id>
		<title>Query Objects (UBIK Android)</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Query_Objects_(UBIK_Android)&amp;diff=30009"/>
				<updated>2026-06-23T13:36:56Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DeprecatedStartTag}}&lt;br /&gt;
&lt;br /&gt;
A query is a certain [[SYSCLS QUERY|classified]] {{UBIK}} object which allows users to [[QUERY#Content_queries|find objects by criteria]].&lt;br /&gt;
&lt;br /&gt;
== UI for query objects ==&lt;br /&gt;
[[File:UI_Android_Query_Properties.jpg|thumb|alt= Properties of a Query Object|Properties of a Query Object]]&lt;br /&gt;
[[File:UI_Android_Query_Results.jpg|thumb|alt= Results of a Query|Results of a Query]]&lt;br /&gt;
&lt;br /&gt;
A query object has the same UI representation as regular objects. However, once a user clicks on it, instead of showing its children, the client will show its properties, namely all the criteria of the query.&lt;br /&gt;
&lt;br /&gt;
The property list view of a query object is also similar to those of regular objects. But an {{key press|OK}} button is available below the list. Once it is clicked, the query will be executed with the current property/criterion values. Meanwhile, the {{UBIK}} will switch to the content list view, ready to display the results of the query.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[HowTo:Find_Objects_by_Query]]&lt;br /&gt;
* [[SYSCLS_QUERY]] (Classification)&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Query Objects (UBIK Android)]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Commissioning_Objects_(UBIK_Android)&amp;diff=30008</id>
		<title>Commissioning Objects (UBIK Android)</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Commissioning_Objects_(UBIK_Android)&amp;diff=30008"/>
				<updated>2026-06-23T13:36:23Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DeprecatedStartTag}}&lt;br /&gt;
&lt;br /&gt;
[[File:UI_new_commissioning_task.png|190px|thumb|border|alt= UI Representation of Commissioning Task Objects|UI Representation of Commissioning Task Objects]]&lt;br /&gt;
&lt;br /&gt;
{{Attention|Since Version 3.0.0 {{Version/AndroidSince|3.0.0}} Commissioning Objects are handled as [[MRO_Objects_(Client)]]}}&lt;br /&gt;
&lt;br /&gt;
A [[SYSCLS_COMMISSIONINGCHECK|commissioning task]] is a special task object, which displays properties defining the status of the check on the row level directly. &lt;br /&gt;
&lt;br /&gt;
There are two types of commissioning tasks,&lt;br /&gt;
* '''state relevant''' tasks which are indicated by a (solid/hollow) check symbol at the left side of the row as well as the &amp;quot;Not Applicable&amp;quot; icon. The later icon is a circle with a diagonal line in it at the end of the row.&lt;br /&gt;
* '''non state relevant''' tasks, which can be seen as some kind of informational object which do not have a status. This line is indicated by a white &amp;quot;i&amp;quot; as icon and does not have the &amp;quot;Not Applicable&amp;quot; icon.&lt;br /&gt;
&lt;br /&gt;
All commissioning tasks, no matter of what type, are intended to be nested into a parent object called [[SYSCLS_COMMISSIONINGWORKPACKAGE|commissioning workpackage]], which provides the functionality to close all underlying tasks and synchronize them with the server (triggering some optional workflow).&lt;br /&gt;
&lt;br /&gt;
{{Hint|A commissioning task is finished only if a value is entered or the ''Not applicable'' icon is toggled accordingly.&amp;lt;br/&amp;gt;&lt;br /&gt;
Any value not equal to null is a valid property value, which means that also a value '''false''' for a boolean property is valid.&amp;lt;br/&amp;gt;&lt;br /&gt;
The boolean status is reflected through the checkbox' color: dark blue if it has not been set yet, white if set and white / empty if it is false.}}&lt;br /&gt;
&lt;br /&gt;
== Task types ==&lt;br /&gt;
=== Information commissioning task ===&lt;br /&gt;
This task is indicated by the white &amp;quot;i&amp;quot; in front of the row. It is intended to hold further information for the user, like additional photos or just a note for the engineer which is not relevant for the status of the whole commissioning process. Nevertheless, it is possible to give it a value like the other tasks which is of course synchronized with the server at least if the commissioning workpackage gets finished.&lt;br /&gt;
&lt;br /&gt;
=== State relevant commissioning task ===&lt;br /&gt;
All tasks, for example checking whether a functional plan is available or specific values have to be entered, are handled with this type. It is also possible to check a task as ''Not Applicable'' if it is not possible to be done at the moment but should be seen as finished regarding the work package.&lt;br /&gt;
&lt;br /&gt;
The leading icon indicates the completion status of the task. A task is finished once the value is not null '''OR''' the ''Not Applicable'' icon is toggled. It is possible both, to fill out a task's property and toggle it as ''Not Applicable''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Commissioning work package ==&lt;br /&gt;
[[File:UI_commissioning_big_picture.png|220px|thumb|border|alt= Architecture of status calculation|Architecture of status calculation]]&lt;br /&gt;
&lt;br /&gt;
A work package contains tasks of the above mentioned types. Once navigated to a work package an icon and a button are shown at the bottom of the screen. This button visualizes the overall status evaluated of all status of the underlying state relevant commissioning tasks. This means that, as long as at least a single child task is not finished the whole workpackage is regarded as (technically) not finished. The icon within the button visualizes the work package's status which is again a property assigned to the work package. This leads to four possible states of a work package:&lt;br /&gt;
&lt;br /&gt;
# Workpackage status OPEN | technical status OPEN&lt;br /&gt;
# Workpackage status FINISHED | technical status OPEN&lt;br /&gt;
# Workpackage status OPEN | technical status FINISHED&lt;br /&gt;
# Workpackage status FINISHED | technical status FINISHED&lt;br /&gt;
&lt;br /&gt;
Clicking the button at the bottom attempts to switch the workpackage status. If the workpackage is changed from '''open''' to '''finished''', it triggers a sync of the whole work package. For all state relevant tasks which have not be set an editor will pop up allowing the user to enter the missing value. Cancelling the dialog leaves the task's value empty.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Attention|Up to now, it is possible to change commissioning tasks even if the work package is finished already.}}&lt;br /&gt;
&lt;br /&gt;
{{Hint|If a commissioning work package does not contain any commissioning checks or if they are not yet fetched from the server, the technical status displayed at the bottom left corner is '''Finished'''!}}&lt;br /&gt;
&lt;br /&gt;
The following images should give an overview about possible states occuring upon using this feature:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;200&amp;quot; heights=&amp;quot;310&amp;quot;&amp;gt;&lt;br /&gt;
File:UI_new_commissioning_task.png|New commissioning workpackage (status 1)&lt;br /&gt;
File:UI_commissioning_task_not_done_properly.png|Open commissioning workpackage with open child tasks (status 1)&lt;br /&gt;
File:UI_commissioning_during_finishing_with_applicable.png|Convenience method for not technically finished tasks upon closing workpackage. Tasks can be marked as not applicable during finishing workpackages; The delete button is removed. {{Version/AndroidSince|2.5.2}}&lt;br /&gt;
File:UI_commissioning_task_finished_not_properly.png|Finished commissioning workpackage with open child tasks (status 2)&lt;br /&gt;
File:UI_commissioning_task_done_properly.png|Open commissioning workpackage with technically finished tasks (status 3)&lt;br /&gt;
File:UI_commissioning_task_finished_properly.png|Finished commissioning workpackage with technically finished tasks (status 4)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Technical Background ==&lt;br /&gt;
&lt;br /&gt;
The status of work packages is essentially an Integer property. Currently its value definitions are as follows.&lt;br /&gt;
* Anything not greater than (≤) 0 indicates the package is open;&lt;br /&gt;
* Anything not less than (≥) 1 indicates the package is finished.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[SYSCLS_COMMISSIONINGCHECK]] (Classification)&lt;br /&gt;
* [[SYSCLS_COMMISSIONINGOPTIONALCHECK]] (Classification)&lt;br /&gt;
* [[SYSCLS_COMMISSIONINGWORKPACKAGE]] (Classification)&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Commissioning Objects (UBIK Android)]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Child_Document_Indicator&amp;diff=30007</id>
		<title>Child Document Indicator</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Child_Document_Indicator&amp;diff=30007"/>
				<updated>2026-06-23T13:35:46Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DeprecatedStartTag}}&lt;br /&gt;
&lt;br /&gt;
For [[SYSCLS_DOCUMENTOWNER|document owners]], it is possible to know their total numbers of child documents without either&lt;br /&gt;
* Showing these child documents;&lt;br /&gt;
* Or even having these child documents available on the client.&lt;br /&gt;
Instead, number indicators are shown alongside these objects.&lt;br /&gt;
&lt;br /&gt;
{{Hint|These indicators display the sums of the number of child documents available on the server and the number of child documents created locally but not yet committed.}}&lt;br /&gt;
&lt;br /&gt;
== Indicators on thumbnails ==&lt;br /&gt;
[[File:UI_Android_Redlining_Children_Count.png|thumb|Numbers of child documents displayed as overlays]]&lt;br /&gt;
[[File:UI_WinX_Document_Children_Count.png|thumb|Numbers of child documents displayed as overlays]]&lt;br /&gt;
If these document owners are documents themselves and are displayed as thumbnails, the child document indicators are displayed on the top-right corner of the thumbnails.&lt;br /&gt;
&lt;br /&gt;
== Indicators on objects ==&lt;br /&gt;
[[File:UI_WinX_Children_Count.png|thumb|Numbers of child documents displayed ]]&lt;br /&gt;
The child document indicators are displayed on the top-right side of the child object presentation.&lt;br /&gt;
&lt;br /&gt;
{{Category/Version|2.4.0}}&lt;br /&gt;
&lt;br /&gt;
[[Category:2.4.0|Child Document Indicator]]&lt;br /&gt;
[[Category:Android|Child Document Indicator]]&lt;br /&gt;
[[Category:Push|Child Document Indicator]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=HowTo:Finish/Reset_a_Task_(UBIK_Android)&amp;diff=30006</id>
		<title>HowTo:Finish/Reset a Task (UBIK Android)</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=HowTo:Finish/Reset_a_Task_(UBIK_Android)&amp;diff=30006"/>
				<updated>2026-06-23T13:34:57Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DeprecatedStartTag}}&lt;br /&gt;
&lt;br /&gt;
== Finish a Task ==&lt;br /&gt;
# When a task is open, browse to its content list view or its property list view;&lt;br /&gt;
# Click the Checkbox or {{key press|Finish}};&amp;lt;br/&amp;gt;[[File:UI_Android_Finish_Task_Through_Checkbox.jpg|300 px|border|alt=Click the Checkbox to Finish a Task|Click the Checkbox to Finish a Task]][[File:UI_Android_Finish_Task_Through_Button.jpg|300 px|border|alt=Click the Button to Finish a Task|Click the Button to Finish a Task]]&lt;br /&gt;
# Enter values for the follow-up property editors and press {{key press|OK}} one after another (if there's more than one property to be edited);&amp;lt;br/&amp;gt;[[File:UI_Android_Finish_Task_Entering_Values.jpg|300 px|border|alt=Enter Values to Finish a Task|Enter Values to Finish a Task]]&lt;br /&gt;
&lt;br /&gt;
{{Attention|Users will remain at the same view where they try to finish the task. In case {{UBIK}} is in [[Sync Mode#Possible sync modes|automatic mode]], the finished task will be immediately committed if user finishes it through a click on the Checkbox.}}&lt;br /&gt;
&lt;br /&gt;
== Reset a Task ==&lt;br /&gt;
# When a task is finished, browse to its content list view or its property list view;&lt;br /&gt;
# Click the Checkbox or {{key press|Reset}};&amp;lt;br/&amp;gt;[[File:UI_Android_Reset_Task_Through_Checkbox.jpg|300 px|border|alt=Click the Checkbox to Reset a Task|Click the Checkbox to Reset a Task]][[File:UI_Android_Reset_Task_Through_Button.jpg|300 px|border|alt=Click the Button to Reset a Task|Click the Button to Reset a Task]]&lt;br /&gt;
&lt;br /&gt;
{{Attention|Similarly, users will remain at the same view and the reset task will be committed in the same manner.}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Task Objects (UBIK Android)]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Finish/Reset a Task (UBIK Android)]]&lt;br /&gt;
[[Category:How-To|Finish/Reset a Task (UBIK Android)]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Task_Objects_(UBIK_Android)&amp;diff=30005</id>
		<title>Task Objects (UBIK Android)</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Task_Objects_(UBIK_Android)&amp;diff=30005"/>
				<updated>2026-06-23T13:34:41Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DeprecatedStartTag}}&lt;br /&gt;
&lt;br /&gt;
A task is a certain [[SYSCLS TASK|classified]] {{UBIK}} object which poses an overall status (Finished / Open).&lt;br /&gt;
A task is considered as finished if all the [[SYSCLS_TASK#Validated_MetaProperties|dedicated]] properties are validated. Otherwise, it is considered as open.&lt;br /&gt;
&lt;br /&gt;
{{Attention|A property is validated as soon as the user confirms the editing, e.g. through the {{key press|OK}} in a property editor. This has nothing to do with the property value, meaning a property can be validated even if its value is null.}}&lt;br /&gt;
&lt;br /&gt;
== UI for task objects ==&lt;br /&gt;
[[File:UI_Android_Task_Objects.jpg|thumb|alt= UI Representation of Task Objects|UI Representation of Task Objects]]&lt;br /&gt;
&lt;br /&gt;
In addition to the basic descriptive text and icon, a Checkbox is displayed for every task object. And the checked/unchecked state corresponds to the finish/open status of tasks.&lt;br /&gt;
&lt;br /&gt;
When a user clicks on the Checkbox of a task, {{UBIK}} proceeds to either [[HowTo:Finish/Reset a Task (UBIK Android)|finish the task or reset the task]] depending on its current status.&lt;br /&gt;
&lt;br /&gt;
When a user clicks on the remaining parts of a task, e.g. the descriptive text, {{UBIK}} proceeds to display all its properties in a [[UBIK Client Basics#Content Browser|Content Browser]].&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[HowTo:Declare an Object as Task]]&lt;br /&gt;
* [[HowTo:Finish/Reset a Task (UBIK Android)]]&lt;br /&gt;
* [[SYSCLS_TASK]] (Classification)&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Task Objects (UBIK Android)]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Status_LED&amp;diff=30004</id>
		<title>Status LED</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Status_LED&amp;diff=30004"/>
				<updated>2026-06-23T13:34:20Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DeprecatedStartTag}}&lt;br /&gt;
&lt;br /&gt;
Status LEDs are shown in [[UBIK_Client_Basics|{{UBIK}} Android]] client's [[UBIK_Client_Basics#Content_Browser|Content Browser]] for objects with status information, namely classified by at least one of the following classifications:&lt;br /&gt;
* [[SYSCLS_STATUSCOLOR|Status color classification]]&lt;br /&gt;
* [[SYSCLS_OBJECT_WTIH_STATUSICON|Object with status icon classification]]&lt;br /&gt;
&lt;br /&gt;
== Status icon ==&lt;br /&gt;
The status LED is essentially a status icon image with different coloring. Which icon to display is determined in the following way.&lt;br /&gt;
* It there is a server configured status icon for an object (namely the object is classified by the object with status icon classification), that icon is displayed as the status LED; {{Version/AndroidSince|2.5.1}}&lt;br /&gt;
* Otherwise, {{UBIK}} searches for a [[HowTo:Customize_Status_LED_on_Mobile_Client|locally/client configured status icon]] to display;&lt;br /&gt;
* If none of the above exists, a default icon is displayed.&lt;br /&gt;
{{Hint|If the server configured icon is corrupted for some reason (e.g. not delivered from the server correctly), the status led will try to display the client configured icon or the default one.}}&lt;br /&gt;
&lt;br /&gt;
== Status color ==&lt;br /&gt;
If an object is classified by the status color classification and has a valid status color, the color value is used to colorize/tint the icon displayed in the status LED. Otherwise, the icon will be displayed in its original color.&lt;br /&gt;
&lt;br /&gt;
== UI representation ==&lt;br /&gt;
&lt;br /&gt;
=== Action bar ===&lt;br /&gt;
When the currently browsed object has status information, a status LED is shown as an overlay on the content icon in the action bar. {{Version/AndroidSince|2.5.1}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;300&amp;quot; heights=&amp;quot;200&amp;quot;&amp;gt;&lt;br /&gt;
File:UI_TechSpec_UBIKClient_StatusLed_InActionBar.png|Status LED in Action Bar&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Object list ===&lt;br /&gt;
In the ContentBrowser's object list (either root list or child list) the status LED is shown for respectively configured objects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;300&amp;quot; heights=&amp;quot;200&amp;quot;&amp;gt;&lt;br /&gt;
File:UI_TechSpec_UBIKClient_StatusLed_Appearance.png|Status LED in Content Row&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Changing the icon or the colour ===&lt;br /&gt;
&lt;br /&gt;
If the property isn't hidden or write-protected, the colour can be changed by editing the respective property.&lt;br /&gt;
Same goes for the actual icon.&lt;br /&gt;
&lt;br /&gt;
Another possibility is the respective properties being hidden but adjusted automatically by customizing, either on the server or on the client (programmatic customizing is required for the latter).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;300&amp;quot; heights=&amp;quot;200&amp;quot;&amp;gt;&lt;br /&gt;
File:UI_TechSpec_UBIKClient_StatusLed_ChangeColour.png|Editing the Status Color&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Technical ==&lt;br /&gt;
&lt;br /&gt;
=== Status color classification ===&lt;br /&gt;
Details of the classification UUID and the relevant property STATUSCOLOR can be found [[SYSCLS_STATUSCOLOR|here]].&lt;br /&gt;
&lt;br /&gt;
The STATUSCOLOR property has to be an integer property describing the RGB value of the status color as a decimal number.&lt;br /&gt;
&lt;br /&gt;
=== Object with status icon classification ===&lt;br /&gt;
Details of the classification UUID and the relevant property STATUSICONID can be found [[SYSCLS_OBJECT_WTIH_STATUSICON|here]].&lt;br /&gt;
&lt;br /&gt;
The STATUSICONID property has to contain the Guid of an object classified by the status icon classification.&lt;br /&gt;
&lt;br /&gt;
=== Status icon classification ===&lt;br /&gt;
Details of the classification UUID and the relevant property STATUSICON can be found [[SYSCLS_STATUSICON|here]].&lt;br /&gt;
&lt;br /&gt;
The STATUSICON property has to contain the byte stream of the icon image.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[HowTo:Make_an_Object_show_a_Status_LED]]&lt;br /&gt;
* [[HowTo:Customize_Status_LED_on_Mobile_Client]]&lt;br /&gt;
* [[SYSCLS_STATUSCOLOR]]&lt;br /&gt;
* [[SYSCLS_OBJECT_WTIH_STATUSICON]]&lt;br /&gt;
* [[SYSCLS_STATUSICON]]&lt;br /&gt;
&lt;br /&gt;
{{Category/Version|2.5.1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:2.5.1|Status LED]]&lt;br /&gt;
[[Category:Android|Status LED]]&lt;br /&gt;
[[Category:Client|Status LED]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=HowTo:Create_a_new_Document_(UBIK_Android)&amp;diff=30003</id>
		<title>HowTo:Create a new Document (UBIK Android)</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=HowTo:Create_a_new_Document_(UBIK_Android)&amp;diff=30003"/>
				<updated>2026-06-23T13:33:34Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DeprecatedStartTag}}&lt;br /&gt;
&lt;br /&gt;
This article describes how to create {{UBIK}} [[Document]] objects on the [[UBIK_Client_Basics|{{UBIK}} Android]] client.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
Since {{UBIK}} objects on the Android client are arranged in a hierarchy, every object (except [[UBIK_Client_Basics#Content_Browser|root]] and [[Infrastructure Content (UBIK Client)|infrastructure ]]objects) have parents and, eventually, children.&lt;br /&gt;
Therefore, in order to create any kind of object on the {{UBIK}} Android client, a legitimate parent is needed.&lt;br /&gt;
&lt;br /&gt;
It is necessary to configure this possibility in the [[Application Context Management]] (ACM) using the {{UBIK Studio}}.&lt;br /&gt;
You can find more information on publishing content on the mobile application in  [[HowTo:Make an Object appear on the Mobile Client]].&lt;br /&gt;
&lt;br /&gt;
More precisely, a [[MetaClass]] configured in the ACM can have so-called &amp;quot;possible child classes&amp;quot;. If one of those is a document MetaClass, you can create such a document object as a child of an object which has the respective parent MetaClass. A MetaClass is a document, when it has a document classification. &lt;br /&gt;
&lt;br /&gt;
For more information on documents on the Android client, please refer to [[Documents (UBIK Android)]].&lt;br /&gt;
&lt;br /&gt;
== Navigation to the desired parent object ==&lt;br /&gt;
&lt;br /&gt;
As described above, a new object can only be created &amp;quot;under&amp;quot; a legitimate parent object.&lt;br /&gt;
Hence, the first step to the creation of a new object on the {{UBIK}} client is to browse the ''Content Browser'' and navigate to the desired parent object.&lt;br /&gt;
&lt;br /&gt;
On the following, first two screenshots, you can see the ''Content Browser'' icon on the start screen and what the object list looks like.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;200&amp;quot; heights=&amp;quot;200&amp;quot;&amp;gt;&lt;br /&gt;
File:UI_TechSpec_UBIKClient_Document_01.png|Content Browser Icon&lt;br /&gt;
File:UI_TechSpec_UBIKClient_Document_02.png|Object List&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For all successive levels (once an object is selected), the ''Content Browser'' displays not only the three tabs ''Children'', ''Properties'' and ''Documents'', but also context-sensitive actions.&lt;br /&gt;
Browse down the hierarchy until you reach the parent object you want to attach a document to. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;200&amp;quot; heights=&amp;quot;200&amp;quot;&amp;gt;&lt;br /&gt;
File:UI_TechSpec_UBIKClient_Content_Browser.png|Content Browser&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using the Context Action for Content Creation ==&lt;br /&gt;
&lt;br /&gt;
As mentioned, the ''Content Browser'' provides context sensitive actions for a currently viewed object.&lt;br /&gt;
On the following screenshot, you can see the overflow menu button (three dots) which is displayed when the context action icons don't fit on the screen.&lt;br /&gt;
In this case a click on it opens a dialog containing all the available context actions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;200&amp;quot; heights=&amp;quot;200&amp;quot;&amp;gt;&lt;br /&gt;
File:UI_TechSpec_UBIKClient_Context_Action.png|Context Action - Create new Content or Take a Picture&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are using a tablet or the portrait orientation, the respective actions might be displayed as icons next to the tab view as well.&lt;br /&gt;
&lt;br /&gt;
However, to create a new content object, you can either choose an object type (its MetaClass) or directly take a picture using the camera.&lt;br /&gt;
If there are multiple &amp;quot;picture MetaClasses&amp;quot;, you will be asked to choose one, though.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;200&amp;quot; heights=&amp;quot;200&amp;quot;&amp;gt;&lt;br /&gt;
File:UI_TechSpec_UBIKClient_Content_Creation_Choose_Type.png|Choose Content Type&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Choosing a File ==&lt;br /&gt;
&lt;br /&gt;
Now, the actual file the document object refers to is addressed.&lt;br /&gt;
&lt;br /&gt;
If the MetaClass you chose in the previous step was a non-document MetaClass, this step is skipped.&lt;br /&gt;
Also, if you chose to take a picture, this step is replaced by the camera activity to create the file by taking a picture.&lt;br /&gt;
&lt;br /&gt;
Normally you get to choose a file though, and this is done using any third-party file browser already installed on the device.&lt;br /&gt;
If multiple file browsers are installed, you have to select one, as the following screenshot shows.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;200&amp;quot; heights=&amp;quot;200&amp;quot;&amp;gt;&lt;br /&gt;
File:UI_TechSpec_UBIKClient_Choose_Intent_Receiver.png|Choose a File Browser&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Depending on the file browser, the process of choosing a file might differ, so there is no screenshot fo this (but I think you'll succeed nonetheless).&lt;br /&gt;
&lt;br /&gt;
== Finishing the Creation ==&lt;br /&gt;
&lt;br /&gt;
After a file was selected, you can edit the properties of the newly created object or even cancel the creation.&lt;br /&gt;
If everything is as desired, you can finish the content creation with a click on the {{key press|OK}} button.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;200&amp;quot; heights=&amp;quot;200&amp;quot;&amp;gt;&lt;br /&gt;
File:UI_TechSpec_UBIKClient_Content_Creation_Edit_Content.png|Edit the new Object&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The newly created content should now be visible as a new document object in the thumbnail grid view (or if it wasn't a document, in the children list).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;200&amp;quot; heights=&amp;quot;200&amp;quot;&amp;gt;&lt;br /&gt;
File:UI_TechSpec_UBIKClient_Content_Browser_New Document.png|The new Document&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Committing the new Document ==&lt;br /&gt;
&lt;br /&gt;
Now it just has to be committed to the server and it will come back with a thumbnail and a description (if the ACM and the customizing is configured that way).&lt;br /&gt;
This commit happens automatically in online mode but has to be done manually if manual mode is active (by clicking on the commit button (&amp;quot;upload&amp;quot; arrow) in the action bar.&lt;br /&gt;
Congratulations!&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Create a new Document (UBIK Android)]]&lt;br /&gt;
[[Category:Document|Create a new Document (UBIK Android)]]&lt;br /&gt;
[[Category:How-To|Create a new Document (UBIK Android)]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=HowTo:Install_UBIK_Client_Certificate&amp;diff=30002</id>
		<title>HowTo:Install UBIK Client Certificate</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=HowTo:Install_UBIK_Client_Certificate&amp;diff=30002"/>
				<updated>2026-06-23T13:33:11Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DeprecatedStartTag}}&lt;br /&gt;
&lt;br /&gt;
Setting up a client certificate for using a secure channel to the [[Web_Service|web service]].&lt;br /&gt;
&lt;br /&gt;
= Android =&lt;br /&gt;
&lt;br /&gt;
=== Manual installation ===&lt;br /&gt;
One can add server certificates to the {{UBIK Android}} application in addition to the pre-installed certificates, using a button in the ''Info'' menu. {{Version/AndroidSince|2.3.1}}&lt;br /&gt;
&lt;br /&gt;
# Copy the certificate to your device's SD card where you can find it easily. &lt;br /&gt;
# Open the UBIK Android application.&lt;br /&gt;
# Press the ''Home'' button in the ''Action Bar''.&lt;br /&gt;
# Press the ''Info'' button in the drop-down menu.&lt;br /&gt;
# On the Info screen, press the ''Install Certificate'' button.&lt;br /&gt;
# Select a file browser in order to select the certificate file.&lt;br /&gt;
# Choose the certificate file you earlier copied to the device's SD card.&lt;br /&gt;
&lt;br /&gt;
If the adding was successful, a toast message confirming the installation will appear. Else, the toast's text will indicate an error.&lt;br /&gt;
&lt;br /&gt;
The certificate will be stored in a '''BouncyCastle''' keystore on the device's file system (path: ''SD-Card/UBIK/Certificates'').&lt;br /&gt;
This means you can copy this keystore and reuse it on another device by pasting it there!&lt;br /&gt;
&lt;br /&gt;
{{Attention|A file browser app has to be installed on your device in order to select the certificate file from the SD-card.}}&lt;br /&gt;
&lt;br /&gt;
=== Automatic Import ===&lt;br /&gt;
One can place certificate files in a predefined folder in order for them to be imported automatically when the app starts up the next time. {{Version/AndroidSince|2.5.1}}&lt;br /&gt;
&lt;br /&gt;
The folder depends on the application:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;sd-card&amp;gt;/Android/data/com.augmensys.ubik.&amp;lt;custom_app&amp;gt;/files/cert&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Certificate list ===&lt;br /&gt;
[[File:UBIK_Android_UI_Info_Activity_Certificate_List.png|400 px|thumb|border|alt=Certificate List|Certificate List]]&lt;br /&gt;
&lt;br /&gt;
In the Info screen, there is a button {{key press|Show certificates}} that opens a list of all installed certificates, displaying their subject and expiry date. {{Version/AndroidSince|2.5.1}}&lt;br /&gt;
&lt;br /&gt;
{{Attention|The certificate has to be provided as a X.509 DER encoded file, e.g. *.cer}}&lt;br /&gt;
{{Hint|The certificate will remain on the device even if the application is reinstalled.}}&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= WinX / Web = &lt;br /&gt;
The clients, either WinX or Web, need to have a certificate installed if the connection to the web service should use secure communication (HTTPS). This certificate can either be a root authority certificate, a self-signed or any other public key certificate from a certificate authority enabling a secured connection between the web service and the clients.&lt;br /&gt;
&lt;br /&gt;
If you already have a public key certificate available you can use this on the clients and web service. Otherwise you can create a certificate as described in [[HowTo:Create_UBIK_Web_Service_Certificates]].&lt;br /&gt;
&lt;br /&gt;
As the {{UBIK Web}} client connects to the content server similar as any mobile client it needs also to be authorized using a certificate. Hence, whatever machine hosts the {{UBIK Web}} client application needs to have the certificate installed. &lt;br /&gt;
&lt;br /&gt;
=== Install Root Authority Certificate ===&lt;br /&gt;
To import the certificate, start the certificate manager by entering ''Manage computer certificates'' in the Windows Start Screen (alternatively, start the program ''certmgr''):&lt;br /&gt;
# Go to section ''Trusted Root Certification Authorities'' and open the context menu.&lt;br /&gt;
# Click on ''All Tasks''&lt;br /&gt;
# Use ''Import...'' to import the Root Certificate provided as ''*.cer'' file.&amp;lt;br /&amp;gt;[[File:UI_ClientCertification_ImportRootCertificate.png|700 px|Windows Certificaties Manager]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[HowTo:Install_UBIK_Web_Service|Install {{UBIK}} Web Service]]&lt;br /&gt;
* [[Web_Service_Configuration|Web Service Configuration]]&lt;br /&gt;
&lt;br /&gt;
{{Category/Version|2.5.1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:2.5.1|Install UBIK Client Certificate]]&lt;br /&gt;
[[Category:Android|Install UBIK Client Certificate]]&lt;br /&gt;
[[Category:How-To|Install UBIK Client Certificate]]&lt;br /&gt;
[[Category:Installing|Install UBIK Client Certificate]]&lt;br /&gt;
[[Category:WinX|Install UBIK Client Certificate]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=HowTo:Install_UBIK_Client_Certificate&amp;diff=30001</id>
		<title>HowTo:Install UBIK Client Certificate</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=HowTo:Install_UBIK_Client_Certificate&amp;diff=30001"/>
				<updated>2026-06-23T13:32:17Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: /* Android */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Setting up a client certificate for using a secure channel to the [[Web_Service|web service]].&lt;br /&gt;
&lt;br /&gt;
= Android =&lt;br /&gt;
&lt;br /&gt;
=== Manual installation ===&lt;br /&gt;
One can add server certificates to the {{UBIK Android}} application in addition to the pre-installed certificates, using a button in the ''Info'' menu. {{Version/AndroidSince|2.3.1}}&lt;br /&gt;
&lt;br /&gt;
# Copy the certificate to your device's SD card where you can find it easily. &lt;br /&gt;
# Open the UBIK Android application.&lt;br /&gt;
# Press the ''Home'' button in the ''Action Bar''.&lt;br /&gt;
# Press the ''Info'' button in the drop-down menu.&lt;br /&gt;
# On the Info screen, press the ''Install Certificate'' button.&lt;br /&gt;
# Select a file browser in order to select the certificate file.&lt;br /&gt;
# Choose the certificate file you earlier copied to the device's SD card.&lt;br /&gt;
&lt;br /&gt;
If the adding was successful, a toast message confirming the installation will appear. Else, the toast's text will indicate an error.&lt;br /&gt;
&lt;br /&gt;
The certificate will be stored in a '''BouncyCastle''' keystore on the device's file system (path: ''SD-Card/UBIK/Certificates'').&lt;br /&gt;
This means you can copy this keystore and reuse it on another device by pasting it there!&lt;br /&gt;
&lt;br /&gt;
{{Attention|A file browser app has to be installed on your device in order to select the certificate file from the SD-card.}}&lt;br /&gt;
&lt;br /&gt;
=== Automatic Import ===&lt;br /&gt;
One can place certificate files in a predefined folder in order for them to be imported automatically when the app starts up the next time. {{Version/AndroidSince|2.5.1}}&lt;br /&gt;
&lt;br /&gt;
The folder depends on the application:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;sd-card&amp;gt;/Android/data/com.augmensys.ubik.&amp;lt;custom_app&amp;gt;/files/cert&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Certificate list ===&lt;br /&gt;
[[File:UBIK_Android_UI_Info_Activity_Certificate_List.png|400 px|thumb|border|alt=Certificate List|Certificate List]]&lt;br /&gt;
&lt;br /&gt;
In the Info screen, there is a button {{key press|Show certificates}} that opens a list of all installed certificates, displaying their subject and expiry date. {{Version/AndroidSince|2.5.1}}&lt;br /&gt;
&lt;br /&gt;
{{Attention|The certificate has to be provided as a X.509 DER encoded file, e.g. *.cer}}&lt;br /&gt;
{{Hint|The certificate will remain on the device even if the application is reinstalled.}}&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
[[Category:2.5.1|Install UBIK Client Certificate]]&lt;br /&gt;
[[Category:Android|Install UBIK Client Certificate]]&lt;br /&gt;
[[Category:How-To|Install UBIK Client Certificate]]&lt;br /&gt;
[[Category:Installing|Install UBIK Client Certificate]]&lt;br /&gt;
[[Category:WinX|Install UBIK Client Certificate]]&lt;br /&gt;
&lt;br /&gt;
= WinX / Web = &lt;br /&gt;
The clients, either WinX or Web, need to have a certificate installed if the connection to the web service should use secure communication (HTTPS). This certificate can either be a root authority certificate, a self-signed or any other public key certificate from a certificate authority enabling a secured connection between the web service and the clients.&lt;br /&gt;
&lt;br /&gt;
If you already have a public key certificate available you can use this on the clients and web service. Otherwise you can create a certificate as described in [[HowTo:Create_UBIK_Web_Service_Certificates]].&lt;br /&gt;
&lt;br /&gt;
As the {{UBIK Web}} client connects to the content server similar as any mobile client it needs also to be authorized using a certificate. Hence, whatever machine hosts the {{UBIK Web}} client application needs to have the certificate installed. &lt;br /&gt;
&lt;br /&gt;
=== Install Root Authority Certificate ===&lt;br /&gt;
To import the certificate, start the certificate manager by entering ''Manage computer certificates'' in the Windows Start Screen (alternatively, start the program ''certmgr''):&lt;br /&gt;
# Go to section ''Trusted Root Certification Authorities'' and open the context menu.&lt;br /&gt;
# Click on ''All Tasks''&lt;br /&gt;
# Use ''Import...'' to import the Root Certificate provided as ''*.cer'' file.&amp;lt;br /&amp;gt;[[File:UI_ClientCertification_ImportRootCertificate.png|700 px|Windows Certificaties Manager]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[HowTo:Install_UBIK_Web_Service|Install {{UBIK}} Web Service]]&lt;br /&gt;
* [[Web_Service_Configuration|Web Service Configuration]]&lt;br /&gt;
&lt;br /&gt;
{{Category/Version|2.5.1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:2.5.1|Install UBIK Client Certificate]]&lt;br /&gt;
[[Category:Android|Install UBIK Client Certificate]]&lt;br /&gt;
[[Category:How-To|Install UBIK Client Certificate]]&lt;br /&gt;
[[Category:Installing|Install UBIK Client Certificate]]&lt;br /&gt;
[[Category:WinX|Install UBIK Client Certificate]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=HowTo:Install_UBIK_Client_Certificate&amp;diff=30000</id>
		<title>HowTo:Install UBIK Client Certificate</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=HowTo:Install_UBIK_Client_Certificate&amp;diff=30000"/>
				<updated>2026-06-23T13:31:46Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: /* Android */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Setting up a client certificate for using a secure channel to the [[Web_Service|web service]].&lt;br /&gt;
&lt;br /&gt;
= Android =&lt;br /&gt;
{{DeprecatedStartTag}}&lt;br /&gt;
=== Manual installation ===&lt;br /&gt;
One can add server certificates to the {{UBIK Android}} application in addition to the pre-installed certificates, using a button in the ''Info'' menu. {{Version/AndroidSince|2.3.1}}&lt;br /&gt;
&lt;br /&gt;
# Copy the certificate to your device's SD card where you can find it easily. &lt;br /&gt;
# Open the UBIK Android application.&lt;br /&gt;
# Press the ''Home'' button in the ''Action Bar''.&lt;br /&gt;
# Press the ''Info'' button in the drop-down menu.&lt;br /&gt;
# On the Info screen, press the ''Install Certificate'' button.&lt;br /&gt;
# Select a file browser in order to select the certificate file.&lt;br /&gt;
# Choose the certificate file you earlier copied to the device's SD card.&lt;br /&gt;
&lt;br /&gt;
If the adding was successful, a toast message confirming the installation will appear. Else, the toast's text will indicate an error.&lt;br /&gt;
&lt;br /&gt;
The certificate will be stored in a '''BouncyCastle''' keystore on the device's file system (path: ''SD-Card/UBIK/Certificates'').&lt;br /&gt;
This means you can copy this keystore and reuse it on another device by pasting it there!&lt;br /&gt;
&lt;br /&gt;
{{Attention|A file browser app has to be installed on your device in order to select the certificate file from the SD-card.}}&lt;br /&gt;
&lt;br /&gt;
=== Automatic Import ===&lt;br /&gt;
One can place certificate files in a predefined folder in order for them to be imported automatically when the app starts up the next time. {{Version/AndroidSince|2.5.1}}&lt;br /&gt;
&lt;br /&gt;
The folder depends on the application:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;sd-card&amp;gt;/Android/data/com.augmensys.ubik.&amp;lt;custom_app&amp;gt;/files/cert&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Certificate list ===&lt;br /&gt;
[[File:UBIK_Android_UI_Info_Activity_Certificate_List.png|400 px|thumb|border|alt=Certificate List|Certificate List]]&lt;br /&gt;
&lt;br /&gt;
In the Info screen, there is a button {{key press|Show certificates}} that opens a list of all installed certificates, displaying their subject and expiry date. {{Version/AndroidSince|2.5.1}}&lt;br /&gt;
&lt;br /&gt;
{{Attention|The certificate has to be provided as a X.509 DER encoded file, e.g. *.cer}}&lt;br /&gt;
{{Hint|The certificate will remain on the device even if the application is reinstalled.}}&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
[[Category:2.5.1|Install UBIK Client Certificate]]&lt;br /&gt;
[[Category:Android|Install UBIK Client Certificate]]&lt;br /&gt;
[[Category:How-To|Install UBIK Client Certificate]]&lt;br /&gt;
[[Category:Installing|Install UBIK Client Certificate]]&lt;br /&gt;
[[Category:WinX|Install UBIK Client Certificate]]&lt;br /&gt;
&lt;br /&gt;
= WinX / Web = &lt;br /&gt;
The clients, either WinX or Web, need to have a certificate installed if the connection to the web service should use secure communication (HTTPS). This certificate can either be a root authority certificate, a self-signed or any other public key certificate from a certificate authority enabling a secured connection between the web service and the clients.&lt;br /&gt;
&lt;br /&gt;
If you already have a public key certificate available you can use this on the clients and web service. Otherwise you can create a certificate as described in [[HowTo:Create_UBIK_Web_Service_Certificates]].&lt;br /&gt;
&lt;br /&gt;
As the {{UBIK Web}} client connects to the content server similar as any mobile client it needs also to be authorized using a certificate. Hence, whatever machine hosts the {{UBIK Web}} client application needs to have the certificate installed. &lt;br /&gt;
&lt;br /&gt;
=== Install Root Authority Certificate ===&lt;br /&gt;
To import the certificate, start the certificate manager by entering ''Manage computer certificates'' in the Windows Start Screen (alternatively, start the program ''certmgr''):&lt;br /&gt;
# Go to section ''Trusted Root Certification Authorities'' and open the context menu.&lt;br /&gt;
# Click on ''All Tasks''&lt;br /&gt;
# Use ''Import...'' to import the Root Certificate provided as ''*.cer'' file.&amp;lt;br /&amp;gt;[[File:UI_ClientCertification_ImportRootCertificate.png|700 px|Windows Certificaties Manager]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[HowTo:Install_UBIK_Web_Service|Install {{UBIK}} Web Service]]&lt;br /&gt;
* [[Web_Service_Configuration|Web Service Configuration]]&lt;br /&gt;
&lt;br /&gt;
{{Category/Version|2.5.1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:2.5.1|Install UBIK Client Certificate]]&lt;br /&gt;
[[Category:Android|Install UBIK Client Certificate]]&lt;br /&gt;
[[Category:How-To|Install UBIK Client Certificate]]&lt;br /&gt;
[[Category:Installing|Install UBIK Client Certificate]]&lt;br /&gt;
[[Category:WinX|Install UBIK Client Certificate]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=AI_Assist&amp;diff=29954</id>
		<title>AI Assist</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=AI_Assist&amp;diff=29954"/>
				<updated>2026-06-17T09:47:15Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: /* General */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UBIK_Labs_Disclaimer}}&lt;br /&gt;
{{Attention|AI Support is currently a preview feature and not available in an official product release. Please contact us to get access to a respective version!}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
All AI functionality in {{UBIK}} requires Internet connectivity, so there is no offline support for these features. The AI features are based and built for an Azure OpenAI deployment with a '''GPT4.1 or higher''' model, other models are currently not supported.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
===Mobile===&lt;br /&gt;
Configuration of the AI can be achieved by a designated object in the infrastructure of the App/Context of the use case that needs AI support. The object needs to have the UID &amp;lt;code&amp;gt;D4F3E8C2-5B6A-4F2A-9C1E-1234567890AB&amp;lt;/code&amp;gt; and carry a string property with the name &amp;lt;code&amp;gt;AICONFIG&amp;lt;/code&amp;gt;. On this property a JSON configuration can be stored, that has the following structure:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;API_URI&amp;quot;: &amp;quot;https://api.example.com/v1/ai&amp;quot;,&lt;br /&gt;
  &amp;quot;API_KEY&amp;quot;: &amp;quot;your-api-key-here&amp;quot;,&lt;br /&gt;
  &amp;quot;AddToPrompt&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;API_URI&amp;lt;/code&amp;gt; The URL to your Azure OpenAI endpoint&lt;br /&gt;
* &amp;lt;code&amp;gt;API_KEY&amp;lt;/code&amp;gt; The API key of your Azure OpenAI deployment&lt;br /&gt;
* &amp;lt;code&amp;gt;AddToPrompt&amp;lt;/code&amp;gt; A natural text you want to add to the system prompt, which can be used to fine tune the AI. '''Example:''' for the Context AI Assistant it could be set to ''&amp;quot;Add 'Your friendly AI Assistant.' in a random language to every ResponseText&amp;quot;''. From there on, every reply from the AI would be amendend with this phrase translated into a language of it's choice.&lt;br /&gt;
&lt;br /&gt;
===Web===&lt;br /&gt;
For WebClients, the configuration must be stored in appconfig.json:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;AI&amp;quot;: {&lt;br /&gt;
  &amp;quot;API_URI&amp;quot;: &amp;quot;https://api.example.com/v1/ai&amp;quot;,&lt;br /&gt;
  &amp;quot;API_KEY&amp;quot;: &amp;quot;your-api-key-here&amp;quot;,&lt;br /&gt;
  &amp;quot;AddToPrompt&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Attention|If there's no configuration found, the AI features will not work and you will get a respective message in the chat window!}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== BPM AI Assistant ==&lt;br /&gt;
This is an assistant trained for creating checklist in BPM format, in conjunction with upcoming graphical Procedure Designer for Web Clients.&lt;br /&gt;
&lt;br /&gt;
== Context AI Assistant ==&lt;br /&gt;
This is an assistant for mobile clients, that allows to discuss the current context object (the object the user currently looks at on the mobile device) with the AI. It is also capable of modifying properties of this context object, in the name of the currently logged in user. In addition, it can leverage the client's free text search to answer questions beyond its current context.&lt;br /&gt;
&lt;br /&gt;
=== XAML customizing ===&lt;br /&gt;
&lt;br /&gt;
{{Attention|The AIAssistant control is currently only available for AI-enabled [[Version 5.0 (MAUI)|MAUI]] clients!}}&lt;br /&gt;
&lt;br /&gt;
The AIAssistant needs to be placed somewhere in [[XAML]] customizing, this example shows how to put it in an additional tab after the default Children, Properties and Documents tab in ''UBIKContentArea.xamlx'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:ai=&amp;quot;clr-namespace:UBIK.MAUI.Controls.AI;assembly=UBIK.MAUI&amp;quot;&lt;br /&gt;
&amp;lt;tabView:SfTabItem&amp;gt;&lt;br /&gt;
    &amp;lt;tabView:SfTabItem.ImageSource&amp;gt;&lt;br /&gt;
        &amp;lt;FontImageSource Glyph=&amp;quot;&amp;amp;#xF0E6;&amp;quot; FontFamily=&amp;quot;{StaticResource FASymbols}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/tabView:SfTabItem.ImageSource&amp;gt;&lt;br /&gt;
    &amp;lt;tabView:SfTabItem.Content&amp;gt;&lt;br /&gt;
        &amp;lt;ai:AIAssistant /&amp;gt;&lt;br /&gt;
    &amp;lt;/tabView:SfTabItem.Content&amp;gt;&lt;br /&gt;
    &amp;lt;tabView:SfTabItem.Triggers&amp;gt;&lt;br /&gt;
        &amp;lt;DataTrigger TargetType=&amp;quot;tabView:SfTabItem&amp;quot; Binding=&amp;quot;{Binding SelectedIndex, Source={x:Reference ContentTabs}}&amp;quot; Value=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Setter Property=&amp;quot;Header&amp;quot; Value=&amp;quot;AI Assistant&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/DataTrigger&amp;gt;&lt;br /&gt;
     &amp;lt;/tabView:SfTabItem.Triggers&amp;gt;&lt;br /&gt;
&amp;lt;/tabView:SfTabItem&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=AI_Assist&amp;diff=29953</id>
		<title>AI Assist</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=AI_Assist&amp;diff=29953"/>
				<updated>2026-06-17T09:30:07Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: /* Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UBIK_Labs_Disclaimer}}&lt;br /&gt;
{{Attention|AI Support is currently a preview feature and not available in an official product release. Please contact us to get access to a respective version!}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
All AI functionality in {{UBIK}} requires Internet connectivity, so there is no offline support for these features. The AI features are based and built for an Azure OpenAI deployment with a GPT4.1 model, other models are currently not supported.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
===Mobile===&lt;br /&gt;
Configuration of the AI can be achieved by a designated object in the infrastructure of the App/Context of the use case that needs AI support. The object needs to have the UID &amp;lt;code&amp;gt;D4F3E8C2-5B6A-4F2A-9C1E-1234567890AB&amp;lt;/code&amp;gt; and carry a string property with the name &amp;lt;code&amp;gt;AICONFIG&amp;lt;/code&amp;gt;. On this property a JSON configuration can be stored, that has the following structure:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;API_URI&amp;quot;: &amp;quot;https://api.example.com/v1/ai&amp;quot;,&lt;br /&gt;
  &amp;quot;API_KEY&amp;quot;: &amp;quot;your-api-key-here&amp;quot;,&lt;br /&gt;
  &amp;quot;AddToPrompt&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;API_URI&amp;lt;/code&amp;gt; The URL to your Azure OpenAI endpoint&lt;br /&gt;
* &amp;lt;code&amp;gt;API_KEY&amp;lt;/code&amp;gt; The API key of your Azure OpenAI deployment&lt;br /&gt;
* &amp;lt;code&amp;gt;AddToPrompt&amp;lt;/code&amp;gt; A natural text you want to add to the system prompt, which can be used to fine tune the AI. '''Example:''' for the Context AI Assistant it could be set to ''&amp;quot;Add 'Your friendly AI Assistant.' in a random language to every ResponseText&amp;quot;''. From there on, every reply from the AI would be amendend with this phrase translated into a language of it's choice.&lt;br /&gt;
&lt;br /&gt;
===Web===&lt;br /&gt;
For WebClients, the configuration must be stored in appconfig.json:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;AI&amp;quot;: {&lt;br /&gt;
  &amp;quot;API_URI&amp;quot;: &amp;quot;https://api.example.com/v1/ai&amp;quot;,&lt;br /&gt;
  &amp;quot;API_KEY&amp;quot;: &amp;quot;your-api-key-here&amp;quot;,&lt;br /&gt;
  &amp;quot;AddToPrompt&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Attention|If there's no configuration found, the AI features will not work and you will get a respective message in the chat window!}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== BPM AI Assistant ==&lt;br /&gt;
This is an assistant trained for creating checklist in BPM format, in conjunction with upcoming graphical Procedure Designer for Web Clients.&lt;br /&gt;
&lt;br /&gt;
== Context AI Assistant ==&lt;br /&gt;
This is an assistant for mobile clients, that allows to discuss the current context object (the object the user currently looks at on the mobile device) with the AI. It is also capable of modifying properties of this context object, in the name of the currently logged in user. In addition, it can leverage the client's free text search to answer questions beyond its current context.&lt;br /&gt;
&lt;br /&gt;
=== XAML customizing ===&lt;br /&gt;
&lt;br /&gt;
{{Attention|The AIAssistant control is currently only available for AI-enabled [[Version 5.0 (MAUI)|MAUI]] clients!}}&lt;br /&gt;
&lt;br /&gt;
The AIAssistant needs to be placed somewhere in [[XAML]] customizing, this example shows how to put it in an additional tab after the default Children, Properties and Documents tab in ''UBIKContentArea.xamlx'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:ai=&amp;quot;clr-namespace:UBIK.MAUI.Controls.AI;assembly=UBIK.MAUI&amp;quot;&lt;br /&gt;
&amp;lt;tabView:SfTabItem&amp;gt;&lt;br /&gt;
    &amp;lt;tabView:SfTabItem.ImageSource&amp;gt;&lt;br /&gt;
        &amp;lt;FontImageSource Glyph=&amp;quot;&amp;amp;#xF0E6;&amp;quot; FontFamily=&amp;quot;{StaticResource FASymbols}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/tabView:SfTabItem.ImageSource&amp;gt;&lt;br /&gt;
    &amp;lt;tabView:SfTabItem.Content&amp;gt;&lt;br /&gt;
        &amp;lt;ai:AIAssistant /&amp;gt;&lt;br /&gt;
    &amp;lt;/tabView:SfTabItem.Content&amp;gt;&lt;br /&gt;
    &amp;lt;tabView:SfTabItem.Triggers&amp;gt;&lt;br /&gt;
        &amp;lt;DataTrigger TargetType=&amp;quot;tabView:SfTabItem&amp;quot; Binding=&amp;quot;{Binding SelectedIndex, Source={x:Reference ContentTabs}}&amp;quot; Value=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Setter Property=&amp;quot;Header&amp;quot; Value=&amp;quot;AI Assistant&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/DataTrigger&amp;gt;&lt;br /&gt;
     &amp;lt;/tabView:SfTabItem.Triggers&amp;gt;&lt;br /&gt;
&amp;lt;/tabView:SfTabItem&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=AI_Assist&amp;diff=29884</id>
		<title>AI Assist</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=AI_Assist&amp;diff=29884"/>
				<updated>2026-05-19T12:50:31Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: /* Context AI Assistant */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UBIK_Labs_Disclaimer}}&lt;br /&gt;
{{Attention|AI Support is currently a preview feature and not available in an official product release. Please contact us to get access to a respective version!}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
All AI functionality in {{UBIK}} requires Internet connectivity, so there is no offline support for these features. The AI features are based and built for an Azure OpenAI deployment with a GPT4.1 model, other models are currently not supported.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
Configuration of the AI can be achieved by a designated object in the infrastructure of the App/Context of the use case that needs AI support. The object needs to have the UID &amp;lt;code&amp;gt;D4F3E8C2-5B6A-4F2A-9C1E-1234567890AB&amp;lt;/code&amp;gt; and carry a string property with the name &amp;lt;code&amp;gt;AICONFIG&amp;lt;/code&amp;gt;. On this property a JSON configuration can be stored, that has the following structure:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;API_URI&amp;quot;: &amp;quot;https://api.example.com/v1/ai&amp;quot;,&lt;br /&gt;
  &amp;quot;API_KEY&amp;quot;: &amp;quot;your-api-key-here&amp;quot;,&lt;br /&gt;
  &amp;quot;AddToPrompt&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;API_URI&amp;lt;/code&amp;gt; The URL to your Azure OpenAI endpoint&lt;br /&gt;
* &amp;lt;code&amp;gt;API_KEY&amp;lt;/code&amp;gt; The API key of your Azure OpenAI deployment&lt;br /&gt;
* &amp;lt;code&amp;gt;AddToPrompt&amp;lt;/code&amp;gt; A natural text you want to add to the system prompt, which can be used to fine tune the AI. '''Example:''' for the Context AI Assistant it could be set to ''&amp;quot;Add 'Your friendly AI Assistant.' in a random language to every ResponseText&amp;quot;''. From there on, every reply from the AI would be amendend with this phrase translated into a language of it's choice.&lt;br /&gt;
&lt;br /&gt;
{{Attention|If there's no configuration object found in the infrastructure, the AI features will not work and you will get a respective message in the chat window!}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== BPM AI Assistant ==&lt;br /&gt;
This is an assistant trained for creating checklist in BPM format, in conjunction with upcoming graphical Procedure Designer for Web Clients.&lt;br /&gt;
&lt;br /&gt;
== Context AI Assistant ==&lt;br /&gt;
This is an assistant for mobile clients, that allows to discuss the current context object (the object the user currently looks at on the mobile device) with the AI. It is also capable of modifying properties of this context object, in the name of the currently logged in user. In addition, it can leverage the client's free text search to answer questions beyond its current context.&lt;br /&gt;
&lt;br /&gt;
=== XAML customizing ===&lt;br /&gt;
&lt;br /&gt;
{{Attention|The AIAssistant control is currently only available for AI-enabled [[Version 5.0 (MAUI)|MAUI]] clients!}}&lt;br /&gt;
&lt;br /&gt;
The AIAssistant needs to be placed somewhere in [[XAML]] customizing, this example shows how to put it in an additional tab after the default Children, Properties and Documents tab in ''UBIKContentArea.xamlx'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:ai=&amp;quot;clr-namespace:UBIK.MAUI.Controls.AI;assembly=UBIK.MAUI&amp;quot;&lt;br /&gt;
&amp;lt;tabView:SfTabItem&amp;gt;&lt;br /&gt;
    &amp;lt;tabView:SfTabItem.ImageSource&amp;gt;&lt;br /&gt;
        &amp;lt;FontImageSource Glyph=&amp;quot;&amp;amp;#xF0E6;&amp;quot; FontFamily=&amp;quot;{StaticResource FASymbols}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/tabView:SfTabItem.ImageSource&amp;gt;&lt;br /&gt;
    &amp;lt;tabView:SfTabItem.Content&amp;gt;&lt;br /&gt;
        &amp;lt;ai:AIAssistant /&amp;gt;&lt;br /&gt;
    &amp;lt;/tabView:SfTabItem.Content&amp;gt;&lt;br /&gt;
    &amp;lt;tabView:SfTabItem.Triggers&amp;gt;&lt;br /&gt;
        &amp;lt;DataTrigger TargetType=&amp;quot;tabView:SfTabItem&amp;quot; Binding=&amp;quot;{Binding SelectedIndex, Source={x:Reference ContentTabs}}&amp;quot; Value=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Setter Property=&amp;quot;Header&amp;quot; Value=&amp;quot;AI Assistant&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/DataTrigger&amp;gt;&lt;br /&gt;
     &amp;lt;/tabView:SfTabItem.Triggers&amp;gt;&lt;br /&gt;
&amp;lt;/tabView:SfTabItem&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=AI_Assist&amp;diff=29883</id>
		<title>AI Assist</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=AI_Assist&amp;diff=29883"/>
				<updated>2026-05-19T12:47:53Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: /* Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UBIK_Labs_Disclaimer}}&lt;br /&gt;
{{Attention|AI Support is currently a preview feature and not available in an official product release. Please contact us to get access to a respective version!}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
All AI functionality in {{UBIK}} requires Internet connectivity, so there is no offline support for these features. The AI features are based and built for an Azure OpenAI deployment with a GPT4.1 model, other models are currently not supported.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
Configuration of the AI can be achieved by a designated object in the infrastructure of the App/Context of the use case that needs AI support. The object needs to have the UID &amp;lt;code&amp;gt;D4F3E8C2-5B6A-4F2A-9C1E-1234567890AB&amp;lt;/code&amp;gt; and carry a string property with the name &amp;lt;code&amp;gt;AICONFIG&amp;lt;/code&amp;gt;. On this property a JSON configuration can be stored, that has the following structure:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;API_URI&amp;quot;: &amp;quot;https://api.example.com/v1/ai&amp;quot;,&lt;br /&gt;
  &amp;quot;API_KEY&amp;quot;: &amp;quot;your-api-key-here&amp;quot;,&lt;br /&gt;
  &amp;quot;AddToPrompt&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;API_URI&amp;lt;/code&amp;gt; The URL to your Azure OpenAI endpoint&lt;br /&gt;
* &amp;lt;code&amp;gt;API_KEY&amp;lt;/code&amp;gt; The API key of your Azure OpenAI deployment&lt;br /&gt;
* &amp;lt;code&amp;gt;AddToPrompt&amp;lt;/code&amp;gt; A natural text you want to add to the system prompt, which can be used to fine tune the AI. '''Example:''' for the Context AI Assistant it could be set to ''&amp;quot;Add 'Your friendly AI Assistant.' in a random language to every ResponseText&amp;quot;''. From there on, every reply from the AI would be amendend with this phrase translated into a language of it's choice.&lt;br /&gt;
&lt;br /&gt;
{{Attention|If there's no configuration object found in the infrastructure, the AI features will not work and you will get a respective message in the chat window!}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== BPM AI Assistant ==&lt;br /&gt;
This is an assistant trained for creating checklist in BPM format, in conjunction with upcoming graphical Procedure Designer for Web Clients.&lt;br /&gt;
&lt;br /&gt;
== Context AI Assistant ==&lt;br /&gt;
This is an assistant for mobile clients, that allows to discuss the current context object (the object the user currently looks at on teh mobile device) with the AI. It is also capable of modifying properties of this context object, in the name of the currently logged in user.&lt;br /&gt;
&lt;br /&gt;
=== XAML customizing ===&lt;br /&gt;
&lt;br /&gt;
{{Attention|The AIAssistant control is currently only available for AI-enabled [[Version 5.0 (MAUI)|MAUI]] clients!}}&lt;br /&gt;
&lt;br /&gt;
The AIAssistant needs to be placed somewhere in [[XAML]] customizing, this example shows how to put it in an additional tab after the default Children, Properties and Documents tab in ''UBIKContentArea.xamlx'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:ai=&amp;quot;clr-namespace:UBIK.MAUI.Controls.AI;assembly=UBIK.MAUI&amp;quot;&lt;br /&gt;
&amp;lt;tabView:SfTabItem&amp;gt;&lt;br /&gt;
    &amp;lt;tabView:SfTabItem.ImageSource&amp;gt;&lt;br /&gt;
        &amp;lt;FontImageSource Glyph=&amp;quot;&amp;amp;#xF0E6;&amp;quot; FontFamily=&amp;quot;{StaticResource FASymbols}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/tabView:SfTabItem.ImageSource&amp;gt;&lt;br /&gt;
    &amp;lt;tabView:SfTabItem.Content&amp;gt;&lt;br /&gt;
        &amp;lt;ai:AIAssistant /&amp;gt;&lt;br /&gt;
    &amp;lt;/tabView:SfTabItem.Content&amp;gt;&lt;br /&gt;
    &amp;lt;tabView:SfTabItem.Triggers&amp;gt;&lt;br /&gt;
        &amp;lt;DataTrigger TargetType=&amp;quot;tabView:SfTabItem&amp;quot; Binding=&amp;quot;{Binding SelectedIndex, Source={x:Reference ContentTabs}}&amp;quot; Value=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Setter Property=&amp;quot;Header&amp;quot; Value=&amp;quot;AI Assistant&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/DataTrigger&amp;gt;&lt;br /&gt;
     &amp;lt;/tabView:SfTabItem.Triggers&amp;gt;&lt;br /&gt;
&amp;lt;/tabView:SfTabItem&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=What_is_UBIK&amp;diff=29452</id>
		<title>What is UBIK</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=What_is_UBIK&amp;diff=29452"/>
				<updated>2026-03-04T12:23:54Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{otherlang&lt;br /&gt;
| title=What is UBIK&lt;br /&gt;
| de=Was ist UBIK&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{UBIK}} is a powerful platform for creating Augmented Reality–enabled mobile solutions designed for industrial environments.&lt;br /&gt;
&lt;br /&gt;
It enables the development of flexible, high‑performance object models that unify data from virtually any source—whether imported once, synchronized regularly, or retrieved on demand. These models are published through a WebService and can be consumed by {{UBIK}} mobile devices, which overlay geo‑ or marker-referenced information as intuitive AR bubbles directly in the camera view.&lt;br /&gt;
&lt;br /&gt;
[[File:IL_ProjectFlow.png|500px]]&lt;br /&gt;
&lt;br /&gt;
=={{UBIK}} Highlights==&lt;br /&gt;
&lt;br /&gt;
[[Design object-oriented data models]]&lt;br /&gt;
*Use [[Polymorphism]] and [[inheritance]] to build rich, reusable [[UBIK objects|UBIK object]] models&lt;br /&gt;
*Define arbitrary [[relations]] between objects&lt;br /&gt;
*Implement runtime behavior in [[:Category:Coding|native code]] or visual [[:Category:Workflow|Workflows]]&lt;br /&gt;
*Configure [[Views]] to shape how users experience the objects&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Release data model]]&lt;br /&gt;
*[[Compiler|Compile]] object models into native code and relational structures&lt;br /&gt;
*Navigate data object‑oriented while benefiting from the integrity and performance of an RDBMS&lt;br /&gt;
*Deploy to on‑premise infrastructure, the cloud, or hybrid environments&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Interface to data sources]]&lt;br /&gt;
*Integrate using standard [[:Category:Interfacing|interfaces]] such as ISO15926&lt;br /&gt;
*Create custom interface plugins for any available data source&lt;br /&gt;
*Use [[Proxy|proxies]] to manage data versions and consistency&lt;br /&gt;
*Control interface behavior and data consolidation workflows&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Publish data model]]&lt;br /&gt;
*Define [[Application Context Management|application contexts]] and role‑based access&lt;br /&gt;
*Link contexts to views for tailored user experiences&lt;br /&gt;
*Push updates to mobile devices instantly&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Use data in the field]]&lt;br /&gt;
*Aim a mobile device at objects to access information instantly&lt;br /&gt;
*Drill down into detailed data—fast, secure, and always up‑to‑date&lt;br /&gt;
*Work with the full published data model directly on the device&lt;br /&gt;
*Edit information on site and sync it back to the server and source systems&lt;br /&gt;
*Capture photos or voice notes to enrich your data&lt;br /&gt;
*Teach in new objects directly in the field using geo‑positioning&lt;br /&gt;
&lt;br /&gt;
[[Category:UBIK|What is UBIK]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=What_is_UBIK&amp;diff=29451</id>
		<title>What is UBIK</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=What_is_UBIK&amp;diff=29451"/>
				<updated>2026-03-04T12:22:57Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{otherlang&lt;br /&gt;
| title=What is UBIK&lt;br /&gt;
| de=Was ist UBIK&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{UBIK}} is a powerful platform for creating Augmented Reality–enabled mobile solutions designed for industrial environments.&lt;br /&gt;
&lt;br /&gt;
It enables the development of flexible, high‑performance object models that unify data from virtually any source—whether imported once, synchronized regularly, or retrieved on demand. These models are published through a WebService and can be consumed by {{UBIK}} mobile devices, which overlay geo‑referenced information as intuitive AR bubbles directly in the camera view.&lt;br /&gt;
&lt;br /&gt;
[[File:IL_ProjectFlow.png|500px]]&lt;br /&gt;
&lt;br /&gt;
=={{UBIK}} Highlights==&lt;br /&gt;
&lt;br /&gt;
[[Design object-oriented data models]]&lt;br /&gt;
*Use [[Polymorphism]] and [[inheritance]] to build rich, reusable [[UBIK objects|UBIK object]] models&lt;br /&gt;
*Define arbitrary [[relations]] between objects&lt;br /&gt;
*Implement runtime behavior in [[:Category:Coding|native code]] or visual [[:Category:Workflow|Workflows]]&lt;br /&gt;
*Configure [[Views]] to shape how users experience the objects&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Release data model]]&lt;br /&gt;
*[[Compiler|Compile]] object models into native code and relational structures&lt;br /&gt;
*Navigate data object‑oriented while benefiting from the integrity and performance of an RDBMS&lt;br /&gt;
*Deploy to on‑premise infrastructure, the cloud, or hybrid environments&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Interface to data sources]]&lt;br /&gt;
*Integrate using standard [[:Category:Interfacing|interfaces]] such as ISO15926&lt;br /&gt;
*Create custom interface plugins for any available data source&lt;br /&gt;
*Use [[Proxy|proxies]] to manage data versions and consistency&lt;br /&gt;
*Control interface behavior and data consolidation workflows&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Publish data model]]&lt;br /&gt;
*Define [[Application Context Management|application contexts]] and role‑based access&lt;br /&gt;
*Link contexts to views for tailored user experiences&lt;br /&gt;
*Push updates to mobile devices instantly&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Use data in the field]]&lt;br /&gt;
*Aim a mobile device at objects to access information instantly&lt;br /&gt;
*Drill down into detailed data—fast, secure, and always up‑to‑date&lt;br /&gt;
*Work with the full published data model directly on the device&lt;br /&gt;
*Edit information on site and sync it back to the server and source systems&lt;br /&gt;
*Capture photos or voice notes to enrich your data&lt;br /&gt;
*Teach in new objects directly in the field using geo‑positioning&lt;br /&gt;
&lt;br /&gt;
[[Category:UBIK|What is UBIK]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=What_is_UBIK&amp;diff=29296</id>
		<title>What is UBIK</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=What_is_UBIK&amp;diff=29296"/>
				<updated>2026-02-04T15:57:01Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{otherlang&lt;br /&gt;
| title=What is UBIK&lt;br /&gt;
| de=Was ist UBIK&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{UBIK}} is a comprehensive product for enabling Augmented Reality supported mobile solutions in industrial environments. &lt;br /&gt;
&lt;br /&gt;
It allows the creation of flexible, high performance object models that are capable of consolidating data from almost any sources, either as a onetime effort, on a frequent basis or just on demand whenever it is needed. These models are exposed to a WebService and can be subscribed by {{UBIK}} mobile devices, which crossfade the objects as bubbles into the camera view, based on their geo-position.&lt;br /&gt;
&lt;br /&gt;
[[File:IL_ProjectFlow.png|500px]]&lt;br /&gt;
&lt;br /&gt;
=={{UBIK}} Features==&lt;br /&gt;
&lt;br /&gt;
[[Design object-oriented data models]]&lt;br /&gt;
*Use [[Polymorphism]] and [[inheritance]] to create [[UBIK objects]]&lt;br /&gt;
*Define arbitrary [[relations]] between objects&lt;br /&gt;
*Program runtime behavior of your objects in [[:Category:Coding|native code]] or visual [[:Category:Workflow|Workflows]]&lt;br /&gt;
*Configure [[Views]] to control how users see the objects &lt;br /&gt;
&lt;br /&gt;
[[Release data model]]&lt;br /&gt;
*[[Compiler|Compile]] object model to native code and relational data&lt;br /&gt;
*Navigate through data still object-oriented, but with the integrity and performance of an RDBMS&lt;br /&gt;
*Deploy to on-premise infrastructure and/or the cloud&lt;br /&gt;
&lt;br /&gt;
[[Interface to data sources]]&lt;br /&gt;
*Leverage standard [[:Category:Interfacing|interfaces]], i.e. ISO15926&lt;br /&gt;
*Create custom interface plugins, to any available source&lt;br /&gt;
*Use [[Proxy|proxies]] to control your data versions&lt;br /&gt;
*Manage interface behavior and consolidation workflows &lt;br /&gt;
&lt;br /&gt;
[[Publish data model]]&lt;br /&gt;
*Define [[Application Context Management|contexts for applications]] and/or roles&lt;br /&gt;
*Link contexts to views&lt;br /&gt;
*Interact with mobile devices at the push of a button &lt;br /&gt;
&lt;br /&gt;
[[Use data in the field]]&lt;br /&gt;
*Aim mobile device on objects and get information instantly&lt;br /&gt;
*Zoom into more detailed information, fast and secure&lt;br /&gt;
*Have access to the full published data model of the server&lt;br /&gt;
*Edit data in the field and save it back to the server, thus even to the sources&lt;br /&gt;
*Record pictures or voice messages and enrich your data input&lt;br /&gt;
*Teach in new objects directly in the field, based on your geo-position&lt;br /&gt;
&lt;br /&gt;
[[Category:UBIK|What is UBIK]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=AI_Assist&amp;diff=29144</id>
		<title>AI Assist</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=AI_Assist&amp;diff=29144"/>
				<updated>2025-11-13T10:52:23Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Attention|AI Support is currently a preview feature and not available in an official product release. Please contact us to get access to a respective version!}}&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
All AI functionality in {{UBIK}} requires Internet connectivity, so there is no offline support for these features. The AI features are based and built for an Azure OpenAI deployment with a GPT4.1 model, other models are currently not supported.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
Configuration of the AI can be achieved by a designated object in the infrastructure of the App/Context of the use case that needs AI support. The object needs to have the UID &amp;lt;code&amp;gt;D4F3E8C2-5B6A-4F2A-9C1E-1234567890AB&amp;lt;/code&amp;gt; and carry a string property with the name &amp;lt;code&amp;gt;AICONFIG&amp;lt;/code&amp;gt;. On this property a JSON configuration can be stored, that has the following structure:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;API_URI&amp;quot;: &amp;quot;https://api.example.com/v1/ai&amp;quot;,&lt;br /&gt;
  &amp;quot;API_KEY&amp;quot;: &amp;quot;your-api-key-here&amp;quot;,&lt;br /&gt;
  &amp;quot;AddToPrompt&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;API_URI&amp;lt;/code&amp;gt; The URL to your Azure OpenAI endpoint&lt;br /&gt;
* &amp;lt;code&amp;gt;API_KEY&amp;lt;/code&amp;gt; The API key of your Azure OpenAI deployment&lt;br /&gt;
* &amp;lt;code&amp;gt;AddToPrompt&amp;lt;/code&amp;gt; A natural text you want to add to the system prompt, which can be used to fine tune the AI. '''Example:''' for the Context AI Assistant it could be set to ''&amp;quot;Add 'Your friendly AI Assistant.' in a random language to every ResponseText&amp;quot;''. From there on, every reply from the AI would be amendend with this phrase translated into a language of it's choice.&lt;br /&gt;
&lt;br /&gt;
{{Attention|If there's no configuration object found in the infrastructure, the AI will fall back to use Augmensys' demo OpenAI deployment!}}&lt;br /&gt;
&lt;br /&gt;
== BPM AI Assistant ==&lt;br /&gt;
This is an assistant trained for creating checklist in BPM format, in conjunction with upcoming graphical Procedure Designer for Web Clients.&lt;br /&gt;
&lt;br /&gt;
== Context AI Assistant ==&lt;br /&gt;
This is an assistant for mobile clients, that allows to discuss the current context object (the object the user currently looks at on teh mobile device) with the AI. It is also capable of modifying properties of this context object, in the name of the currently logged in user.&lt;br /&gt;
&lt;br /&gt;
=== XAML customizing ===&lt;br /&gt;
&lt;br /&gt;
{{Attention|The AIAssistant control is currently only available for AI-enabled [[Version 5.0 (MAUI)|MAUI]] clients!}}&lt;br /&gt;
&lt;br /&gt;
The AIAssistant needs to be placed somewhere in [[XAML]] customizing, this example shows how to put it in an additional tab after the default Children, Properties and Documents tab in ''UBIKContentArea.xamlx'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:ai=&amp;quot;clr-namespace:UBIK.MAUI.Controls.AI;assembly=UBIK.MAUI&amp;quot;&lt;br /&gt;
&amp;lt;tabView:SfTabItem&amp;gt;&lt;br /&gt;
    &amp;lt;tabView:SfTabItem.ImageSource&amp;gt;&lt;br /&gt;
        &amp;lt;FontImageSource Glyph=&amp;quot;&amp;amp;#xF0E6;&amp;quot; FontFamily=&amp;quot;{StaticResource FASymbols}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/tabView:SfTabItem.ImageSource&amp;gt;&lt;br /&gt;
    &amp;lt;tabView:SfTabItem.Content&amp;gt;&lt;br /&gt;
        &amp;lt;ai:AIAssistant /&amp;gt;&lt;br /&gt;
    &amp;lt;/tabView:SfTabItem.Content&amp;gt;&lt;br /&gt;
    &amp;lt;tabView:SfTabItem.Triggers&amp;gt;&lt;br /&gt;
        &amp;lt;DataTrigger TargetType=&amp;quot;tabView:SfTabItem&amp;quot; Binding=&amp;quot;{Binding SelectedIndex, Source={x:Reference ContentTabs}}&amp;quot; Value=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Setter Property=&amp;quot;Header&amp;quot; Value=&amp;quot;AI Assistant&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/DataTrigger&amp;gt;&lt;br /&gt;
     &amp;lt;/tabView:SfTabItem.Triggers&amp;gt;&lt;br /&gt;
&amp;lt;/tabView:SfTabItem&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=AI_Assist&amp;diff=29141</id>
		<title>AI Assist</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=AI_Assist&amp;diff=29141"/>
				<updated>2025-11-13T09:52:07Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: /* Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Attention|AI Support is currently a preview feature and not available in an official product release. Please contact us to get access to a respective version!}}&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
All AI functionality in {{UBIK}} requires Internet connectivity, so there is no offline support for these features. The AI features are based and built for an Azure OpenAI deployment with a GPT4.1 model, other models are currently not supported.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
Configuration of the AI can be achieved by a designated object in the infrastructure of the App/Context of the use case that needs AI support. The object needs to have the UID &amp;lt;code&amp;gt;D4F3E8C2-5B6A-4F2A-9C1E-1234567890AB&amp;lt;/code&amp;gt; and carry a string property with the name &amp;lt;code&amp;gt;AICONFIG&amp;lt;/code&amp;gt;. On this property a JSON configuration can be stored, that has the following structure:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;API_URI&amp;quot;: &amp;quot;https://api.example.com/v1/ai&amp;quot;,&lt;br /&gt;
  &amp;quot;API_KEY&amp;quot;: &amp;quot;your-api-key-here&amp;quot;,&lt;br /&gt;
  &amp;quot;AddToPrompt&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;API_URI&amp;lt;/code&amp;gt; The URL to your Azure OpenAI endpoint&lt;br /&gt;
* &amp;lt;code&amp;gt;API_KEY&amp;lt;/code&amp;gt; The API key of your Azure OpenAI deployment&lt;br /&gt;
* &amp;lt;code&amp;gt;AddToPrompt&amp;lt;/code&amp;gt; A natural text you want to add to the system prompt, which can be used to fine tune the AI. '''Example:''' for the Context AI Assistant it could be set to ''&amp;quot;Add 'Your friendly AI Assistant.' in a random language to every ResponseText&amp;quot;''. From there on, every reply from the AI would be amendend with this phrase translated into a language of it's choice.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== BPM AI Assistant ==&lt;br /&gt;
This is an assistant trained for creating checklist in BPM format, in conjunction with upcoming graphical Procedure Designer for Web Clients.&lt;br /&gt;
&lt;br /&gt;
== Context AI Assistant ==&lt;br /&gt;
This is an assistant for mobile clients, that allows to discuss the current context object (the object the user currently looks at on teh mobile device) with the AI. It is also capable of modifying properties of this context object, in the name of the currently logged in user.&lt;br /&gt;
&lt;br /&gt;
=== XAML customizing ===&lt;br /&gt;
&lt;br /&gt;
{{Attention|The AIAssistant control is currently only available for AI-enabled [[Version 5.0 (MAUI)|MAUI]] clients!}}&lt;br /&gt;
&lt;br /&gt;
The AIAssistant needs to be placed somewhere in [[XAML]] customizing, this example shows how to put it in an additional tab after the default Children, Properties and Documents tab in ''UBIKContentArea.xamlx'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:ai=&amp;quot;clr-namespace:UBIK.MAUI.Controls.AI;assembly=UBIK.MAUI&amp;quot;&lt;br /&gt;
&amp;lt;tabView:SfTabItem&amp;gt;&lt;br /&gt;
    &amp;lt;tabView:SfTabItem.ImageSource&amp;gt;&lt;br /&gt;
        &amp;lt;FontImageSource Glyph=&amp;quot;&amp;amp;#xF0E6;&amp;quot; FontFamily=&amp;quot;{StaticResource FASymbols}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/tabView:SfTabItem.ImageSource&amp;gt;&lt;br /&gt;
    &amp;lt;tabView:SfTabItem.Content&amp;gt;&lt;br /&gt;
        &amp;lt;ai:AIAssistant /&amp;gt;&lt;br /&gt;
    &amp;lt;/tabView:SfTabItem.Content&amp;gt;&lt;br /&gt;
    &amp;lt;tabView:SfTabItem.Triggers&amp;gt;&lt;br /&gt;
        &amp;lt;DataTrigger TargetType=&amp;quot;tabView:SfTabItem&amp;quot; Binding=&amp;quot;{Binding SelectedIndex, Source={x:Reference ContentTabs}}&amp;quot; Value=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Setter Property=&amp;quot;Header&amp;quot; Value=&amp;quot;AI Assistant&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/DataTrigger&amp;gt;&lt;br /&gt;
     &amp;lt;/tabView:SfTabItem.Triggers&amp;gt;&lt;br /&gt;
&amp;lt;/tabView:SfTabItem&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=AI_Assist&amp;diff=29140</id>
		<title>AI Assist</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=AI_Assist&amp;diff=29140"/>
				<updated>2025-11-13T09:49:58Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Attention|AI Support is currently a preview feature and not available in an official product release. Please contact us to get access to a respective version!}}&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
All AI functionality in {{UBIK}} requires Internet connectivity, so there is no offline support for these features. The AI features are based and built for an Azure OpenAI deployment with a GPT4.1 model, other models are currently not supported.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
Configuration of the AI can be achieved by a designated object in the infrastructure of the App/Context of the use case that needs AI support. The object needs to have the UID &amp;lt;code&amp;gt;D4F3E8C2-5B6A-4F2A-9C1E-1234567890AB&amp;lt;/code&amp;gt; and carry a string property with the name &amp;lt;code&amp;gt;AICONFIG&amp;lt;/code&amp;gt;. On this property a JSON configuration can be stored, that has the following structure:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;API_URI&amp;quot;: &amp;quot;https://api.example.com/v1/ai&amp;quot;,&lt;br /&gt;
  &amp;quot;API_KEY&amp;quot;: &amp;quot;your-api-key-here&amp;quot;,&lt;br /&gt;
  &amp;quot;AddToPrompt&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;API_URI&amp;lt;/code&amp;gt; The URL to your Azure OpenAI endpoint&lt;br /&gt;
* &amp;lt;code&amp;gt;API_KEY&amp;lt;/code&amp;gt; The API key of your Azure OpenAI deployment&lt;br /&gt;
* &amp;lt;code&amp;gt;AddToPrompt&amp;lt;/code&amp;gt; A natural text you want to add to the system prompt, which can be used to fine tune the AI. Example: for the Context AI Assistant it could be set to ''&amp;quot;Add 'Your friendly AI Assistant.' in a random language to every ResponseText&amp;quot;''. From there on, every reply from the AI would be amendend with this phrase translated into a language f it's choice.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== BPM AI Assistant ==&lt;br /&gt;
This is an assistant trained for creating checklist in BPM format, in conjunction with upcoming graphical Procedure Designer for Web Clients.&lt;br /&gt;
&lt;br /&gt;
== Context AI Assistant ==&lt;br /&gt;
This is an assistant for mobile clients, that allows to discuss the current context object (the object the user currently looks at on teh mobile device) with the AI. It is also capable of modifying properties of this context object, in the name of the currently logged in user.&lt;br /&gt;
&lt;br /&gt;
=== XAML customizing ===&lt;br /&gt;
&lt;br /&gt;
{{Attention|The AIAssistant control is currently only available for AI-enabled [[Version 5.0 (MAUI)|MAUI]] clients!}}&lt;br /&gt;
&lt;br /&gt;
The AIAssistant needs to be placed somewhere in [[XAML]] customizing, this example shows how to put it in an additional tab after the default Children, Properties and Documents tab in ''UBIKContentArea.xamlx'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:ai=&amp;quot;clr-namespace:UBIK.MAUI.Controls.AI;assembly=UBIK.MAUI&amp;quot;&lt;br /&gt;
&amp;lt;tabView:SfTabItem&amp;gt;&lt;br /&gt;
    &amp;lt;tabView:SfTabItem.ImageSource&amp;gt;&lt;br /&gt;
        &amp;lt;FontImageSource Glyph=&amp;quot;&amp;amp;#xF0E6;&amp;quot; FontFamily=&amp;quot;{StaticResource FASymbols}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/tabView:SfTabItem.ImageSource&amp;gt;&lt;br /&gt;
    &amp;lt;tabView:SfTabItem.Content&amp;gt;&lt;br /&gt;
        &amp;lt;ai:AIAssistant /&amp;gt;&lt;br /&gt;
    &amp;lt;/tabView:SfTabItem.Content&amp;gt;&lt;br /&gt;
    &amp;lt;tabView:SfTabItem.Triggers&amp;gt;&lt;br /&gt;
        &amp;lt;DataTrigger TargetType=&amp;quot;tabView:SfTabItem&amp;quot; Binding=&amp;quot;{Binding SelectedIndex, Source={x:Reference ContentTabs}}&amp;quot; Value=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Setter Property=&amp;quot;Header&amp;quot; Value=&amp;quot;AI Assistant&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/DataTrigger&amp;gt;&lt;br /&gt;
     &amp;lt;/tabView:SfTabItem.Triggers&amp;gt;&lt;br /&gt;
&amp;lt;/tabView:SfTabItem&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=AI_Assist&amp;diff=29138</id>
		<title>AI Assist</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=AI_Assist&amp;diff=29138"/>
				<updated>2025-11-13T09:45:00Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: Created page with &amp;quot;{{Attention|AI Support is currently a preview feature and not available in an official product release. Please contact us to get access to a respective version!}}  == General...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Attention|AI Support is currently a preview feature and not available in an official product release. Please contact us to get access to a respective version!}}&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
All AI functionality in {{UBIK}} requires Internet connectivity, so there is no offline support for these features. &lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
Configuration of the AI can be achieved by a designated object in the infrastructure of the App/Context of the use case that needs AI support. The object needs to have the UID &amp;lt;code&amp;gt;D4F3E8C2-5B6A-4F2A-9C1E-1234567890AB&amp;lt;/code&amp;gt; and carry a string property with the name &amp;lt;code&amp;gt;AICONFIG&amp;lt;/code&amp;gt;. On this property a JSON configuration can be stored, that has the following structure:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;API_URI&amp;quot;: &amp;quot;https://api.example.com/v1/ai&amp;quot;,&lt;br /&gt;
  &amp;quot;API_KEY&amp;quot;: &amp;quot;your-api-key-here&amp;quot;,&lt;br /&gt;
  &amp;quot;AddToPrompt&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;API_URI&amp;lt;/code&amp;gt; The URL to your Azure OpenAI endpoint&lt;br /&gt;
* &amp;lt;code&amp;gt;API_KEY&amp;lt;/code&amp;gt; The API key of your Azure OpenAI deployment&lt;br /&gt;
* &amp;lt;code&amp;gt;AddToPrompt&amp;lt;/code&amp;gt; A natural text you want to add to the system prompt, which can be used to fine tune the AI. Example: for the Context AI Assistant it could be set to ''&amp;quot;Add 'Your friendly AI Assistant.' in a random language to every ResponseText&amp;quot;''. From there on, every reply from the AI would be amendend with this phrase translated into a language f it's choice.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== BPM AI Assistant ==&lt;br /&gt;
This is an assistant trained for creating checklist in BPM format, in conjunction with upcoming graphical Procedure Designer for Web Clients.&lt;br /&gt;
&lt;br /&gt;
== Context AI Assistant ==&lt;br /&gt;
This is an assistant for mobile clients, that allows to discuss the current context object (the object the user currently looks at on teh mobile device) with the AI. It is also capable of modifying properties of this context object, in the name of the currently logged in user.&lt;br /&gt;
&lt;br /&gt;
=== XAML customizing ===&lt;br /&gt;
&lt;br /&gt;
{{Attention|The AIAssistant control is currently only available for AI-enabled [[Version 5.0 (MAUI)|MAUI]] clients!}}&lt;br /&gt;
&lt;br /&gt;
The AIAssistant needs to be placed somewhere in [[XAML]] customizing, this example shows how to put it in an additional tab after the default Children, Properties and Documents tab in ''UBIKContentArea.xamlx'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:ai=&amp;quot;clr-namespace:UBIK.MAUI.Controls.AI;assembly=UBIK.MAUI&amp;quot;&lt;br /&gt;
&amp;lt;tabView:SfTabItem&amp;gt;&lt;br /&gt;
    &amp;lt;tabView:SfTabItem.ImageSource&amp;gt;&lt;br /&gt;
        &amp;lt;FontImageSource Glyph=&amp;quot;&amp;amp;#xF0E6;&amp;quot; FontFamily=&amp;quot;{StaticResource FASymbols}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/tabView:SfTabItem.ImageSource&amp;gt;&lt;br /&gt;
    &amp;lt;tabView:SfTabItem.Content&amp;gt;&lt;br /&gt;
        &amp;lt;ai:AIAssistant /&amp;gt;&lt;br /&gt;
    &amp;lt;/tabView:SfTabItem.Content&amp;gt;&lt;br /&gt;
    &amp;lt;tabView:SfTabItem.Triggers&amp;gt;&lt;br /&gt;
        &amp;lt;DataTrigger TargetType=&amp;quot;tabView:SfTabItem&amp;quot; Binding=&amp;quot;{Binding SelectedIndex, Source={x:Reference ContentTabs}}&amp;quot; Value=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Setter Property=&amp;quot;Header&amp;quot; Value=&amp;quot;AI Assistant&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/DataTrigger&amp;gt;&lt;br /&gt;
     &amp;lt;/tabView:SfTabItem.Triggers&amp;gt;&lt;br /&gt;
&amp;lt;/tabView:SfTabItem&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Version_5&amp;diff=29137</id>
		<title>Version 5</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Version_5&amp;diff=29137"/>
				<updated>2025-11-13T09:07:30Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{RoadmapDetailHeader}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{RoadmapDetailItem &lt;br /&gt;
| version=5.1&lt;br /&gt;
| date= December 2025&lt;br /&gt;
| status={{RoadmapChip-Announced|Future}} &lt;br /&gt;
| content=&lt;br /&gt;
{{RoadmapDetailFeature | product={{RoadmapChip-Studio}} | feature=Extended Plugin C# solution generation| descr=Possibility to design MetaClasses, MetaProperties and Custom Code for a UBIK plugin and generate a C# solution for it. }}&lt;br /&gt;
{{RoadmapDetailFeature | product={{RoadmapChip-Mobile}} | feature=Map view in mobile MAUI client | descr= }}&lt;br /&gt;
{{RoadmapDetailFeature | product={{RoadmapChip-Mobile}} | feature=Charts in mobile MAUI client | descr= }}&lt;br /&gt;
{{RoadmapDetailFeature | product={{RoadmapChip-Mobile}} | feature=Native push in mobile MAUI client | descr= }}&lt;br /&gt;
{{RoadmapDetailFeature | product={{RoadmapChip-Mobile}} | feature=POI view in mobile MAUI client | descr= }}&lt;br /&gt;
{{RoadmapDetailFeature | product={{RoadmapChip-Mobile}} | feature=Location service in mobile MAUI client | descr= }}&lt;br /&gt;
{{RoadmapDetailFeature | product={{RoadmapChip-Client}} | feature=Better control over file upload size | descr= }}&lt;br /&gt;
{{RoadmapDetailFeature | product={{RoadmapChip-Client}} | feature=Harder-to-miss branch download summary | descr= }}&lt;br /&gt;
{{RoadmapDetailFeature | product={{RoadmapChip-Client}} | feature=Improved save button design | descr= }}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{RoadmapDetailItem &lt;br /&gt;
| version=5.0&lt;br /&gt;
| date= September 2025&lt;br /&gt;
| status={{RoadmapChip-Announced|Current}} &lt;br /&gt;
| content=&lt;br /&gt;
{{RoadmapDetailFeature | product={{RoadmapChip-Studio}} | feature=Basic Plugin C# solution generation| descr=Possibility to configure plugins in UBIK.Studio, and to generate a C# solution from this configuration. }}&lt;br /&gt;
{{RoadmapDetailFeature | product={{RoadmapChip-Server}} | feature=Server MRO Procedures | descr=Introduces server-side support for managing and executing MRO (Maintenance, Repair, Overhaul) procedures. }}&lt;br /&gt;
{{RoadmapDetailFeature | product={{RoadmapChip-Mobile}} | feature=Mobile UBIK .NET MAUI Client | descr=Modernized UBIK mobile application built with .NET MAUI for cross-platform compatibility and improved performance. }}&lt;br /&gt;
{{RoadmapDetailFeature | product={{RoadmapChip-Client}} | feature=Improved branch download performance | descr=Improved the branch download performance especially when there are duplicate objects in multiple branches. }}&lt;br /&gt;
{{RoadmapDetailFeature | product={{RoadmapChip-Studio}} | feature=Studio Iterative Instance Data Transfer in SmartStudio | descr=Enables transferring instance data between environments or projects using iterative and controlled processes. }}&lt;br /&gt;
{{RoadmapDetailFeature | product={{RoadmapChip-Studio}} | feature=Studio Text-Markup Annotations support opacity now | descr=Annotations in SmartStudio now support opacity settings for better visual clarity and flexibility. }}&lt;br /&gt;
{{RoadmapDetailFeature | product={{RoadmapChip-Server}} | feature=Server UBIK supports the Exclusive Checkout Query now | descr=Enhances UBIK's versioning control with support for exclusive checkouts via query. }}&lt;br /&gt;
{{RoadmapDetailFeature | product={{RoadmapChip-Server}} | feature=Server Extended Archon License Information | descr=Archon licenses now include more detailed metadata and management information on the server. }}&lt;br /&gt;
{{RoadmapDetailFeature | product={{RoadmapChip-CUI}} | feature=Log CUI Web Request V2 | descr=Improved logging of CUI web requests for better traceability and debugging. }}&lt;br /&gt;
{{RoadmapDetailFeature | product={{RoadmapChip-Server}} | feature=Server UBIK Traits | descr=New support for defining and using Traits in the UBIK Server model - &amp;quot;Lightweight Properties&amp;quot; }}&lt;br /&gt;
{{RoadmapDetailFeature | product={{RoadmapChip-MaTaP}} | feature=MaTaP Blind List Management | descr=Adds functionality for blind list handling in MaTaP, improving confidentiality and targeting. }}&lt;br /&gt;
{{RoadmapDetailFeature | product={{RoadmapChip-Studio}} | feature=Bulk Editor UID Column | descr=A UID column can now be shown in UBIK.Studio's BulkEditor. }}&lt;br /&gt;
{{RoadmapDetailFeature | product={{RoadmapChip-Studio}} | feature=Load &amp;amp; Save Code in WhoBert | descr=WhoBert now provides a rich &amp;quot;Load &amp;amp; Save Code&amp;quot; feature. }}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 5]]&lt;br /&gt;
[[Category:Release notes|Version 5]]&lt;br /&gt;
[[Category:Roadmap|Version 5]]&lt;br /&gt;
[[Category:Server|Version 5]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Version_5.0_(Mobile)&amp;diff=28891</id>
		<title>Version 5.0 (Mobile)</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Version_5.0_(Mobile)&amp;diff=28891"/>
				<updated>2025-09-30T15:53:07Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: /* Known issues */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Attention|Existing pre 5.0 XAMLs are not compatible with UBIK Mobile client 5.0. Please refer to [[HowTo:Convert_Xamarin_XAMLs_to_Maui]] for migrating them to the new client.}}&lt;br /&gt;
&lt;br /&gt;
{{Attention|UBIK 5 clients can only connect to {{UBIK}} Servers of [[Version 3.6(Server)|version 3.6]] and higher!}}&lt;br /&gt;
&lt;br /&gt;
{{Attention|The minimum supported OS versions are:&lt;br /&gt;
* Android 9;&lt;br /&gt;
* iOS 12.}}&lt;br /&gt;
&lt;br /&gt;
== Availability ==&lt;br /&gt;
{{key press|Android: Store}}{{key press|iOS: Store}}: Publicly available in Google Play Store / Apple App Store.&lt;br /&gt;
&lt;br /&gt;
{{key press|Android: Store Beta}}: Publicly available in Google Play Store as beta versions. You can opt in or out of the beta at any time in the store.&lt;br /&gt;
&lt;br /&gt;
{{key press|Android: Store Preview}}: Available through Google Play Store's [https://play.google.com/store/apps/details?id=com.augmensys.ubik.go invitation link].&lt;br /&gt;
&lt;br /&gt;
{{key press|iOS: Store Beta}}: Available through Apple App Store's [https://testflight.apple.com/join/Kmb1HG9E invitation link].&lt;br /&gt;
&lt;br /&gt;
{{key press|iOS: Store Preview}}: Available through Apple App Store's [https://testflight.apple.com/join/yHRnbYbt invitation link].&lt;br /&gt;
&lt;br /&gt;
{{key press|Windows: Store Preview}}: The mobile Windows client is not an official product and is only distributed as test versions upon request and/or in our [https://release.augmensys.com/download/modules/client/mobile/ release portal].&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Attention|Some customized XAMLs might need an update to work properly. These changes are marked with a ⚠️}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.? on 2025-10-? {{key press|Android: Store}}{{key press|iOS: Store}} ===&lt;br /&gt;
* Updated the notification message about branch download to avoid misunderstanding. When a branch download is in progress, you can work with the offline data which is already available at the time of the download, but any communication with the content server will be scheduled after the branch download is finished.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 5.0.209 on 2025-09-27 {{key press|Android: Store}} 5.0.207 on 2025-09-25 {{key press|iOS: Store}} ===&lt;br /&gt;
* UBIK GO is the cutting-edge evolution of Augmensys' trusted mobile client — rebuilt from the ground up with a modern architecture that unlocks unprecedented flexibility.&lt;br /&gt;
* Improved the branch download performance especially when there are duplicate objects in multiple branches.&lt;br /&gt;
* Updated some translations.&lt;br /&gt;
* Updated the default Demo profile.&lt;br /&gt;
* Fixed an issue that triggered a license warning even on a failed login.&lt;br /&gt;
* Fixed an issue where the wizard is shown again when you navigate to a new but saved object offline.&lt;br /&gt;
* Fixed an issue where duplicate notifications are shown when you scan an NFC tag for a supervisor task and no fitting supervisor is found.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* When changing the device orientation during attaching a photo on iOS, the app gets stuck. This is an issue Microsoft confirmed in .NET9 and will fix in .NET10.&lt;br /&gt;
* When editing Guid Link properties, you can no longer further edit the filtering if there are predefined filter parameters (such as the [[Dynamic_Selective_List_(Client)#Dependency_property_values|dependency property values in dynamic selective lists]]). This is because those parameters are to be enforced by design and should not be changed by users. In the future, we might consider a finer level of control over which parameters can be edited in such cases.&lt;br /&gt;
* Currently, the Samsung keyboard doesn't show {{key press|,}} at all, regardless of the current language/locale setting of the device. Please use a different virtual keyboard (e.g. Gboard from Google) instead if {{key press|.}} is unacceptable.&lt;br /&gt;
* The periodic execution of background pushes is not guaranteed on iOS.&lt;br /&gt;
* There are still some [[Annotation_and_HotSpot#Known_issues|known issues with free text and text markup annotations]].&lt;br /&gt;
* It is currently not possible to select which camera to use for AR views (e.g. scan page) on Windows.&lt;br /&gt;
* SfPullToRefresh was removed due to [[Mobile_XAML#Issues_with_SfPullToRefresh_in_Mobile_client|existing issues]], and replaced with a Refresh option in the Context menu.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 5.0 (Mobile)]]&lt;br /&gt;
[[Category:Mobile|Version 5.0 (Mobile)]]&lt;br /&gt;
[[Category:Version 5.0|Version 5.0 (Mobile)]]&lt;br /&gt;
&lt;br /&gt;
= ⚠️ XAML Notes =&lt;br /&gt;
Due to the change of the underlying XAML technology, the existing XAMLs for the old mobile clients (pre 5.0) are no longer compatible. Please refer to [[HowTo:Convert_Xamarin_XAMLs_to_Maui]] for migrating them to the new client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 5.0 (Mobile)]]&lt;br /&gt;
[[Category:Mobile|Version 5.0 (Mobile)]]&lt;br /&gt;
[[Category:Version 5.0|Version 5.0 (Mobile)]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=HowTo:Install_UBIK_Database&amp;diff=28375</id>
		<title>HowTo:Install UBIK Database</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=HowTo:Install_UBIK_Database&amp;diff=28375"/>
				<updated>2025-07-03T14:42:24Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;All content and configuration data of {{UBIK}} is managed in a [http://www.microsoft.com/en-us/sqlserver/default.aspx Microsoft SQL] database (2012 or newer). Once the SQL server engines is installed successfully, an administrator can set up a new {{UBIK}} database simple using the available release database.&lt;br /&gt;
&lt;br /&gt;
[[File:UI_SettingUpUBIKDatabase_01.png|thumb|alt=Microsoft SQL Server Management Studio|Microsoft SQL Server Management Studio]]&lt;br /&gt;
== Setting up {{UBIK}} database ==&lt;br /&gt;
# Start the ''Microsoft SQL Server Management Studio'' and connect to the database server&lt;br /&gt;
# Navigate to ''Databases'' and right click on ''Databases''&amp;amp;rarr; select ''New database...''&lt;br /&gt;
# Right click on the newly created database and choose ''Tasks &amp;amp;rarr; Restore &amp;amp;rarr; Database'' from the context menu&lt;br /&gt;
## Choose the newly created database in the setting ''In database''&lt;br /&gt;
## Choose the copied backup file in ''From media''&lt;br /&gt;
## Check ''Restore'' of the according backup set &amp;lt;br/&amp;gt; [[File:Restore Database.PNG| 440px|border]]&lt;br /&gt;
# Switch to the options-slider and check ''Overwriting actual data'' (if necessary)&lt;br /&gt;
# Finish the process by clicking {{key press|OK}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Attention|Use maintenance plans for periodic backup of your own and the system databases!}}&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
=== Database user ===&lt;br /&gt;
The database user configured in {{UBIK}} Studio used to connect to the database needs&lt;br /&gt;
* to have the role ''sys.admin'' assigned&lt;br /&gt;
* to be marked as ''Database owner'' (dbo) of the according {{UBIK}} database&lt;br /&gt;
&lt;br /&gt;
=== Windows firewall ===&lt;br /&gt;
For a non-local SQL server make sure that the SQL server port (default: 1433) is unlocked by the Windows firewall Inbound and Exbound rules.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[FAQ:Installation_and_Configuration#Network|FAQ: Installation and Configuration / Network]]&lt;br /&gt;
&lt;br /&gt;
[[Category:How-To|Install UBIK Database]]&lt;br /&gt;
[[Category:Installing|Install UBIK Database]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=XAML_Tips&amp;diff=28191</id>
		<title>XAML Tips</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=XAML_Tips&amp;diff=28191"/>
				<updated>2025-05-14T09:23:27Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: /* Default Tab Selection */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Attachable behaviors ==&lt;br /&gt;
It's quite often that you need to attach behaviors to certain XAML elements. For example, on a Grid, you want to attach a behavior which executes a command upon a Tapped event, or you want to execute a command when a certain property on a UBIK object changes.&lt;br /&gt;
&lt;br /&gt;
Notice that in the following examples, &amp;quot;Interactivity&amp;quot; and &amp;quot;Core&amp;quot; are both namespaces and you have to make sure that they are defined at the root of your XAMLs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;DataTemplate&lt;br /&gt;
    ...&lt;br /&gt;
    xmlns:Core=&amp;quot;using:Microsoft.Xaml.Interactions.Core&amp;quot;&lt;br /&gt;
    xmlns:Interactivity=&amp;quot;using:Microsoft.Xaml.Interactivity&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Event Triggered ===&lt;br /&gt;
With an EventTriggerBehavior, you can react on changes/events of UI Elements:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Grid&amp;gt;&lt;br /&gt;
    &amp;lt;Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
        &amp;lt;Core:EventTriggerBehavior EventName=&amp;quot;Tapped&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Core:InvokeCommandAction Command=&amp;quot;{Binding NavigateToChildrenCommand}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Core:EventTriggerBehavior&amp;gt;&lt;br /&gt;
    &amp;lt;/Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
&amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Data Triggered ===&lt;br /&gt;
If you want to react on changes of the underlying data (ViewModel), you can use DataTriggerBehavior instead. The following example, when used in the ''UBIKSplashArea'' template, automatically navigates to the root objects once the login process is finished and the user was successfully authenticated:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Grid&amp;gt;&lt;br /&gt;
   &amp;lt;Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
       &amp;lt;Core:DataTriggerBehavior Binding=&amp;quot;{Binding IsLoggedIn}&amp;quot; Value=&amp;quot;True&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;Core:InvokeCommandAction Command=&amp;quot;{Binding NavigateToRootPageCommand}&amp;quot; /&amp;gt;&lt;br /&gt;
       &amp;lt;/Core:DataTriggerBehavior&amp;gt;&lt;br /&gt;
    &amp;lt;/Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
&amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Content creation ==&lt;br /&gt;
=== Child item creation ===&lt;br /&gt;
{{Version/WinXSince|3.5.5}}&lt;br /&gt;
To directly create an object on a child of the current object, you can define a Button as follows. The method &amp;quot;Item.IsTypeCreationAllowed&amp;quot;  used in the expression gets the uid of the type that should be created below a child, if a child does not allow the creation of that type underneath it, the child will be hidden in the selection dialog. To actually create the object, the &amp;quot;CreateChildItemCommand&amp;quot; needs to be passed a KeyValueList with two parameters: The Parent-key is the UID or the ContentViewModel of the child underneath the object should be created, the Type-key is the type of object which should be created--this should match the uid passed to the &amp;quot;Item.IsTypeCreationAllowed&amp;quot; method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    xmlns:uc=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
    xmlns:cv=&amp;quot;using:UBIK.WinX.UI.CollectionView&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;x:String x:Key=&amp;quot;PlantMap&amp;quot;&amp;gt;Item.IsTypeCreationAllowed(&amp;amp;quot;21fc990a-d064-4bee-8d48-3293351f827a&amp;amp;quot;)&amp;lt;/x:String&amp;gt;&lt;br /&gt;
&amp;lt;cv:ListCollectionView x:Key=&amp;quot;PlantMapView&amp;quot; Expression=&amp;quot;{StaticResource PlantMap}&amp;quot; ItemsSource=&amp;quot;{Binding Children.Items}&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;AppBarButton&amp;gt;&lt;br /&gt;
&amp;lt;AppBarButton.Flyout&amp;gt;&lt;br /&gt;
  &amp;lt;Flyout Placement=&amp;quot;Full&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;ListView ItemsSource=&amp;quot;{Binding Source={StaticResource PlantMapView}}&amp;quot;&amp;gt;&lt;br /&gt;
	  &amp;lt;ListView.ItemTemplate&amp;gt;&lt;br /&gt;
		&amp;lt;DataTemplate&amp;gt;&lt;br /&gt;
		&amp;lt;Button Content=&amp;quot;{Binding Header}&amp;quot; Command=&amp;quot;{Binding CreateChildItemCommand}&amp;quot; x:Name=&amp;quot;CreateButton&amp;quot; Tag=&amp;quot;{Binding}&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
			  &amp;lt;uc:KeyValueList&amp;gt;&lt;br /&gt;
				&amp;lt;uc:KeyValueParameter Key=&amp;quot;Parent&amp;quot; Value=&amp;quot;6D733909-1742-4110-8619-237849BFE453&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;uc:KeyValueParameter Key=&amp;quot;Type&amp;quot; Value=&amp;quot;21fc990a-d064-4bee-8d48-3293351f827a&amp;quot;/&amp;gt;&lt;br /&gt;
			  &amp;lt;/uc:KeyValueList&amp;gt;&lt;br /&gt;
			&amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
		  &amp;lt;/Button&amp;gt;&lt;br /&gt;
		&amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;
	  &amp;lt;/ListView.ItemTemplate&amp;gt;&lt;br /&gt;
	&amp;lt;/ListView&amp;gt;&lt;br /&gt;
  &amp;lt;/Flyout&amp;gt;&lt;br /&gt;
&amp;lt;/AppBarButton.Flyout&amp;gt;&lt;br /&gt;
&amp;lt;/AppBarButton&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;x:String x:Key=&amp;quot;PlantMap&amp;quot;&amp;gt;Item.IsTypeCreationAllowed(&amp;amp;quot;21fc990a-d064-4bee-8d48-3293351f827a&amp;amp;quot;)&amp;lt;/x:String&amp;gt;&lt;br /&gt;
&amp;lt;cv:ListCollectionView x:Key=&amp;quot;PlantMapView&amp;quot; Expression=&amp;quot;{StaticResource PlantMap}&amp;quot; ItemsSource=&amp;quot;{Binding Children.Items}&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;AppBarButton&amp;gt;&lt;br /&gt;
&amp;lt;AppBarButton.Flyout&amp;gt;&lt;br /&gt;
  &amp;lt;Flyout Placement=&amp;quot;Full&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;ListView ItemsSource=&amp;quot;{Binding Source={StaticResource PlantMapView}}&amp;quot;&amp;gt;&lt;br /&gt;
	  &amp;lt;ListView.ItemTemplate&amp;gt;&lt;br /&gt;
		&amp;lt;DataTemplate&amp;gt;&lt;br /&gt;
		&amp;lt;Button Content=&amp;quot;{Binding Header}&amp;quot; Command=&amp;quot;{Binding CreateChildItemCommand}&amp;quot; x:Name=&amp;quot;CreateButton&amp;quot; Tag=&amp;quot;{Binding}&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
			  &amp;lt;uc:KeyValueList&amp;gt;&lt;br /&gt;
				&amp;lt;uc:KeyValueParameter Key=&amp;quot;Parent&amp;quot; Value=&amp;quot;{Binding Tag, ElementName=CreateButton}&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;uc:KeyValueParameter Key=&amp;quot;Type&amp;quot; Value=&amp;quot;21fc990a-d064-4bee-8d48-3293351f827a&amp;quot;/&amp;gt;&lt;br /&gt;
			  &amp;lt;/uc:KeyValueList&amp;gt;&lt;br /&gt;
			&amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
		  &amp;lt;/Button&amp;gt;&lt;br /&gt;
		&amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;
	  &amp;lt;/ListView.ItemTemplate&amp;gt;&lt;br /&gt;
	&amp;lt;/ListView&amp;gt;&lt;br /&gt;
  &amp;lt;/Flyout&amp;gt;&lt;br /&gt;
&amp;lt;/AppBarButton.Flyout&amp;gt;&lt;br /&gt;
&amp;lt;/AppBarButton&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Additionally, the following optional parameters can be added as well.&lt;br /&gt;
* CreateOnly (optional, defaults to false): When set to true, the client will not automatically navigate to the created content, rather automatically save and commit it. If set to true, this overrides the following parameters;&lt;br /&gt;
* AutoNavigate (optional, defaults to true): When set to false, the client will not automatically navigate to the created content;&lt;br /&gt;
* AutoCommit (optional, defaults to false): When set to true, the change(s) will be saved to the local cache and the database, and then committed to the server.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Creating multiple documents ===&lt;br /&gt;
To upload multiple documents at once, the CreateChildItemsCommand can be used. The list of supported command parameters are similar to those of the CreateChildItemCommand (single item). Except that anything other than AutoNavigate=false and AutoCommit=true do not make sense in multi-creation scenario. Therefore, those parameters are fixed and any received from XAML will be ignored.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- &amp;lt;tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;--&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Button ...&lt;br /&gt;
    xmlns:uc=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding CreateChildItemsCommand}&amp;quot;&lt;br /&gt;
    Content=&amp;quot;Create multiple documents&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
        &amp;lt;uc:KeyValueList&amp;gt;&lt;br /&gt;
            &amp;lt;uc:KeyValueParameter Key=&amp;quot;Type&amp;quot; Value=&amp;quot;6170a068-2314-4444-ad62-0da99769a048&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/uc:KeyValueList&amp;gt;&lt;br /&gt;
    &amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;!--&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Xamarin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Button ...&lt;br /&gt;
    xmlns:classes=&amp;quot;clr-namespace:UBIK.CPL.Classes;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding CreateChildItemsCommand}&amp;quot;&lt;br /&gt;
    Content=&amp;quot;Create multiple documents&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
        &amp;lt;classes:KeyValueList&amp;gt;&lt;br /&gt;
            &amp;lt;classes:KeyValueParameter Key=&amp;quot;Type&amp;quot; Value=&amp;quot;6170a068-2314-4444-ad62-0da99769a048&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/classes:KeyValueList&amp;gt;&lt;br /&gt;
    &amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tabs&amp;gt;--&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Disable FilloutCriteria  ===&lt;br /&gt;
{{Version/WinXSince|3.5}}&lt;br /&gt;
To enable/disable the automatic filtering of a query based on the ParentObject, there is the possibility to specify EnableFillOutCriteria--if it is not set, it defaults to false. Additionaly &amp;quot;SkipDialog&amp;quot; can be set to true, to not display a dialog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Grid x:Name=&amp;quot;selectionGrid&amp;quot; Tag=&amp;quot;{Binding MetaUID}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
         &amp;lt;Core:EventTriggerBehavior EventName=&amp;quot;Tapped&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Core:InvokeCommandAction Command=&amp;quot;{Binding ElementName=ChildAreaGrid, Path=DataContext.AddTemplatableDataCommand}&amp;quot; &amp;gt;&lt;br /&gt;
                    &amp;lt;Core:InvokeCommandAction.CommandParameter&amp;gt;&lt;br /&gt;
                        &amp;lt;uc:KeyValueList&amp;gt;&lt;br /&gt;
                            &amp;lt;uc:KeyValueParameter Key=&amp;quot;Uid&amp;quot; Value=&amp;quot;{Binding Tag,ElementName=selectionGrid}&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;uc:KeyValueParameter Key=&amp;quot;EnableFillOutCriteria&amp;quot; Value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;uc:KeyValueParameter Key=&amp;quot;SkipDialog&amp;quot; Value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/uc:KeyValueList&amp;gt;&lt;br /&gt;
                    &amp;lt;/Core:InvokeCommandAction.CommandParameter&amp;gt;&lt;br /&gt;
               &amp;lt;/Core:InvokeCommandAction&amp;gt;&lt;br /&gt;
         &amp;lt;/Core:EventTriggerBehavior&amp;gt;&lt;br /&gt;
  &amp;lt;/Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
&amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hotspotting ==&lt;br /&gt;
{{Attention|To use a binding in the KeyValueParameter, it has to be applied like in the example provided here: [[KeyValueList]]}}&lt;br /&gt;
The hotspotting command is used for hotspotting as well as for annotating, to configure the button for hotspotting, the commandparameter &amp;quot;Mode&amp;quot; should be set to &amp;quot;HotSpotting&amp;quot;, for annotating the &amp;quot;Mode&amp;quot; should be &amp;quot;Annotate&amp;quot;. The parameter commit is optional, if set to true, the changes get automatically persisted when leaving the editing mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;AppBarToggleButton&lt;br /&gt;
		IsChecked=&amp;quot;{Binding EditingAnnotation, Mode=TwoWay}&amp;quot;&lt;br /&gt;
		IsEnabled=&amp;quot;{Binding IsAnnotatable}&amp;quot;&lt;br /&gt;
		Command=&amp;quot;{Binding HotSpottingCommand}&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;AppBarToggleButton.CommandParameter&amp;gt;&lt;br /&gt;
			&amp;lt;uc:KeyValueList&amp;gt;&lt;br /&gt;
				&amp;lt;uc:KeyValueParameter Key=&amp;quot;Mode&amp;quot; Value=&amp;quot;Annotate&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;uc:KeyValueParameter Key=&amp;quot;Commit&amp;quot; Value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/uc:KeyValueList&amp;gt;&lt;br /&gt;
		&amp;lt;/AppBarToggleButton.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/AppBarToggleButton&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Remember scroll positions of list views ==&lt;br /&gt;
&lt;br /&gt;
=== Version 3.7 &amp;amp; later {{Version/WinXSince|3.7}} ===&lt;br /&gt;
Starting from this version,&lt;br /&gt;
* The precision of scroll position remembering is improved(by pixel offsets instead of by items);&lt;br /&gt;
* It also works for other scrollable lists (instead of just for content object lists).&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
To enable this feature, you should make sure the following.&lt;br /&gt;
* The SelectionBoundListView is used instead of the standard ListView. Its {{UBIK}} namespace is &amp;lt;code&amp;gt;UBIK.WinX.Controls&amp;lt;/code&amp;gt;;&lt;br /&gt;
* The SelectionBoundListView's &amp;lt;code&amp;gt;RememberScrollPosition&amp;lt;/code&amp;gt; property is not set to &amp;quot;false&amp;quot;; (It's &amp;quot;true&amp;quot; by default.)&lt;br /&gt;
* The SelectionBoundListView's &amp;lt;code&amp;gt;x:Name&amp;lt;/code&amp;gt; property value is unique.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Version 3.6  {{Version/WinXSince|3.6}} ===&lt;br /&gt;
The UBIK-Client does include a function to remember the position in a list (ListView) when navigating away from it. This function is only available when the list (ListView) has a unique name as a property (x:Name). When browsing back to the previously visited list UBIK scrolls back to the last position. The function does not save scroll positions over different sessions.&lt;br /&gt;
Implementing the function to remember the scroll position in a ListView one has to consider that the list elements (Children) could depend on a other UI-element. If the list elements do depend on a other UI-elemente, this element has to be created above the ListView in the XAML.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;DataTemplate xmlns:behaviors=&amp;quot;using:UBIK.WinX.Behaviors&amp;quot; xmlns:uc=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
     &amp;lt;uc:SelectionBoundListView x:Name=&amp;quot;ChildListView&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
           &amp;lt;behaviors:FirstVisibleItemPersistenceBehavior FirstVisibleItems=&amp;quot;{Binding ScrollItems}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
     &amp;lt;/uc:SelectionBoundListView&amp;gt;&lt;br /&gt;
&amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MultiBinding {{Version/WinXSince|3.6}} ==&lt;br /&gt;
Very often we want to display some UI elements (e.g. a Grid) depending on whether multiple criteria are met. It's much easier to achieve this by using a MultiBindingBehavior like the following.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;DataTemplate&lt;br /&gt;
    xmlns:Interactivity=&amp;quot;using:Microsoft.Xaml.Interactivity&amp;quot;&lt;br /&gt;
    xmlns:behaviors=&amp;quot;using:UBIK.WinX.Behaviors&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;Grid&amp;gt;&lt;br /&gt;
        &amp;lt;Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
            &amp;lt;behaviors:MultiBindingBehavior Converter=&amp;quot;{StaticResource VisLogicAndConverter}&amp;quot; PropertyName=&amp;quot;Visibility&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;behaviors:MultiBindingItem Value=&amp;quot;{Binding MassEditViewModel, Converter={StaticResource NullToVisConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;behaviors:MultiBindingItem Value=&amp;quot;{Binding Documents.Items.Count, Converter={StaticResource ItemCountToVisConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/behaviors:MultiBindingBehavior&amp;gt;&lt;br /&gt;
        &amp;lt;/Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
    &amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
The behavior makes sure the container Grid is set to Visibile only if the mass editing mode is not turned on (MassEditViewModel is null) and the context object has child document(s) (Documents.Items.Count is greater than 0. You can combine any number of binding results (MultiBindingItem) using the VisLogicAndConverter (the name should be self explanatory).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Other Commands ==&lt;br /&gt;
=== InvokeOnItemsCommand {{Version/WinXSince|3.6}} ===&lt;br /&gt;
Available on all ListViewModels, this command allows executing a specified command on a collection of list items. It can be used in combination with features such as [[Mass_Edit_(UBIK_WinX)|mass editing]] and [[XAML_Changes_in_UBIK_WinX_3.5#After_3.5|expression based collection filtering]]. Examples for both combinations are provided below.&lt;br /&gt;
&lt;br /&gt;
{{Attention|The command specified through the &amp;quot;Command&amp;quot; parameter is executed on list items and, therefore, must be available in the list item contexts (view models). If in doubt, the [[Developer_Mode|developer mode]] can be used to inspect if a command is available in a certain context.}}&lt;br /&gt;
&lt;br /&gt;
{{Hint|Parameter &amp;quot;Command&amp;quot; and &amp;quot;SelectedItemsOnly&amp;quot; are specific to the InvokeOnItemsCommand. What other parameters to define or whether to define them at all depends on the type of command to be executed on the items.}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Invoke on selected items ====&lt;br /&gt;
{{Attention|To use a binding in the KeyValueParameter, it has to be applied like in the example provided here: [[KeyValueList]]}}&lt;br /&gt;
This example demonstrates how you can use the mass editing feature to select certain objects from the child list and then execute the SetPropertyValueCommand for those selected.&lt;br /&gt;
* The example code assumes that the child objects have an editable property called &amp;quot;VALUE&amp;quot; and tries to set 50 as their value;&lt;br /&gt;
* You should insert the following code snippet into the default UBIKChildArea template;&lt;br /&gt;
* If the parameter &amp;quot;SelectedItemsOnly&amp;quot; is missed or set to &amp;quot;False&amp;quot;, the command will be executed on all child items;&lt;br /&gt;
* To enable selection, click on the &amp;quot;Mass Edit&amp;quot; button below the property list.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
    xmlns:example=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding Children.InvokeOnItemsCommand}&amp;quot;&lt;br /&gt;
    Content=&amp;quot;Set to 50%&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
        &amp;lt;example:KeyValueList&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;Command&amp;quot; Value=&amp;quot;SetPropertyValueCommand&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;SelectedItemsOnly&amp;quot; Value=&amp;quot;False&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyName&amp;quot; Value=&amp;quot;VALUE&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyValue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;example:KeyValueParameter.Value&amp;gt;&lt;br /&gt;
                    &amp;lt;x:Double&amp;gt;50&amp;lt;/x:Double&amp;gt;&lt;br /&gt;
                &amp;lt;/example:KeyValueParameter.Value&amp;gt;&lt;br /&gt;
            &amp;lt;/example:KeyValueParameter&amp;gt;&lt;br /&gt;
        &amp;lt;/example:KeyValueList&amp;gt;&lt;br /&gt;
    &amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Xamarin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
    xmlns:example=&amp;quot;clr-namespace:UBIK.CPL.Classes;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding Children.InvokeOnItemsCommand}&amp;quot;&lt;br /&gt;
    Text=&amp;quot;Set to 50%&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
        &amp;lt;example:KeyValueList&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;Command&amp;quot; Value=&amp;quot;SetPropertyValueCommand&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;SelectedItemsOnly&amp;quot; Value=&amp;quot;False&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyName&amp;quot; Value=&amp;quot;VALUE&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyValue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;example:KeyValueParameter.Value&amp;gt;&lt;br /&gt;
                    &amp;lt;x:Double&amp;gt;50&amp;lt;/x:Double&amp;gt;&lt;br /&gt;
                &amp;lt;/example:KeyValueParameter.Value&amp;gt;&lt;br /&gt;
            &amp;lt;/example:KeyValueParameter&amp;gt;&lt;br /&gt;
        &amp;lt;/example:KeyValueList&amp;gt;&lt;br /&gt;
    &amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Invoke on filtered results ====&lt;br /&gt;
{{Attention|To use a binding in the KeyValueParameter, it has to be applied like in the example provided here: [[KeyValueList]]}}&lt;br /&gt;
&lt;br /&gt;
* First, you need to setup a filtered list&lt;br /&gt;
**UWP: Setup a ListCollectionView in the Resources section of a UI element (e.g. Grid). This list is only available/visible within that UI element (the Grid in this case).&lt;br /&gt;
**Xamarin: Setup a String with a filtering expression &amp;amp; a SfDataSourceExt in the ResourceDictionary of the ContentView. For the Expression property of the SfDataSourceExt refer to the created expression String.&lt;br /&gt;
&lt;br /&gt;
* The ItemsSource uses Children.Items. Use the [[Developer_Mode|developer mode]] if necessary to find out if this is available where you intend to define the list;&lt;br /&gt;
* The example expression filters for any items that don't contain the text &amp;quot;EXAMPLE&amp;quot; in their Title texts. You can filter differently by altering the expression.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Grid xmlns:CV=&amp;quot;using:UBIK.WinX.UI.CollectionView&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Grid.Resources&amp;gt;&lt;br /&gt;
            &amp;lt;CV:ListCollectionView&lt;br /&gt;
                x:Key=&amp;quot;Filtered&amp;quot;&lt;br /&gt;
                Expression=&amp;quot;!Item.Title.Contains(&amp;amp;quot;EXAMPLE&amp;amp;quot;)&amp;quot;&lt;br /&gt;
                ItemsSource=&amp;quot;{Binding Children.Items}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Grid.Resources&amp;gt;&lt;br /&gt;
       ...&lt;br /&gt;
    &amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Xamarin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ContentView&lt;br /&gt;
    xmlns:controls=&amp;quot;clr-namespace:UBIK.CPL.Controls;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
    ...&amp;gt;&lt;br /&gt;
    &amp;lt;ContentView.Resources&amp;gt;&lt;br /&gt;
        &amp;lt;ResourceDictionary&amp;gt;&lt;br /&gt;
            &amp;lt;x:String x:Key=&amp;quot;Expresssion&amp;quot;&amp;gt;!Item.Title.Contains(&amp;amp;quot;EXAMLPLE&amp;amp;quot;)&amp;lt;/x:String&amp;gt;&lt;br /&gt;
            &amp;lt;controls:SfDataSourceExt x:Key=&amp;quot;Filtered&amp;quot; Expression=&amp;quot;{StaticResource Expresssion}&amp;quot; ItemsSource=&amp;quot;{Binding Children.Items}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/ResourceDictionary&amp;gt;&lt;br /&gt;
    &amp;lt;/ContentView.Resources&amp;gt;&lt;br /&gt;
&amp;lt;/ContentView&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
With the filtered list configured, you can then insert the following code snippet to execute the SetPropertyValueCommand for the filtered result items.&lt;br /&gt;
* The example code assumes that the child objects have an editable property called &amp;quot;VALUE&amp;quot; and tries to set 50 as their value;&lt;br /&gt;
* The &amp;quot;Filtered&amp;quot; refers to the ListCollectionView (UWP) or SfDataSourceExt  (Xamarin) configured above.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;AppBarButton&lt;br /&gt;
      xmlns:example=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
      Command=&amp;quot;{Binding Source={StaticResource Filtered}, Path=ListViewModel.InvokeOnItemsCommand}&amp;quot;&lt;br /&gt;
      Icon=&amp;quot;AllApps&amp;quot;&lt;br /&gt;
      Label=&amp;quot;Set to 50&amp;quot;&lt;br /&gt;
      Style=&amp;quot;{ThemeResource UBIKActionAppBarButton}&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;AppBarButton.CommandParameter&amp;gt;&lt;br /&gt;
          &amp;lt;example:KeyValueList&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;Command&amp;quot; Value=&amp;quot;SetPropertyValueCommand&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyName&amp;quot; Value=&amp;quot;VALUE&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyValue&amp;quot; Value=&amp;quot;50&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/example:KeyValueList&amp;gt;&lt;br /&gt;
      &amp;lt;/AppBarButton.CommandParameter&amp;gt;&lt;br /&gt;
  &amp;lt;/AppBarButton&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Xamarin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
    xmlns:example=&amp;quot;clr-namespace:UBIK.CPL.Classes;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding Source={StaticResource Filtered}, Path=ListViewModel.InvokeOnItemsCommand}&amp;quot;&lt;br /&gt;
    Text=&amp;quot;Set to 50&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
        &amp;lt;example:KeyValueList&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;Command&amp;quot; Value=&amp;quot;SetPropertyValueCommand&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyName&amp;quot; Value=&amp;quot;VALUE&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyValue&amp;quot; Value=&amp;quot;50&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/example:KeyValueList&amp;gt;&lt;br /&gt;
    &amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Attention|The binding &amp;lt;code&amp;gt;ListViewModel.InvokeOnItemsCommand&amp;lt;/code&amp;gt; should be updated to &amp;lt;code&amp;gt;BulkOperation.InvokeOnItemsCommand&amp;lt;/code&amp;gt; starting from version 4.3.}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Support for old styled commands ====&lt;br /&gt;
Some old commands might not support KeyValueLists as parameters. In that case, just define the parameter value under the &amp;quot;CommandParameter&amp;quot; key, e.g.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&amp;lt;example:KeyValueParameter Key=&amp;quot;CommandParameter&amp;quot; Value=&amp;quot;some string value for example&amp;quot; /&amp;gt;&amp;lt;/source&amp;gt;.&lt;br /&gt;
This single value is then passed as the command parameter instead of the entire KeyValueList.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SetPropertyValueCommand {{Version/WinXSince|3.6}} ===&lt;br /&gt;
{{Attention|To use a binding in the KeyValueParameter, it has to be applied like in the example provided here: [[KeyValueList]]}}&lt;br /&gt;
&lt;br /&gt;
This command existed before but was implemented differently. In the newer version(s), it is improved to provide customizers more control over the things that happen during/after the property value changes.&lt;br /&gt;
The available command parameters are:&lt;br /&gt;
* PropertyName: the name of the property to set a new value to;&lt;br /&gt;
* PropertyValue: the value to be set to the above mentioned property;&lt;br /&gt;
* OnlyForUnvalidated (optional, defaults to false): When set to true, the value will only be set if the property is not yet validated;&lt;br /&gt;
* AutoSave (optional, defaults to false): When set to true, the change(s) will be saved to the local cache and database;&lt;br /&gt;
* AutoCommit (optional, defaults to false): When set to true, the change(s) will be committed to the server.&lt;br /&gt;
&lt;br /&gt;
{{Hint|There's no way to commit changes without saving them locally first. Therefore, the &amp;quot;AutoSave&amp;quot; parameter will be ignored when &amp;quot;AutoCommit&amp;quot; is set to true.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here's an example of the command usage. It tries to set the property called &amp;quot;VALUE&amp;quot; to a double value 50 regardless of its current state and then automatically save and commit the change.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:example=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
    Command=&amp;quot;{Binding SetPropertyValueCommand}&amp;quot;&lt;br /&gt;
    Style=&amp;quot;{StaticResource UBIKButtonStyle}&amp;quot;&lt;br /&gt;
    Content=&amp;quot;Set Property&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
        &amp;lt;controls:KeyValueList&amp;gt;&lt;br /&gt;
            &amp;lt;controls:KeyValueParameter Key=&amp;quot;PropertyName&amp;quot; Value=&amp;quot;MP_PROPERTY&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;controls:KeyValueParameter Key=&amp;quot;PropertyValue&amp;quot; Value=&amp;quot;My Value&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;controls:KeyValueParameter Key=&amp;quot;OnlyForUnvalidated&amp;quot; Value=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;controls:KeyValueParameter Key=&amp;quot;AutoSave&amp;quot; Value=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;controls:KeyValueParameter Key=&amp;quot;AutoCommit&amp;quot; Value=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/controls:KeyValueList&amp;gt;&lt;br /&gt;
    &amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Hint|For simple types, you can try writing them in the text format like &amp;lt;nowiki&amp;gt;&amp;lt;controls:KeyValueParameter Key=&amp;quot;PropertyValue&amp;quot; Value=&amp;quot;50&amp;quot;/&amp;gt;&amp;lt;/nowiki&amp;gt; and {{UBIK}} will try to find the right type. For advanced property types, it is advised to provide typed values like &amp;lt;nowiki&amp;gt;&amp;lt;x:Boolean&amp;gt;true&amp;lt;/x:Boolean&amp;gt;&amp;lt;/nowiki&amp;gt;.}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Set a Binding as PropertyValue ====&lt;br /&gt;
There is a known issue in XAML where Behaviors and KeyValueLists do not inherit the binding context of the control they are attached to. Simply put, trying to use a binding directly in the PropertyValue part of the command; '''&amp;lt;nowiki&amp;gt;&amp;lt;controls:KeyValueParameter Key=&amp;quot;PropertyValue&amp;quot; Value=&amp;quot;{Binding BindingPath}&amp;quot; /&amp;gt;&amp;lt;/nowiki&amp;gt;''', would lead to the client setting the value of MP_PROPERTY to null.&lt;br /&gt;
&lt;br /&gt;
Luckily, there is a simple way to link this Binding to a context. Using the above example as a foundation, adapt the button as shown below:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
    x:Name=&amp;quot;SetDynamicPropertyButton&amp;quot;&lt;br /&gt;
    Tag=&amp;quot;{Binding}&amp;quot;&lt;br /&gt;
    ... &amp;gt;&lt;br /&gt;
    &amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
        &amp;lt;controls:KeyValueList&amp;gt;&lt;br /&gt;
           ...&lt;br /&gt;
            &amp;lt;controls:KeyValueParameter Key=&amp;quot;PropertyValue&amp;quot; Value=&amp;quot;{Binding Tag.BindingPath, ElementName=SetDynamicPropertyButton}&amp;quot; /&amp;gt;&lt;br /&gt;
            ...&lt;br /&gt;
        &amp;lt;/controls:KeyValueList&amp;gt;&lt;br /&gt;
    &amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above code uses the x:Name of the button to specify the viewmodel from which we wish to begin our binding path.&amp;lt;br&amp;gt;&lt;br /&gt;
You do not need to follow this exact syntax, all that is necessary is to provide a connection to the BindingContext of an observable control.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Set Current DateTime ====&lt;br /&gt;
The current DateTime stamp can be retrieved from '''AppStatus.LiveDateTime'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Since the known issue described in the section above prevents direct binding to this, below are examples for how to implement it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:example=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
    x:Name=&amp;quot;SetCurrentDateTimeButton&amp;quot;&lt;br /&gt;
    Tag=&amp;quot;{Binding}&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding SetPropertyValueCommand}&amp;quot;&lt;br /&gt;
    Style=&amp;quot;{StaticResource UBIKButtonStyle}&amp;quot;&lt;br /&gt;
    Content=&amp;quot;Set Property&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
        &amp;lt;controls:KeyValueList&amp;gt;&lt;br /&gt;
            &amp;lt;controls:KeyValueParameter Key=&amp;quot;PropertyName&amp;quot; Value=&amp;quot;MP_PROPERTY&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;controls:KeyValueParameter Key=&amp;quot;PropertyValue&amp;quot; Value=&amp;quot;{Binding Tag.AppStatus.LiveDateTime, ElementName=SetCurrentDateTimeButton}&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;controls:KeyValueParameter Key=&amp;quot;OnlyForUnvalidated&amp;quot; Value=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;controls:KeyValueParameter Key=&amp;quot;AutoSave&amp;quot; Value=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;controls:KeyValueParameter Key=&amp;quot;AutoCommit&amp;quot; Value=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/controls:KeyValueList&amp;gt;&lt;br /&gt;
    &amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
{{Hint|The DateTime can be set to the desired format by adding a StringFormatConverter to the LiveDateTime binding:&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;{Binding Tag.AppStatus.LiveDateTime, ElementName=SetCurrentDateTimeButton, &amp;lt;/nowiki&amp;gt;'''&amp;lt;nowiki&amp;gt;Converter={StaticResource StringFormatConverter}, ConverterParameter={0:yyyy-MM-dd HH:mm}&amp;lt;/nowiki&amp;gt;'''&amp;lt;nowiki&amp;gt;}&amp;quot; &amp;lt;/nowiki&amp;gt;.}}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Xamarin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
    x:Name=&amp;quot;SetCurrentDateTimeButton&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding SetPropertyValueCommand}&amp;quot;&lt;br /&gt;
    Text=&amp;quot;Set Property&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
        &amp;lt;classes:KeyValueList&amp;gt;&lt;br /&gt;
            &amp;lt;classes:KeyValueParameter Key=&amp;quot;PropertyName&amp;quot; Value=&amp;quot;MP_PROPERTY&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;classes:KeyValueParameter Key=&amp;quot;PropertyValue&amp;quot; Value=&amp;quot;{Binding BindingContext.AppStatus.LiveDateTime, Source={x:Reference SetCurrentDateTimeButton}}&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;classes:KeyValueParameter Key=&amp;quot;OnlyForUnvalidated&amp;quot; Value=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;classes:KeyValueParameter Key=&amp;quot;AutoSave&amp;quot; Value=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;classes:KeyValueParameter Key=&amp;quot;AutoCommit&amp;quot; Value=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/classes:KeyValueList&amp;gt;&lt;br /&gt;
    &amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SaveAndCommitCommand ===&lt;br /&gt;
With the ''SaveAndCommitCommand'' it is possible to save and commit unsaved changes on a ContentViewModel.&lt;br /&gt;
&lt;br /&gt;
* ForceCommit CommandParameter (optional, defaults to false): Normally when the App is in Online mode, changes are automatically committed when saved. This is not the case when the App is in Manual mode. Setting the ''ForceCommit'' parameter to true makes it possible to commit the changes when saved in Manual mode.&lt;br /&gt;
* {{Version/WinXSince|4.7}} {{Version/XamarinSince|4.7}} PropertyNameToSave CommandParameter (optional, defaults to null): Delivers the Property Name as String of a specific Property that should be saved. E.g. when called via PropertyViewModel.ResetCommand or PropertyViewModel.DeleteCommand, the ''PropertyNameToSave'' parameter is used to only apply the SaveAndCommitCommand on the related PropertyViewModel called from, and not on other unsaved changes on this ContentViewModel.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Button&lt;br /&gt;
      xmlns:example=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
      Command=&amp;quot;{Binding SaveAndCommitCommand}&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
          &amp;lt;example:KeyValueList&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;ForceCommit&amp;quot; Value=&amp;quot;True&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/example:KeyValueList&amp;gt;&lt;br /&gt;
      &amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
  &amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Xamarin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Button&lt;br /&gt;
      xmlns:example=&amp;quot;using:clr-namespace:UBIK.CPL.Classes;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
      Command=&amp;quot;{Binding SaveAndCommitCommand}&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
          &amp;lt;example:KeyValueList&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;ForceCommit&amp;quot; Value=&amp;quot;True&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/example:KeyValueList&amp;gt;&lt;br /&gt;
      &amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
  &amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DisplayViewCommand ===&lt;br /&gt;
This command can be used to [[Custom_View_(Client)|display cutom views]].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TeachInCommand ===&lt;br /&gt;
With the '''TeachInCommand''' you're allowed to set your device's current location (&amp;quot;teach-in&amp;quot;, &amp;quot;TeachIn&amp;quot;) as the value of the context object's [[SYSCLS_GEO|geo property]].&lt;br /&gt;
This command is available in both '''ContentViewModel''' and '''PropertyViewModel'''.&lt;br /&gt;
* ContentViewModel.TeachInCommand: If possible, sets the current location of the device as the value of the context object's [[SYSCLS_GEO|geo property]]. Saves and commits the change;&lt;br /&gt;
* PropertyViewModel.TeachInCommand: If possible, sets the current location of the device as the value of the current property if it's a geo property (not necessarily the [[SYSCLS_GEO|geo property]]). Addtionally supports a boolean command parameter:&lt;br /&gt;
** False (default): The change is not automatically saved. &lt;br /&gt;
** True: The change is saved.&lt;br /&gt;
&amp;lt;br/&amp;gt; {{hint| Make sure you use the correct binding path for your command depending on your current context view model. E.g., if the context view model is already the ContentViewModel then your binding path should simply be TeachInCommand. You can use the [[Developer_Mode|developer mode]] to find out the current view model in a view.}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===UpdateArbitraryObjectCommand {{Version/WinXSince|4.7}}===&lt;br /&gt;
The &amp;quot;UpdateArbitraryObjectCommand&amp;quot; is responsible for updating an arbitrary object based on a set of provided parameters. The command is accessible in the AppStatusViewModel (as '''ViewModel.AppStatus'''). &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The available command parameters are:&lt;br /&gt;
* Uid (Mandatory): UID of the object to be updated;&lt;br /&gt;
* UpdateChildDepth (Optional): Child depth/level to update (defaults to 1);&lt;br /&gt;
* UpdateParentDepth (Optional): Parent depth/level to update (defaults to 0);&lt;br /&gt;
* UpdateIgnoreExpiry (Optional): Ignore update expiry (defaults to false); &lt;br /&gt;
&lt;br /&gt;
{{Hint|Note that if you set the UpdateChildDepth property to &amp;quot;-1&amp;quot; you are also able to update a whole branch with this command.}}&lt;br /&gt;
&lt;br /&gt;
Here is an example of the command usage: &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Button ...&lt;br /&gt;
    xmlns:uc=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding UpdateArbitraryObjectCommand}&amp;quot;&lt;br /&gt;
    Content=&amp;quot;Update Arbitrary Object&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
        &amp;lt;uc:KeyValueList&amp;gt;&lt;br /&gt;
            &amp;lt;uc:KeyValueParameter Key=&amp;quot;Uid&amp;quot; Value=&amp;quot;...valid UID...&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;uc:KeyValueParameter Key=&amp;quot;UpdateChildDepth&amp;quot; Value=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;uc:KeyValueParameter Key=&amp;quot;UpdateParentDepth&amp;quot; Value=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;uc:KeyValueParameter Key=&amp;quot;UpdateIgnoreExpiry&amp;quot; Value=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/uc:KeyValueList&amp;gt;&lt;br /&gt;
    &amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Xamarin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Button ...&lt;br /&gt;
    xmlns:uc=&amp;quot;using:clr-namespace:UBIK.CPL.Classes;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding UpdateArbitraryObjectCommand}&amp;quot;&lt;br /&gt;
    Content=&amp;quot;Update Arbitrary Object&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
        &amp;lt;uc:KeyValueList&amp;gt;&lt;br /&gt;
            &amp;lt;uc:KeyValueParameter Key=&amp;quot;Uid&amp;quot; Value=&amp;quot;...valid UID...&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;uc:KeyValueParameter Key=&amp;quot;UpdateChildDepth&amp;quot; Value=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;uc:KeyValueParameter Key=&amp;quot;UpdateParentDepth&amp;quot; Value=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;uc:KeyValueParameter Key=&amp;quot;UpdateIgnoreExpiry&amp;quot; Value=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/uc:KeyValueList&amp;gt;&lt;br /&gt;
    &amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Access to an arbitrary object {{Version/WinXSince|4.6}} {{Version/XamarinSince|4.6}} ===&lt;br /&gt;
With the ObjectByUID feature it is possible to access any local arbitrary object by its UID and, for example, display a value of it.&lt;br /&gt;
It can be accessed from ContentViewModel, AuthenticationViewModel, and RootPageViewModel levels.&lt;br /&gt;
&lt;br /&gt;
To display a string of e.g. a property of an arbitrary object from ContentViewModel, AuthenticationViewModel &amp;amp; RootPageViewModel, the following syntax can be used in related XAMLs:&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;TextBlock Text=&amp;quot;{Binding ObjectByUID[paste-your-uid].Properties.VisibleItems[add-your-property-name].DisplayValue}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Xamarin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Label Text=&amp;quot;{Binding ObjectByUID[paste-your-uid].Properties.VisibleItems[add-your-property-name].DisplayValue}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For Property Dialogs the CallingViewModel prefix is needed to access an arbitrary object:&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;TextBlock Text=&amp;quot;{Binding CallingViewModel.ObjectByUID[paste-your-uid].Properties.VisibleItems[add-your-property-name].DisplayValue}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Xamarin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Label Text=&amp;quot;{Binding CallingViewModel.ObjectByUID[paste-your-uid].Properties.VisibleItems[add-your-property-name].DisplayValue}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Localizing UI Texts ====&lt;br /&gt;
The most efficient practice is to use pre-localized texts from the standard client, however, this is not always possible, especially in custom UIs. The ObjectByUID indexer was therefore initially developed as a technique to allow localization of custom UI label texts. &lt;br /&gt;
&lt;br /&gt;
The concept is to create an infrastructure object that carries metaproperties for localized texts, then bind to this infrastructure object using ObjectByUID, and bind to a specific metaproperty to receive it's localized Description text as follows:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;{Binding ObjectByUID[paste-your-uid].Properties.VisibleItems[add-your-property-name].Description}&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From here there are two approaches; the database-leaning one is to add one metaproperty per UI label, and simply bind to the Description of it. However, this shifts maintenance effort to the UBIK Studio after the initial adding of the label in XAML. Another approach would be to use the metaproperty to provide a &amp;quot;tag&amp;quot; that the xaml customizer can then use to differentiate between hardcoded labels.&lt;br /&gt;
&lt;br /&gt;
A third approach would be to create one infrastructure object per label, however, this can lead to many objects being loaded upon startup.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Approach !! Implementation  !! Maintenance Effort !! Recommendation&lt;br /&gt;
|-&lt;br /&gt;
| One metaproperty per UI Label || Bind the label text to the metaproperty Description || Database / UBIK Studio || Recommended for UWP, customizings with fewer UI texts, finalized customizings.&lt;br /&gt;
|-&lt;br /&gt;
| One metaproperty delivering a  localization &amp;quot;tag&amp;quot; (such as: &amp;quot;EN&amp;quot; / &amp;quot;DE&amp;quot;) || Use something like DataTrigger (Xamarin) to hardcode a different localized text per tag (such as: &amp;quot;eg.&amp;quot; / &amp;quot;zb.&amp;quot;) || XAML || Recommended for Xamarin, highly customized UIs with many texts, customizings that tend to change often.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Showing Images and Icons ==&lt;br /&gt;
In UBIK, there are two types of image;&lt;br /&gt;
* The thumbnail image assigned to a UBIK object, delivered using the &amp;lt;nowiki&amp;gt;{Binding Icon...}&amp;lt;/nowiki&amp;gt; binding, in combination with a ByteToImageConverter. Examples can commonly be found on UBIKChildItem templates.&lt;br /&gt;
* Custom image shown with a specific purpose, such as a company logo or icon on a button/UI element.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Paths as string resources ====&lt;br /&gt;
When using custom images in your UI, it is a good idea not to hardcode path data into your Image control but instead to create a string resource in UBIKThemes that holds the image path, and use this string resource in your Image control. The benefit of the indirect connection between image file and usage is that the &amp;quot;file is in use&amp;quot; issue (sometimes experienced when either manual, or auto-deployment of xamls, tries to change image files when UBIK is running) is avoided this way.&lt;br /&gt;
&lt;br /&gt;
Sample:&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
'''UBIKThemes:'''&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&amp;lt;x:String x:Key=&amp;quot;MainLogo&amp;quot;&amp;gt;ms-appdata:///local/xaml/Images/MainLogo.png&amp;lt;/x:String&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Usage:'''&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Image&lt;br /&gt;
    x:Name=&amp;quot;LogoImage&amp;quot;&lt;br /&gt;
    Height=&amp;quot;32&amp;quot;&lt;br /&gt;
    Stretch=&amp;quot;Uniform&amp;quot;&lt;br /&gt;
    Source=&amp;quot;{Binding Source={StaticResource MainLogo}, Converter={StaticResource PathToImageConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Xamarin&amp;quot;&amp;gt;	&lt;br /&gt;
'''UBIKThemes:'''&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;x:String x:Key=&amp;quot;Logo_Image&amp;quot;&amp;gt;IMG_Logo.png&amp;lt;/x:String&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Usage:'''&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:customimage=&amp;quot;clr-namespace:UBIK.CPL.Controls;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;customimage:FileImage&lt;br /&gt;
    HeightRequest=&amp;quot;140&amp;quot;&lt;br /&gt;
    Aspect=&amp;quot;AspectFit&amp;quot;&lt;br /&gt;
    FileName=&amp;quot;{StaticResource BorealisLogo_Image}&amp;quot; &lt;br /&gt;
    FolderName=&amp;quot;xaml&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Icons ===&lt;br /&gt;
UBIK comes equipped with a collection of icons that can be easily used in your customizing. [[Icon_Font|Here is an indepth explanation on usage]].&lt;br /&gt;
&lt;br /&gt;
In the case that you require an icon that is not included in our icon font file, there is the possibility to use SVG path data to render your required icon in the UI.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Custom Icons ====&lt;br /&gt;
Here referring to icons which are not included as standard icons un UBIK.&lt;br /&gt;
&lt;br /&gt;
'''Path data''' is a collection of points, which combined together form a vector image. Vector images, compared to raster images like a PNG or JPG, are scalable, because they are always rendered from path data, and not from a bitmap, which has to be stretched or squished to fit your defined size.&lt;br /&gt;
&lt;br /&gt;
Described below two approaches. The UWP approach involves adding an SVG icon file to your xaml project and render it using an Image control. The Xamarin approach shows how to use svg data directly using a Path control.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;				&lt;br /&gt;
&amp;lt;Image Width=&amp;quot;14&amp;quot; Height=&amp;quot;14&amp;quot; Margin=&amp;quot;0,0,0,1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Image.Source &amp;gt;&lt;br /&gt;
        &amp;lt;SvgImageSource UriSource=&amp;quot;{StaticResource PP_Issued}&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Image.Source&amp;gt;&lt;br /&gt;
&amp;lt;/Image&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Xamarin&amp;quot;&amp;gt;&lt;br /&gt;
The first step is to generate path data for your icon. The easiest way is to download the [https://apps.microsoft.com/detail/9wzdncrdxf41?hl=en-US&amp;amp;gl=US| Character Map] tool from Microsoft. This can be used to browse all installed icon files for your icon of choice. Once selected, use Tools &amp;gt; Xaml / Xamarin Forms to show various useful aspects of the icon. In this case, the Path Icon option can be used to generate a Path control that can be pasted directly in your xaml as follows:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Path Fill=&amp;quot;{StaticResource UBIKAccentColor}&amp;quot; Data=&amp;quot;F1 M 8.75 1.25 L 18.75 1.25 L 18.75 18.75 L 1.25 18.75 L 1.25 8.75 L 5 8.75 L 5 6.25 L 1.25 6.25 L 1.25 1.25 L 6.25 1.25 L 6.25 5 L 8.75 5 Z M 10 2.5 L 10 5 L 12.5 5 L 12.5 2.5 Z M 2.5 5 L 5 5 L 5 2.5 L 2.5 2.5 Z M 6.25 6.25 L 6.25 8.75 L 8.75 8.75 L 8.75 6.25 Z M 2.5 10 L 2.5 12.5 L 5 12.5 L 5 10 Z M 17.5 17.5 L 17.5 2.5 L 13.75 2.5 L 13.75 6.25 L 10 6.25 L 10 10 L 6.25 10 L 6.25 13.75 L 2.5 13.75 L 2.5 17.5 Z &amp;quot; /&amp;gt;					&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once you have your Path control, you can customize it as [https://learn.microsoft.com/en-us/previous-versions/xamarin/xamarin-forms/user-interface/shapes/path| documented by Microsoft]. Path data generated using the above method will most likely need a Fill attribute, for example &amp;lt;nowiki&amp;gt;Fill=&amp;quot;{StaticResource UBIKAccentColor}&amp;quot;&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Hint|More complicated icons will have longer and more complicated paths.}}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== TabView ==&lt;br /&gt;
&lt;br /&gt;
=== UI virtualization ===&lt;br /&gt;
When using the TabView control in your XAML code, UI virtualization can greatly improve initial loading performance, based on the scenario.Here's how to enable it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Xamarin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tabView:SfTabView EnableVirtualization=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/tabView:SfTabView&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Default Tab Selection ===&lt;br /&gt;
The tab selection in UBIKContentView defaults to the first tab, which is Children objects. However, for cases where it makes more sense to display Properties or Documents by default, it is possible to change the tab selection using the following classifications:&lt;br /&gt;
* [[SYSCLS_SHOWDOCUMENTS]]&lt;br /&gt;
* [[SYSCLS_SHOWPROPERTIES]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
Adding the classification to a metaclass is enough for UWP.&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Xamarin&amp;quot;&amp;gt;&lt;br /&gt;
Xamarin currently requires additional customizing to make use of the TabSelector property. One approach is to add a DataTrigger to the SfTabView found in UBIKContentArea that is triggered by the value of the TabSelector property, as shown below;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tabView:SfTabView VisibleHeaderCount=&amp;quot;3&amp;quot; &amp;gt;&lt;br /&gt;
     &amp;lt;!-- tabView:SfTabItems ... --&amp;gt;&lt;br /&gt;
     &amp;lt;tabView:SfTabView.Triggers&amp;gt;&lt;br /&gt;
          &amp;lt;DataTrigger TargetType=&amp;quot;tabView:SfTabView&amp;quot; Binding=&amp;quot;{Binding TabSelector}&amp;quot; Value=&amp;quot;PropertiesTab&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;Setter Property=&amp;quot;SelectedIndex&amp;quot; Value=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/DataTrigger&amp;gt;&lt;br /&gt;
          &amp;lt;DataTrigger TargetType=&amp;quot;tabView:SfTabView&amp;quot; Binding=&amp;quot;{Binding TabSelector}&amp;quot; Value=&amp;quot;DocumentsTab&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;Setter Property=&amp;quot;SelectedIndex&amp;quot; Value=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/DataTrigger&amp;gt;&lt;br /&gt;
     &amp;lt;/tabView:SfTabView.Triggers&amp;gt;&lt;br /&gt;
&amp;lt;/tabView:SfTabView&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|XAML Tips]]&lt;br /&gt;
[[Category:WinX|XAML Tips]]&lt;br /&gt;
[[Category:XAML|XAML Tips]]&lt;br /&gt;
[[Category:Xamarin|XAML Tips]]&lt;br /&gt;
&lt;br /&gt;
== FlipView ==&lt;br /&gt;
&lt;br /&gt;
=== UI virtualization ===&lt;br /&gt;
When using the FlipView control in your XAML code, it's better to enable [https://docs.microsoft.com/en-us/windows/uwp/debug-test-perf/optimize-gridview-and-listview#ui-virtualization UI virtualization]. The difference in performance gets more obvious as the number of items in the FlipView increases. Here's how to enable it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;FlipView&lt;br /&gt;
    ...&lt;br /&gt;
    VirtualizingStackPanel.VirtualizationMode=&amp;quot;Standard&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Flipview.ItemsPanel&amp;gt;&lt;br /&gt;
        &amp;lt;ItemsPanelTemplate&amp;gt;&lt;br /&gt;
            &amp;lt;VirtualizingStackPanel Orientation=&amp;quot;Horizontal&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/ItemsPanelTemplate&amp;gt;&lt;br /&gt;
    &amp;lt;/Flipview.ItemsPanel&amp;gt;&lt;br /&gt;
&amp;lt;/FlipView&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
VirtualizingStackPanel.VirtualizationMode offers two possibilities: Standard &amp;amp; Recycling. In case you are interested, here are their [https://docs.microsoft.com/en-us/dotnet/api/system.windows.controls.virtualizationmode?view=netframework-4.7.2 differences].&lt;br /&gt;
&lt;br /&gt;
=== Auto saving {{Version/WinXSince|4.6}} ===&lt;br /&gt;
Unsaved changes on the document (e.g. Annotations) are gonna be saved and committed automatically when flipping the page in the FlipView.&lt;br /&gt;
&lt;br /&gt;
{{Attention|Changes are lost when leaving the page without flipping the document first.}}&lt;br /&gt;
&lt;br /&gt;
{{Version/WinXSince|4.7}} {{Version/XamarinSince|4.7}} If you want to keep the changes when leaving the page by e.g. navigating away without flipping the document first, there is a boolean property called ''AutoSaveDocumentsOnPageClose'' (default value: false) which enables this behavior. It can be activated by adding the property to (or editing it in) the custom UBIKThemes as follows:&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;x:String x:Key=&amp;quot;AutoSaveDocumentsOnPageClose&amp;quot;&amp;gt;true&amp;lt;/x:String&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Xamarin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;x:String x:Key=&amp;quot;AutoSaveDocumentsOnPageClose&amp;quot;&amp;gt;true&amp;lt;/x:String&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Device and Platform Responsiveness ==&lt;br /&gt;
{{UnderConstructionStart}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Although '''OnPlatform''' and '''OnIdiom''' are used in Xamarin, the following wiki article is valid from MAUI 5.0 (add version flag), as the syntax changed.&lt;br /&gt;
&lt;br /&gt;
'''OnPlatform''' can be used to define different property values based on the platform. Valid Platform names are:&lt;br /&gt;
* iOS&lt;br /&gt;
* Android&lt;br /&gt;
* WinUI (for MAUI Windows)&lt;br /&gt;
* further ones see [https://learn.microsoft.com/en-us/dotnet/maui/platform-integration/customize-ui-appearance?view=net-maui-9.0#customize-ui-appearance-with-a-markup-extension-based-on-the-platform here]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''OnIdom''' can be used to define different property values based on the device type (e.g. Phone, Tablet, Desktop).&lt;br /&gt;
&lt;br /&gt;
When it comes to the proper syntax, we should stick with the approaches mentioned in the [https://learn.microsoft.com/en-us/dotnet/maui/platform-integration/customize-ui-appearance?view=net-maui-9.0 official documentation].&lt;br /&gt;
Means, we should '''avoid''' using the single-tag syntax like ''&amp;lt;OnPlatform Android=&amp;quot;...&amp;quot; iOS=&amp;quot;...&amp;quot; /&amp;gt;'' or ''&amp;lt;OnIdiom Phone=&amp;quot;...&amp;quot; Desktop=&amp;quot;...&amp;quot; /&amp;gt;''.&lt;br /&gt;
&lt;br /&gt;
Instead, we should either use the '''multi-tag syntax''' or the '''inline syntax''' for OnPlatform / OnIdiom.&lt;br /&gt;
&lt;br /&gt;
==== Multi-tag syntax ====&lt;br /&gt;
Here it is mandatory to add '''x:TypeArguments=&amp;quot;TheType&amp;quot;''' with the proper type to OnPlatfrom/OnIdiom. ''Default=&amp;quot;...&amp;quot;'' is optional.&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;OnPlatform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;OnPlatform x:TypeArguments=&amp;quot;Thickness&amp;quot; Default=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;On Platform=&amp;quot;iOS, WinUI&amp;quot; Value=&amp;quot;0,20,0,0&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;On Platform=&amp;quot;Android&amp;quot; Value=&amp;quot;10,20,20,10&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/OnPlatform&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;OnIdiom&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;OnIdiom x:TypeArguments=&amp;quot;Thickness&amp;quot; Default=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;OnIdiom.Desktop&amp;gt;0,60,0,0&amp;lt;/OnIdiom.Desktop&amp;gt;&lt;br /&gt;
&amp;lt;/OnIdiom&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If OnPlatform Values contain multiple subtags, the following syntax can be used:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ControlTemplate x:Key=&amp;quot;ExampleControlTemplate&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Grid&amp;gt;&lt;br /&gt;
        &amp;lt;OnPlatform x:TypeArguments=&amp;quot;View&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;On Platform=&amp;quot;Android&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Button&lt;br /&gt;
                    ...&lt;br /&gt;
                    Text=&amp;quot;Button A&amp;quot; /&amp;gt;&lt;br /&gt;
                 ...&lt;br /&gt;
            &amp;lt;/On&amp;gt;&lt;br /&gt;
            &amp;lt;On Platform=&amp;quot;iOS&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Button&lt;br /&gt;
                    ...&lt;br /&gt;
                    Text=&amp;quot;Button B&amp;quot; /&amp;gt;&lt;br /&gt;
                 ...&lt;br /&gt;
            &amp;lt;/On&amp;gt;&lt;br /&gt;
            &amp;lt;On Platform=&amp;quot;WinUI&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Grid&amp;gt;&lt;br /&gt;
                    &amp;lt;Button&lt;br /&gt;
                        ...&lt;br /&gt;
                        Text=&amp;quot;Button C&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;Label Text=&amp;quot;Example&amp;quot; /&amp;gt;&lt;br /&gt;
                    ...&lt;br /&gt;
                &amp;lt;/Grid&amp;gt;&lt;br /&gt;
            &amp;lt;/On&amp;gt;&lt;br /&gt;
        &amp;lt;/OnPlatform&amp;gt;&lt;br /&gt;
    &amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/ControlTemplate&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Attention|When using ''GridLength'' as a type in OnPlatform/OnIdiom, it should only be used in combination with the inline syntax.}}&lt;br /&gt;
&lt;br /&gt;
==== Inline syntax ====&lt;br /&gt;
When using the inline syntax, the type should not be specified. ''Default='' is optional.&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;OnPlatform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;BoxView Color=&amp;quot;{OnPlatform Default=Yellow, iOS=Red, Android=Green}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;OnIdiom&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;BoxView Color=&amp;quot;{OnIdiom Default=Yellow, Phone=Red, Tablet=Green}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the value contains any special characters like '''&amp;quot;''' or ''',''' or a '''string''' when using the OnIdiom or OnPlatform inline variant, it needs to be wrapped between ' '. But be careful with using apostrophes - when using them around curly brackets {} it can lead to an error.&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Don't&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
Margin=&amp;quot;{OnIdiom 10,2, Phone=2,0}&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Instead do&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
Margin=&amp;quot;{OnIdiom '10,2', Phone='2,0'}&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Complex values ===&lt;br /&gt;
If the OnPlatform/OnIdiom value contains a '''Binding''', '''StaticResource''' or any other complex value in curly brackets, it is recommended to use the '''inline syntax'''. Although there is no official documentation, it seems to work according to our experience. However, the multi-tag syntax doesn't seem to work always for such cases. DynamicResource values seem not to be supported in OnIdiom / OnPlatform.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Don't&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;OnIdiom x:TypeArguments=&amp;quot;...&amp;quot; Default=&amp;quot;{Binding ...}&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;OnIdiom.Phone&amp;gt;{Binding ...}&amp;lt;/OnIdiom.Phone&amp;gt;&lt;br /&gt;
&amp;lt;/OnIdiom&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Instead do&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
Header=&amp;quot;{OnIdiom Default={Binding ...}, Phone={Binding ...}}&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Attention|Unreliable Support: Behavior may vary when using bindings or complex resources. Although it seems to work with the inline syntax according to our experiences, it is recommended to test these edge cases thoroughly.}}&lt;br /&gt;
&lt;br /&gt;
{{UnderConstructionEnd}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|XAML Tips]]&lt;br /&gt;
[[Category:WinX|XAML Tips]]&lt;br /&gt;
[[Category:XAML|XAML Tips]]&lt;br /&gt;
[[Category:Xamarin|XAML Tips]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=UBIK_Client_Foundation_(UCF)&amp;diff=27806</id>
		<title>UBIK Client Foundation (UCF)</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=UBIK_Client_Foundation_(UCF)&amp;diff=27806"/>
				<updated>2025-02-03T10:49:38Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The {{UBIK}} Client Foundation (UCF) is the Client SDK of {{UBIK}}, and therefore the foundation of any client that communicates with a {{UBIK}} server. The UCF can be used to develop own/custom {{UBIK}} clients, for a broad range of operating systems and devices.&lt;br /&gt;
The UCF is designed in a modular way, so that the user of the SDK is enabled to initialize only the features, that a client implementation requires. A Web Client for example, typically doesn't need offline support or NFC features, whereas a Tablet Client on the other hand, would typically benefit greatly from these modules.&lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
UCF is versioned together with its released {{UBIK}} client, which means e.g. that the UCF Version 4.8 is also contained in all {{UBIK}} clients of version 4.8 - hence the release notes of that very version also apply to the UCF.&lt;br /&gt;
&lt;br /&gt;
==Architecture==&lt;br /&gt;
The UCF strongly embraces the [[XAML Basics#MVVM|MVVM]] architectural pattern, so it is highly recommended to familiarize yourself with that pattern before starting development. Also, the UCF is inherently asynchronous, thus it is also recommended to bring some experience with asynchronous programming patterns. &lt;br /&gt;
&lt;br /&gt;
==Prerequisites==&lt;br /&gt;
It is recommened to use Microsoft Visual Studio for UBIK UCF development. The UCF packages can be obtained in [https://www.nuget.org/packages/UBIK.UCF/ various versions from nuget.org].&lt;br /&gt;
&lt;br /&gt;
==Getting started==&lt;br /&gt;
There are Tutorial projects for several different Platforms available, including Console, Web (Blazor Server), Android, iOS and Windows Apps (Xamarin Forms), as well as Hololens 2 (Unity). All Tutorials are hosted in a [https://github.com/augmensys private GitHub repository], where UBIK customers with a valid maintenance contract will get access upon request.&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|UBIK Client Foundation (UCF)]]&lt;br /&gt;
[[Category:UCF|UBIK Client Foundation (UCF)]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=UBIK_Client_Foundation_(UCF)&amp;diff=27792</id>
		<title>UBIK Client Foundation (UCF)</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=UBIK_Client_Foundation_(UCF)&amp;diff=27792"/>
				<updated>2025-01-27T12:09:05Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The {{UBIK}} Client Foundation (UCF) is the Client SDK of {{UBIK}}, and therefore the foundation of any client that communicates with a {{UBIK}} server. The UCF can be used to develop own/custom {{UBIK}} clients, for a broad range of operating systems and devices.&lt;br /&gt;
The UCF is designed in a modular way, so that the user of the SDK is enabled to initialize only the features, that a client implementation requires. A Web Client for example, typically doesn't need offline support or NFC features, whereas a Tablet Client on the other hand, would typically benefit greatly from these modules.&lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
UCF is versioned together with its released {{UBIK}} client, which means e.g. that the UCF Version 4.8 is also contained in all {{UBIK}} clients of version 4.8 - hence the release notes of that very version also apply to the UCF.&lt;br /&gt;
&lt;br /&gt;
==Architecture==&lt;br /&gt;
The UCF strongly embraces the [[XAML Basics#MVVM|MVVM]] architectural pattern, so it is highly recommended to familiarize yourself with that pattern before starting development. Also, the UCF is inherently asynchronous, thus it is also recommended to bring some experience with asynchronous programming patterns. &lt;br /&gt;
&lt;br /&gt;
==Prerequisites==&lt;br /&gt;
It is recommened to use Microsoft Visual Studio for UBIK UCF development. The UCF packages can be obtained in [https://www.nuget.org/packages/UBIK.UCF/ various versions from nuget.org].&lt;br /&gt;
&lt;br /&gt;
==Getting started==&lt;br /&gt;
There are Tutorial projects for several different Platforms available, including Console, Web (Blazor Server), Android, iOS and Windows Apps (Xamarin Forms), as well as Hololens 2 (Unity). All Tutorials are hosted in a [https://github.com/augmensys private GitHub repository], where UBIK customers with a valid maintenance contract will get access upon request.&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|UBIK Client Foundation (UCF)]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=UBIK_Client_Foundation_(UCF)&amp;diff=27791</id>
		<title>UBIK Client Foundation (UCF)</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=UBIK_Client_Foundation_(UCF)&amp;diff=27791"/>
				<updated>2025-01-27T12:07:01Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The {{UBIK}} Client Foundation (UCF) is the Client SDK of {{UBIK}}, and therefore the foundation of any client that communicates with a {{UBIK}} server. The UCF is designed in a modular way, so that the user of the SDK is enabled to initialize only the features, that a client implementation requires. A Web Client for example, typically doesn't need offline support or NFC features, whereas a Tablet Client on the other hand, would typically benefit greatly from these modules.&lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
UCF is versioned together with its released {{UBIK}} client, which means e.g. that the UCF Version 4.8 is also contained in all {{UBIK}} clients of version 4.8 - hence the release notes of that very version also apply to the UCF.&lt;br /&gt;
&lt;br /&gt;
==Architecture==&lt;br /&gt;
The UCF strongly embraces the [[XAML Basics#MVVM|MVVM]] architectural pattern, so it is highly recommended to familiarize yourself with that pattern before starting development. Also, the UCF is inherently asynchronous, thus it is also recommended to bring some experience with asynchronous programming patterns. &lt;br /&gt;
&lt;br /&gt;
==Prerequisites==&lt;br /&gt;
It is recommened to use Microsoft Visual Studio for UBIK UCF development. The UCF packages can be obtained in [https://www.nuget.org/packages/UBIK.UCF/ various versions from nuget.org].&lt;br /&gt;
&lt;br /&gt;
==Getting started==&lt;br /&gt;
There are Tutorial projects for several different Platforms available, including Console, Web (Blazor Server), Android, iOS and Windows Apps (Xamarin Forms), as well as Hololens 2 (Unity). All Tutorials are hosted in a [https://github.com/augmensys private GitHub repository], where UBIK customers with a valid maintenance contract will get access upon request.&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|UBIK Client Foundation (UCF)]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=UBIK_Client_Foundation_(UCF)&amp;diff=27790</id>
		<title>UBIK Client Foundation (UCF)</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=UBIK_Client_Foundation_(UCF)&amp;diff=27790"/>
				<updated>2025-01-27T11:59:22Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The {{UBIK}} Client Foundation (UCF) is the Client SDK of {{UBIK}}, and therefore the foundation of any client that communicates with a {{UBIK}} server. The UCF is designed in a modular way, so that the user of the SDK is enabled to initialize only the features, that a client implementation requires. A Web Client for example, typically doesn't need offline support or NFC features, whereas a Tablet Client on the other hand, would typically benefit greatly from these modules.&lt;br /&gt;
&lt;br /&gt;
==Versioning==&lt;br /&gt;
UCF is versioned together with its released {{UBIK}} client, which means e.g. that the UCF Version 4.8 is also contained in all {{UBIK}} clients of version 4.8 - hence the release notes of that very version also apply to the UCF.&lt;br /&gt;
&lt;br /&gt;
==Prerequisites==&lt;br /&gt;
It is recommened to use Microsoft Visual Studio for UBIK UCF development. The UCF packages can be obtained in [https://www.nuget.org/packages/UBIK.UCF/ various versions from nuget.org].&lt;br /&gt;
&lt;br /&gt;
==Getting started==&lt;br /&gt;
There are Tutorial projects for several different Platforms available, including Console, Web (Blazor Server), Android, iOS and Windows Apps (Xamarin Forms), as well as Hololens 2 (Unity). All Tutorials are hosted in a [https://github.com/augmensys private GitHub repository], where UBIK customers with a valid maintenance contract will get access upon request.&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|UBIK Client Foundation (UCF)]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=UBIK_Client_Foundation_(UCF)&amp;diff=27789</id>
		<title>UBIK Client Foundation (UCF)</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=UBIK_Client_Foundation_(UCF)&amp;diff=27789"/>
				<updated>2025-01-27T10:40:33Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The {{UBIK}} Client Foundation (UCF) is the Client SDK of {{UBIK}}, and therefore the foundation of any client that communicates with a {{UBIK}} server. The UCF is designed in a modular way, so that the user of the SDK is enabled to initialize only the features, that a client implementation requires. A Web Client for example, typically doesn't need offline support or NFC features, whereas a Tablet Client on the other hand, would typically benefit greatly from these modules.&lt;br /&gt;
&lt;br /&gt;
==Prerequisites==&lt;br /&gt;
It is recommened to use Microsoft Visual Studio for UBIK UCF development. The UCF packages can be obtained in [https://www.nuget.org/packages/UBIK.UCF/ various versions from nuget.org.]&lt;br /&gt;
&lt;br /&gt;
==Getting started==&lt;br /&gt;
There are Tutorial projects for several different Platforms available, including Console, Web (Blazor Server), Android, iOS and Windows Apps (Xamarin Forms) and Hololens 2 (Unity). All Tutorials are hosted in a [https://github.com/augmensys private GitHub respository], where UBIK customers with a valid maintenance contract will get access upon request.&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|UBIK Client Foundation (UCF)]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=UBIK_Client_Foundation_(UCF)&amp;diff=27788</id>
		<title>UBIK Client Foundation (UCF)</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=UBIK_Client_Foundation_(UCF)&amp;diff=27788"/>
				<updated>2025-01-27T10:19:58Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: Created page with &amp;quot;The {{UBIK}} Client Foundation (UCF) is the Client SDK of {{UBIK}}, and therefore the foundation of any client that communicates with a {{UBIK}} server. The UCF is designed in...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The {{UBIK}} Client Foundation (UCF) is the Client SDK of {{UBIK}}, and therefore the foundation of any client that communicates with a {{UBIK}} server. The UCF is designed in a modular way, so that the user of the SDK is enabled to initialize only the features, that a client implementation requires. A Web Client for example, typically doesn't need offline support or NFC features, whereas a Tablet Client on the other hand, would typically benefit greatly from these modules.&lt;br /&gt;
&lt;br /&gt;
==Prerequisites==&lt;br /&gt;
It is recommened to use Microsoft Visual Studio for UBIK UCF development. The UCF packages can be obtained in [https://www.nuget.org/packages/UBIK.UCF/ various versions from nuget.org.]&lt;br /&gt;
&lt;br /&gt;
==Getting started==&lt;br /&gt;
There are Tutorial projects for several different Platforms available, including Console, Web (Blazor Server), Android, iOS and Windows Apps (Xamarin Forms) and Hololens 2 (Unity). All Tutorials are hosted in a [https://github.com/augmensys private GitHub respository], where UBIK customers with a valid maintenance contract will get access upon request.&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Category:UCF&amp;diff=27787</id>
		<title>Category:UCF</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Category:UCF&amp;diff=27787"/>
				<updated>2025-01-27T10:19:44Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: Created page with &amp;quot;Category:Client&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Client]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Category:Development&amp;diff=27786</id>
		<title>Category:Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Category:Development&amp;diff=27786"/>
				<updated>2025-01-27T10:19:38Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: Created page with &amp;quot;Category:Client&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Client]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Deploy_UI_Customizings_(Client)&amp;diff=27563</id>
		<title>Deploy UI Customizings (Client)</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Deploy_UI_Customizings_(Client)&amp;diff=27563"/>
				<updated>2024-11-28T07:19:44Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As a crucial part of the {{UBIK}} client, it is often the case that a set of UI customizings, once finished, is needed on multiple devices. Therefore, the deployment is an important step.&lt;br /&gt;
&lt;br /&gt;
== Location of UI customizing ==&lt;br /&gt;
UBIK clients use the same &amp;lt;code&amp;gt;[CurrentUserFolder]\AppData\Packages\AugmensysGmbH.UBIK.[ClientType]\LocalState\XAML&amp;lt;/code&amp;gt; folder as the root of all UI customizings.&lt;br /&gt;
* [CurrentUserFolder] is something like &amp;quot;C:\Users\UserName&amp;quot;;&lt;br /&gt;
* [ClientType] is either UWP or Xamarin.&lt;br /&gt;
&lt;br /&gt;
=== Profile specific customizing {{Version/XamarinSince|1.2}} ===&lt;br /&gt;
In some scenarios, a user might want to switch between two different sets of UI customizings depending on the selected profile. To achieve this, the customizing files need to be deployed accordingly.&lt;br /&gt;
&lt;br /&gt;
Every profile has a field called &amp;quot;Name&amp;quot;, which not only decides how it's displayed, but also tells the client under which sub folder it should look for profile specific customizings. Imagine a profile named &amp;quot;Demo_V3&amp;quot;, the client first tries to find a &amp;quot;Demo_V3&amp;quot; sub folder under the [[#Location_of_UI_customizing|root XAML folder]]. If it finds none, it then uses those under the root.&lt;br /&gt;
&lt;br /&gt;
{{Hint|There's also another field called &amp;quot;Customizing&amp;quot; in a profile. If specified, it overrules the &amp;quot;Name&amp;quot; field when it comes to the profile specific customizing folder. This is usually only used if you want different profiles to share the same set of customizings.}}&lt;br /&gt;
&lt;br /&gt;
== Manual deployment ==&lt;br /&gt;
This is an obvious approach of deploying UI customizings. From a {{UBIK}} perspective, this can be&lt;br /&gt;
* Manually copying/pasting the UI customizing files (XAMLs, images, etc.) to the desired devices;&lt;br /&gt;
* Other 3rd-party (e.g. customers' private rollout infrastructure) automated deployment systems.&lt;br /&gt;
&lt;br /&gt;
=== Import UI customizing ===&lt;br /&gt;
Since it's impossible to copy/paste files to the app data folder with UBIK.Xamarin for Android and iOS, those clients provide an alternative option to &amp;quot;Import Customizing&amp;quot; in the general settings.&lt;br /&gt;
* You can import a single XAML file which then ends up under the [[#Location_of_UI_customizing|root XAML folder]];&lt;br /&gt;
* You can also import a zip archive of many XAML files at once.&lt;br /&gt;
** With a zip archive, its content (files and folders) is unpacked under the [[#Location_of_UI_customizing|root XAML folder]] '''with the folder structure of the archive preserved'''. This is important because of the [[#Profile_specific_customizing|profile specific customizing]] feature.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== {{UBIK}} server deployment ==&lt;br /&gt;
{{Version/WinXSince|3.7}} {{Version/XamarinSince|1.1}} {{UBIK}} provides a new solution where UI customizings can be deployed from {{UBIK}} servers to the clients the same way content can be fetched.&lt;br /&gt;
&lt;br /&gt;
=== Technical concept ===&lt;br /&gt;
The UI customizings are delivered from {{UBIK}} servers to clients in the form of [[SYSCLS_UI_CUSTOMIZING|archive documents]] which contains the following.&lt;br /&gt;
* The archive files containing the packed UI customizing files;&lt;br /&gt;
* The version of the UI customizings.&lt;br /&gt;
&lt;br /&gt;
=== Client scenario ===&lt;br /&gt;
Once a {{UBIK}} client connects to a server and downloads such a customizing archive, it unpacks the archive file the same way it does during a [[#Import_UI_customizing|manual import]].&lt;br /&gt;
* If a folder or a file at the root level of the archive already has a same-named counterpart in the client's XAML folder, the existing one is first removed before the one from the archive gets unpacked;&lt;br /&gt;
** {{Version/WinXSince|4.7}} {{Version/XamarinSince|4.7}} A copy of the zip archive will be saved to the Documents/UIArchive folder.&lt;br /&gt;
* Once the archive is unpacked, the client tries to reload the UI customizings. If a set is found for the currently selected profile, one should see the changes in the UI;&lt;br /&gt;
* Most likely, you would want to include a certain folder structure in the archive to achieve [[#Profile_specific_customizing|profile specific customizing]].&lt;br /&gt;
&lt;br /&gt;
=== Some other details ===&lt;br /&gt;
* The download of a document file is not always automatically done in {{UBIK}} clients.&lt;br /&gt;
** If the archive document is a part of the infrastructure objects, its file is automatically downloaded during login (as long as the client is in online/auto sync mode);&lt;br /&gt;
** Otherwise, one has to either navigate to that document or download a branch containing that document.&lt;br /&gt;
* One can deploy multiple sets of UI customizings in a single archive document by placing them under corresponding folders. Theoretically, it's okay to configure and deliver multiple archive documents to the clients since the content will be unpacked just the same. However, it's our recommendation to use a single archive document not only because it's simpler, but also see below;&lt;br /&gt;
[[File:UI_WinX_Customizing_Version.png|thumb|alt=Customizing Version|Customizing Version]]&lt;br /&gt;
* The version information of the UI customizings is available on the archive document and is displayed together with the client version at the bottom of the login page. Currently there's no additional UI to display a list of versions, so the version of a randomly chosen archive will be displayed in case multiple are present. Also, the version information only becomes available after a user logins in (which grants access to the content).&lt;br /&gt;
&lt;br /&gt;
=== Known Issues ===&lt;br /&gt;
Sometimes, unpacking UI customizing archives might fail because the app cannot overwrite some files which are being used in the current UI. A typical example of this is related to using the Image control.&lt;br /&gt;
In the example below, an image file &amp;quot;UBIK.png&amp;quot; under the &amp;quot;Demo&amp;quot; customizing folder is referenced by an Image control. If such a control is displayed while an archive containing a set of UI customizings with the same name &amp;quot;Demo&amp;quot; is received on the client, the unpacking will fail because the UI is still holding onto the file, which blocks the unpacking.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Grid&amp;gt;&lt;br /&gt;
    &amp;lt;Image ...&lt;br /&gt;
        Source=&amp;quot;ms-appdata:///local/xaml/Demo/Images/UBIK.png&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This tends to happen with image files used in the login/home page since that's where users are most likely at when UI customizing archives are received. In such cases, one can use the following converter technique so that the image files can be safely deleted even when they are being displayed.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Grid&amp;gt;&lt;br /&gt;
    &amp;lt;Grid.Resources&amp;gt;&lt;br /&gt;
        &amp;lt;x:String x:Key=&amp;quot;logo&amp;quot;&amp;gt;ms-appdata:///local/xaml/Demo/Images/UBIK.png&amp;lt;/x:String&amp;gt;&lt;br /&gt;
    &amp;lt;/Grid.Resources&amp;gt;&lt;br /&gt;
    &amp;lt;Image ...&lt;br /&gt;
        Source=&amp;quot;{Binding Source={StaticResource logo}, Converter={StaticResource PathToImageConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{Attention|The converter essentially creates a copy of the image file in the device memory. While solving the deletion problem, it does add up the memory consumption. So one should be cautious about using this converter too much especially when the images are relatively large.}}&lt;br /&gt;
{{Hint|An easy way to verify whether the failing of unpack is related to the deletion is to check in Windows Explorer whether there are files that can not be manually deleted in the target unpakcing folder before closing the {{UBIK}} app. If that's the case, please check the customizings and see if there's any reference to those files that can not be deleted. When the problem is not solvable with the above mentioned technique, please [https://support.augmensys.net/scp/index.php create a ticket with sufficient details] or manually delete the files after closing the app.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Delete UI customizings ==&lt;br /&gt;
In UWP, customizing files can be deleted manually in the app data folder.&lt;br /&gt;
&lt;br /&gt;
Similar to the importing scenario, it's impossible to delete customizing files from the app data folder with UBIK.Xamarin for Android and iOS, those clients provide an alternative option to &amp;quot;Delete Customizing&amp;quot; in the general settings (not yet available on UWP).&lt;br /&gt;
* {{Version/XamarinSince|4.7}} All customizing files for all users will be cleared.&lt;br /&gt;
* Versions before 4.7: to properly clear all customizing related files it is necessary to &amp;quot;Delete files&amp;quot; additionally to &amp;quot;Delete Customizing&amp;quot; (Note: with &amp;quot;Delete files&amp;quot; all online documents will be cleared).&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Deploy UI Customizings (Client)]]&lt;br /&gt;
[[Category:WinX|Deploy UI Customizings (Client)]]&lt;br /&gt;
[[Category:Xamarin|Deploy UI Customizings (Client)]]&lt;br /&gt;
[[Category:XAML|Deploy UI Customizings (Client)]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=MROCLS_MRO_SUPERVISOR&amp;diff=27352</id>
		<title>MROCLS MRO SUPERVISOR</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=MROCLS_MRO_SUPERVISOR&amp;diff=27352"/>
				<updated>2024-10-17T10:50:50Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ClassificationInfoBox&lt;br /&gt;
| title = MRO Supervisor Classification Object &lt;br /&gt;
| name = {{PAGENAMEE}}&lt;br /&gt;
| inheritance = SYSCLS_OBJECTWITHRFIDTAG&lt;br /&gt;
| namespace = System.MRO&lt;br /&gt;
| purpose = Classify a User as a Supervisor to let him approve Supervisor Tasks.&lt;br /&gt;
| version = 4.8.1+&lt;br /&gt;
| id = {1DD7076B-7E27-422D-8317-315EED8CCBB1}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
If a Login object is classified as Supervisor it can act as such in the device based  4-eyes acceptance workflow.&lt;br /&gt;
Only Supervisors are allowed to finish Supervisor Tasks.&lt;br /&gt;
&lt;br /&gt;
== MetaProperties ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=50%&lt;br /&gt;
|-&lt;br /&gt;
! width=30% | Name !! width=20% | Data type !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| PERMISSIONS|| {{string}} || Concatenated string to define permissions (codes) that are required to open this task.&lt;br /&gt;
|-&lt;br /&gt;
| PIN_HASH|| {{string}} ||  String property storing the hash code of the entered pin.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:4.8.1|MROCLS MRO SUPERVISOR]]&lt;br /&gt;
[[Category:Classifications|MROCLS MRO SUPERVISOR]]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[MROCLS_MRO_SUPERVISOR_TASK|Supervisor Task]]&lt;br /&gt;
* [[MRO_Objects_(Client)#Supervisor_Task]]&lt;br /&gt;
&lt;br /&gt;
{{Category/Version|4.8.1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:4.8.1|MROCLS MRO SUPERVISOR]]&lt;br /&gt;
[[Category:Classifications|MROCLS MRO SUPERVISOR]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=MROCLS_MRO_SUPERVISOR_TASK&amp;diff=27351</id>
		<title>MROCLS MRO SUPERVISOR TASK</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=MROCLS_MRO_SUPERVISOR_TASK&amp;diff=27351"/>
				<updated>2024-10-17T10:50:28Z</updated>
		
		<summary type="html">&lt;p&gt;JKN: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ClassificationInfoBox&lt;br /&gt;
| title = MRO Supervisor Task Classification Object &lt;br /&gt;
| name = {{PAGENAMEE}}&lt;br /&gt;
| inheritance = MROCLS_MRO_TASK&lt;br /&gt;
| namespace = System.MRO&lt;br /&gt;
| purpose = Classify a task as a Supervisor Task to let only Supervisors approve this task.&lt;br /&gt;
| version = 4.8.1+&lt;br /&gt;
| id = {C63511FA-4852-4FE7-B5BC-4247136B8B8E}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
If a task object is classified as Supervisor Task, it will mark a task as supervisor - task. This means, that this task may only be edited by a supervisor who has to identify himself using a RFID token and a PIN based verification. This task fullfills the requirements of a device based/shared 4-eyes acceptance workflow.&lt;br /&gt;
&lt;br /&gt;
== MetaProperties ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=50%&lt;br /&gt;
|-&lt;br /&gt;
! width=30% | Name !! width=20% | Data type !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| PERMISSIONS|| {{string}} || Concatenated string to define permissions (codes) that are required to open this task.&lt;br /&gt;
|-&lt;br /&gt;
| SUPERVISOR|| {{guid}} || Reference to the supervisor login that finished the Task. &lt;br /&gt;
|}&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[MROCLS_MRO_SUPERVISOR|Supervisor]]&lt;br /&gt;
* [[MRO_Objects_(Client)#Supervisor_Task]]&lt;br /&gt;
&lt;br /&gt;
{{Category/Version|4.8.1}}&lt;br /&gt;
&lt;br /&gt;
[[Category:4.8.1|MROCLS MRO SUPERVISOR TASK]]&lt;br /&gt;
[[Category:Classifications|MROCLS MRO SUPERVISOR TASK]]&lt;/div&gt;</summary>
		<author><name>JKN</name></author>	</entry>

	</feed>