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

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_3.5_(Server)&amp;diff=23816</id>
		<title>Version 3.5 (Server)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_3.5_(Server)&amp;diff=23816"/>
				<updated>2022-08-08T14:16:34Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: Added Web Service Build 10&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable sortable&amp;quot; | width = &amp;quot;300&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version !! Release Date&lt;br /&gt;
|- &lt;br /&gt;
| 3.5.0 || 2020.04.09&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Initial Release =&lt;br /&gt;
=== New features ===&lt;br /&gt;
* UBIK supports sending additional information for an uploaded file to the server&lt;br /&gt;
** [[SYSCLS_FILEDETAILSCLASSIFICATION|File Details classification object]]&lt;br /&gt;
* UBIK Supports Downloading of 3D Models now&lt;br /&gt;
** [[SYSCLS_ARCHIVECLASSIFICATION|Archive classification object]]&lt;br /&gt;
** [[SYSCLS_3DMODELCLASSIFICATION|3D Model classification object]]&lt;br /&gt;
* UBIK provides distribution of UI Customizing objects&lt;br /&gt;
** [[SYSCLS_UI_CUSTOMIZING|UI Customizingclassification object]]&lt;br /&gt;
* Every relation between UserGroup (left) and Login (right) will be used as basement for Rights Evaluation.&lt;br /&gt;
* UBIK supports MetaQueryScopes and MetaQueryViewItems now. This provides the possibility to define Online Queries (for Views and in ACM) just as you do for instances by configuring their MetaClasses. &lt;br /&gt;
* UBIK provides a set of Methods with a simplyfied interface designed to be used from external systems (e.g. IOT use case) &lt;br /&gt;
** [[UBIK_Web_ServiceV264]]&lt;br /&gt;
* UBIK provides the possibility to add Attributes to any Live Value. This feature can be used by the implementation of a Live Value Servers. It is possible to transport any specific Live Value Information (Property, QualityInformation, etc). to the clients using UBIK Standard.&lt;br /&gt;
* User Rights can be applied for Selective Items now. The rights evaluation happens during the assembling of the MetaDefintiions. If the current user does not have the right to see one Selective Item, it is removed from the Metadefinitions. If a SelectiveList does not have one single visible item, the entire list and all its references to it are removed.&lt;br /&gt;
* A new method (EvaluateBaseChildrenCollectionExt) on the UBIK ViewItems gives access to the current UBIK Session which provides a full set of new possibilities when customizing the children collection depending on (e.g.) the current login.&lt;br /&gt;
* UBIK provides a Numeric [[Sequence_Generator|Sequence Generator]] now. It gives the possibility to create unique sequential ids for different number groups.&lt;br /&gt;
* Verbose Logging is now available for Importing and Exporting Data using the Interface Administration.&lt;br /&gt;
* UBIK Supports MultiLine Geography objects now&lt;br /&gt;
* UBIK provides new Workflow Activities for Web Based Actions:&lt;br /&gt;
** [[Authenticate_(Activity)|Authenticate]]&lt;br /&gt;
** [[RESTGet_(Activity)|REST Get]]&lt;br /&gt;
** [[RESTPost_(Activity)|REST Post]]&lt;br /&gt;
* UBIK supports two new types of Geography objects used for routing and navigation&lt;br /&gt;
** [[SYSCLS_GEO_MULTI_LINE|Multi Line Classification]]&lt;br /&gt;
** [[SYSCLS_ROUTING_GRAPH|Routing Graph Classification]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
* Change Log Values for Properties without a VTS are delivered with the correct date now.&lt;br /&gt;
* A problem with configured Initial Values is solved now. It is possible to define them on both, the MetaProperty itself or on the relation between a MetaClass and a MetaProperty.&lt;br /&gt;
* UBIK Supports Initial - Index values now.&lt;br /&gt;
* WebService does not deliver false entries for ChangeLogs (happened with ViewCache being online) any more.&lt;br /&gt;
* The Database Maintenance Window was (sometimes) not able to connect to the database. This problem is solved now.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Enhancements ===&lt;br /&gt;
* Closed security gaps in the UBIK WebService&lt;br /&gt;
* Creation of a Reference does not create a &amp;quot;fake&amp;quot; Warning any more.&lt;br /&gt;
* UBIK provides the possibility to access the Content of an internal document as Base64 string (read and write).&lt;br /&gt;
* UBIK WebService persists and delivers information about the validation timestamp and validation user now (per property)&lt;br /&gt;
* The [[Activity:CreatePushScope (Activity)|CreatePushScope]] Activity supports the usage of Authentication Tokens now. &lt;br /&gt;
* The WebService Switch &amp;quot;UBIK.Service.EnableViewCache&amp;quot; is not supported any more. A ViewCache-Creation must be triggered via existing mechanims and does not trigger itself any more.&lt;br /&gt;
* UBIK Compiler includes System.DirectoryServices.AccountManagement.dll now This enables the customizer to compile AD and LDAP specific code.&lt;br /&gt;
* Improved management of Query Instances gains more customizability and better performance&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Build History Web Service =&lt;br /&gt;
* 3.5.0 Build 1 on 2020.04.08&lt;br /&gt;
** Initial release.&lt;br /&gt;
* 3.5.0 Build 2 on 2020.04.16&lt;br /&gt;
** Installed OSI Pi Plugin does not create log entries saying &amp;quot;Unable to load one or more of the requested types&amp;quot; when being loaded on the Web Service any more.&lt;br /&gt;
** Replaced outdated json binaries.&lt;br /&gt;
* 3.5.0 Build 3 on 2020.07.01&lt;br /&gt;
** Web Service Rights evaluation updates on users being removed from a user group during runtime now&lt;br /&gt;
** Mobile session ID can be persisted in Database now&lt;br /&gt;
** Fixed: Creating too many Change Logs in parallel caused the system to crash&lt;br /&gt;
* 3.5.0 Build 4 on 2020.07.24&lt;br /&gt;
** A problem with autonomous properties not being calculated when performing a branch download is solved now.&lt;br /&gt;
** A problem with Childinfo Classification properties not being propertly calculated is solved now.&lt;br /&gt;
** Providing [[SYSCLS_MAPSHAPE|Map Shape Classification Object]]&lt;br /&gt;
* 3.5.0 Build 6 on 2020.11.05&lt;br /&gt;
** A performance problem when initializing the ViewCache in combination with classified items is solved now&lt;br /&gt;
* 3.5.0 Build 7 on 2021.03.18&lt;br /&gt;
** Internal optimizations for higher performance.&lt;br /&gt;
** Support of System Selective Lists.&lt;br /&gt;
** A bug in providing Childowner - Info in combination with an active ViewCache is fixed now&lt;br /&gt;
**A bug in the Web.config probing paths is fixed now&lt;br /&gt;
* 3.5.0 Build 8 on 2021.10.11&lt;br /&gt;
** A bug causing possible data loss when committing changes from the clients is solved now.&lt;br /&gt;
** Improved performance when evaluating user rights and user group rights.&lt;br /&gt;
* 3.5.0 Build 9 on 2022.07.20&lt;br /&gt;
** Includes Newtonsoft.JSON (newjson) endpoints for compatibility with clients &amp;gt;= 4.0.&lt;br /&gt;
* 3.5.0 Build 10 on 2022.08.08&lt;br /&gt;
** Downgraded included Newtonsoft.JSON version to 12.0.3 to stay compatible with most plugins.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Build History UBIK.Studio =&lt;br /&gt;
* 3.5.0 Build 1 on 2020.04.08&lt;br /&gt;
** Initial release.&lt;br /&gt;
* 3.5.0 Build 2 on 2020.04.20&lt;br /&gt;
** Restart of UBIK.Studio after releasing the customizing does not create Log Entries any more.&lt;br /&gt;
** UBIK.Studio creates Symbols files (*.pdb) when compiling the customizing now. They can be used for debugging the custom code.&lt;br /&gt;
** When running as a Windows service, EnterpriseService now properly manages the automatic plugin execution.&lt;br /&gt;
* 3.5.0 Build 3 on 2020.07.01&lt;br /&gt;
** Stopping and restarting of UBIK Enterprise Service caused a problem. This is fixed now.&lt;br /&gt;
** Fixed: Creating too many Change Logs in parallel caused the system to crash&lt;br /&gt;
** An issue with file names when compiling Customizing - Symbol files (for local debugging) is solved now&lt;br /&gt;
* 3.5.0 Build 4 on 2020.07.23&lt;br /&gt;
** Providing [[SYSCLS_MAPSHAPE|Map Shape Classification Object]]&lt;br /&gt;
* 3.5.0 Build 5 on 2020.07.30&lt;br /&gt;
** Trial licensing checks against local time to avoid the otherwise necessary server connection now.&lt;br /&gt;
* 3.5.0 Build 6 on 2020.11.05&lt;br /&gt;
** Having more than 500 Metaproperties in the database caused an irritating issue when trying to set the MetaProxy Property Target. This issue is solved now.&lt;br /&gt;
* 3.5.0 Build 7 on 2021.03.19&lt;br /&gt;
** Double clicking an instance in the Class Browser having an open Bulk Editor does not crash UBIK.Studio any more&lt;br /&gt;
** SQL Update Scripts (to Version 3.5) are compatible with SQL Server 2012 now.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Build History UBIK.Plugins =&lt;br /&gt;
* 3.5.0 Build 1 on 2020.04.08&lt;br /&gt;
** Initial release.&lt;br /&gt;
* 3.5.0 Build 2 on 2020.04.22&lt;br /&gt;
** Added two new Plugins (Syncfusion.Compression.Base.dll) and (Syncfusion.Pdf.Base.dll).&lt;br /&gt;
* 3.5.0 Build 3 on 2020.07.23&lt;br /&gt;
** Added a new Plugin (UBIK.Interface.Module.SAP) and it's dependencies (SAPInterface.dll, SAPInterface.XmlSerializer.dll).&lt;br /&gt;
** The MRO plugins provide a fix for autonomous properties being filled when performing a branch download.&lt;br /&gt;
* 3.5.0 Build 4 on 2020.08.07&lt;br /&gt;
** Added Float64/Float16/Int16 support to OsiPi Plugin.&lt;br /&gt;
* 3.5.0 Build 6 on 2020.11.06&lt;br /&gt;
** Added support for Basic authentication in OsiPi Plugin&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Category/Version2|{{PAGENAME}}}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Version 3.5|Version 3.5 (Server)]]&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Converters_In_Mobile&amp;diff=23734</id>
		<title>Converters In Mobile</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Converters_In_Mobile&amp;diff=23734"/>
				<updated>2022-06-21T13:34:30Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: Removed converter that clearly doesn't exist&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;:''See also: [[XAML#Converters|Converters in UWP/WinX]]''&lt;br /&gt;
&lt;br /&gt;
'''Converters''' are used to prepare application data to format a UI defined by a XAML markup. These converters make it possible to show elements only when specific conditions (like data being available) are met. This allows the creation of a good UI with XAML code only, improving code readability while also decreasing code complexity.&lt;br /&gt;
&lt;br /&gt;
This page explains how to properly use converters for customizing the UBIK Xamarin User Interface. Furthermore, all available converters are listed to provide a good reference.&lt;br /&gt;
&lt;br /&gt;
= Definition =&lt;br /&gt;
In Xamarin, before converters can be used, they need to be defined in the page's ''Resources'' tag. Make sure to include the &amp;lt;code&amp;gt;UBIK.CPL.Converters&amp;lt;/code&amp;gt; namespace in the namespace definitions!&lt;br /&gt;
The following example shows how the &amp;lt;code&amp;gt;NullToBoolConverter&amp;lt;/code&amp;gt; can be defined:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ContentView x:Class=&amp;quot;UBIK.CPL.Resources.UBIKChildArea&amp;quot; &lt;br /&gt;
    xmlns=&amp;quot;http://xamarin.com/schemas/2014/forms&amp;quot; &lt;br /&gt;
    xmlns:x=&amp;quot;http://schemas.microsoft.com/winfx/2009/xaml&amp;quot; &lt;br /&gt;
    xmlns:converters=&amp;quot;clr-namespace:UBIK.CPL.Converters;assembly=UBIK.CPL&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ContentView.Resources&amp;gt;&lt;br /&gt;
        &amp;lt;ResourceDictionary&amp;gt;&lt;br /&gt;
            &amp;lt;converters:NullToBoolConverter x:Key=&amp;quot;NullToBool&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/ResourceDictionary&amp;gt;&lt;br /&gt;
    &amp;lt;/ContentView.Resources&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Cuztomizing --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ContentView&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The key ''NullToBool'' makes this converter accessible from the customizing in this page.&lt;br /&gt;
== Definition With Properties ==&lt;br /&gt;
In the following example, which is the same example from above, the '''StringFormatConverter''' will be additionally defined. To add more formatting possibilities, it has two extra properties, which need to be prefilled during initialization. Henceforth, these properties can be prefilled with static values or with static references.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ContentView x:Class=&amp;quot;UBIK.CPL.Resources.UBIKChildArea&amp;quot; &lt;br /&gt;
    xmlns=&amp;quot;http://xamarin.com/schemas/2014/forms&amp;quot; &lt;br /&gt;
    xmlns:x=&amp;quot;http://schemas.microsoft.com/winfx/2009/xaml&amp;quot; &lt;br /&gt;
    xmlns:converters=&amp;quot;clr-namespace:UBIK.CPL.Converters;assembly=UBIK.CPL&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ContentView.Resources&amp;gt;&lt;br /&gt;
        &amp;lt;ResourceDictionary&amp;gt;&lt;br /&gt;
            &amp;lt;converters:NullToBoolConverter x:Key=&amp;quot;NullToBool&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;converters:StringFormatConverter x:Key=&amp;quot;Formatter&amp;quot; Parameter1=&amp;quot;5&amp;quot; Parameter2=&amp;quot;{Binding Children.Items.Count}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/ResourceDictionary&amp;gt;&lt;br /&gt;
    &amp;lt;/ContentView.Resources&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Cuztomizing --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ContentView&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Whereever this converter is used within the file it was defined in, ''Formatter'' will always have its ''Parameter1'' set to ''5'' and its ''Parameter2'' to the number of children of the currently viewed UBIK object. If this behavior is not intended, consider defining another ''StringFormatConverter'' with a '''different Key''' in the same way as shown above.&amp;lt;br/&amp;gt;&lt;br /&gt;
See below to find out how to use this converter!&lt;br /&gt;
= Usage =&lt;br /&gt;
A converter can only be used in conjunction with a &amp;lt;code&amp;gt;{Binding}&amp;lt;/code&amp;gt;. The following is an easy example, showing how the ''NullToBool'' converter, defined above, can be used.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Label Text=&amp;quot;My Text&amp;quot; IsVisible=&amp;quot;{Binding MyBindableProperty, Converter={StaticResource NullToBool}}&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
If '''MyBindableProperty''' is ''null'' or an empty string, the converter will return '''true''', making the Label visible!&lt;br /&gt;
== Parameter ==&lt;br /&gt;
Some converters accept a '''ConverterParameter''', that passes additional information. Closely read the description of the available converters to find out which accept or even require a parameter to work properly. In Ubik, some converters accept a string parameter, consisting of multiple individual parameters separated by &amp;lt;code&amp;gt;|&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
An example of this behavior is the '''ContainsToBoolConverter''', which checks if the current value is contained within a collection of values (passed as the ''parameter''):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Label Text=&amp;quot;My Text&amp;quot; IsVisible=&amp;quot;{Binding MyValue, Converter={StaticResource ContainsToBool}, ConverterParameter=1|2|3|4|5|6|7|8|9}&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The label will only be visible if the ''MyValue'' property (which is expected to parse as an Integer in this example) is one of the values of the parameter.&amp;lt;br/&amp;gt;&lt;br /&gt;
Again, to get the converter working, don't forget to define it in the page's resources!&lt;br /&gt;
&lt;br /&gt;
== FallbackValue ==&lt;br /&gt;
In some rare cases, a converter might not return anything desired (like ''null'') if some condition doesn't work out as it should (e.g. ''value'' is ''null''). To still be able to get a usable return value, it's possible to define a '''FallbackValue'''.&lt;br /&gt;
&lt;br /&gt;
== Example Usage of StringFormatConverter ==&lt;br /&gt;
This converter can take up to two additional parameters during definition. Please see [[#Definition With Properties|Definition With Properties]] for more information!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Label Text=&amp;quot;{Binding MyValue, Converter={StaticResource Formatter}, ConverterParameter=The Value of my value is \{0\}\, compared to \{1\} and \{2\}!}&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
It's important to note that special characters, like &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;,&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, need to be escaped using a &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, else the expression will be wrongly interpreted (and nothing happens)!&lt;br /&gt;
&lt;br /&gt;
The text of the '''ConverterParameter''' will be analyzed, and any occurrance (including duplicates) of &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{0}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{1}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{2}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; replaced with the '''binding value''', '''Formatter.Parameter1''' and '''Formatter.Parameter2''' respectively!&lt;br /&gt;
&lt;br /&gt;
Make sure to note, that Xamarin Forms has a native '''[https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/data-binding/string-formatting StringFormat]''' option as well, that is probably way faster than using a converter for it. Furthermore, it supports formatting options!&lt;br /&gt;
&lt;br /&gt;
= Data Source =&lt;br /&gt;
Although technically not a converter, the '''SfDataSourceExt''' control is currently on the way of replacing the '''SfDataSourceConverter''', due to improved performance.&lt;br /&gt;
The usage is pretty simple: Similar to the converters, it needs to be defined in the '''Page Resources'''. Then, a '''Key''' and '''Expression''', as well as an '''ItemsSource''' have to be defined. Last, but not least, the the converter can be used within the '''ItemsSource''' property of a Syncfusion '''SfListView'''. See the following example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ContentView x:Class=&amp;quot;UBIK.CPL.Resources.UBIKChildArea&amp;quot; &lt;br /&gt;
    xmlns=&amp;quot;http://xamarin.com/schemas/2014/forms&amp;quot; &lt;br /&gt;
    xmlns:x=&amp;quot;http://schemas.microsoft.com/winfx/2009/xaml&amp;quot; &lt;br /&gt;
    xmlns:controls=&amp;quot;clr-namespace:UBIK.CPL.Controls;assembly=UBIK.CPL&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ContentView.Resources&amp;gt;&lt;br /&gt;
        &amp;lt;ResourceDictionary&amp;gt;&lt;br /&gt;
             &amp;lt;controls:SfDataSourceExt&lt;br /&gt;
                x:Key=&amp;quot;MyDataSource&amp;quot;&lt;br /&gt;
                ItemsSource=&amp;quot;{Binding Children.Items}&amp;quot;&lt;br /&gt;
                Expression=&amp;quot;Item.Content.MetaUID.ToString().ToLower()==&amp;amp;quot;85a50533-3817-4a0b-84cd-615b48b62565&amp;amp;quot; &amp;amp;amp;&amp;amp;amp; Item[&amp;amp;quot;ORGA_STATUS&amp;amp;quot;]!=100&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;sync:SfListView&lt;br /&gt;
           x:Name=&amp;quot;ListView1&amp;quot;&lt;br /&gt;
           AllowSwiping=&amp;quot;True&amp;quot;&lt;br /&gt;
           ItemSize=&amp;quot;60&amp;quot;&lt;br /&gt;
           ItemTemplate=&amp;quot;{StaticResource ChildTemplateSelector}&amp;quot;&lt;br /&gt;
           ItemsSource=&amp;quot;{Binding DisplayItems, Source={StaticResource MyDataSource}}&amp;quot;&lt;br /&gt;
           LeftSwipeTemplate=&amp;quot;{StaticResource SwipeLeftTemplateSelector}&amp;quot;&lt;br /&gt;
           RightSwipeTemplate=&amp;quot;{StaticResource SwipeRightTemplateSelector}&amp;quot;&lt;br /&gt;
           SelectionMode=&amp;quot;None&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/ContentView&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Thanks to the given expression, filtering is applied once the data source is evaluated. It's important to have [https://www.advancedinstaller.com/user-guide/xml-escaped-chars.html XML special characters] correctly escaped, like the example shows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= List of Available Converters =&lt;br /&gt;
The following list contains all currently available converters for UBIK Xamarin customizing. &lt;br /&gt;
&lt;br /&gt;
'''Two-way''' converters can be used with two-way bindings, e.g. a text-box displaying an editable value. If the value updates in the model, the text-box text changes. If the user edits the value, the value in the model behind also gets updated.&lt;br /&gt;
As a clarification, '''Value''' refers to the '''Binding Value''', and '''parameter''' to the '''ConverterParameter'''!&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Converter !! 2-Way !! Output Type || Input Type || Parameter Type || Description &lt;br /&gt;
|-&lt;br /&gt;
| BooleanConverter || style=&amp;quot;text-align: center;&amp;quot; | ✓ || Boolean || Boolean, String || || &lt;br /&gt;
Interprets a '''boolean value''' or a '''String value''' and returns it. If the value cannot be interpreted, ''false'' is returned.&lt;br /&gt;
|- &lt;br /&gt;
| BooleanInvertConverter || style=&amp;quot;text-align: center;&amp;quot; | ✓ || Boolean || Boolean, String || || &lt;br /&gt;
Interprets a '''boolean value''' or a '''String value''' and converts it into its '''inverted value'''. If the value cannot be interpreted, ''false'' is returned.&lt;br /&gt;
|- &lt;br /&gt;
| BooleanToFontAttributeConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || FontAttribute || Boolean || || &lt;br /&gt;
Converts a '''boolean''' into a '''[https://docs.microsoft.com/en-us/dotnet/api/xamarin.forms.fontattributes?view=xamarin-forms font attribute]''' value. In detail, if the value is ''true'', the parameter is interpreted (''Bold'', ''Italic'', ''None'') and returned. The default returned font-attribute is ''None''.&lt;br /&gt;
|- &lt;br /&gt;
| ByteToImageSourceValueConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || ImageSource || Byte[ ],&amp;lt;br/&amp;gt;Byte Stream || || &lt;br /&gt;
Converts a '''byte stream''' value into an '''image source'''.&lt;br /&gt;
|- &lt;br /&gt;
| ChildAreaTemplateConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Child&amp;lt;wbr/&amp;gt;Area&amp;lt;wbr/&amp;gt;Template || Content&amp;lt;wbr/&amp;gt;ViewModel || || &lt;br /&gt;
Returns a '''ChildAreaTemplate''' from a '''Content&amp;lt;wbr/&amp;gt;ViewModel''' or ''null'' if the ViewModel cannot be interpreted.&lt;br /&gt;
|- &lt;br /&gt;
| ChildItem&amp;lt;wbr/&amp;gt;SelectionMode&amp;lt;wbr/&amp;gt;To&amp;lt;wbr/&amp;gt;SfListView&amp;lt;wbr/&amp;gt;SelectionMode&amp;lt;wbr/&amp;gt;Converter || style=&amp;quot;text-align: center;&amp;quot; | ✓ || [https://help.syncfusion.com/cr/cref_files/xamarin/Syncfusion.SfListView.XForms~Syncfusion.ListView.XForms.SfListView~SelectionMode.html ListView&amp;lt;wbr/&amp;gt;SelectionMode] || ChildItem&amp;lt;wbr/&amp;gt;SelectionMode || || &lt;br /&gt;
Converts a '''ChildItem&amp;lt;wbr/&amp;gt;SelectionMode''' to a Syncfusion '''[https://help.syncfusion.com/cr/cref_files/xamarin/Syncfusion.SfListView.XForms~Syncfusion.ListView.XForms.SfListView~SelectionMode.html ListView&amp;lt;wbr/&amp;gt;SelectionMode]'''. Default is &amp;quot;Single&amp;quot;.&lt;br /&gt;
|- &lt;br /&gt;
| ClassificationToBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Boolean || ContentViewModel || || &lt;br /&gt;
Returns a '''boolean''' indicating whether the given '''ContentViewModel''' is successfully classified.&lt;br /&gt;
|- &lt;br /&gt;
| ContainsToBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Boolean || String,&amp;lt;br/&amp;gt;Guid,&amp;lt;br/&amp;gt;Object || || &lt;br /&gt;
Checks if the delivered value is '''contained''' within a collection of values (delivered in the parameter, seperated with &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;). If the value is contained, ''true'' will be returned, else ''false''. The functionality is similar to the ''ContainsToVisibilityConverter'' in the WinX project.&lt;br /&gt;
|- &lt;br /&gt;
| ContainsToInvertedBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Boolean || String,&amp;lt;br/&amp;gt;Guid,&amp;lt;br/&amp;gt;Object || || &lt;br /&gt;
Same as the ''ContainsToBoolConverter'', but with '''inverted output'''.&lt;br /&gt;
|- &lt;br /&gt;
| ContentAreaTeamplateConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || UBIKContentArea || ContentViewModel || || This converter is '''not yet finished''' and just returns the ''UBIKContentArea'' if the value is a ''ContentViewModel''.&lt;br /&gt;
|- &lt;br /&gt;
| StringToDateTimeTypesConverter || style=&amp;quot;text-align: center;&amp;quot; | ✓  || [https://docs.microsoft.com/en-us/dotnet/api/system.datetime DateTime], [https://docs.microsoft.com/en-us/dotnet/api/system.timespan TimeSpan] || String || || &lt;br /&gt;
Converts a String to the correct DateType, which can be either '''[https://docs.microsoft.com/en-us/dotnet/api/system.datetime DateTime]''' or '''[https://docs.microsoft.com/en-us/dotnet/api/system.timespan TimeSpan]'''. If the value cannot be interpreted, the unchanged String value is returned. The Converter can also be used to convert DateTime or TimeSpan into a string. The Format will be determined by the current culture.&lt;br /&gt;
|- &lt;br /&gt;
| DateTimeOffsetToDateConverter || style=&amp;quot;text-align: center;&amp;quot; | ✓ || [https://docs.microsoft.com/en-us/dotnet/api/system.datetime DateTime] || [https://docs.microsoft.com/en-us/dotnet/api/system.datetimeoffset DateTimeOffset] || || &lt;br /&gt;
Converts a '''[https://docs.microsoft.com/en-us/dotnet/api/system.datetimeoffset DateTimeOffset]''' to the correct '''[https://docs.microsoft.com/en-us/dotnet/api/system.datetime DateTime]''', applied to the current date and time. If the value cannot be interpreted, a new ''DateTime'', generated from the device's current time (&amp;lt;code&amp;gt;DateTime.Now&amp;lt;/code&amp;gt;) is returned.&lt;br /&gt;
|- &lt;br /&gt;
| DateTimeToFromNowStringConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || String || [https://docs.microsoft.com/en-us/dotnet/api/system.datetime DateTime] || || &lt;br /&gt;
Returns a '''[https://docs.microsoft.com/en-us/dotnet/api/system.datetime DateTime]''' into a human-readable and easily understandable ''string message'' (the last applying one will be taken):&lt;br /&gt;
* Less than 5 minutes in the past: ''Just now''&lt;br /&gt;
* Less than 10 minutes in the past: ''A few minutes ago''&lt;br /&gt;
* Less than 1 hour in the past: ''An hour ago''&lt;br /&gt;
* Less than 23 Hours in the past: ''Some hours ago''&lt;br /&gt;
* Less than 1 day in the past: ''Yesterday''&lt;br /&gt;
* More than 1 day in the past: The ''DateTime'' value formatted according to the device's localization rules.&lt;br /&gt;
* Not interpretable: ''???''&lt;br /&gt;
|- &lt;br /&gt;
| DebugConverter || style=&amp;quot;text-align: center;&amp;quot; | ✓ || Object || Object || || &lt;br /&gt;
A converter returning the given value for '''debug reasons'''.&lt;br /&gt;
|- &lt;br /&gt;
| DistanceToStringConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || String || Double || || &lt;br /&gt;
Returns the given value interpreted as '''length'''. Values are returned in kilometers with two comma digits (e.g. 2.84km), values smaller than 1km are returned as meters and ''NaN'' will be returned as ''infinity''. If the value cannot be interpreted, an empty string will be returned.&lt;br /&gt;
|- &lt;br /&gt;
| EqualityToBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Boolean || Object,&amp;lt;br/&amp;gt;String || Object,&amp;lt;br/&amp;gt;String || &lt;br /&gt;
Returns ''true'' if the given value and parameter are '''equal to each other''', ''false'' otherwise.&lt;br /&gt;
|- &lt;br /&gt;
| EqualityToInvertedBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Boolean || Object,&amp;lt;br/&amp;gt;String || Object,&amp;lt;br/&amp;gt;String || &lt;br /&gt;
Returns ''true'' if the given value and parameter are '''not equal to each other''', ''false'' otherwise.&lt;br /&gt;
|- &lt;br /&gt;
| SelectionChangedEventArgsConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || [https://docs.microsoft.com/en-us/dotnet/api/system.windows.controls.selectionchangedeventargs List&amp;lt;wbr/&amp;gt;Selection&amp;lt;wbr/&amp;gt;Changed&amp;lt;wbr/&amp;gt;EventArgs] || [https://help.syncfusion.com/cr/cref_files/xamarin/Syncfusion.SfListView.XForms~Syncfusion.ListView.XForms.ItemSelectionChangedEventArgs.html Item&amp;lt;wbr/&amp;gt;Selection&amp;lt;wbr/&amp;gt;Changed&amp;lt;wbr/&amp;gt;EventArgs] || || &lt;br /&gt;
Converts an Syncfusion '''[https://help.syncfusion.com/cr/cref_files/xamarin/Syncfusion.SfListView.XForms~Syncfusion.ListView.XForms.ItemSelectionChangedEventArgs.html Item&amp;lt;wbr/&amp;gt;Selection&amp;lt;wbr/&amp;gt;Changed&amp;lt;wbr/&amp;gt;EventArgs]''' to a '''[https://docs.microsoft.com/en-us/dotnet/api/system.windows.controls.selectionchangedeventargs List&amp;lt;wbr/&amp;gt;Selection&amp;lt;wbr/&amp;gt;Changed&amp;lt;wbr/&amp;gt;EventArgs]'''. &amp;lt;br/&amp;gt;The use-case of this converter is highly specific.&lt;br /&gt;
|- &lt;br /&gt;
| FilterCriterionToValueConverter || style=&amp;quot;text-align: center;&amp;quot; | ✓ || String || FilterCriterion || || &lt;br /&gt;
Converts a [[Property_Based_Content_Filters|'''FilterCriterion''']] to its value. The functionality is similar to UWP's FilterCriterionToValueConverter.&lt;br /&gt;
|- &lt;br /&gt;
| GuidPropertyValueConverter || style=&amp;quot;text-align: center;&amp;quot; | ✓ || String || Guid || Binding, where source is ContentViewModel || &lt;br /&gt;
Returns the '''first item''' of the parameter's ''Source-ViewModel'' that '''matches the given GUID''' value. If none is found, ''null'' is returned.&lt;br /&gt;
|- &lt;br /&gt;
| IntToColorConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Color || Integer || || &lt;br /&gt;
Converts an ARGB '''integer''' value to a '''color'''. If the value cannot be interpreted, the converter tries to parse the parameter as a ''color'' to return it. If everything fails, ''transparent'' is returned.&lt;br /&gt;
|- &lt;br /&gt;
| ItemCountToBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Boolean || Integer || Integer || &lt;br /&gt;
This converter has a '''property''' to set the '''boolean return value''', called ''LesserOrEqualReturnValue''. This property-value will be returned if the given value is '''smaller than or equal to''' the threshold (parameter, defaults to 0). If the value is '''bigger than''' the threshold, the '''inverted''' ''LesserOrEqualReturnValue'' will be returned.&amp;lt;br/&amp;gt;&lt;br /&gt;
In any other case (like the value cannot be interpreted), ''false'' is returned, so it's a good idea to set the converter's property in a way that the return is only ''true'' if you need it.&lt;br /&gt;
|- &lt;br /&gt;
| ItemCountToOverflowConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || String || Integer || Integer || Creates a '''human-readable text''' indicating '''how many items are available'''. The value will be interpreted as the '''total item count''' and the parameter as '''overflow threshold''' (defaults to 99). &amp;lt;br/&amp;gt;If there are more items than the overflow, the overflow value with a + sign will be returned (e.g. 99+). If not, the value itself will be returned. If everything fails, ''null'' is returned.&lt;br /&gt;
|- &lt;br /&gt;
| NullToBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✓ || Boolean || Object,&amp;lt;br/&amp;gt;String|| || &lt;br /&gt;
''Null'' or an '''empty string''' value get converted to ''true'', and everything else to ''false''.&lt;br /&gt;
|- &lt;br /&gt;
| NullToInvertedBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✓ || Boolean || Object,&amp;lt;br/&amp;gt;String || || &lt;br /&gt;
''Null'' or an '''empty string''' value get converted to ''false'', and everything else to ''true''.&lt;br /&gt;
|- &lt;br /&gt;
| PathToImageSourceValueConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Image Source || String || || &lt;br /&gt;
Reads the '''path''' provided as parameter and creates an '''image source''' from it.&lt;br /&gt;
|- &lt;br /&gt;
| PercentageToProgressConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Double || Integer,&amp;lt;br/&amp;gt;Double || || &lt;br /&gt;
The '''numeric value'''  (int or double), interpreted as '''percentage from 0 to 100''', get converted to a '''progress level'''  (0 to 1). Values outside this range will be contained.&lt;br /&gt;
|- &lt;br /&gt;
| PropertyNameExistsToBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Boolean (Nullable) || ContentViewModel,&amp;lt;br/&amp;gt;IContent || || &lt;br /&gt;
Converts a property to a '''boolean''' based on its '''existence'''. If it exists, ''true'' will be returned, else ''false'' or ''null'' (if something couldn't be properly interpreted).&lt;br /&gt;
|- &lt;br /&gt;
| PropertyNameExistsToInvertedBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Boolean (Nullable) || ContentViewModel,&amp;lt;br/&amp;gt;IContent || || &lt;br /&gt;
Converts a property to a '''boolean''' based on its '''existence'''. If it exists, ''false'' will be returned, else ''true'' or ''null'' (if something couldn't be properly interpreted).&lt;br /&gt;
|- &lt;br /&gt;
| RootAreaTemplateConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || ContentView || Object || || &lt;br /&gt;
If the provided value is '''not null''', the '''UBIKRootArea template''' will be returned.&lt;br /&gt;
|- &lt;br /&gt;
| SelectiveItemToValueConverter || style=&amp;quot;text-align: center;&amp;quot; | ✓ || Boolean,&amp;lt;br/&amp;gt;String,&amp;lt;br/&amp;gt;Integer,&amp;lt;br/&amp;gt;Double,&amp;lt;br/&amp;gt;DateTime,&amp;lt;br/&amp;gt;Guid,&amp;lt;br/&amp;gt;FileReferenceData,&amp;lt;br/&amp;gt;GeoData,&amp;lt;br/&amp;gt;Object || Boolean,&amp;lt;br/&amp;gt;String,&amp;lt;br/&amp;gt;Integer,&amp;lt;br/&amp;gt;Double,&amp;lt;br/&amp;gt;DateTime,&amp;lt;br/&amp;gt;Guid,&amp;lt;br/&amp;gt;FileReferenceData,&amp;lt;br/&amp;gt;GeoData,&amp;lt;br/&amp;gt;Object || Binding, where source is ContentViewModel || &lt;br /&gt;
Converts a '''item''' of a '''selective list''' to its value. If none is found, the passed ''value'' will be returned.&lt;br /&gt;
|- &lt;br /&gt;
| SelectiveListToItemsConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || List of PropertyItems  || IPropertyItem || || &lt;br /&gt;
Returns all items from a selective list.&lt;br /&gt;
|- &lt;br /&gt;
| SfDataSourceConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || DataSource (for ListView) || Double || String (Expression) || &lt;br /&gt;
It's an advanced converter used for '''loading items''' and '''applying filters''' on it. It replaces to ''CollectionToViewConverter'' from the WinX.UWP project. The data source can be directly used with a ''[https://help.syncfusion.com/xamarin/sflistview/overview SfListView]''.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
'''This converter is obsolete!'''&amp;lt;br/&amp;gt;Use '''SfDataSourceExt''' (see [[#Data Source|Data Source]]) instead!&lt;br /&gt;
|- &lt;br /&gt;
| StringContainsToBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Boolean || String || String || &lt;br /&gt;
Returns a '''boolean''' indicating whether the parameter string is included in the value string.&lt;br /&gt;
|- &lt;br /&gt;
| StringContainsToInvertedBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Boolean || String || String || &lt;br /&gt;
Same as the ''StringContainsToBoolConverter'' but with '''inverted output'''.&lt;br /&gt;
|- &lt;br /&gt;
| StringFormatConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || String || Object || String || Allows the creation of a '''nicely formatted ''string'' message''', similar to [https://docs.microsoft.com/en-us/dotnet/api/system.string.format C#'s String.Format method].&amp;lt;br/&amp;gt;The value will be interpreted as the &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{0}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; element, and the parameter is the template string (e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;The total count is: {0}!&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Up to two additional parameters, named ''Parameter1'' and ''Parameter2'', can be defined at the converter declaration. Adding formatting options to the &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{0}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; notation is not possible.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Attention''', using the native '''[https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/data-binding/string-formatting StringFormat]''' option is not only faster, but it also offers more customizability of the value!&amp;lt;br/&amp;gt;&lt;br /&gt;
You might still want to use the ''StringFormatConverter'' in rare cases, though!&lt;br /&gt;
|- &lt;br /&gt;
| ToStringFormatConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || String || Double,&amp;lt;br/&amp;gt;Float,&amp;lt;br/&amp;gt;Integer,&amp;lt;br/&amp;gt;DateTime,&amp;lt;br/&amp;gt;String || String || Converts '''primitives''' or '''[https://docs.microsoft.com/en-us/dotnet/api/system.datetime DateTime]''' to string and allows the application of '''[https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-numeric-format-strings formatting options]''' (as parameter). &amp;lt;br/&amp;gt;Adding a &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; to the end of the format-parameter allows '''[https://docs.microsoft.com/en-us/dotnet/api/system.math.truncate truncation]''' of all decimal places.&lt;br /&gt;
|-&lt;br /&gt;
| TypeNameToBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Boolean || Object || String || Returns ''true'' if the type name of the value is present in the parameter-string (seperated by &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
|- &lt;br /&gt;
| TypeNameToInvertedBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Boolean || Object || String || Inverted ''TypeNameTo&amp;lt;wbr/&amp;gt;BoolConverter''.&lt;br /&gt;
|- &lt;br /&gt;
| DataTemplateItemTemplateSelectorConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || ChildItem&amp;lt;wbr/&amp;gt;Template&amp;lt;wbr/&amp;gt;Selector || String || String || Chooses what '''ChildItem&amp;lt;wbr/&amp;gt;Template&amp;lt;wbr/&amp;gt;Selector''' to return. Having a parameter with the content &amp;quot;Small&amp;quot; returns the small item template selector.&lt;br /&gt;
|- &lt;br /&gt;
| DataTemplateItemsPanelConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || ItemsPanelTemplate || Query&amp;lt;wbr/&amp;gt;Details&amp;lt;wbr/&amp;gt;Page&amp;lt;wbr/&amp;gt;ViewModel || || Chooses what '''ItemPanel&amp;lt;wbr/&amp;gt;Template''' to return. Having a parameter with the content &amp;quot;Small&amp;quot; returns the small item template selector.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client | XAML | Xamarin]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Converters In Xamarin]]&lt;br /&gt;
[[Category:Xamarin|Converters In Xamarin]]&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Managed_App_Configuration&amp;diff=23625</id>
		<title>Managed App Configuration</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Managed_App_Configuration&amp;diff=23625"/>
				<updated>2022-04-25T12:30:22Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: Updated number of max profiles from 9 to 25&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In enterprise environments, there are sometimes hundreds of employee phones centrally managed by some EMM (Enterprise Mobility Management) software. This not only allows to limit the apps available for use (via a company-internal store (&amp;quot;Company App Store&amp;quot;)) and remotely wipe devices (in the case of lost devices and fired employees), it also allows you to remotely set configurations of these apps to ease user experience. There are different types of management, like fully managed phones that belong to the company but also privately-owned phones with a work profile.&lt;br /&gt;
&lt;br /&gt;
Starting with [[Version_4.0_Xamarin| App Version 4.0.0]], the {{UBIK}} Xamarin app will support managed app configuration for configuring profiles. That removes the need to manually copy over a Ubik Profile to every phone and importing it before its users can use Ubik. Historically, there was also the need to deploy the customizing (&amp;quot;XAML&amp;quot;) before the app could be properly used, however, this has been solved already with the help of the [[Deploy_UI_Customizings_(Client)|XAML rollout feature]].  &lt;br /&gt;
&lt;br /&gt;
== Function ==&lt;br /&gt;
The new '''''profile rollout''''' feature allows for the rollout of up to 25 individual [[Settings|Ubik Profiles]]. The configuration supports the [https://appconfig.org/ AppConfig.org] standard, allowing compatibility to almost every EMM software. During the application start, the current configuration values are read and profiles created (with &amp;lt;code&amp;gt;.managed.profile&amp;lt;/code&amp;gt; ending). All profiles created by the system will be updated to the current configuration during the startup phase, allowing recently configured profiles to appear and no longer configured profiles to be removed. Other profiles added to the Ubik application will not be affected by this system (except they have a &amp;lt;code&amp;gt;.managed.profile&amp;lt;/code&amp;gt; ending for some unknown reason). Clearing all profiles also clears the configured profiles, and the app needs to be restarted for them to update.&lt;br /&gt;
&lt;br /&gt;
On Android, the system makes use of the Android Restrictions System. On iOS, the NSUserDefaults System is used. These libraries are native to the system and widely supported.&lt;br /&gt;
&lt;br /&gt;
== Configuration==&lt;br /&gt;
Microsoft Intune is just one of the EMM systems that will work with Ubik. This is the system that Augmensys uses for internal testing. For other EMM systems, the process will be similar.&lt;br /&gt;
&lt;br /&gt;
For Intune, an Application Configuration Policy can be defined. It is possible to limit the scope of this policy to groups, devices, and even device management types. In the Configuration Designer, the desired values can be chosen, but for Ubik, all of them do the same and only differ by the number. For other EMM systems, this might be different, but you should end up with something similar-looking:&lt;br /&gt;
&lt;br /&gt;
[[File:managed-app-configuration.png|thumb|none|750px|Screenshot of creating an App Configuration for Ubik in Microsoft Intune/Endpoint. Note that in the right panel the items to configure can be chosen.|center]]&lt;br /&gt;
&lt;br /&gt;
It is currently possible to define 25 Ubik profiles using this technology.&lt;br /&gt;
&lt;br /&gt;
All that's necessary to get the profile rolled out is to open a profile in your favorite text editor (we recommend Visual Studio Code or Notepad++) and copy the entire content into the configuration value. If your EMM system doesn't want to paste in multi-line strings, use an XML-minifier first.&lt;br /&gt;
&lt;br /&gt;
[[Category:Version 4.0|Managed App Configuration]]&lt;br /&gt;
[[Category:Xamarin|Managed App Configuration]]&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_4.1_(Xamarin)&amp;diff=23402</id>
		<title>Version 4.1 (Xamarin)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_4.1_(Xamarin)&amp;diff=23402"/>
				<updated>2021-12-22T10:52:15Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: SetValueCommand no longer working&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release ==&lt;br /&gt;
&lt;br /&gt;
== Beta ==&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
&lt;br /&gt;
=== 4.0.? on 2021-??-?? {{key press|App Center}} ===&lt;br /&gt;
* The app's default profile is now only generated during app startup when no other profiles are detected.&lt;br /&gt;
* Xamarin Android now supports [[Managed_App_Configuration|managed app configuration]] for rolling out up to 9 Ubik profiles in an enterprise environment.&lt;br /&gt;
* Some security related improvements.&lt;br /&gt;
** The app now informs the web service to terminate the user session upon logout or app closing.&lt;br /&gt;
** The app no longer allows self signed server certificates.&lt;br /&gt;
* The app's entire login page is now customizable.&lt;br /&gt;
** As a result, the old feature which allows customizers to configure the background image of the login page (bg_portrait.png/bg_landscape.png) is removed. Because it only worked for Xamarin.UWP and can now be done with regular XAML customizing.&lt;br /&gt;
* Fixed an issue where unnecessary messages are logged. (&amp;quot;Message is null&amp;quot;)&lt;br /&gt;
* UBIK clients are now able to log all webservice communication related activities (in UBIKWebserviceDebug.log) for better trouble shooting. It can also be turned off using the EnableSyncLogging setting in the profiles. &lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= XAML Notes =&lt;br /&gt;
&lt;br /&gt;
== XAML changes ==&lt;br /&gt;
Since there has been a major UI redesign in this version, quite a lot of changes in XAML code (especially bindings) are involved. We have striven to maintain backward compatibility, but some changes either are simply unavoidable or their long term benefits outweigh the efforts required this one time.&lt;br /&gt;
&lt;br /&gt;
=== Converters ===&lt;br /&gt;
* Under namespace UBIK.CPL.Converters, SelectiveItemToValueConverter is renamed as PropertyValueToSelectiveItemConverter to properly reflect what it does.&lt;br /&gt;
&lt;br /&gt;
=== UBIKContentArea ===&lt;br /&gt;
* Changed from &amp;quot;Properties.Items&amp;quot; to &amp;quot;Properties.VisibleItems&amp;quot; in bindings because Items/AllItems now also include those system/invisible ones that users are not supposed to see.&lt;br /&gt;
&lt;br /&gt;
=== UBIKThemes ===&lt;br /&gt;
* Removed &amp;quot;Content.&amp;quot;, &amp;quot;OwnerModel.&amp;quot; from bindings in DateTemplate &amp;quot;UBIKPropertyItem&amp;quot;.&lt;br /&gt;
* &amp;quot;SetValueCommand&amp;quot;  is no longer available and replaced with &amp;quot;SetPropertyValueCommand&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 4.0 Xamarin]]&lt;br /&gt;
[[Category:Version 4.0|Version 4.0 Xamarin]]&lt;br /&gt;
[[Category:Version 4.0 Xamarin|Version 4.0 Xamarin]]&lt;br /&gt;
[[Category:Xamarin|Version 4.0 Xamarin]]&lt;br /&gt;
&lt;br /&gt;
=== UBIKEditNA ===&lt;br /&gt;
* Prefixed bindings &amp;quot;EnableNAOption&amp;quot; &amp;amp; &amp;quot;NotApplicable&amp;quot; with &amp;quot;PropertyViewModel.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Editor related templates ===&lt;br /&gt;
{{Hint|The changes are quite extensive and, therefore, we recommended you taking the default templates from the app and re-customize them from there.}}&lt;br /&gt;
&lt;br /&gt;
The affected list of templates include: UBIKEditDateTime, UBIKEditDouble, UBIKEditInt, UBIKEditGuid, UBIKEditGeo, UBIKEditBool, UBIKEditString.&lt;br /&gt;
* Changed from &amp;quot;PropertyItem&amp;quot; to &amp;quot;PropertyViewModel&amp;quot; in bindings;&lt;br /&gt;
* Prefixed bindings &amp;quot;EnableNAOption&amp;quot;, &amp;quot;NotApplicable&amp;quot;, &amp;quot;Unit&amp;quot; &amp;amp; &amp;quot;ShowComboBox&amp;quot; with &amp;quot;PropertyViewModel.&amp;quot;;&lt;br /&gt;
* Changed from &amp;quot;PropertyValue&amp;quot; to &amp;quot;PropertyViewModel.ValueItem.PropertyValue&amp;quot; in bindings;&lt;br /&gt;
* Prefixed binding &amp;quot;FilterQueryResults.Items&amp;quot; with &amp;quot;PropertyViewModel.&amp;quot;; (UBIKEditGuid)&lt;br /&gt;
* Changed from &amp;quot;ViewGuidObjectCommand&amp;quot; to &amp;quot;NavigateToGuidCommand&amp;quot;.  (UBIKEditGuid)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Category/Version2|{{PAGENAME}}}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 4.0 Xamarin]]&lt;br /&gt;
[[Category:Version 4.0|Version 4.0 Xamarin]]&lt;br /&gt;
[[Category:Xamarin|Version 4.0 Xamarin]]&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Service_Logins&amp;diff=23341</id>
		<title>Service Logins</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Service_Logins&amp;diff=23341"/>
				<updated>2021-11-11T14:50:51Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Service Logins allow for easy management of credentials to third-party systems. They were introduced in server version 3.6. {{Version/ServerSince|3.6.0}} &lt;br /&gt;
&lt;br /&gt;
== Problem ==&lt;br /&gt;
Service Logins are an easy solution to one problem, that occurs almost every time an interface to a third-party system is required: Where to put the credentials? If the interface makes use of Windows Authentication, it's no issue, as &amp;lt;code&amp;gt;WebClient.UseDefaultCredentials&amp;lt;/code&amp;gt; will make use of the user the program/service opened. However, in almost all other cases, there's no way around either putting the credentials into the custom code (insecure, as it can be decompiled rather easily...)  or creating properties on some MetaClass (that will be plain-text). &amp;lt;code&amp;gt;EncryptedText&amp;lt;/code&amp;gt; properties won't work, as there's no way of getting to the plain-text password (that's required for the login to the external system) without using Reflection.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&amp;lt;code&amp;gt;SERVICE_LOGIN&amp;lt;/code&amp;gt; is the root class of the system, deriving directly from &amp;lt;code&amp;gt;SYSTEM_OBJECT&amp;lt;/code&amp;gt;. This MetaClass and its derivates are located in the namespace &amp;lt;code&amp;gt;System.Main.ServiceLogin&amp;lt;/code&amp;gt;. In addition to that, there are derivates for the following derivates located in the namespace &amp;lt;code&amp;gt;Custom.Main.ServiceLogin&amp;lt;/code&amp;gt;. These are intended to be used by customizers because of their ease of access by code (same class name as MetaClass name).&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''MetaClass'''&lt;br /&gt;
|'''Properties'''&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;code&amp;gt;SERVICE_LOGIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
''No Properties''&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;code&amp;gt;TOKEN_AUTH_SERVICE_LOGIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
* &amp;lt;code&amp;gt;TOKEN&amp;lt;/code&amp;gt; *&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;code&amp;gt;BASIC_AUTH_SERVICE_LOGIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
* &amp;lt;code&amp;gt;USERNAME&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;PASSWORD&amp;lt;/code&amp;gt; *&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;code&amp;gt;WINDOWS_AUTH_SERVICE_LOGIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
* &amp;lt;code&amp;gt;DOMAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;USERNAME&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;PASSWORD&amp;lt;/code&amp;gt; *&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;code&amp;gt;OAUTH2_AUTH_SERVICE_LOGIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
* &amp;lt;code&amp;gt;TENANT_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;CLIENT_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;CLIENT_SECRET&amp;lt;/code&amp;gt; *&lt;br /&gt;
* &amp;lt;code&amp;gt;CLIENT_CERTIFICATE&amp;lt;/code&amp;gt; *&lt;br /&gt;
* &amp;lt;code&amp;gt;IDP_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;GRANT_TYPE&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;SCOPE&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The fields with the asterisk (*) are password fields that encrypt the text and store the result in the database. To get the decrypted counterpart, the C# field &amp;lt;code&amp;gt;&amp;lt;SECRETNAME&amp;gt;_DECRYPTED&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;TOKEN_DECRYPTED&amp;lt;/code&amp;gt;) needs to be accessed. All of the ServiceLogin-related properties can be accessed via custom code (or interface code, respectively) either using &amp;lt;code&amp;gt;PascalCase&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;SCREAMING_SNAKE_CASE&amp;lt;/code&amp;gt;.&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Service_Logins&amp;diff=23339</id>
		<title>Service Logins</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Service_Logins&amp;diff=23339"/>
				<updated>2021-11-11T14:49:46Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: MKR moved page ServiceLogins to Service Logins&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Service Logins allow for easy management of credentials to third-party systems.&lt;br /&gt;
&lt;br /&gt;
== Problem ==&lt;br /&gt;
Service Logins are an easy solution to one problem, that occurs almost every time an interface to a third-party system is required: Where to put the credentials? If the interface makes use of Windows Authentication, it's no issue, as &amp;lt;code&amp;gt;WebClient.UseDefaultCredentials&amp;lt;/code&amp;gt; will make use of the user the program/service opened. However, in almost all other cases, there's no way around either putting the credentials into the custom code (insecure, as it can be decompiled rather easily...)  or creating properties on some MetaClass (that will be plain-text). &amp;lt;code&amp;gt;EncryptedText&amp;lt;/code&amp;gt; properties won't work, as there's no way of getting to the plain-text password (that's required for the login to the external system) without using Reflection.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&amp;lt;code&amp;gt;SERVICE_LOGIN&amp;lt;/code&amp;gt; is the root class of the system, deriving directly from &amp;lt;code&amp;gt;SYSTEM_OBJECT&amp;lt;/code&amp;gt;. This MetaClass and its derivates are located in the namespace &amp;lt;code&amp;gt;System.Main.ServiceLogin&amp;lt;/code&amp;gt;. In addition to that, there are derivates for the following derivates located in the namespace &amp;lt;code&amp;gt;Custom.Main.ServiceLogin&amp;lt;/code&amp;gt;. These are intended to be used by customizers because of their ease of access by code (same class name as MetaClass name).&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''MetaClass'''&lt;br /&gt;
|'''Properties'''&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;code&amp;gt;SERVICE_LOGIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
''No Properties''&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;code&amp;gt;TOKEN_AUTH_SERVICE_LOGIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
* &amp;lt;code&amp;gt;TOKEN&amp;lt;/code&amp;gt; *&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;code&amp;gt;BASIC_AUTH_SERVICE_LOGIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
* &amp;lt;code&amp;gt;USERNAME&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;PASSWORD&amp;lt;/code&amp;gt; *&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;code&amp;gt;WINDOWS_AUTH_SERVICE_LOGIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
* &amp;lt;code&amp;gt;DOMAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;USERNAME&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;PASSWORD&amp;lt;/code&amp;gt; *&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;code&amp;gt;OAUTH2_AUTH_SERVICE_LOGIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
* &amp;lt;code&amp;gt;TENANT_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;CLIENT_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;CLIENT_SECRET&amp;lt;/code&amp;gt; *&lt;br /&gt;
* &amp;lt;code&amp;gt;CLIENT_CERTIFICATE&amp;lt;/code&amp;gt; *&lt;br /&gt;
* &amp;lt;code&amp;gt;IDP_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;GRANT_TYPE&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;SCOPE&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The fields with the asterisk (*) are password fields that encrypt the text and store the result in the database. To get the decrypted counterpart, the C# field &amp;lt;code&amp;gt;&amp;lt;SECRETNAME&amp;gt;_DECRYPTED&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;TOKEN_DECRYPTED&amp;lt;/code&amp;gt;) needs to be accessed. All of the ServiceLogin-related properties can be accessed via custom code (or interface code, respectively) either using &amp;lt;code&amp;gt;PascalCase&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;SCREAMING_SNAKE_CASE&amp;lt;/code&amp;gt;.&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=ServiceLogins&amp;diff=23340</id>
		<title>ServiceLogins</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=ServiceLogins&amp;diff=23340"/>
				<updated>2021-11-11T14:49:46Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: MKR moved page ServiceLogins to Service Logins&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Service Logins]]&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Service_Logins&amp;diff=23338</id>
		<title>Service Logins</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Service_Logins&amp;diff=23338"/>
				<updated>2021-11-11T14:49:01Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Service Logins allow for easy management of credentials to third-party systems.&lt;br /&gt;
&lt;br /&gt;
== Problem ==&lt;br /&gt;
Service Logins are an easy solution to one problem, that occurs almost every time an interface to a third-party system is required: Where to put the credentials? If the interface makes use of Windows Authentication, it's no issue, as &amp;lt;code&amp;gt;WebClient.UseDefaultCredentials&amp;lt;/code&amp;gt; will make use of the user the program/service opened. However, in almost all other cases, there's no way around either putting the credentials into the custom code (insecure, as it can be decompiled rather easily...)  or creating properties on some MetaClass (that will be plain-text). &amp;lt;code&amp;gt;EncryptedText&amp;lt;/code&amp;gt; properties won't work, as there's no way of getting to the plain-text password (that's required for the login to the external system) without using Reflection.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&amp;lt;code&amp;gt;SERVICE_LOGIN&amp;lt;/code&amp;gt; is the root class of the system, deriving directly from &amp;lt;code&amp;gt;SYSTEM_OBJECT&amp;lt;/code&amp;gt;. This MetaClass and its derivates are located in the namespace &amp;lt;code&amp;gt;System.Main.ServiceLogin&amp;lt;/code&amp;gt;. In addition to that, there are derivates for the following derivates located in the namespace &amp;lt;code&amp;gt;Custom.Main.ServiceLogin&amp;lt;/code&amp;gt;. These are intended to be used by customizers because of their ease of access by code (same class name as MetaClass name).&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''MetaClass'''&lt;br /&gt;
|'''Properties'''&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;code&amp;gt;SERVICE_LOGIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
''No Properties''&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;code&amp;gt;TOKEN_AUTH_SERVICE_LOGIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
* &amp;lt;code&amp;gt;TOKEN&amp;lt;/code&amp;gt; *&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;code&amp;gt;BASIC_AUTH_SERVICE_LOGIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
* &amp;lt;code&amp;gt;USERNAME&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;PASSWORD&amp;lt;/code&amp;gt; *&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;code&amp;gt;WINDOWS_AUTH_SERVICE_LOGIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
* &amp;lt;code&amp;gt;DOMAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;USERNAME&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;PASSWORD&amp;lt;/code&amp;gt; *&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;code&amp;gt;OAUTH2_AUTH_SERVICE_LOGIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
* &amp;lt;code&amp;gt;TENANT_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;CLIENT_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;CLIENT_SECRET&amp;lt;/code&amp;gt; *&lt;br /&gt;
* &amp;lt;code&amp;gt;CLIENT_CERTIFICATE&amp;lt;/code&amp;gt; *&lt;br /&gt;
* &amp;lt;code&amp;gt;IDP_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;GRANT_TYPE&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;SCOPE&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The fields with the asterisk (*) are password fields that encrypt the text and store the result in the database. To get the decrypted counterpart, the C# field &amp;lt;code&amp;gt;&amp;lt;SECRETNAME&amp;gt;_DECRYPTED&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;TOKEN_DECRYPTED&amp;lt;/code&amp;gt;) needs to be accessed. All of the ServiceLogin-related properties can be accessed via custom code (or interface code, respectively) either using &amp;lt;code&amp;gt;PascalCase&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;SCREAMING_SNAKE_CASE&amp;lt;/code&amp;gt;.&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Service_Logins&amp;diff=23337</id>
		<title>Service Logins</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Service_Logins&amp;diff=23337"/>
				<updated>2021-11-11T14:48:03Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Service Logins allow for easy management of credentials to third-party systems.&lt;br /&gt;
&lt;br /&gt;
== Problem ==&lt;br /&gt;
Service Logins are an easy solution to one problem, that occurs almost every time an interface to a third-party system is required: Where to put the credentials? If the interface makes use of Windows Authentication, it's no issue, as &amp;lt;code&amp;gt;WebClient.UseDefaultCredentials&amp;lt;/code&amp;gt; will make use of the user the program/service opened. However, in almost all other cases, there's no way around either putting the credentials into the custom code (insecure, as it can be decompiled rather easily...)  or creating properties on some MetaClass (that will be plain-text). &amp;lt;code&amp;gt;EncryptedText&amp;lt;/code&amp;gt; properties won't work, as there's no way of getting to the plain-text password (that's required for the login to the external system) without using Reflection.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&amp;lt;code&amp;gt;SERVICE_LOGIN&amp;lt;/code&amp;gt; is the root class of the system, deriving directly from &amp;lt;code&amp;gt;SYSTEM_OBJECT&amp;lt;/code&amp;gt;. This MetaClass and its derivates are located in the namespace &amp;lt;code&amp;gt;System.Main.ServiceLogin&amp;lt;/code&amp;gt;. In addition to that, there are derivates for the following derivates located in the namespace &amp;lt;code&amp;gt;Custom.Main.ServiceLogin&amp;lt;/code&amp;gt;. These are intended to be used by customizers because of their ease of access by code (same class name as MetaClass name).&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''MetaClass'''&lt;br /&gt;
|'''Properties'''&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;code&amp;gt;SERVICE_LOGIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
''No Properties''&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;code&amp;gt;TOKEN_AUTH_SERVICE_LOGIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
* &amp;lt;code&amp;gt;TOKEN&amp;lt;/code&amp;gt; *&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;code&amp;gt;BASIC_AUTH_SERVICE_LOGIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
* &amp;lt;code&amp;gt;USERNAME&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;PASSWORD&amp;lt;/code&amp;gt; *&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;code&amp;gt;WINDOWS_AUTH_SERVICE_LOGIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
* &amp;lt;code&amp;gt;DOMAIN&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;USERNAME&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;PASSWORD&amp;lt;/code&amp;gt; *&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;code&amp;gt;OAUTH2_AUTH_SERVICE_LOGIN&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
* &amp;lt;code&amp;gt;TENANT_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;CLIENT_ID&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;CLIENT_SECRET&amp;lt;/code&amp;gt; *&lt;br /&gt;
* &amp;lt;code&amp;gt;CLIENT_CERTIFICATE&amp;lt;/code&amp;gt; *&lt;br /&gt;
* &amp;lt;code&amp;gt;IDP_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;GRANT_TYPE&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;SCOPE&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The fields with the asterisk (*) are password fields that encrypt the text and store the result in the database. To get the decrypted counterpart, the C# field &amp;lt;SECRETNAME&amp;gt;_DECRYPTED (e.g. TOKEN_DECRYPTED) needs to be accessed. All of the ServiceLogin-related properties can be accessed via custom code (or interface code, respectively) either using PascalCase or SCREAMING_SNAKE_CASE.&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Service_Logins&amp;diff=23336</id>
		<title>Service Logins</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Service_Logins&amp;diff=23336"/>
				<updated>2021-11-11T13:01:02Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: Created page with &amp;quot;Service Logins allow for easy management of credentials to third-party systems.  == Problem == Service Logins are an easy solution to one problem, that occurs almost every tim...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Service Logins allow for easy management of credentials to third-party systems.&lt;br /&gt;
&lt;br /&gt;
== Problem ==&lt;br /&gt;
Service Logins are an easy solution to one problem, that occurs almost every time an interface to a third-party system is required: Where to put the credentials? If the interface makes use of Windows Authentication, it's no issue, as &amp;lt;code&amp;gt;WebClient.UseDefaultCredentials&amp;lt;/code&amp;gt; will make use of the user the program/service opened. However, in almost all other cases, there's no way around either putting the credentials into the custom code (insecure, as it can be decompiled rather easily...)  or creating properties on some MetaClass (that will be plain-text). &amp;lt;code&amp;gt;EncryptedText&amp;lt;/code&amp;gt; properties won't work, as there's no way of getting to the plain-text password (that's required for the login to the external system) without using Reflection.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
`SERVICE_LOGIN` is the root class of the system, deriving directly from `SYSTEM_OBJECT`. Below that, there are the following derivates:&lt;br /&gt;
* TOKEN_AUTH_SERVICE_LOGIN&lt;br /&gt;
  * TOKEN* &lt;br /&gt;
* BASIC_AUTH_SERVICE_LOGIN&lt;br /&gt;
  * USERNAME&lt;br /&gt;
  * PASSWORD* &lt;br /&gt;
* WINDOWS_AUTH_SERVICE_LOGIN&lt;br /&gt;
  * USERNAME&lt;br /&gt;
  * PASSWORD*&lt;br /&gt;
  * DOMAIN &lt;br /&gt;
* OAUTH2_AUTH_SERVICE_LOGIN&lt;br /&gt;
  * TENANT_ID&lt;br /&gt;
  * CLIENT_ID&lt;br /&gt;
  * CLIENT_SECRET*&lt;br /&gt;
  * CLIENT_CERTIFICATE*&lt;br /&gt;
  * IDP_URL&lt;br /&gt;
  * GRANT_TYPE&lt;br /&gt;
  * SCOPE&lt;br /&gt;
&lt;br /&gt;
The fields with the asterisk (*) are password fields that encrypt the text and store the result in the database. To get the decrypted counterpart, the C# field &amp;lt;SECRETNAME&amp;gt;_DECRYPTED (e.g. TOKEN_DECRYPTED) needs to be accessed.&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_3.6_(Server)&amp;diff=23335</id>
		<title>Version 3.6 (Server)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_3.6_(Server)&amp;diff=23335"/>
				<updated>2021-11-11T12:33:30Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: Added Service Logins to release notes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable sortable&amp;quot; | width = &amp;quot;300&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version !! Release Date&lt;br /&gt;
|- &lt;br /&gt;
| 3.6.0 || 2021.??.??&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Initial Release =&lt;br /&gt;
=== New features ===&lt;br /&gt;
* {{UBIK}} View Items provide the possibility to configure the data that should be (pre)loaded by a View when initiating a View Cache. Using this mechanism gives the customizer a very powerful instrument to tailor the preloading behavior for project-specific needs.&lt;br /&gt;
* {{UBIK}} View Cache Launcher has a possibility to configure a timespan in which the launcher stays inactive (See [[View_Cache_Launcher]]).&lt;br /&gt;
* {{UBIK}} Contexts can derive from each other now. Using this technique can reduce the amount of necessary work when configuring ACM and much more important, will increase maintainability.&lt;br /&gt;
* {{UBIK}} Views can derive from each other now. Using this technique can reduce the amount of necessary work when configuring Views and much more important, will increase maintainability.&lt;br /&gt;
* {{UBIK}} provides the possibility to distribute customizing related binaries via the database now. They do not need to be stored on a server file share anymore.&lt;br /&gt;
* {{UBIK}} supports Shape files for for representing geospatial vector data on the map now (https://wiki.openstreetmap.org/wiki/Shapefiles)&lt;br /&gt;
** [[SYSCLS_MAPSHAPE|Map Shape Classification Object]]&lt;br /&gt;
* {{UBIK}} supports the configuration of objects being automatically synced (make offline available) on clients&lt;br /&gt;
** [[SYSCLS_OFFLINE_SYNC_CONFIGURATION|Offline Sync Configuration Classification Object]]&lt;br /&gt;
* Improved Group Rights Evaluation&lt;br /&gt;
** WebServer Setting UBIK.Service.GroupRightsUpdateIntervall provides the possibility to configure the reload interval fully independent from the Validity Periode now&lt;br /&gt;
** A possibility to trigger a reload of the UserGroups, Logins, and their rights via Custom Code is provided now.&lt;br /&gt;
** The reload of  UserGroups, Logins, and their rights is managed in the background now, which improves the WebServer performance&lt;br /&gt;
* {{UBIK}} provides a set of new features to provide the client with additional information about the current Login&lt;br /&gt;
** {{UBIK}} Web Service provides the possibility to fetch detailed information about the current login &lt;br /&gt;
** If configured, the current login is delivered as part of the infrastructure. The data can be easily be used by the client then&lt;br /&gt;
** The Classification [[SYSCLS_LOGIN|Login Classification]] identifies logins as such. The classification does not insist on the Passwordhash Property anymore.&lt;br /&gt;
* {{UBIK}} supports clients working with and sending data from different time zones&lt;br /&gt;
** A database setting gives the possibility to configure the timezone data - values are stored in the database (downward compatibility)&lt;br /&gt;
* Added [[Data_Import_Service]], a new externally triggered customizable {{UBIK}} Interface &lt;br /&gt;
* {{UBIK}} provides a new classification to define documents as media documents (photo, video, audio)&lt;br /&gt;
** [[SYSCLS_MEDIAFILEDOCUMENT|Media Document Classification]]&lt;br /&gt;
* {{UBIK}} Webservices provides a data import service for standardized imports now.&lt;br /&gt;
* UBIK supports the definition of Logins being limited to login via specific Operation Systems (e.g. an Android User can only login using an Android device but cannot log in using Windows or iOS)&lt;br /&gt;
* Extended the {{UBIK}} [[OSIPI_(Plugin)|OSIPI Plugin]] to be able to read data from the [https://docs.osisoft.com/bundle/ocs/page/ocs-content-portal-overview.html OSIsoft Cloud Services (OCS)].&lt;br /&gt;
* There is a new customizable event &amp;quot;OnBeforeRevertUnsavedChanges&amp;quot; which is triggered just before unsaved changes of one object get reverted&lt;br /&gt;
* UBIK Interface management provdies a possibility to schedule the execution of an interface task now&lt;br /&gt;
* {{UBIK}} supports to the change the type (MetaClass) of an instance event if it was already created. This provides a full set of new possibilities for the customizing as well as being able to react on new/changed project requirements&lt;br /&gt;
* {{UBIK}} now provides [[ServiceLogins]], a solution for managing service credentials to third-party systems easily and securely.&lt;br /&gt;
&lt;br /&gt;
[[Category:Version 3.6|Version 3.6(Server)]]&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
* A problem with autonomous properties not being filled when performing a branch download is solved now.&lt;br /&gt;
* Relation Editor uses the correct Icons when displaying MetaProperties now (consistent with Details View).&lt;br /&gt;
* DisplayList uses the correct Icons when displaying MetaProperties now.&lt;br /&gt;
* Having more than 500 MetaProperties in the database caused an irritating issue when trying to set the MetaProxy Property Target. This issue is solved now.&lt;br /&gt;
* System Selective Lists can be sent to the client now.&lt;br /&gt;
* A bug in providing Childowner - Info in combination with an active ViewCache is fixed now.&lt;br /&gt;
* Customized Property Values do not interfere with the change of properties on the Web Service anymore.&lt;br /&gt;
* A bug with incorrect ClassType in the NUMERIC_SEQUENCE instance is fixed now.&lt;br /&gt;
* An issue with remaining MetaProperties (in the Sandbox-table) after Metaclass is released is fixed now.&lt;br /&gt;
* Sequential (MRO) Tasks forward their progress to their owners correctly now&lt;br /&gt;
* A potential problem occuring during the start UBIK.Studio was fixed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Enhancements ===&lt;br /&gt;
* OPC/UA Live Values do support Attributes now&lt;br /&gt;
* The Login method persists Device Ids (sent from the clients) in UBIK now&lt;br /&gt;
* UBIK provides the possibility to inject your own Credentials Authentication mechanism now. This opens UBIK to use any user authentication system in the backend.&lt;br /&gt;
* UBIK uses a new logging solution. See [[Serilog]] for details.&lt;br /&gt;
* SQL Logging mechanism is easier to enable and the entries are extended showing&lt;br /&gt;
** Elapsed time&lt;br /&gt;
** Affected records&lt;br /&gt;
** Transaction start and end&lt;br /&gt;
** Occurred errors&lt;br /&gt;
* The UBIK Kernel allows deploying a locally staged customizing (without having the need to recompile it first) now.&lt;br /&gt;
* UBIK WebService provides detailed information about View Cache data including its loading performance&lt;br /&gt;
* Compiling the customizing does not copy symbol files to the project share anymore&lt;br /&gt;
* Staging (local compile) does not create a symbol file for the UI Customizing anymore.&lt;br /&gt;
* Staging (local compile) the customizing provides a symbol and the source file now. This is a prerequisite for debugging the customizing.&lt;br /&gt;
* Internal optimizations reduce the number of database accesses by far. This results in higher performance.&lt;br /&gt;
* UBIK uses Global error handling&lt;br /&gt;
* The UBIK Hotspotting Module supports processing new pdf Annotations now as well.&lt;br /&gt;
* The UBIK Hotspotting Module provides a new API for easing the processing of data.&lt;br /&gt;
* The UBIK Hotspotting Module triggers a Thumbnail update of the changed documents now.&lt;br /&gt;
* More performant object saving.&lt;br /&gt;
* Update mechanism provide LDAP System Metaclasses and their properties now.&lt;br /&gt;
*  The Ubik Interface Module Excel provides workflow activities to import data from MS Excel files.&lt;br /&gt;
* UBIK Clients terminate their tokens when logging out now (erroneous SessionManagement).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Build History Web Service =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Build History UBIK.Studio =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Build History UBIK.Plugins =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Category/Version2|{{PAGENAME}}}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Version 3.6|Version 3.6(Server)]]&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_4.1_(Xamarin)&amp;diff=23334</id>
		<title>Version 4.1 (Xamarin)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_4.1_(Xamarin)&amp;diff=23334"/>
				<updated>2021-11-11T12:26:05Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release ==&lt;br /&gt;
&lt;br /&gt;
== Beta ==&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
&lt;br /&gt;
=== 4.0.? on 2021-??-?? {{key press|App Center}} ===&lt;br /&gt;
* The app's default profile is now only generated during app startup when no other profiles are detected.&lt;br /&gt;
* Xamarin Android now supports [[Managed_App_Configuration|managed app configuration]] for rolling out up to 9 Ubik profiles in an enterprise environment.&lt;br /&gt;
* Some security related improvements.&lt;br /&gt;
** The app now informs the web service to terminate the user session upon logout or app closing.&lt;br /&gt;
** The app no longer allows self signed server certificates.&lt;br /&gt;
* The app's entire login page is now customizable.&lt;br /&gt;
** As a result, the old feature which allows customizers to configure the background image of the login page (bg_portrait.png/bg_landscape.png) is removed. Because it only worked for Xamarin.UWP and can now be done with regular XAML customizing.&lt;br /&gt;
* Fixed an issue where unnecessary messages are logged. (&amp;quot;Message is null&amp;quot;)&lt;br /&gt;
* UBIK clients are now able to log all webservice communication related activities (in UBIKWebserviceDebug.log) for better trouble shooting. It can also be turned off using the EnableSyncLogging setting in the profiles. &lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= XAML Notes =&lt;br /&gt;
&lt;br /&gt;
== XAML changes ==&lt;br /&gt;
Since there has been a major UI redesign in this version, quite a lot of changes in XAML code (especially bindings) are involved. We have striven to maintain backward compatibility, but some changes either are simply unavoidable or their long term benefits outweigh the efforts required this one time.&lt;br /&gt;
&lt;br /&gt;
=== Converters ===&lt;br /&gt;
* Under namespace UBIK.CPL.Converters, SelectiveItemToValueConverter is renamed as PropertyValueToSelectiveItemConverter to properly reflect what it does.&lt;br /&gt;
&lt;br /&gt;
=== UBIKContentArea ===&lt;br /&gt;
* Changed from &amp;quot;Properties.Items&amp;quot; to &amp;quot;Properties.VisibleItems&amp;quot; in bindings because Items/AllItems now also include those system/invisible ones that users are not supposed to see.&lt;br /&gt;
&lt;br /&gt;
=== UBIKThemes ===&lt;br /&gt;
* Removed &amp;quot;Content.&amp;quot;, &amp;quot;OwnerModel.&amp;quot; from bindings in DateTemplate &amp;quot;UBIKPropertyItem&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== UBIKEditNA ===&lt;br /&gt;
* Prefixed bindings &amp;quot;EnableNAOption&amp;quot; &amp;amp; &amp;quot;NotApplicable&amp;quot; with &amp;quot;PropertyViewModel.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Editor related templates ===&lt;br /&gt;
{{Hint|The changes are quite extensive and, therefore, we recommended you taking the default templates from the app and re-customize them from there.}}&lt;br /&gt;
&lt;br /&gt;
The affected list of templates include: UBIKEditDateTime, UBIKEditDouble, UBIKEditInt, UBIKEditGuid, UBIKEditGeo, UBIKEditBool, UBIKEditString.&lt;br /&gt;
* Changed from &amp;quot;PropertyItem&amp;quot; to &amp;quot;PropertyViewModel&amp;quot; in bindings;&lt;br /&gt;
* Prefixed bindings &amp;quot;EnableNAOption&amp;quot;, &amp;quot;NotApplicable&amp;quot;, &amp;quot;Unit&amp;quot; &amp;amp; &amp;quot;ShowComboBox&amp;quot; with &amp;quot;PropertyViewModel.&amp;quot;;&lt;br /&gt;
* Changed from &amp;quot;PropertyValue&amp;quot; to &amp;quot;PropertyViewModel.ValueItem.PropertyValue&amp;quot; in bindings;&lt;br /&gt;
* Prefixed binding &amp;quot;FilterQueryResults.Items&amp;quot; with &amp;quot;PropertyViewModel.&amp;quot;; (UBIKEditGuid)&lt;br /&gt;
* Changed from &amp;quot;ViewGuidObjectCommand&amp;quot; to &amp;quot;NavigateToGuidCommand&amp;quot;.  (UBIKEditGuid)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Category/Version2|{{PAGENAME}}}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 4.0 Xamarin]]&lt;br /&gt;
[[Category:Version 4.0|Version 4.0 Xamarin]]&lt;br /&gt;
[[Category:Xamarin|Version 4.0 Xamarin]]&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=List_of_Versions&amp;diff=23333</id>
		<title>List of Versions</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=List_of_Versions&amp;diff=23333"/>
				<updated>2021-11-10T10:48:34Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: Updated future versions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:IC_MainPage-20.png]] '''Future versions'''&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;table&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
{{Item/Version|2022-??-??| [[Version_4.0_Xamarin]]}}&lt;br /&gt;
{{Item/Version|2022-??-??| {{Version/WinX|4.0}}}}&lt;br /&gt;
{{Item/Version|2022-??-??| {{Version/Server|4.0}}}}&lt;br /&gt;
{{Item/Version|2022-??-??| {{Version/Server|3.6}}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Check mark}} '''Released versions'''&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;table&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
{{Item/Version|2021-05-31| [[Version_1.2_Xamarin]]}}&lt;br /&gt;
{{Item/Version|2021-04-23| {{Version/WinX|3.8}}}}&lt;br /&gt;
{{Item/Version|2020-11-12| [[Version_1.1_Xamarin]]}}&lt;br /&gt;
{{Item/Version|2020-04-09| {{Version/Server|3.5.0}}}}&lt;br /&gt;
{{Item/Version|2020-03-27| {{Version/WinX|3.7}}}}&lt;br /&gt;
{{Item/Version|2020-02-13| {{Version/WinX|3.6}}}}&lt;br /&gt;
{{Item/Version|2019-11-04| [[Version_1.0_(Xamarin.iOS)]]}}&lt;br /&gt;
{{Item/Version|2019-10-21| [[Version_1.0_(Xamarin.Android)]]}}&lt;br /&gt;
{{Item/Version|2019-04-30| {{Version/WinX|3.5}}}}&lt;br /&gt;
{{Item/Version|2018-12-10| {{Version/Server|2.6.3}}}}&lt;br /&gt;
{{Item/Version|2018-12-10| {{Version/WinX|3.4}}}}&lt;br /&gt;
{{Item/Version|2018-10-24| {{Version/WinX|3.3}}}}&lt;br /&gt;
{{Item/Version|2018-07-06| {{Version/WinX|3.2.0}}}}&lt;br /&gt;
{{Item/Version|2018-04-19| {{Version/Android|3.0.0}}}}&lt;br /&gt;
{{Item/Version|2018-04-04| {{Version/Server|2.6.2}}}}&lt;br /&gt;
{{Item/Version|2018-03-08| {{Version/Android|2.6.0}}}}&lt;br /&gt;
{{Item/Version|2018-01-23| {{Version/WinX|3.1.0}}}}&lt;br /&gt;
{{Item/Version|2017-10-13| {{Version/WinX|3.0.0}}}}&lt;br /&gt;
{{Item/Version|2017-06-14| {{Version/Server|2.6.0}}}}&lt;br /&gt;
{{Item/Version|2017-02-13| {{Version/WinX|2.6.0}}}}&lt;br /&gt;
{{Item/Version|2016-07-21| {{Version/Android|2.5.5}}}}&lt;br /&gt;
{{Item/Version|2016-07-21| {{Version/Android|2.5.4}}}}&lt;br /&gt;
{{Item/Version|2016-04-01| {{Version/Android|2.5.3}}}}&lt;br /&gt;
{{Item/Version|2016-05-13| {{Version/WinX|2.5.2}}}}&lt;br /&gt;
{{Item/Version|2016-01-27| {{Version/Android|2.5.2}}}}&lt;br /&gt;
{{Item/Version|2015-11-25| {{Version/Web|2.5.0}}}}&lt;br /&gt;
{{Item/Version|2015-11-20| {{Version/Android|2.5.1}}}}&lt;br /&gt;
{{Item/Version|2015-11-17| {{Version/Android|2.5.0}}}}&lt;br /&gt;
{{Item/Version|2015-10-15| {{Version/Server|2.5.0}}}}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
{{Item/Version|2015-07-09| {{Version/Android|2.4.6}}}}&lt;br /&gt;
{{Item/Version|2015-06-24| {{Version/Android|2.4.5}}}}&lt;br /&gt;
{{Item/Version|2015-05-21| {{Version/Server|2.4.3}}}}&lt;br /&gt;
{{Item/Version|2015-04-23| {{Version/Android|2.4.4}}}}&lt;br /&gt;
{{Item/Version|2015-04-08| {{Version/Android|2.4.3}}}}&lt;br /&gt;
{{Item/Version|2015-03-20| {{Version/Android|2.4.2}}&amp;lt;br /&amp;gt;{{Version/Server|2.4.2}}}}&lt;br /&gt;
{{Item/Version|2015-03-12| {{Version/Server|2.4.1}}}}&lt;br /&gt;
{{Item/Version|2015-03-04| {{Version/Android|2.4.1}}}}&lt;br /&gt;
{{Item/Version|2014-12-05| {{Version/Android|2.4.1}}&amp;lt;br /&amp;gt;{{Version/Server|2.4.0}}}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[File:IC_MainPage-20.png]] '''Available Release Candidates'''&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;table&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
{{Item/Version|2020-01-01| {{Version/Android|3.1.0}}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
[[File:IC_MainPage-21.png]] '''[[:Category:Release notes|Previous versions]]'''&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Data_Import_Service&amp;diff=23307</id>
		<title>Data Import Service</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Data_Import_Service&amp;diff=23307"/>
				<updated>2021-09-29T11:45:00Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: /* Web Service */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Version/ServerSince|3.6.0}}&lt;br /&gt;
&lt;br /&gt;
The Data Import Service is a interface consisting of a web service, hosted on an IIS service, which takes data pushed to Ubik and imports it efficiently.  The heart of the service is a shared module called the Import System, which can be used to import data from whatever source they come, easing future interface developments. The system is highly customizable via Ubik Plugins to fit most use cases.&lt;br /&gt;
&lt;br /&gt;
In detail, the service consists of three major parts:&lt;br /&gt;
* Web Service&lt;br /&gt;
** Customizable Authentication Mechanism&lt;br /&gt;
* Customizable Import Mechanism&lt;br /&gt;
&lt;br /&gt;
== Web Service ==&lt;br /&gt;
The Web Service contains the externally callable endpoint, containing the type reference of the import object in the URL and the data in the body:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
https://&amp;lt;IIS host&amp;gt;/DataImportService.svc/rest/import/&amp;lt;Import Object Type Reference&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to import one object of the type &amp;lt;code&amp;gt;Example.Test&amp;lt;/code&amp;gt;, which contains one integer and one string parameter, the service needs to be called in the following way:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
POST https://&amp;lt;host&amp;gt;/&amp;lt;path&amp;gt;/DataImportService.svc/rest/import/Example.Test HTTP/1.1&lt;br /&gt;
Authorization: &amp;lt;depends on AuthenticationValidator&amp;gt;&lt;br /&gt;
Content-Type: application/json&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;ImportParameters&amp;quot;:&lt;br /&gt;
    [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Key&amp;quot;: &amp;quot;IntValue&amp;quot;,&lt;br /&gt;
            &amp;quot;Value&amp;quot;: 5&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Key&amp;quot;: &amp;quot;StringValue&amp;quot;,&lt;br /&gt;
            &amp;quot;Value&amp;quot;: &amp;quot;Hello World!&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The object &amp;lt;code&amp;gt;Example.Test&amp;lt;/code&amp;gt; together with its two properties is assumed to be provided via plugins (see below).&lt;br /&gt;
This request expects some Authentication data, which is completely dependent on the customized implementation provided via plugins (see below). &lt;br /&gt;
&lt;br /&gt;
If you want to develop an interface to get data from your 3rd party system to Ubik, you might want to consider using this system as well. It's easy to set up and requires minimal configuration on the Ubik side.&lt;br /&gt;
&lt;br /&gt;
=== Return ===&lt;br /&gt;
&lt;br /&gt;
Let's analyze an example of this return message:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;Status&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;UbikObjectId&amp;quot;: &amp;quot;9c3b2bef-e0a5-4703-b9da-39c0ad43553d&amp;quot;,&lt;br /&gt;
    &amp;quot;ElapsedTime&amp;quot;: 0.0415932,&lt;br /&gt;
    &amp;quot;Message&amp;quot;: &amp;quot;Successfully created one object.&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;code&amp;gt;Status&amp;lt;/code&amp;gt; field has three possibilities: &lt;br /&gt;
** &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;: The item has been successfully created.&lt;br /&gt;
** &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;: The item has been successfully updated. This happens when an existing object has been identified by the Primary Key (configuration of &amp;lt;code&amp;gt;ImportProcessor&amp;lt;/code&amp;gt; and on the Ubik-Proxy required).&lt;br /&gt;
** &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;: An error occurred while creating/updating the object. Read the message!&lt;br /&gt;
* The &amp;lt;code&amp;gt;UbikObjectId&amp;lt;/code&amp;gt; allows for easy identification of the erroneous object in Ubik. It will only be filled up if an object has been created/updated and will be all zero if the error occurred before an object has been created.&lt;br /&gt;
* The &amp;lt;code&amp;gt;ElapsedTime&amp;lt;/code&amp;gt; field shows the time it took the system to successfully create and save the Proxy object with all data. At this point, the Proxy has been created, but the import to the real Ubik object is executed asynchronously and cannot be predicted.&lt;br /&gt;
* The &amp;lt;code&amp;gt;Message&amp;lt;/code&amp;gt; field shows a status message or the details, if an error occurred.&lt;br /&gt;
&lt;br /&gt;
[[Category:Data Import Service|Data Import Service]]&lt;br /&gt;
[[Category:Plugin|Data Import Service]]&lt;br /&gt;
&lt;br /&gt;
== Authentication Mechanism==&lt;br /&gt;
[[File:AuthenticationMechanism.png|thumb|Authentication Mechanism]]&lt;br /&gt;
There is currently no default implementation, so in order to get the Web Service running, one plugin containing a custom &amp;lt;code&amp;gt;ImportValidator&amp;lt;/code&amp;gt; has to be provided.&lt;br /&gt;
It contains a single method to override, &amp;lt;code&amp;gt;Validate&amp;lt;/code&amp;gt;, which contains the headers of the incoming requests to validate the Authorization header. There is also a possibility to set the outgoing headers for the response, for example, to return a token that makes authentication easier next time.&lt;br /&gt;
&lt;br /&gt;
== Import Mechanism==&lt;br /&gt;
[[File:ImportMechanism.png|thumb|Import Mechanism]]&lt;br /&gt;
The Import Mechanism is the heart of the entire system. It is responsible for creating Ubik objects out of raw data, via proxies. &lt;br /&gt;
&lt;br /&gt;
In its ideal use case, the interface runs the following steps:&lt;br /&gt;
* Creating &amp;lt;code&amp;gt;ImportObject&amp;lt;/code&amp;gt; derivate out of the raw data&lt;br /&gt;
* Loading &amp;lt;code&amp;gt;ImportProcessor&amp;lt;/code&amp;gt; derivate supporting the type of &amp;lt;code&amp;gt;ImportObject&amp;lt;/code&amp;gt;&lt;br /&gt;
* Validating the &amp;lt;code&amp;gt;ImportObject&amp;lt;/code&amp;gt; with the &amp;lt;code&amp;gt;ImportProcessor&amp;lt;/code&amp;gt;&lt;br /&gt;
* Writing the &amp;lt;code&amp;gt;ImportObject&amp;lt;/code&amp;gt; to a new or existing Proxy instance&lt;br /&gt;
* Saving the Proxy&lt;br /&gt;
At this time, the data are successfully saved in Ubik and the interface returns a status and object information.&lt;br /&gt;
However, there's some more stuff going on in the background:&lt;br /&gt;
* Async bulk-import of Proxy to create Ubik object&lt;br /&gt;
* Once finished and new items are queued, a new bulk-import will launch. If no import is queued, the customizable post processing method will be called.&lt;br /&gt;
&lt;br /&gt;
Similarly to the Authentication System, this system can be customized via Plugins as well. Providing a custom &amp;lt;code&amp;gt;ImportProcessor&amp;lt;/code&amp;gt; derivate with the target type set to a custom &amp;lt;code&amp;gt;ImportObject&amp;lt;/code&amp;gt; derivate makes this processor available to be used to fit a use-case.&lt;br /&gt;
&lt;br /&gt;
The Import System can be used by itself too, it's easy to integrate it to different interfaces. It can be made running synchronously as well, to be potentially even more efficient for specific custom implementations.&lt;br /&gt;
&lt;br /&gt;
[[Category:Data Import Service|Data Import Service]]&lt;br /&gt;
[[Category:Plugin|Data Import Service]]&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Data_Import_Service&amp;diff=23306</id>
		<title>Data Import Service</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Data_Import_Service&amp;diff=23306"/>
				<updated>2021-09-29T11:44:32Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Version/ServerSince|3.6.0}}&lt;br /&gt;
&lt;br /&gt;
The Data Import Service is a interface consisting of a web service, hosted on an IIS service, which takes data pushed to Ubik and imports it efficiently.  The heart of the service is a shared module called the Import System, which can be used to import data from whatever source they come, easing future interface developments. The system is highly customizable via Ubik Plugins to fit most use cases.&lt;br /&gt;
&lt;br /&gt;
In detail, the service consists of three major parts:&lt;br /&gt;
* Web Service&lt;br /&gt;
** Customizable Authentication Mechanism&lt;br /&gt;
* Customizable Import Mechanism&lt;br /&gt;
&lt;br /&gt;
== Web Service ==&lt;br /&gt;
The Web Service contains the externally callable endpoint, containing the type reference of the import object in the URL and the data in the body:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
https://&amp;lt;IIS host&amp;gt;/DataImportService.svc/rest/import/&amp;lt;Import Object Type Reference&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to import one object of the type &amp;lt;code&amp;gt;Example.Test&amp;lt;/code&amp;gt;, which contains one integer and one string parameter, the service needs to be called in the following way:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
POST https://&amp;lt;host&amp;gt;/&amp;lt;path&amp;gt;/DataImportService.svc/rest/import/Example.Test HTTP/1.1&lt;br /&gt;
Authorization: &amp;lt;depends on ''AuthenticationValidator''&amp;gt;&lt;br /&gt;
Content-Type: application/json&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;ImportParameters&amp;quot;:&lt;br /&gt;
    [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Key&amp;quot;: &amp;quot;IntValue&amp;quot;,&lt;br /&gt;
            &amp;quot;Value&amp;quot;: 5&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Key&amp;quot;: &amp;quot;StringValue&amp;quot;,&lt;br /&gt;
            &amp;quot;Value&amp;quot;: &amp;quot;Hello World!&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The object &amp;lt;code&amp;gt;Example.Test&amp;lt;/code&amp;gt; together with its two properties is assumed to be provided via plugins (see below).&lt;br /&gt;
This request expects some Authentication data, which is completely dependent on the customized implementation provided via plugins (see below). &lt;br /&gt;
&lt;br /&gt;
If you want to develop an interface to get data from your 3rd party system to Ubik, you might want to consider using this system as well. It's easy to set up and requires minimal configuration on the Ubik side.&lt;br /&gt;
&lt;br /&gt;
=== Return ===&lt;br /&gt;
&lt;br /&gt;
Let's analyze an example of this return message:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;Status&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;UbikObjectId&amp;quot;: &amp;quot;9c3b2bef-e0a5-4703-b9da-39c0ad43553d&amp;quot;,&lt;br /&gt;
    &amp;quot;ElapsedTime&amp;quot;: 0.0415932,&lt;br /&gt;
    &amp;quot;Message&amp;quot;: &amp;quot;Successfully created one object.&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;code&amp;gt;Status&amp;lt;/code&amp;gt; field has three possibilities: &lt;br /&gt;
** &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;: The item has been successfully created.&lt;br /&gt;
** &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;: The item has been successfully updated. This happens when an existing object has been identified by the Primary Key (configuration of &amp;lt;code&amp;gt;ImportProcessor&amp;lt;/code&amp;gt; and on the Ubik-Proxy required).&lt;br /&gt;
** &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;: An error occurred while creating/updating the object. Read the message!&lt;br /&gt;
* The &amp;lt;code&amp;gt;UbikObjectId&amp;lt;/code&amp;gt; allows for easy identification of the erroneous object in Ubik. It will only be filled up if an object has been created/updated and will be all zero if the error occurred before an object has been created.&lt;br /&gt;
* The &amp;lt;code&amp;gt;ElapsedTime&amp;lt;/code&amp;gt; field shows the time it took the system to successfully create and save the Proxy object with all data. At this point, the Proxy has been created, but the import to the real Ubik object is executed asynchronously and cannot be predicted.&lt;br /&gt;
* The &amp;lt;code&amp;gt;Message&amp;lt;/code&amp;gt; field shows a status message or the details, if an error occurred.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Authentication Mechanism==&lt;br /&gt;
[[File:AuthenticationMechanism.png|thumb|Authentication Mechanism]]&lt;br /&gt;
There is currently no default implementation, so in order to get the Web Service running, one plugin containing a custom &amp;lt;code&amp;gt;ImportValidator&amp;lt;/code&amp;gt; has to be provided.&lt;br /&gt;
It contains a single method to override, &amp;lt;code&amp;gt;Validate&amp;lt;/code&amp;gt;, which contains the headers of the incoming requests to validate the Authorization header. There is also a possibility to set the outgoing headers for the response, for example, to return a token that makes authentication easier next time.&lt;br /&gt;
&lt;br /&gt;
== Import Mechanism==&lt;br /&gt;
[[File:ImportMechanism.png|thumb|Import Mechanism]]&lt;br /&gt;
The Import Mechanism is the heart of the entire system. It is responsible for creating Ubik objects out of raw data, via proxies. &lt;br /&gt;
&lt;br /&gt;
In its ideal use case, the interface runs the following steps:&lt;br /&gt;
* Creating &amp;lt;code&amp;gt;ImportObject&amp;lt;/code&amp;gt; derivate out of the raw data&lt;br /&gt;
* Loading &amp;lt;code&amp;gt;ImportProcessor&amp;lt;/code&amp;gt; derivate supporting the type of &amp;lt;code&amp;gt;ImportObject&amp;lt;/code&amp;gt;&lt;br /&gt;
* Validating the &amp;lt;code&amp;gt;ImportObject&amp;lt;/code&amp;gt; with the &amp;lt;code&amp;gt;ImportProcessor&amp;lt;/code&amp;gt;&lt;br /&gt;
* Writing the &amp;lt;code&amp;gt;ImportObject&amp;lt;/code&amp;gt; to a new or existing Proxy instance&lt;br /&gt;
* Saving the Proxy&lt;br /&gt;
At this time, the data are successfully saved in Ubik and the interface returns a status and object information.&lt;br /&gt;
However, there's some more stuff going on in the background:&lt;br /&gt;
* Async bulk-import of Proxy to create Ubik object&lt;br /&gt;
* Once finished and new items are queued, a new bulk-import will launch. If no import is queued, the customizable post processing method will be called.&lt;br /&gt;
&lt;br /&gt;
Similarly to the Authentication System, this system can be customized via Plugins as well. Providing a custom &amp;lt;code&amp;gt;ImportProcessor&amp;lt;/code&amp;gt; derivate with the target type set to a custom &amp;lt;code&amp;gt;ImportObject&amp;lt;/code&amp;gt; derivate makes this processor available to be used to fit a use-case.&lt;br /&gt;
&lt;br /&gt;
The Import System can be used by itself too, it's easy to integrate it to different interfaces. It can be made running synchronously as well, to be potentially even more efficient for specific custom implementations.&lt;br /&gt;
&lt;br /&gt;
[[Category:Data Import Service|Data Import Service]]&lt;br /&gt;
[[Category:Plugin|Data Import Service]]&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Data_Import_Service&amp;diff=23305</id>
		<title>Data Import Service</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Data_Import_Service&amp;diff=23305"/>
				<updated>2021-09-29T11:40:14Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: /* Web Service */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Version/ServerSince|3.6.0}}&lt;br /&gt;
&lt;br /&gt;
The Data Import Service is a interface consisting of a web service, hosted on an IIS service, which takes data pushed to Ubik and imports it efficiently.  The heart of the service is a shared module called the Import System, which can be used to import data from whatever source they come, easing future interface developments. The system is highly customizable via Ubik Plugins to fit most use cases.&lt;br /&gt;
&lt;br /&gt;
In detail, the service consists of three major parts:&lt;br /&gt;
* Web Service&lt;br /&gt;
** Customizable Authentication Mechanism&lt;br /&gt;
* Customizable Import Mechanism&lt;br /&gt;
&lt;br /&gt;
== Web Service ==&lt;br /&gt;
The Web Service contains the externally callable endpoint, containing the type reference of the import object in the URL and the data in the body:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
https://&amp;lt;IIS host&amp;gt;/DataImportService.svc/rest/import/&amp;lt;Import Object Type Reference&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to import one object of the type &amp;lt;code&amp;gt;Example.Test&amp;lt;/code&amp;gt;, which contains one integer and one string parameter, the service needs to be called in the following way:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
POST https://&amp;lt;host&amp;gt;/&amp;lt;path&amp;gt;/DataImportService.svc/rest/import/Example.Test HTTP/1.1&lt;br /&gt;
Authorization: &amp;lt;depends on ''AuthenticationValidator''&amp;gt;&lt;br /&gt;
Content-Type: application/json&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;ImportParameters&amp;quot;:&lt;br /&gt;
    [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Key&amp;quot;: &amp;quot;IntValue&amp;quot;,&lt;br /&gt;
            &amp;quot;Value&amp;quot;: 5&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Key&amp;quot;: &amp;quot;StringValue&amp;quot;,&lt;br /&gt;
            &amp;quot;Value&amp;quot;: &amp;quot;Hello World!&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The object &amp;lt;code&amp;gt;Example.Test&amp;lt;/code&amp;gt; together with its two properties is assumed to be provided via plugins (see below).&lt;br /&gt;
This request expects some Authentication data, which is completely dependent on the customized implementation provided via plugins (see below). &lt;br /&gt;
&lt;br /&gt;
If you want to develop an interface to get data from your 3rd party system to Ubik, you might want to consider using this system as well. It's easy to set up and requires minimal configuration on the Ubik side.&lt;br /&gt;
&lt;br /&gt;
=== Return ===&lt;br /&gt;
&lt;br /&gt;
Let's analyze an example of this return message:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;Status&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;UbikObjectId&amp;quot;: &amp;quot;9c3b2bef-e0a5-4703-b9da-39c0ad43553d&amp;quot;,&lt;br /&gt;
    &amp;quot;ElapsedTime&amp;quot;: 0.0415932,&lt;br /&gt;
    &amp;quot;Message&amp;quot;: &amp;quot;Successfully created one object.&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;code&amp;gt;Status&amp;lt;/code&amp;gt; field has three possibilities: &lt;br /&gt;
  * &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;: The item has been successfully created.&lt;br /&gt;
  * &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;: The item has been successfully updated. This happens when an existing object has been identified by the Primary Key (configuration of &amp;lt;code&amp;gt;ImportProcessor&amp;lt;/code&amp;gt; and on the Ubik-Proxy required).&lt;br /&gt;
  * &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;: An error occurred while creating/updating the object. Read the message!&lt;br /&gt;
* The &amp;lt;code&amp;gt;UbikObjectId&amp;lt;/code&amp;gt; allows for easy identification of the erroneous object in Ubik. It will only be filled up if an object has been created/updated and will be all zero if the error occurred before an object has been created.&lt;br /&gt;
* The &amp;lt;code&amp;gt;ElapsedTime&amp;lt;/code&amp;gt; field shows the time it took the system to successfully create and save the Proxy object with all data. At this point, the Proxy has been created, but the import to the real Ubik object is executed asynchronously and cannot be predicted.&lt;br /&gt;
* The &amp;lt;code&amp;gt;Message&amp;lt;/code&amp;gt; field shows a status message or the details, if an error occurred.&lt;br /&gt;
&lt;br /&gt;
[[Category:Data Import Service|Data Import Service]]&lt;br /&gt;
[[Category:Plugin|Data Import Service]]&lt;br /&gt;
&lt;br /&gt;
== Authentication Mechanism==&lt;br /&gt;
[[File:AuthenticationMechanism.png|thumb|Authentication Mechanism]]&lt;br /&gt;
There is currently no default implementation, so in order to get the Web Service running, one plugin containing a custom &amp;lt;code&amp;gt;ImportValidator&amp;lt;/code&amp;gt; has to be provided.&lt;br /&gt;
It contains a single method to override, &amp;lt;code&amp;gt;Validate&amp;lt;/code&amp;gt;, which contains the headers of the incoming requests to validate the Authorization header. There is also a possibility to set the outgoing headers for the response, for example, to return a token that makes authentication easier next time.&lt;br /&gt;
&lt;br /&gt;
== Import Mechanism==&lt;br /&gt;
[[File:ImportMechanism.png|thumb|Import Mechanism]]&lt;br /&gt;
The Import Mechanism is the heart of the entire system. It is responsible for creating Ubik objects out of raw data, via proxies. &lt;br /&gt;
&lt;br /&gt;
In its ideal use case, the interface runs the following steps:&lt;br /&gt;
* Creating &amp;lt;code&amp;gt;ImportObject&amp;lt;/code&amp;gt; derivate out of the raw data&lt;br /&gt;
* Loading &amp;lt;code&amp;gt;ImportProcessor&amp;lt;/code&amp;gt; derivate supporting the type of &amp;lt;code&amp;gt;ImportObject&amp;lt;/code&amp;gt;&lt;br /&gt;
* Validating the &amp;lt;code&amp;gt;ImportObject&amp;lt;/code&amp;gt; with the &amp;lt;code&amp;gt;ImportProcessor&amp;lt;/code&amp;gt;&lt;br /&gt;
* Writing the &amp;lt;code&amp;gt;ImportObject&amp;lt;/code&amp;gt; to a new or existing Proxy instance&lt;br /&gt;
* Saving the Proxy&lt;br /&gt;
At this time, the data are successfully saved in Ubik and the interface returns a status and object information.&lt;br /&gt;
However, there's some more stuff going on in the background:&lt;br /&gt;
* Async bulk-import of Proxy to create Ubik object&lt;br /&gt;
* Once finished and new items are queued, a new bulk-import will launch. If no import is queued, the customizable post processing method will be called.&lt;br /&gt;
&lt;br /&gt;
Similarly to the Authentication System, this system can be customized via Plugins as well. Providing a custom &amp;lt;code&amp;gt;ImportProcessor&amp;lt;/code&amp;gt; derivate with the target type set to a custom &amp;lt;code&amp;gt;ImportObject&amp;lt;/code&amp;gt; derivate makes this processor available to be used to fit a use-case.&lt;br /&gt;
&lt;br /&gt;
The Import System can be used by itself too, it's easy to integrate it to different interfaces. It can be made running synchronously as well, to be potentially even more efficient for specific custom implementations.&lt;br /&gt;
&lt;br /&gt;
[[Category:Data Import Service|Data Import Service]]&lt;br /&gt;
[[Category:Plugin|Data Import Service]]&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Live_Values&amp;diff=23295</id>
		<title>Live Values</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Live_Values&amp;diff=23295"/>
				<updated>2021-09-20T06:58:24Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:livevalues_xamarin.jpg |thumb|border|alt= Live values in Xamarin|Live values in Xamarin]]&lt;br /&gt;
[[File:livevalues_winx.png |thumb|border|alt= Live values in WinX|Live values in WinX]]&lt;br /&gt;
Live values are properties that update with a configured frequency. These properties contain information about reliability, measurement quality, and synchronization, as well as custom data (attributes). Real-time data, originating from various systems, can be delivered to the clients with minimum delay.&lt;br /&gt;
&lt;br /&gt;
The Android, Xamarin and WinX clients display live values alongside other properties, and they are also shown on the [[Map View|map view]] upon selecting the specific object.&lt;br /&gt;
&lt;br /&gt;
Also check out the [[HowTo:Implementing_Live_Values|Guide for Implementing Live Values]].&lt;br /&gt;
&lt;br /&gt;
== Content Browser ==&lt;br /&gt;
The row for live value properties differs only slightly from normal property rows. On the left of the property value, below the description, is a connectivity indicator icon (reminding of the connectivity icon from cell phones). The more current the property value and the better its quality is, the better the connectivity is indicated. If all bars are greyed out and a small red cross is shown, the last update happened very long ago or no update was received at all, or the measurement quality is bad. For detailed information about that, a detailed dialog is necessary.&lt;br /&gt;
&lt;br /&gt;
=== Connectivity Indicator ===&lt;br /&gt;
[[File:UI_android_live_values_freshness_indicators.png |thumb|border|alt= States of the connectivity indicator|States of the connectivity indicator]]&lt;br /&gt;
&lt;br /&gt;
The connectivity indicator has the following states, from left to right:&lt;br /&gt;
* Good&lt;br /&gt;
* Questionable&lt;br /&gt;
* Bad&lt;br /&gt;
&lt;br /&gt;
Note that the connectivity indicator combines the freshness and the measurement quality of the live value, thus describing the overall reliability of the value instead of just how recent it is.&lt;br /&gt;
&lt;br /&gt;
The following gallery gives an overview of the possible synchronization states of live value property rows.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;200&amp;quot; heights=&amp;quot;360&amp;quot;&amp;gt;&lt;br /&gt;
File:UI_android_live_values_row_new.png| Reliable live values (Android)&lt;br /&gt;
File:UI_WinX_live_values_row_new.png| Reliable live values (Windows)&lt;br /&gt;
File:UI_WinX_live_values_detailsrow_new.png| Reliable live values in the document/details view (Windows)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Map view==&lt;br /&gt;
[[File:UI_android_live_values_map_view.png |thumb|border|alt= Live values map view|Live values map view (Android)]]&lt;br /&gt;
[[File:UI_WinX_live_values_map_view.png |thumb|border|alt= Live values map view|Live values map view (Windows)]]&lt;br /&gt;
&lt;br /&gt;
Upon clicking a correctly configured object within the map view, properties are shown within the opened dialog. It is important to know, that only '''High priority''' properties are shown here, altering the [[Settings#List of settings|priority threshold]] setting may change the visibility of the live property in the map view.&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
{{Category/Version|2.5.0}}&lt;br /&gt;
&lt;br /&gt;
== Detail dialog ==&lt;br /&gt;
The freshness is very crucial in order to know whether the live property value can be trusted, but there are other influences like how good the measurement itself was. These information gets displayed via a dialog, the user can upon clicking the [[Live Values#Freshness Indicator |freshness indicator]] symbol both in the content Browser or the map view.&lt;br /&gt;
Within the dialog, several detailed information can be seen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | width = &amp;quot;75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Description!! Information&lt;br /&gt;
|-&lt;br /&gt;
| ''Live Value''|| Provides the same information as the row itself, namely value and as an icon the connectivity indicator.&lt;br /&gt;
|-&lt;br /&gt;
| ''Recentness''|| Displays how long ago the last synchronization was, based on the internal freshness evaluation system. &lt;br /&gt;
|-&lt;br /&gt;
| ''Last Synchronization''|| Displays the exact timestamp of the last successful synchronization, out of this, the recentness is evaluated.&lt;br /&gt;
|-&lt;br /&gt;
| ''Measurement time stamp''|| Measurement time stamp provided by the measurement unit itself (for instance a pressure measurement unit). It should not be trusted entirely since device time and measurement until time could have a huge difference.&lt;br /&gt;
|-&lt;br /&gt;
| ''Measurement quality''|| Quality information provided by the measurement unit or data collecting instance (e.g. OPCUA Server) which together with the &amp;quot;Recentness&amp;quot; gets combined to evaluate the [[Live Values#Freshness Indicator |freshness indicator]]. In addition, a more detailed description of the measurement gets displayed if available.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Some examples how such a detailed information dialog looks like in the following gallery:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;200&amp;quot; heights=&amp;quot;360&amp;quot;&amp;gt;&lt;br /&gt;
File:UI_android_live_values_dialog_new.png| Fresh live values (Android)&lt;br /&gt;
File:UI_windows_live_values_dialog_new.png| Fresh live values (WinX)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attributes {{Version/WinXSince|3.6}} {{Version/ServerSince|2.6.4}} ==&lt;br /&gt;
[[File:attributes.png |thumb|Attributes in the detail dialog (WinX)]]&lt;br /&gt;
Attributes are additional data that are sent to clients with every value update. They can be customized where the live values are generated (in the plugin) to contain the unit, formatted value, description, etc. &lt;br /&gt;
&lt;br /&gt;
They were introduced in Service Version 2.6.4 and Client Version 3.6.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Accessing from XAML ==&lt;br /&gt;
Live values can be easily accessed from XAML, as long as the view model has a reference to the '''Properties''' collection.&lt;br /&gt;
&lt;br /&gt;
=== Displaying all Live Values ===&lt;br /&gt;
This XAML code will generate a list of all live values of this object:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ListView ItemsSource=&amp;quot;{Binding Properties.ImportantLiveItems}&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;Grid Width=&amp;quot;100&amp;quot;  Height=&amp;quot;40&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;FontIcon FontFamily=&amp;quot;Segoe MDL2 Assets&amp;quot; Glyph=&amp;quot;{Binding Content.LiveValueQualitySymbol}&amp;quot; HorizontalAlignment=&amp;quot;Left&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;TextBlock Text=&amp;quot;{Binding Content.DisplayValue}&amp;quot; HorizontalAlignment=&amp;quot;Right&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Grid&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Accessing Single Value ===&lt;br /&gt;
This code binds the value of the '''LMP_FLOW''' LiveValue-MetaProperty to a &amp;lt;code&amp;gt;TextBlock&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;TextBlock Text=&amp;quot;{Binding Properties.ImportantLiveItems[LMP_FLOW].Content.Value}&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Furthermore, you can bind to:&lt;br /&gt;
* Description&lt;br /&gt;
* QualitySymbol&lt;br /&gt;
* Age&lt;br /&gt;
* LastSync&lt;br /&gt;
* TimeStamp&lt;br /&gt;
* Attributes (see below) {{Version/WinXSince|3.6}} {{Version/ServerSince|2.6.4}}&lt;br /&gt;
&lt;br /&gt;
=== Binding to Attributes {{Version/WinXSince|3.6}} {{Version/ServerSince|2.6.4}} ===&lt;br /&gt;
Attributes can be bound to similarly as to the individual value:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;TextBlock Text=&amp;quot;{Binding Properties.ImportantLiveItems[LMP_FLOW].Content.Attributes[Unit].Value}&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following data are available for each attribute:&lt;br /&gt;
* Value&lt;br /&gt;
* Key&lt;br /&gt;
* Description&lt;br /&gt;
&lt;br /&gt;
==== Further Attributes ====&lt;br /&gt;
Custom attributes can be defined in the corresponding '''Live Value Interface''', with some of them pre-defined in the corresponding interfaces. &lt;br /&gt;
&lt;br /&gt;
As an example, the [[OSIPI_(Plugin)|OSIPI Plugin]] defines an Attribute called '''FORMATTED''', which contains the ''Value'' already pre-formatted according to [https://livelibrary.osisoft.com/LiveLibrary/content/en/webparts-v4/GUID-13DC1C74-40B9-4FFE-B0B2-FCD204D8C337#addHistory=true&amp;amp;filename=GUID-A467C65F-C7C1-439D-AB26-7C360DB61865.xml&amp;amp;docid=GUID-13DC1C74-40B9-4FFE-B0B2-FCD204D8C337&amp;amp;inner_id=&amp;amp;tid=&amp;amp;query=&amp;amp;scope=&amp;amp;resource=&amp;amp;toc=false&amp;amp;eventType=lcContent.loadDocGUID-13DC1C74-40B9-4FFE-B0B2-FCD204D8C337 OsiPi's Specification]. In the ''Server-Configuration'', it's possible to adjust the formatting [https://docs.microsoft.com/en-us/dotnet/api/system.globalization.cultureinfo Culture] and leading-zeroes trimming.&lt;br /&gt;
&lt;br /&gt;
[[Category:2.5.0|Live Values]]&lt;br /&gt;
[[Category:Android|Live Values]]&lt;br /&gt;
[[Category:Live Values|Live Values]]&lt;br /&gt;
[[Category:WinX|Live Values]]&lt;br /&gt;
[[Category:Xamarin|Live Values]]&lt;br /&gt;
[[Category:Server|Live Values]]&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Live_Values&amp;diff=23294</id>
		<title>Live Values</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Live_Values&amp;diff=23294"/>
				<updated>2021-09-20T06:57:52Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:livevalues_xamarin.jpg |thumb|border|alt= Live values in Xamarin|Live values in Xamarin]]&lt;br /&gt;
[[File:livevalues_winx.png |thumb|border|alt= Live values in WinX|Live values in WinX]]&lt;br /&gt;
Live values are properties that update with a configured frequency. These properties contain information about reliability, measurement quality, and synchronization, as well as custom data (attributes). Real-time data, originating from various systems, can be delivered to the clients with minimum delay.&lt;br /&gt;
&lt;br /&gt;
The Android, Xamarin and WinX clients display live values alongside other properties, and they are also shown on the [[Map View|map view]] upon selecting the specific object.&lt;br /&gt;
&lt;br /&gt;
Also check out the [[HowTo:Implementing_Live_Values|Guide for Implementing Live Values]].&lt;br /&gt;
&lt;br /&gt;
== Content Browser ==&lt;br /&gt;
The row for live value properties differs only slightly from normal property rows. On the left of the property value, below the description, is a connectivity indicator icon (reminding of the connectivity icon from cell phones). The more current the property value and the better its quality is, the better the connectivity is indicated. If all bars are greyed out and a small red cross is shown, the last update happened very long ago or no update was received at all, or the measurement quality is bad. For detailed information about that, a detailed dialog is necessary.&lt;br /&gt;
&lt;br /&gt;
=== Connectivity Indicator ===&lt;br /&gt;
[[File:UI_android_live_values_freshness_indicators.png |thumb|border|alt= States of the connectivity indicator|States of the connectivity indicator]]&lt;br /&gt;
&lt;br /&gt;
The connectivity indicator has the following states, from left to right:&lt;br /&gt;
* Good&lt;br /&gt;
* Questionable&lt;br /&gt;
* Bad&lt;br /&gt;
&lt;br /&gt;
Note that the connectivity indicator combines the freshness and the measurement quality of the live value, thus describing the overall reliability of the value instead of just how recent it is.&lt;br /&gt;
&lt;br /&gt;
The following gallery gives an overview of the possible synchronization states of live value property rows.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;200&amp;quot; heights=&amp;quot;360&amp;quot;&amp;gt;&lt;br /&gt;
File:UI_android_live_values_row_new.png| Reliable live values (Android)&lt;br /&gt;
File:UI_WinX_live_values_row_new.png| Reliable live values (Windows)&lt;br /&gt;
File:UI_WinX_live_values_detailsrow_new.png| Reliable live values in the document/details view (Windows)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Map view==&lt;br /&gt;
[[File:UI_android_live_values_map_view.png |thumb|border|alt= Live values map view|Live values map view (Android)]]&lt;br /&gt;
[[File:UI_WinX_live_values_map_view.png |thumb|border|alt= Live values map view|Live values map view (Windows)]]&lt;br /&gt;
&lt;br /&gt;
Upon clicking a correctly configured object within the map view, properties are shown within the opened dialog. It is important to know, that only '''High priority''' properties are shown here, altering the [[Settings#List of settings|priority threshold]] setting may change the visibility of the live property in the map view.&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
{{Category/Version|2.5.0}}&lt;br /&gt;
&lt;br /&gt;
== Detail dialog ==&lt;br /&gt;
The freshness is very crucial in order to know whether the live property value can be trusted, but there are other influences like how good the measurement itself was. These information gets displayed via a dialog, the user can upon clicking the [[Live Values#Freshness Indicator |freshness indicator]] symbol both in the content Browser or the map view.&lt;br /&gt;
Within the dialog, several detailed information can be seen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | width = &amp;quot;75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Description!! Information&lt;br /&gt;
|-&lt;br /&gt;
| ''Live Value''|| Provides the same information as the row itself, namely value and as an icon the connectivity indicator.&lt;br /&gt;
|-&lt;br /&gt;
| ''Recentness''|| Displays how long ago the last synchronization was, based on the internal freshness evaluation system. &lt;br /&gt;
|-&lt;br /&gt;
| ''Last Synchronization''|| Displays the exact timestamp of the last successful synchronization, out of this, the recentness is evaluated.&lt;br /&gt;
|-&lt;br /&gt;
| ''Measurement time stamp''|| Measurement time stamp provided by the measurement unit itself (for instance a pressure measurement unit). It should not be trusted entirely since device time and measurement until time could have a huge difference.&lt;br /&gt;
|-&lt;br /&gt;
| ''Measurement quality''|| Quality information provided by the measurement unit or data collecting instance (e.g. OPCUA Server) which together with the &amp;quot;Recentness&amp;quot; gets combined to evaluate the [[Live Values#Freshness Indicator |freshness indicator]]. In addition, a more detailed description of the measurement gets displayed if available.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Some examples how such a detailed information dialog looks like in the following gallery:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;200&amp;quot; heights=&amp;quot;360&amp;quot;&amp;gt;&lt;br /&gt;
File:UI_android_live_values_dialog_new.png| Fresh live values (Android)&lt;br /&gt;
File:UI_windows_live_values_dialog_new.png| Fresh live values (WinX)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attributes {{Version/WinXSince|3.6}} {{Version/ServerSince|2.6.4}} ==&lt;br /&gt;
[[File:attributes.png |thumb|Attributes in the detail dialog (WinX)]]&lt;br /&gt;
Attributes are additional data that are sent to clients with every value update. They can be customized where the live values are generated (in the plugin) to contain the unit, formatted value, description, etc. &lt;br /&gt;
&lt;br /&gt;
They were introduced in Service Version 2.6.4 and Client Version 3.6.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Accessing from XAML ==&lt;br /&gt;
Live values can be easily accessed from XAML, as long as the view model has a reference to the '''Properties''' collection.&lt;br /&gt;
&lt;br /&gt;
=== Displaying all Live Values ===&lt;br /&gt;
This XAML code will generate a list of all live values of this object:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ListView ItemsSource=&amp;quot;{Binding Properties.ImportantLiveItems}&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;Grid Width=&amp;quot;100&amp;quot;  Height=&amp;quot;40&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;FontIcon FontFamily=&amp;quot;Segoe MDL2 Assets&amp;quot; Glyph=&amp;quot;{Binding Content.LiveValueQualitySymbol}&amp;quot; HorizontalAlignment=&amp;quot;Left&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;TextBlock Text=&amp;quot;{Binding Content.DisplayValue}&amp;quot; HorizontalAlignment=&amp;quot;Right&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Grid&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Accessing Single Value ===&lt;br /&gt;
This code binds the value of the '''LMP_FLOW''' LiveValue-MetaProperty to a &amp;lt;code&amp;gt;TextBlock&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;TextBlock Text=&amp;quot;{Binding Properties.ImportantLiveItems[LMP_FLOW].Content.Value}&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Furthermore, you can bind to:&lt;br /&gt;
* Description&lt;br /&gt;
* QualitySymbol&lt;br /&gt;
* Age&lt;br /&gt;
* LastSync&lt;br /&gt;
* TimeStamp&lt;br /&gt;
* Attributes (see below) {{Version/WinXSince|3.6}} {{Version/ServerSince|2.6.4}}&lt;br /&gt;
&lt;br /&gt;
=== Binding to Attributes {{Version/WinXSince|3.6}} {{Version/ServerSince|2.6.4}} ===&lt;br /&gt;
Attributes can be bound to similarly as to the individual value:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;TextBlock Text=&amp;quot;{Binding Properties.ImportantLiveItems[LMP_FLOW].Content.Attributes[Unit].Value}&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following data are available for each attribute:&lt;br /&gt;
* Value&lt;br /&gt;
* Key&lt;br /&gt;
* Description&lt;br /&gt;
&lt;br /&gt;
==== Further Attributes ====&lt;br /&gt;
Custom attributes can be defined in the corresponding '''Live Value Interface''', with some of them pre-defined in the corresponding interfaces. &lt;br /&gt;
&lt;br /&gt;
As an example, the [[OSIPI_(Plugin)|OSIPI Plugin]] defines an Attribute called '''FORMATTED''', which contains the ''Value'' already pre-formatted according to [https://livelibrary.osisoft.com/LiveLibrary/content/en/webparts-v4/GUID-13DC1C74-40B9-4FFE-B0B2-FCD204D8C337#addHistory=true&amp;amp;filename=GUID-A467C65F-C7C1-439D-AB26-7C360DB61865.xml&amp;amp;docid=GUID-13DC1C74-40B9-4FFE-B0B2-FCD204D8C337&amp;amp;inner_id=&amp;amp;tid=&amp;amp;query=&amp;amp;scope=&amp;amp;resource=&amp;amp;toc=false&amp;amp;eventType=lcContent.loadDocGUID-13DC1C74-40B9-4FFE-B0B2-FCD204D8C337 OsiPi's Specification]. In the ''Server-Configuration'', it's possible to adjust the formatting [https://docs.microsoft.com/en-us/dotnet/api/system.globalization.cultureinfo Culture] and leading-zeroes trimming.&lt;br /&gt;
&lt;br /&gt;
[[Category:2.5.0|Live Values]]&lt;br /&gt;
[[Category:Android|Live Values]]&lt;br /&gt;
[[Category:Live Values|Live Values]]&lt;br /&gt;
[[Category:WinX|Live Values]]&lt;br /&gt;
[[Category:Xamarin|Live Values]]&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Live_Values&amp;diff=23289</id>
		<title>Live Values</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Live_Values&amp;diff=23289"/>
				<updated>2021-09-16T07:06:27Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:livevalues_xamarin.jpg |thumb|border|alt= Live values in Xamarin|Live values in Xamarin]]&lt;br /&gt;
[[File:livevalues_winx.png |thumb|border|alt= Live values in WinX|Live values in WinX]]&lt;br /&gt;
Live values are properties that update with a configured frequency. These properties contain information about reliability, measurement quality, and synchronization, as well as custom data (attributes). Real-time data, originating from various systems, can be delivered to the clients with minimum delay.&lt;br /&gt;
&lt;br /&gt;
The Android, Xamarin and WinX clients display live values alongside other properties, and they are also shown on the [[Map View|map view]] upon selecting the specific object.&lt;br /&gt;
&lt;br /&gt;
Also check out the [[HowTo:Implementing_Live_Values|Guide for Implementing Live Values]].&lt;br /&gt;
&lt;br /&gt;
== Content Browser ==&lt;br /&gt;
The row for live value properties differs only slightly from normal property rows. On the left of the property value, below the description, is a connectivity indicator icon (reminding of the connectivity icon from cell phones). The more current the property value and the better its quality is, the better the connectivity is indicated. If all bars are greyed out and a small red cross is shown, the last update happened very long ago or no update was received at all, or the measurement quality is bad. For detailed information about that, a detailed dialog is necessary.&lt;br /&gt;
&lt;br /&gt;
=== Connectivity Indicator ===&lt;br /&gt;
[[File:UI_android_live_values_freshness_indicators.png |thumb|border|alt= States of the connectivity indicator|States of the connectivity indicator]]&lt;br /&gt;
&lt;br /&gt;
The connectivity indicator has the following states, from left to right:&lt;br /&gt;
* Good&lt;br /&gt;
* Questionable&lt;br /&gt;
* Bad&lt;br /&gt;
&lt;br /&gt;
Note that the connectivity indicator combines the freshness and the measurement quality of the live value, thus describing the overall reliability of the value instead of just how recent it is.&lt;br /&gt;
&lt;br /&gt;
The following gallery gives an overview of the possible synchronization states of live value property rows.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;200&amp;quot; heights=&amp;quot;360&amp;quot;&amp;gt;&lt;br /&gt;
File:UI_android_live_values_row_new.png| Reliable live values (Android)&lt;br /&gt;
File:UI_WinX_live_values_row_new.png| Reliable live values (Windows)&lt;br /&gt;
File:UI_WinX_live_values_detailsrow_new.png| Reliable live values in the document/details view (Windows)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Map view==&lt;br /&gt;
[[File:UI_android_live_values_map_view.png |thumb|border|alt= Live values map view|Live values map view (Android)]]&lt;br /&gt;
[[File:UI_WinX_live_values_map_view.png |thumb|border|alt= Live values map view|Live values map view (Windows)]]&lt;br /&gt;
&lt;br /&gt;
Upon clicking a correctly configured object within the map view, properties are shown within the opened dialog. It is important to know, that only '''High priority''' properties are shown here, altering the [[Settings#List of settings|priority threshold]] setting may change the visibility of the live property in the map view.&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
{{Category/Version|2.5.0}}&lt;br /&gt;
&lt;br /&gt;
== Detail dialog ==&lt;br /&gt;
The freshness is very crucial in order to know whether the live property value can be trusted, but there are other influences like how good the measurement itself was. These information gets displayed via a dialog, the user can upon clicking the [[Live Values#Freshness Indicator |freshness indicator]] symbol both in the content Browser or the map view.&lt;br /&gt;
Within the dialog, several detailed information can be seen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | width = &amp;quot;75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Description!! Information&lt;br /&gt;
|-&lt;br /&gt;
| ''Live Value''|| Provides the same information as the row itself, namely value and as an icon the connectivity indicator.&lt;br /&gt;
|-&lt;br /&gt;
| ''Recentness''|| Displays how long ago the last synchronization was, based on the internal freshness evaluation system. &lt;br /&gt;
|-&lt;br /&gt;
| ''Last Synchronization''|| Displays the exact timestamp of the last successful synchronization, out of this, the recentness is evaluated.&lt;br /&gt;
|-&lt;br /&gt;
| ''Measurement time stamp''|| Measurement time stamp provided by the measurement unit itself (for instance a pressure measurement unit). It should not be trusted entirely since device time and measurement until time could have a huge difference.&lt;br /&gt;
|-&lt;br /&gt;
| ''Measurement quality''|| Quality information provided by the measurement unit or data collecting instance (e.g. OPCUA Server) which together with the &amp;quot;Recentness&amp;quot; gets combined to evaluate the [[Live Values#Freshness Indicator |freshness indicator]]. In addition, a more detailed description of the measurement gets displayed if available.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Some examples how such a detailed information dialog looks like in the following gallery:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;200&amp;quot; heights=&amp;quot;360&amp;quot;&amp;gt;&lt;br /&gt;
File:UI_android_live_values_dialog_new.png| Fresh live values (Android)&lt;br /&gt;
File:UI_windows_live_values_dialog_new.png| Fresh live values (WinX)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attributes {{Version/WinXSince|3.6}} {{Version/ServerSince|2.6.4}} ==&lt;br /&gt;
[[File:attributes.png |thumb|Attributes in the detail dialog (WinX)]]&lt;br /&gt;
Attributes are additional data that are sent to clients with every value update. They can be customized where the live values are generated (in the plugin) to contain the unit, formatted value, description, etc. &lt;br /&gt;
&lt;br /&gt;
They were introduced in Service Version 2.6.4 and Client Version 3.6.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Accessing from XAML ==&lt;br /&gt;
Live values can be easily accessed from XAML, as long as the view model has a reference to the '''Properties''' collection.&lt;br /&gt;
&lt;br /&gt;
=== Displaying all Live Values ===&lt;br /&gt;
This XAML code will generate a list of all live values of this object:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ListView ItemsSource=&amp;quot;{Binding Properties.ImportantLiveItems}&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;Grid Width=&amp;quot;100&amp;quot;  Height=&amp;quot;40&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;FontIcon FontFamily=&amp;quot;Segoe MDL2 Assets&amp;quot; Glyph=&amp;quot;{Binding Content.LiveValueQualitySymbol}&amp;quot; HorizontalAlignment=&amp;quot;Left&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;TextBlock Text=&amp;quot;{Binding Content.DisplayValue}&amp;quot; HorizontalAlignment=&amp;quot;Right&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Grid&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Accessing Single Value ===&lt;br /&gt;
This code binds the value of the '''LMP_FLOW''' LiveValue-MetaProperty to a &amp;lt;code&amp;gt;TextBlock&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;TextBlock Text=&amp;quot;{Binding Properties.ImportantLiveItems[LMP_FLOW].Content.Value}&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Furthermore, you can bind to:&lt;br /&gt;
* Description&lt;br /&gt;
* QualitySymbol&lt;br /&gt;
* Age&lt;br /&gt;
* LastSync&lt;br /&gt;
* TimeStamp&lt;br /&gt;
* Attributes (see below) {{Version/WinXSince|3.6}} {{Version/ServerSince|2.6.4}}&lt;br /&gt;
&lt;br /&gt;
=== Binding to Attributes {{Version/WinXSince|3.6}} {{Version/ServerSince|2.6.4}} ===&lt;br /&gt;
Attributes can be bound to similarly as to the individual value:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;TextBlock Text=&amp;quot;{Binding Properties.ImportantLiveItems[LMP_FLOW].Content.Attributes[Unit].Value}&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following data are available for each attribute:&lt;br /&gt;
* Value&lt;br /&gt;
* Key&lt;br /&gt;
* Description&lt;br /&gt;
&lt;br /&gt;
==== Further Attributes ====&lt;br /&gt;
Custom attributes can be defined in the corresponding '''Live Value Interface''', with some of them pre-defined in the corresponding interfaces. &lt;br /&gt;
&lt;br /&gt;
As an example, the [[OSIPI_(Plugin)|OSIPI Plugin]] defines an Attribute called '''FORMATTED''', which contains the ''Value'' already pre-formatted according to [https://livelibrary.osisoft.com/LiveLibrary/content/en/webparts-v4/GUID-13DC1C74-40B9-4FFE-B0B2-FCD204D8C337#addHistory=true&amp;amp;filename=GUID-A467C65F-C7C1-439D-AB26-7C360DB61865.xml&amp;amp;docid=GUID-13DC1C74-40B9-4FFE-B0B2-FCD204D8C337&amp;amp;inner_id=&amp;amp;tid=&amp;amp;query=&amp;amp;scope=&amp;amp;resource=&amp;amp;toc=false&amp;amp;eventType=lcContent.loadDocGUID-13DC1C74-40B9-4FFE-B0B2-FCD204D8C337 OsiPi's Specification]. In the ''Server-Configuration'', it's possible to adjust the formatting [https://docs.microsoft.com/en-us/dotnet/api/system.globalization.cultureinfo Culture] and leading-zeroes trimming.&lt;br /&gt;
&lt;br /&gt;
[[Category:2.5.0|Live Values]]&lt;br /&gt;
[[Category:3.6.|Live Values]]&lt;br /&gt;
[[Category:Android|Live Values]]&lt;br /&gt;
[[Category:WinX|Live Values]]&lt;br /&gt;
[[Category:Xamarin|Live Values]]&lt;br /&gt;
[[Category:Live Values|Live Values]]&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Live_Values&amp;diff=23288</id>
		<title>Live Values</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Live_Values&amp;diff=23288"/>
				<updated>2021-09-16T07:05:56Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:livevalues_xamarin.jpg |thumb|border|alt= Live values in Xamarin|Live values in Xamarin]]&lt;br /&gt;
[[File:livevalues_winx.png |thumb|border|alt= Live values in WinX|Live values in WinX]]&lt;br /&gt;
Live values are properties that update with a configured frequency. These properties contain information about reliability, measurement quality, and synchronization, as well as custom data (attributes). Real-time data, originating from various systems, can be delivered to the clients with minimum delay.&lt;br /&gt;
&lt;br /&gt;
The Android, Xamarin and WinX clients display live values alongside other properties, and they are also shown on the [[Map View|map view]] upon selecting the specific object.&lt;br /&gt;
&lt;br /&gt;
Also check out the [[HowTo:Implementing_Live_Values|Guide for Implementing Live Values]].&lt;br /&gt;
&lt;br /&gt;
== Content Browser ==&lt;br /&gt;
The row for live value properties differs only slightly from normal property rows. On the left of the property value, below the description, is a connectivity indicator icon (reminding of the connectivity icon from cell phones). The more current the property value and the better its quality is, the better the connectivity is indicated. If all bars are greyed out and a small red cross is shown, the last update happened very long ago or no update was received at all, or the measurement quality is bad. For detailed information about that, a detailed dialog is necessary.&lt;br /&gt;
&lt;br /&gt;
=== Connectivity Indicator ===&lt;br /&gt;
[[File:UI_android_live_values_freshness_indicators.png |thumb|border|alt= States of the connectivity indicator|States of the connectivity indicator]]&lt;br /&gt;
&lt;br /&gt;
The connectivity indicator has the following states, from left to right:&lt;br /&gt;
* Good&lt;br /&gt;
* Questionable&lt;br /&gt;
* Bad&lt;br /&gt;
&lt;br /&gt;
Note that the connectivity indicator combines the freshness and the measurement quality of the live value, thus describing the overall reliability of the value instead of just how recent it is.&lt;br /&gt;
&lt;br /&gt;
The following gallery gives an overview of the possible synchronization states of live value property rows.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;200&amp;quot; heights=&amp;quot;360&amp;quot;&amp;gt;&lt;br /&gt;
File:UI_android_live_values_row_new.png| Reliable live values (Android)&lt;br /&gt;
File:UI_WinX_live_values_row_new.png| Reliable live values (Windows)&lt;br /&gt;
File:UI_WinX_live_values_detailsrow_new.png| Reliable live values in the document/details view (Windows)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Map view==&lt;br /&gt;
[[File:UI_android_live_values_map_view.png |thumb|border|alt= Live values map view|Live values map view (Android)]]&lt;br /&gt;
[[File:UI_WinX_live_values_map_view.png |thumb|border|alt= Live values map view|Live values map view (Windows)]]&lt;br /&gt;
&lt;br /&gt;
Upon clicking a correctly configured object within the map view, properties are shown within the opened dialog. It is important to know, that only '''High priority''' properties are shown here, altering the [[Settings#List of settings|priority threshold]] setting may change the visibility of the live property in the map view.&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
{{Category/Version|2.5.0}}&lt;br /&gt;
&lt;br /&gt;
== Detail dialog ==&lt;br /&gt;
The freshness is very crucial in order to know whether the live property value can be trusted, but there are other influences like how good the measurement itself was. These information gets displayed via a dialog, the user can upon clicking the [[Live Values#Freshness Indicator |freshness indicator]] symbol both in the content Browser or the map view.&lt;br /&gt;
Within the dialog, several detailed information can be seen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | width = &amp;quot;75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Description!! Information&lt;br /&gt;
|-&lt;br /&gt;
| ''Live Value''|| Provides the same information as the row itself, namely value and as an icon the connectivity indicator.&lt;br /&gt;
|-&lt;br /&gt;
| ''Recentness''|| Displays how long ago the last synchronization was, based on the internal freshness evaluation system. &lt;br /&gt;
|-&lt;br /&gt;
| ''Last Synchronization''|| Displays the exact timestamp of the last successful synchronization, out of this, the recentness is evaluated.&lt;br /&gt;
|-&lt;br /&gt;
| ''Measurement time stamp''|| Measurement time stamp provided by the measurement unit itself (for instance a pressure measurement unit). It should not be trusted entirely since device time and measurement until time could have a huge difference.&lt;br /&gt;
|-&lt;br /&gt;
| ''Measurement quality''|| Quality information provided by the measurement unit or data collecting instance (e.g. OPCUA Server) which together with the &amp;quot;Recentness&amp;quot; gets combined to evaluate the [[Live Values#Freshness Indicator |freshness indicator]]. In addition, a more detailed description of the measurement gets displayed if available.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Some examples how such a detailed information dialog looks like in the following gallery:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;200&amp;quot; heights=&amp;quot;360&amp;quot;&amp;gt;&lt;br /&gt;
File:UI_android_live_values_dialog_new.png| Fresh live values (Android)&lt;br /&gt;
File:UI_windows_live_values_dialog_new.png| Fresh live values (WinX)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attributes {{Version/WinXSince|3.6}} {{Version/ServerSince|2.6.4}} ==&lt;br /&gt;
[[File:attributes.png |thumb|Attributes in the detail dialog (WinX)]]&lt;br /&gt;
Attributes are additional data that are sent to clients with every value update. They can be customized where the live values are generated (in the plugin) to contain the unit, formatted value, description, etc. &lt;br /&gt;
&lt;br /&gt;
They were introduced in Service Version 2.6.4 and Client Version 3.6.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Accessing from XAML ==&lt;br /&gt;
Live values can be easily accessed from XAML, as long as the view model has a reference to the '''Properties''' collection.&lt;br /&gt;
&lt;br /&gt;
=== Displaying all Live Values ===&lt;br /&gt;
This XAML code will generate a list of all live values of this object:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ListView ItemsSource=&amp;quot;{Binding Properties.ImportantLiveItems}&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;Grid Width=&amp;quot;100&amp;quot;  Height=&amp;quot;40&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;FontIcon FontFamily=&amp;quot;Segoe MDL2 Assets&amp;quot; Glyph=&amp;quot;{Binding Content.LiveValueQualitySymbol}&amp;quot; HorizontalAlignment=&amp;quot;Left&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;TextBlock Text=&amp;quot;{Binding Content.DisplayValue}&amp;quot; HorizontalAlignment=&amp;quot;Right&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;/Grid&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Accessing Single Value ===&lt;br /&gt;
This code binds the value of the '''LMP_FLOW''' LiveValue-MetaProperty to a &amp;lt;code&amp;gt;TextBlock&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;TextBlock Text=&amp;quot;{Binding Properties.ImportantLiveItems[LMP_FLOW].Content.Value}&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Furthermore, you can bind to:&lt;br /&gt;
* Description&lt;br /&gt;
* QualitySymbol&lt;br /&gt;
* Age&lt;br /&gt;
* LastSync&lt;br /&gt;
* TimeStamp&lt;br /&gt;
* Attributes (see below) {{Version/WinXSince|3.6}} {{Version/ServerSince|2.6.4}}&lt;br /&gt;
&lt;br /&gt;
=== Binding to Attributes {{Version/WinXSince|3.6}} {{Version/ServerSince|2.6.4}} ===&lt;br /&gt;
Attributes can be bound to similarly as to the individual value:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;TextBlock Text=&amp;quot;{Binding Properties.ImportantLiveItems[LMP_FLOW].Content.Attributes[Unit].Value}&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following data are available for each attribute:&lt;br /&gt;
* Value&lt;br /&gt;
* Key&lt;br /&gt;
* Description&lt;br /&gt;
&lt;br /&gt;
==== Further Attributes ====&lt;br /&gt;
Custom attributes can be defined in the corresponding '''Live Value Interface''', with some of them pre-defined in the corresponding interfaces. &lt;br /&gt;
&lt;br /&gt;
As an example, the [[OSIPI_(Plugin)|OSIPI Plugin]] defines an Attribute called '''FORMATTED''', which contains the ''Value'' already pre-formatted according to [https://livelibrary.osisoft.com/LiveLibrary/content/en/webparts-v4/GUID-13DC1C74-40B9-4FFE-B0B2-FCD204D8C337#addHistory=true&amp;amp;filename=GUID-A467C65F-C7C1-439D-AB26-7C360DB61865.xml&amp;amp;docid=GUID-13DC1C74-40B9-4FFE-B0B2-FCD204D8C337&amp;amp;inner_id=&amp;amp;tid=&amp;amp;query=&amp;amp;scope=&amp;amp;resource=&amp;amp;toc=false&amp;amp;eventType=lcContent.loadDocGUID-13DC1C74-40B9-4FFE-B0B2-FCD204D8C337 OsiPi's Specification]. In the ''Server-Configuration'', it's possible to adjust the formatting [https://docs.microsoft.com/en-us/dotnet/api/system.globalization.cultureinfo Culture] and leading-zeroes trimming.&lt;br /&gt;
&lt;br /&gt;
[[Category:2.5.0|Live Values]]&lt;br /&gt;
[[Category:3.6.|Live Values]]&lt;br /&gt;
[[Category:Android|Live Values]]&lt;br /&gt;
[[Category:WinX|Live Values]]&lt;br /&gt;
[[Category:Xamarin|Live Values]]&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=OSIPI_(Plugin)&amp;diff=23287</id>
		<title>OSIPI (Plugin)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=OSIPI_(Plugin)&amp;diff=23287"/>
				<updated>2021-09-16T07:05:32Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The OSIPI interface module enables support for reading data from [https://www.osisoft.com/pi-system/ OSIsoft PI systems] as well as data from the [https://docs.osisoft.com/bundle/ocs/page/ocs-content-portal-overview.html OSIsoft Cloud Services] and provides them as [[Live_Values]] within Ubik.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
The module allows live data from the Data Archive to be read via both the '''PI Web API''' as well as from the '''OCS system'''{{Version/ServerSince|3.6.0}}.&lt;br /&gt;
&lt;br /&gt;
Furthermore, it supports:&lt;br /&gt;
* Values of multiple types&lt;br /&gt;
* Configuration of multiple server instances to handle multiple sources simultaneously&lt;br /&gt;
* Correct value formatting according to the docs{{Version/ServerSince|3.5.0}}&lt;br /&gt;
&lt;br /&gt;
== Prerequesites ==&lt;br /&gt;
They vary slightly by the type of interface. For the common things, you need a functioning Ubik Server setup (Studio, Database, and Web Service).&lt;br /&gt;
&lt;br /&gt;
=== PIWebAPI===&lt;br /&gt;
To be able to successfully set up the system, the Ubik server/development machine needs access to the OSIPI instance. This can be easily checked in the web browser by navigating to the provided URL. [https://techsupport.osisoft.com/Documentation/PI-Web-API/help.html OSIsoft's PiWebAPI] is a [https://en.wikipedia.org/wiki/Representational_state_transfer REST API], from which the plugin reads data.&lt;br /&gt;
&lt;br /&gt;
=== OCS API===&lt;br /&gt;
The Ubik server/development machine needs access to the OCS server, which usually means internet access, as it's somewhere in the cloud. The API uses OpenID Connect for authentication, and the Ubik module supports the [https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-client-creds-grant-flow OAuth2 Client Credentials Flow] only, so make sure to have a valid &amp;lt;code&amp;gt;TenantID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ClientID&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ClientSecret&amp;lt;/code&amp;gt; ready.&lt;br /&gt;
&lt;br /&gt;
== Configuration in Ubik ==&lt;br /&gt;
Live value servers get added to instances of the '''OSIPI_SERVER''' metaclass, whereas the data points are objects of the '''OSIPI_DATAPOINT''' metaclass. &amp;lt;br/&amp;gt;&lt;br /&gt;
With that difference in mind, follow this guide: [[HowTo:Implementing_Live_Values]].&lt;br /&gt;
&lt;br /&gt;
Not all data types of OSIPI are available to be configured in Ubik. The following table shows the matches:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''OSIPI Data Type'''&lt;br /&gt;
|'''Ubik Data Type'''&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Digital&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;Integer&amp;lt;/code&amp;gt; (0 or 1)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;String&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;String&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Int16&amp;lt;/code&amp;gt; {{Version/ServerSince|3.5.0}}&lt;br /&gt;
|&amp;lt;code&amp;gt;Integer&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Int32&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;Integer&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Float16&amp;lt;/code&amp;gt; {{Version/ServerSince|3.5.0}}&lt;br /&gt;
|&amp;lt;code&amp;gt;Float&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Float32&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;Float&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Float64&amp;lt;/code&amp;gt; {{Version/ServerSince|3.5.0}}&lt;br /&gt;
|&amp;lt;code&amp;gt;Float&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The same is true for the '''OCS API''', nullables are not yet supported.&lt;br /&gt;
&lt;br /&gt;
=== Authentication ===&lt;br /&gt;
The following authentication methods are supported.&lt;br /&gt;
&lt;br /&gt;
==== PI Web API ====&lt;br /&gt;
The OSIPI plugin supports two types of authentication for the '''PIWebAPI''':&lt;br /&gt;
* Basic {{Version/ServerSince|3.5.0}}&lt;br /&gt;
* Current User/Windows Authentication&lt;br /&gt;
&lt;br /&gt;
In the case of '''Basic authentication''', put the credentials in the respective fields &amp;lt;code&amp;gt;LOGINNAME&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;PASSWORD&amp;lt;/code&amp;gt;. Be aware that domain backslashes might need to be doubled, thanks to their escaping nature, e.g.: &amp;lt;code&amp;gt;DOMAIN\\USER&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you leave the &amp;lt;code&amp;gt;LOGINNAME&amp;lt;/code&amp;gt; field empty, the client tries to authenticate against the OSIPI server with &amp;lt;code&amp;gt;[https://docs.microsoft.com/en-us/dotnet/api/system.net.webclient.usedefaultcredentials WebClient.UseDefaultCredentials]&amp;lt;/code&amp;gt;. Should this be the authentication of your choice, be aware that the Ubik Studio/Enterprise Service/Web Service needs to be started as that user that has access to the PI system. &lt;br /&gt;
&lt;br /&gt;
Also, make sure that &amp;lt;code&amp;gt;USE_OCS&amp;lt;/code&amp;gt; is '''not''' checked.&lt;br /&gt;
&lt;br /&gt;
==== OCS API ====&lt;br /&gt;
Only one type of authentication is supported for the '''OCS API''':&lt;br /&gt;
* OAuth2.0/OpenID Connect Client Credentials Flow&lt;br /&gt;
&lt;br /&gt;
For that, make sure to fill up the required fields &amp;lt;code&amp;gt;TENANT_ID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;CLIENT_ID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;CLIENT_SECRET&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;API_VERSION&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;OCS_NAMESPACE&amp;lt;/code&amp;gt; and make sure that &amp;lt;code&amp;gt;USE_OCS&amp;lt;/code&amp;gt; is checked.&lt;br /&gt;
&lt;br /&gt;
== Attributes {{Version/WinXSince|3.6}} {{Version/XamarinSince|1.1}} {{Version/ServerSince|3.5.0}} ==&lt;br /&gt;
The Ubik OSIPI Plugin also supports [[Live_Values#Attributes|Live Value Attributes]], which can be [[Live_Values#Binding_to_Attributes|bound to directly from XAML]]. Not all attributes are delivered for all live values.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''Live Value Attribute'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;UNIT&amp;lt;/code&amp;gt;&lt;br /&gt;
|The unit of the OSIPI datapoint from OSIPI. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This attribute is only available if the unit from OSIPI is not empty.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;FORMATTED&amp;lt;/code&amp;gt;&lt;br /&gt;
|The value in the format ''{Value} {Unit}'', with the option to set the [https://docs.microsoft.com/en-us/dotnet/api/system.globalization.cultureinfo value formatting culture] (with the &amp;lt;code&amp;gt;FORMATTING_CULTURE&amp;lt;/code&amp;gt; field on the  ''OSIPI_SERVER''). There is also an option to trim leading zeroes (with the &amp;lt;code&amp;gt;TRIM_LEADING_ZEROES&amp;lt;/code&amp;gt; field), however, this is only available with the '''PIWEBAPI'''. This functionality is available in Ubik.Server 3.5.x as well, however, the fields &amp;lt;code&amp;gt;FORMATTING_CULTURE&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;TRIM_LEADING_ZEROES&amp;lt;/code&amp;gt; are not generated automatically. This was repaired in 3.6.0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This attribute is only available when the live value is numeric.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;DIGITS&amp;lt;/code&amp;gt;&lt;br /&gt;
|The [https://www.google.com/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=1&amp;amp;cad=rja&amp;amp;uact=8&amp;amp;ved=2ahUKEwjFrLe1vaPlAhXQDmMBHYFUBycQFjAAegQIAxAB&amp;amp;url=https%3A%2F%2Flivelibrary.osisoft.com%2FLiveLibrary%2Fcontent%2Fen%2Fwebparts-v4%2FGUID-13DC1C74-40B9-4FFE-B0B2-FCD204D8C337&amp;amp;usg=AOvVaw2Zg1surxOxQ9sAedVz70DG OSIPI display digits] described.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This attribute is only available when the live value is numeric and only when using the '''PIWEBAPI'''.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:OSIPI|OSIPI (Plugin)]]&lt;br /&gt;
[[Category:Live Values|OSIPI (Plugin)]]&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Category:Live_Values&amp;diff=23286</id>
		<title>Category:Live Values</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Category:Live_Values&amp;diff=23286"/>
				<updated>2021-09-16T07:05:27Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: Created page with &amp;quot;Category:Interfacing&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Interfacing]]&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=OSIPI_(Plugin)&amp;diff=23285</id>
		<title>OSIPI (Plugin)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=OSIPI_(Plugin)&amp;diff=23285"/>
				<updated>2021-09-16T07:04:52Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The OSIPI interface module enables support for reading data from [https://www.osisoft.com/pi-system/ OSIsoft PI systems] as well as data from the [https://docs.osisoft.com/bundle/ocs/page/ocs-content-portal-overview.html OSIsoft Cloud Services] and provides them as [[Live_Values]] within Ubik.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
The module allows live data from the Data Archive to be read via both the '''PI Web API''' as well as from the '''OCS system'''{{Version/ServerSince|3.6.0}}.&lt;br /&gt;
&lt;br /&gt;
Furthermore, it supports:&lt;br /&gt;
* Values of multiple types&lt;br /&gt;
* Configuration of multiple server instances to handle multiple sources simultaneously&lt;br /&gt;
* Correct value formatting according to the docs{{Version/ServerSince|3.5.0}}&lt;br /&gt;
&lt;br /&gt;
== Prerequesites ==&lt;br /&gt;
They vary slightly by the type of interface. For the common things, you need a functioning Ubik Server setup (Studio, Database, and Web Service).&lt;br /&gt;
&lt;br /&gt;
=== PIWebAPI===&lt;br /&gt;
To be able to successfully set up the system, the Ubik server/development machine needs access to the OSIPI instance. This can be easily checked in the web browser by navigating to the provided URL. [https://techsupport.osisoft.com/Documentation/PI-Web-API/help.html OSIsoft's PiWebAPI] is a [https://en.wikipedia.org/wiki/Representational_state_transfer REST API], from which the plugin reads data.&lt;br /&gt;
&lt;br /&gt;
=== OCS API===&lt;br /&gt;
The Ubik server/development machine needs access to the OCS server, which usually means internet access, as it's somewhere in the cloud. The API uses OpenID Connect for authentication, and the Ubik module supports the [https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-client-creds-grant-flow OAuth2 Client Credentials Flow] only, so make sure to have a valid &amp;lt;code&amp;gt;TenantID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ClientID&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ClientSecret&amp;lt;/code&amp;gt; ready.&lt;br /&gt;
&lt;br /&gt;
== Configuration in Ubik ==&lt;br /&gt;
Live value servers get added to instances of the '''OSIPI_SERVER''' metaclass, whereas the data points are objects of the '''OSIPI_DATAPOINT''' metaclass. &amp;lt;br/&amp;gt;&lt;br /&gt;
With that difference in mind, follow this guide: [[HowTo:Implementing_Live_Values]].&lt;br /&gt;
&lt;br /&gt;
Not all data types of OSIPI are available to be configured in Ubik. The following table shows the matches:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''OSIPI Data Type'''&lt;br /&gt;
|'''Ubik Data Type'''&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Digital&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;Integer&amp;lt;/code&amp;gt; (0 or 1)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;String&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;String&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Int16&amp;lt;/code&amp;gt; {{Version/ServerSince|3.5.0}}&lt;br /&gt;
|&amp;lt;code&amp;gt;Integer&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Int32&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;Integer&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Float16&amp;lt;/code&amp;gt; {{Version/ServerSince|3.5.0}}&lt;br /&gt;
|&amp;lt;code&amp;gt;Float&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Float32&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;Float&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Float64&amp;lt;/code&amp;gt; {{Version/ServerSince|3.5.0}}&lt;br /&gt;
|&amp;lt;code&amp;gt;Float&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The same is true for the '''OCS API''', nullables are not yet supported.&lt;br /&gt;
&lt;br /&gt;
=== Authentication ===&lt;br /&gt;
The following authentication methods are supported.&lt;br /&gt;
&lt;br /&gt;
==== PI Web API ====&lt;br /&gt;
The OSIPI plugin supports two types of authentication for the '''PIWebAPI''':&lt;br /&gt;
* Basic {{Version/ServerSince|3.5.0}}&lt;br /&gt;
* Current User/Windows Authentication&lt;br /&gt;
&lt;br /&gt;
In the case of '''Basic authentication''', put the credentials in the respective fields &amp;lt;code&amp;gt;LOGINNAME&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;PASSWORD&amp;lt;/code&amp;gt;. Be aware that domain backslashes might need to be doubled, thanks to their escaping nature, e.g.: &amp;lt;code&amp;gt;DOMAIN\\USER&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you leave the &amp;lt;code&amp;gt;LOGINNAME&amp;lt;/code&amp;gt; field empty, the client tries to authenticate against the OSIPI server with &amp;lt;code&amp;gt;[https://docs.microsoft.com/en-us/dotnet/api/system.net.webclient.usedefaultcredentials WebClient.UseDefaultCredentials]&amp;lt;/code&amp;gt;. Should this be the authentication of your choice, be aware that the Ubik Studio/Enterprise Service/Web Service needs to be started as that user that has access to the PI system. &lt;br /&gt;
&lt;br /&gt;
Also, make sure that &amp;lt;code&amp;gt;USE_OCS&amp;lt;/code&amp;gt; is '''not''' checked.&lt;br /&gt;
&lt;br /&gt;
==== OCS API ====&lt;br /&gt;
Only one type of authentication is supported for the '''OCS API''':&lt;br /&gt;
* OAuth2.0/OpenID Connect Client Credentials Flow&lt;br /&gt;
&lt;br /&gt;
For that, make sure to fill up the required fields &amp;lt;code&amp;gt;TENANT_ID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;CLIENT_ID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;CLIENT_SECRET&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;API_VERSION&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;OCS_NAMESPACE&amp;lt;/code&amp;gt; and make sure that &amp;lt;code&amp;gt;USE_OCS&amp;lt;/code&amp;gt; is checked.&lt;br /&gt;
&lt;br /&gt;
== Attributes {{Version/WinXSince|3.6}} {{Version/XamarinSince|1.1}} {{Version/ServerSince|3.5.0}} ==&lt;br /&gt;
The Ubik OSIPI Plugin also supports [[Live_Values#Attributes|Live Value Attributes]], which can be [[Live_Values#Binding_to_Attributes|bound to directly from XAML]]. Not all attributes are delivered for all live values.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''Live Value Attribute'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;UNIT&amp;lt;/code&amp;gt;&lt;br /&gt;
|The unit of the OSIPI datapoint from OSIPI. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This attribute is only available if the unit from OSIPI is not empty.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;FORMATTED&amp;lt;/code&amp;gt;&lt;br /&gt;
|The value in the format ''{Value} {Unit}'', with the option to set the [https://docs.microsoft.com/en-us/dotnet/api/system.globalization.cultureinfo value formatting culture] (with the &amp;lt;code&amp;gt;FORMATTING_CULTURE&amp;lt;/code&amp;gt; field on the  ''OSIPI_SERVER''). There is also an option to trim leading zeroes (with the &amp;lt;code&amp;gt;TRIM_LEADING_ZEROES&amp;lt;/code&amp;gt; field), however, this is only available with the '''PIWEBAPI'''. This functionality is available in Ubik.Server 3.5.x as well, however, the fields &amp;lt;code&amp;gt;FORMATTING_CULTURE&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;TRIM_LEADING_ZEROES&amp;lt;/code&amp;gt; are not generated automatically. This was repaired in 3.6.0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This attribute is only available when the live value is numeric.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;DIGITS&amp;lt;/code&amp;gt;&lt;br /&gt;
|The [https://www.google.com/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=1&amp;amp;cad=rja&amp;amp;uact=8&amp;amp;ved=2ahUKEwjFrLe1vaPlAhXQDmMBHYFUBycQFjAAegQIAxAB&amp;amp;url=https%3A%2F%2Flivelibrary.osisoft.com%2FLiveLibrary%2Fcontent%2Fen%2Fwebparts-v4%2FGUID-13DC1C74-40B9-4FFE-B0B2-FCD204D8C337&amp;amp;usg=AOvVaw2Zg1surxOxQ9sAedVz70DG OSIPI display digits] described.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This attribute is only available when the live value is numeric and only when using the '''PIWEBAPI'''.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:OSIPI|OSIPI (Plugin)]]&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=OSIPI_(Plugin)&amp;diff=23284</id>
		<title>OSIPI (Plugin)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=OSIPI_(Plugin)&amp;diff=23284"/>
				<updated>2021-09-16T07:04:29Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: Fixed OSIPI Attribute Description&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The OSIPI interface module enables support for reading data from [https://www.osisoft.com/pi-system/ OSIsoft PI systems] as well as data from the [https://docs.osisoft.com/bundle/ocs/page/ocs-content-portal-overview.html OSIsoft Cloud Services] and provides them as [[Live_Values]] within Ubik.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
The module allows live data from the Data Archive to be read via both the '''PI Web API''' as well as from the '''OCS system'''{{Version/ServerSince|3.6.0}}.&lt;br /&gt;
&lt;br /&gt;
Furthermore, it supports:&lt;br /&gt;
* Values of multiple types&lt;br /&gt;
* Configuration of multiple server instances to handle multiple sources simultaneously&lt;br /&gt;
* Correct value formatting according to the docs{{Version/ServerSince|3.5.0}}&lt;br /&gt;
&lt;br /&gt;
== Prerequesites ==&lt;br /&gt;
They vary slightly by the type of interface. For the common things, you need a functioning Ubik Server setup (Studio, Database, and Web Service).&lt;br /&gt;
&lt;br /&gt;
=== PIWebAPI===&lt;br /&gt;
To be able to successfully set up the system, the Ubik server/development machine needs access to the OSIPI instance. This can be easily checked in the web browser by navigating to the provided URL. [https://techsupport.osisoft.com/Documentation/PI-Web-API/help.html OSIsoft's PiWebAPI] is a [https://en.wikipedia.org/wiki/Representational_state_transfer REST API], from which the plugin reads data.&lt;br /&gt;
&lt;br /&gt;
=== OCS API===&lt;br /&gt;
The Ubik server/development machine needs access to the OCS server, which usually means internet access, as it's somewhere in the cloud. The API uses OpenID Connect for authentication, and the Ubik module supports the [https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-client-creds-grant-flow OAuth2 Client Credentials Flow] only, so make sure to have a valid &amp;lt;code&amp;gt;TenantID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ClientID&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ClientSecret&amp;lt;/code&amp;gt; ready.&lt;br /&gt;
&lt;br /&gt;
== Configuration in Ubik ==&lt;br /&gt;
Live value servers get added to instances of the '''OSIPI_SERVER''' metaclass, whereas the data points are objects of the '''OSIPI_DATAPOINT''' metaclass. &amp;lt;br/&amp;gt;&lt;br /&gt;
With that difference in mind, follow this guide: [[HowTo:Implementing_Live_Values]].&lt;br /&gt;
&lt;br /&gt;
Not all data types of OSIPI are available to be configured in Ubik. The following table shows the matches:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''OSIPI Data Type'''&lt;br /&gt;
|'''Ubik Data Type'''&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Digital&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;Integer&amp;lt;/code&amp;gt; (0 or 1)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;String&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;String&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Int16&amp;lt;/code&amp;gt; {{Version/ServerSince|3.5.0}}&lt;br /&gt;
|&amp;lt;code&amp;gt;Integer&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Int32&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;Integer&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Float16&amp;lt;/code&amp;gt; {{Version/ServerSince|3.5.0}}&lt;br /&gt;
|&amp;lt;code&amp;gt;Float&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Float32&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;Float&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Float64&amp;lt;/code&amp;gt; {{Version/ServerSince|3.5.0}}&lt;br /&gt;
|&amp;lt;code&amp;gt;Float&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The same is true for the '''OCS API''', nullables are not yet supported.&lt;br /&gt;
&lt;br /&gt;
=== Authentication ===&lt;br /&gt;
The following authentication methods are supported.&lt;br /&gt;
&lt;br /&gt;
==== PI Web API ====&lt;br /&gt;
The OSIPI plugin supports two types of authentication for the '''PIWebAPI''':&lt;br /&gt;
* Basic {{Version/ServerSince|3.5.0}}&lt;br /&gt;
* Current User/Windows Authentication&lt;br /&gt;
&lt;br /&gt;
In the case of '''Basic authentication''', put the credentials in the respective fields &amp;lt;code&amp;gt;LOGINNAME&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;PASSWORD&amp;lt;/code&amp;gt;. Be aware that domain backslashes might need to be doubled, thanks to their escaping nature, e.g.: &amp;lt;code&amp;gt;DOMAIN\\USER&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you leave the &amp;lt;code&amp;gt;LOGINNAME&amp;lt;/code&amp;gt; field empty, the client tries to authenticate against the OSIPI server with &amp;lt;code&amp;gt;[https://docs.microsoft.com/en-us/dotnet/api/system.net.webclient.usedefaultcredentials WebClient.UseDefaultCredentials]&amp;lt;/code&amp;gt;. Should this be the authentication of your choice, be aware that the Ubik Studio/Enterprise Service/Web Service needs to be started as that user that has access to the PI system. &lt;br /&gt;
&lt;br /&gt;
Also, make sure that &amp;lt;code&amp;gt;USE_OCS&amp;lt;/code&amp;gt; is '''not''' checked.&lt;br /&gt;
&lt;br /&gt;
==== OCS API ====&lt;br /&gt;
Only one type of authentication is supported for the '''OCS API''':&lt;br /&gt;
* OAuth2.0/OpenID Connect Client Credentials Flow&lt;br /&gt;
&lt;br /&gt;
For that, make sure to fill up the required fields &amp;lt;code&amp;gt;TENANT_ID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;CLIENT_ID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;CLIENT_SECRET&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;API_VERSION&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;OCS_NAMESPACE&amp;lt;/code&amp;gt; and make sure that &amp;lt;code&amp;gt;USE_OCS&amp;lt;/code&amp;gt; is checked.&lt;br /&gt;
&lt;br /&gt;
== Attributes {{Version/WinXSince|3.6}} {{Version/XamarinSince|1.1}} {{Version/ServerSince|3.5.0}} ==&lt;br /&gt;
The Ubik OSIPI Plugin also supports [[Live_Values#Attributes|Live Value Attributes]], which can be [[Live_Values#Binding_to_Attributes|bound to directly from XAML]]. Not all attributes are delivered for all live values.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''Live Value Attribute'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;UNIT&amp;lt;/code&amp;gt;&lt;br /&gt;
|The unit of the OSIPI datapoint from OSIPI. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This attribute is only available if the unit from OSIPI is not empty.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;FORMATTED&amp;lt;/code&amp;gt;&lt;br /&gt;
|The value in the format ''{Value} {Unit}'', with the option to set the [https://docs.microsoft.com/en-us/dotnet/api/system.globalization.cultureinfo value formatting culture] (with the &amp;lt;code&amp;gt;FORMATTING_CULTURE&amp;lt;/code&amp;gt; field on the  ''OSIPI_SERVER''). There is also an option to trim leading zeroes (with the &amp;lt;code&amp;gt;TRIM_LEADING_ZEROES&amp;lt;/code&amp;gt; field), however, this is only available with the '''PIWEBAPI'''. This functionality is available in Ubik.Server 3.5.x as well, however, the fields &amp;lt;code&amp;gt;FORMATTING_CULTURE&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;TRIM_LEADING_ZEROES&amp;lt;/code&amp;gt; are not generated automatically. This was repaired in 3.6.0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This attribute is only available when the live value is numeric.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;DIGITS&amp;lt;/code&amp;gt;&lt;br /&gt;
|The [https://www.google.com/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=1&amp;amp;cad=rja&amp;amp;uact=8&amp;amp;ved=2ahUKEwjFrLe1vaPlAhXQDmMBHYFUBycQFjAAegQIAxAB&amp;amp;url=https%3A%2F%2Flivelibrary.osisoft.com%2FLiveLibrary%2Fcontent%2Fen%2Fwebparts-v4%2FGUID-13DC1C74-40B9-4FFE-B0B2-FCD204D8C337&amp;amp;usg=AOvVaw2Zg1surxOxQ9sAedVz70DG OSIPI display digits] described.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This attribute is only available when the live value is numeric and only when using the '''PIWEBAPI'''.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_3.6_(Server)&amp;diff=23282</id>
		<title>Version 3.6 (Server)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_3.6_(Server)&amp;diff=23282"/>
				<updated>2021-09-14T14:22:59Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable sortable&amp;quot; | width = &amp;quot;300&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version !! Release Date&lt;br /&gt;
|- &lt;br /&gt;
| 3.6.0 || 2021.??.??&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Initial Release =&lt;br /&gt;
=== New features ===&lt;br /&gt;
* {{UBIK}} View Items provide the possibility to configure the data that should be (pre)loaded by a View when initiating a View Cache. Using this mechanism gives the customizer a very powerful instrument to tailor the preloading behavior for project-specific needs.&lt;br /&gt;
* {{UBIK}} View Cache Launcher has a possibility to configure a timespan in which the launcher stays inactive (See [[View_Cache_Launcher]]).&lt;br /&gt;
* {{UBIK}} Contexts can derive from each other now. Using this technique can reduce the amount of necessary work when configuring ACM and much more important, will increase maintainability.&lt;br /&gt;
* {{UBIK}} Views can derive from each other now. Using this technique can reduce the amount of necessary work when configuring Views and much more important, will increase maintainability.&lt;br /&gt;
* {{UBIK}} provides the possibility to distribute customizing related binaries via the database now. They do not need to be stored on a server file share anymore.&lt;br /&gt;
* {{UBIK}} supports Shape files for for representing geospatial vector data on the map now (https://wiki.openstreetmap.org/wiki/Shapefiles)&lt;br /&gt;
** [[SYSCLS_MAPSHAPE|Map Shape Classification Object]]&lt;br /&gt;
* {{UBIK}} supports the configuration of objects being automatically synced (make offline available) on clients&lt;br /&gt;
** [[SYSCLS_OFFLINE_SYNC_CONFIGURATION|Offline Sync Configuration Classification Object]]&lt;br /&gt;
* Improved Group Rights Evaluation&lt;br /&gt;
** WebServer Setting UBIK.Service.GroupRightsUpdateIntervall provides the possibility to configure the reload interval fully independent from the Validity Periode now&lt;br /&gt;
** A possibility to trigger a reload of the UserGroups, Logins, and their rights via Custom Code is provided now.&lt;br /&gt;
** The reload of  UserGroups, Logins, and their rights is managed in the background now, which improves the WebServer performance&lt;br /&gt;
* {{UBIK}} provides a set of new features to provide the client with additional information about the current Login&lt;br /&gt;
** {{UBIK}} Web Service provides the possibility to fetch detailed information about the current login &lt;br /&gt;
** If configured, the current login is delivered as part of the infrastructure. The data can be easily be used by the client then&lt;br /&gt;
** The Classification [[SYSCLS_LOGIN|Login Classification]] identifies logins as such. The classification does not insist on the Passwordhash Property anymore.&lt;br /&gt;
* {{UBIK}} supports clients working with and sending data from different time zones&lt;br /&gt;
** A database setting gives the possibility to configure the timezone data - values are stored in the database (downward compatibility)&lt;br /&gt;
* Added [[Data_Import_Service]], a new externally triggered customizable {{UBIK}} Interface &lt;br /&gt;
* {{UBIK}} provides a new classification to define documents as media documents (photo, video, audio)&lt;br /&gt;
** [[SYSCLS_MEDIAFILEDOCUMENT|Media Document Classification]]&lt;br /&gt;
* {{UBIK}} Webservices provides a data import service for standardized imports now.&lt;br /&gt;
* UBIK supports the definition of Logins being limited to login via specific Operation Systems (e.g. an Android User can only login using an Android device but cannot log in using Windows or iOS)&lt;br /&gt;
* Extended the {{UBIK}} [[OSIPI_(Plugin)|OSIPI Plugin]] to be able to read data from the [https://docs.osisoft.com/bundle/ocs/page/ocs-content-portal-overview.html OSIsoft Cloud Services (OCS)].&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
* A problem with autonomous properties not being filled when performing a branch download is solved now.&lt;br /&gt;
* Relation Editor uses the correct Icons when displaying MetaProperties now (consistent with Details View).&lt;br /&gt;
* DisplayList uses the correct Icons when displaying MetaProperties now.&lt;br /&gt;
* Having more than 500 MetaProperties in the database caused an irritating issue when trying to set the MetaProxy Property Target. This issue is solved now.&lt;br /&gt;
* System Selective Lists can be sent to the client now.&lt;br /&gt;
* A bug in providing Childowner - Info in combination with an active ViewCache is fixed now.&lt;br /&gt;
* Customized Property Values do not interfere with the change of properties on the Web Service anymore.&lt;br /&gt;
* A bug with incorrect ClassType in the NUMERIC_SEQUENCE instance is fixed now.&lt;br /&gt;
* An issue with remaining MetaProperties (in the Sandbox-table) after Metaclass is released is fixed now.&lt;br /&gt;
* Sequential (MRO) Tasks forward their progress to their owners correctly now &lt;br /&gt;
&lt;br /&gt;
=== Enhancements ===&lt;br /&gt;
* OPC/UA Live Values do support Attributes now&lt;br /&gt;
* The Login method persists Device Ids (sent from the clients) in UBIK now&lt;br /&gt;
* UBIK provides the possibility to inject your own Credentials Authentication mechanism now. This opens UBIK to use any user authentication system in the backend.&lt;br /&gt;
* UBIK uses a new logging solution. See [[Serilog]] for details.&lt;br /&gt;
* SQL Logging mechanism is easier to enable and the entries are extended showing&lt;br /&gt;
** Elapsed time&lt;br /&gt;
** Affected records&lt;br /&gt;
** Transaction start and end&lt;br /&gt;
** Occurred errors&lt;br /&gt;
* The UBIK Kernel allows deploying a locally staged customizing (without having the need to recompile it first) now.&lt;br /&gt;
* UBIK WebService provides detailed information about View Cache data including its loading performance&lt;br /&gt;
* Compiling the customizing does not copy symbol files to the project share anymore&lt;br /&gt;
* Staging (local compile) does not create a symbol file for the UI Customizing anymore.&lt;br /&gt;
* Staging (local compile) the customizing provides a symbol and the source file now. This is a prerequisite for debugging the customizing.&lt;br /&gt;
* Internal optimizations reduce the number of database accesses by far. This results in higher performance.&lt;br /&gt;
* UBIK uses Global error handling&lt;br /&gt;
* The UBIK Hotspotting Module supports processing new pdf Annotations now as well.&lt;br /&gt;
* The UBIK Hotspotting Module provides a new API for easing the processing of data.&lt;br /&gt;
* The UBIK Hotspotting Module triggers a Thumbnail update of the changed documents now.&lt;br /&gt;
* More performant object saving.&lt;br /&gt;
* Update mechanism provide LDAP System Metaclasses and their properties now.&lt;br /&gt;
*  The Ubik Interface Module Excel provides workflow activities to import data from MS Excel files.&lt;br /&gt;
* UBIK Clients terminate their tokens when logging out now (erroneous SessionManagement).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Build History Web Service =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Build History UBIK.Studio =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Build History UBIK.Plugins =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Category/Version2|{{PAGENAME}}}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Version 3.6|Version 3.6(Server)]]&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_3.6_(Server)&amp;diff=23281</id>
		<title>Version 3.6 (Server)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_3.6_(Server)&amp;diff=23281"/>
				<updated>2021-09-14T14:22:20Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: Added Release Notes for Ticket #6085/OSIsoft Cloud Services (OCS) support&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable sortable&amp;quot; | width = &amp;quot;300&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version !! Release Date&lt;br /&gt;
|- &lt;br /&gt;
| 3.6.0 || 2021.??.??&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Initial Release =&lt;br /&gt;
=== New features ===&lt;br /&gt;
* {{UBIK}} View Items provide the possibility to configure the data that should be (pre)loaded by a View when initiating a View Cache. Using this mechanism gives the customizer a very powerful instrument to tailor the preloading behavior for project-specific needs.&lt;br /&gt;
* {{UBIK}} View Cache Launcher has a possibility to configure a timespan in which the launcher stays inactive (See [[View_Cache_Launcher]]).&lt;br /&gt;
* {{UBIK}} Contexts can derive from each other now. Using this technique can reduce the amount of necessary work when configuring ACM and much more important, will increase maintainability.&lt;br /&gt;
* {{UBIK}} Views can derive from each other now. Using this technique can reduce the amount of necessary work when configuring Views and much more important, will increase maintainability.&lt;br /&gt;
* {{UBIK}} provides the possibility to distribute customizing related binaries via the database now. They do not need to be stored on a server file share anymore.&lt;br /&gt;
* {{UBIK}} supports Shape files for for representing geospatial vector data on the map now (https://wiki.openstreetmap.org/wiki/Shapefiles)&lt;br /&gt;
** [[SYSCLS_MAPSHAPE|Map Shape Classification Object]]&lt;br /&gt;
* {{UBIK}} supports the configuration of objects being automatically synced (make offline available) on clients&lt;br /&gt;
** [[SYSCLS_OFFLINE_SYNC_CONFIGURATION|Offline Sync Configuration Classification Object]]&lt;br /&gt;
* Improved Group Rights Evaluation&lt;br /&gt;
** WebServer Setting UBIK.Service.GroupRightsUpdateIntervall provides the possibility to configure the reload interval fully independent from the Validity Periode now&lt;br /&gt;
** A possibility to trigger a reload of the UserGroups, Logins, and their rights via Custom Code is provided now.&lt;br /&gt;
** The reload of  UserGroups, Logins, and their rights is managed in the background now, which improves the WebServer performance&lt;br /&gt;
* {{UBIK}} provides a set of new features to provide the client with additional information about the current Login&lt;br /&gt;
** {{UBIK}} Web Service provides the possibility to fetch detailed information about the current login &lt;br /&gt;
** If configured, the current login is delivered as part of the infrastructure. The data can be easily be used by the client then&lt;br /&gt;
** The Classification [[SYSCLS_LOGIN|Login Classification]] identifies logins as such. The classification does not insist on the Passwordhash Property anymore.&lt;br /&gt;
* {{UBIK}} supports clients working with and sending data from different time zones&lt;br /&gt;
** A database setting gives the possibility to configure the timezone data - values are stored in the database (downward compatibility)&lt;br /&gt;
* Added [[Data_Import_Service]], a new externally triggered customizable {{UBIK}} Interface &lt;br /&gt;
* {{UBIK}} provides a new classification to define documents as media documents (photo, video, audio)&lt;br /&gt;
** [[SYSCLS_MEDIAFILEDOCUMENT|Media Document Classification]]&lt;br /&gt;
* {{UBIK}} Webservices provides a data import service for standardized imports now.&lt;br /&gt;
* UBIK supports the definition of Logins being limited to login via specific Operation Systems (e.g. an Android User can only login using an Android device but cannot log in using Windows or iOS)&lt;br /&gt;
* Extended the UBIK [[OSIPI_(Plugin)|OSIPI Plugin]] to be able to read data from the [https://docs.osisoft.com/bundle/ocs/page/ocs-content-portal-overview.html OSIsoft Cloud Services (OCS)].&lt;br /&gt;
&lt;br /&gt;
[[Category:Version 3.6|Version 3.6(Server)]]&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
* A problem with autonomous properties not being filled when performing a branch download is solved now.&lt;br /&gt;
* Relation Editor uses the correct Icons when displaying MetaProperties now (consistent with Details View).&lt;br /&gt;
* DisplayList uses the correct Icons when displaying MetaProperties now.&lt;br /&gt;
* Having more than 500 MetaProperties in the database caused an irritating issue when trying to set the MetaProxy Property Target. This issue is solved now.&lt;br /&gt;
* System Selective Lists can be sent to the client now.&lt;br /&gt;
* A bug in providing Childowner - Info in combination with an active ViewCache is fixed now.&lt;br /&gt;
* Customized Property Values do not interfere with the change of properties on the Web Service anymore.&lt;br /&gt;
* A bug with incorrect ClassType in the NUMERIC_SEQUENCE instance is fixed now.&lt;br /&gt;
* An issue with remaining MetaProperties (in the Sandbox-table) after Metaclass is released is fixed now.&lt;br /&gt;
* Sequential (MRO) Tasks forward their progress to their owners correctly now &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Enhancements ===&lt;br /&gt;
* OPC/UA Live Values do support Attributes now&lt;br /&gt;
* The Login method persists Device Ids (sent from the clients) in UBIK now&lt;br /&gt;
* UBIK provides the possibility to inject your own Credentials Authentication mechanism now. This opens UBIK to use any user authentication system in the backend.&lt;br /&gt;
* UBIK uses a new logging solution. See [[Serilog]] for details.&lt;br /&gt;
* SQL Logging mechanism is easier to enable and the entries are extended showing&lt;br /&gt;
** Elapsed time&lt;br /&gt;
** Affected records&lt;br /&gt;
** Transaction start and end&lt;br /&gt;
** Occurred errors&lt;br /&gt;
* The UBIK Kernel allows deploying a locally staged customizing (without having the need to recompile it first) now.&lt;br /&gt;
* UBIK WebService provides detailed information about View Cache data including its loading performance&lt;br /&gt;
* Compiling the customizing does not copy symbol files to the project share anymore&lt;br /&gt;
* Staging (local compile) does not create a symbol file for the UI Customizing anymore.&lt;br /&gt;
* Staging (local compile) the customizing provides a symbol and the source file now. This is a prerequisite for debugging the customizing.&lt;br /&gt;
* Internal optimizations reduce the number of database accesses by far. This results in higher performance.&lt;br /&gt;
* UBIK uses Global error handling&lt;br /&gt;
* The UBIK Hotspotting Module supports processing new pdf Annotations now as well.&lt;br /&gt;
* The UBIK Hotspotting Module provides a new API for easing the processing of data.&lt;br /&gt;
* The UBIK Hotspotting Module triggers a Thumbnail update of the changed documents now.&lt;br /&gt;
* More performant object saving.&lt;br /&gt;
* Update mechanism provide LDAP System Metaclasses and their properties now.&lt;br /&gt;
*  The Ubik Interface Module Excel provides workflow activities to import data from MS Excel files.&lt;br /&gt;
* UBIK Clients terminate their tokens when logging out now (erroneous SessionManagement).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Build History Web Service =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Build History UBIK.Studio =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Build History UBIK.Plugins =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Category/Version2|{{PAGENAME}}}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Version 3.6|Version 3.6(Server)]]&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=OSIPI_(Plugin)&amp;diff=23280</id>
		<title>OSIPI (Plugin)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=OSIPI_(Plugin)&amp;diff=23280"/>
				<updated>2021-09-14T14:16:39Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: Added OSIsoft OCS API Interface&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The OSIPI interface module enables support for reading data from [https://www.osisoft.com/pi-system/ OSIsoft PI systems] as well as data from the [https://docs.osisoft.com/bundle/ocs/page/ocs-content-portal-overview.html OSIsoft Cloud Services] and provides them as [[Live_Values]] within Ubik.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
The module allows live data from the Data Archive to be read via both the '''PI Web API''' as well as from the '''OCS system'''{{Version/ServerSince|3.6.0}}.&lt;br /&gt;
&lt;br /&gt;
Furthermore, it supports:&lt;br /&gt;
* Values of multiple types&lt;br /&gt;
* Configuration of multiple server instances to handle multiple sources simultaneously&lt;br /&gt;
* Correct value formatting according to the docs{{Version/ServerSince|3.5.0}}&lt;br /&gt;
&lt;br /&gt;
== Prerequesites ==&lt;br /&gt;
They vary slightly by the type of interface. For the common things, you need a functioning Ubik Server setup (Studio, Database, and Web Service).&lt;br /&gt;
&lt;br /&gt;
=== PIWebAPI===&lt;br /&gt;
To be able to successfully set up the system, the Ubik server/development machine needs access to the OSIPI instance. This can be easily checked in the web browser by navigating to the provided URL. [https://techsupport.osisoft.com/Documentation/PI-Web-API/help.html OSIsoft's PiWebAPI] is a [https://en.wikipedia.org/wiki/Representational_state_transfer REST API], from which the plugin reads data.&lt;br /&gt;
&lt;br /&gt;
=== OCS API===&lt;br /&gt;
The Ubik server/development machine needs access to the OCS server, which usually means internet access, as it's somewhere in the cloud. The API uses OpenID Connect for authentication, and the Ubik module supports the [https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-client-creds-grant-flow OAuth2 Client Credentials Flow] only, so make sure to have a valid &amp;lt;code&amp;gt;TenantID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ClientID&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ClientSecret&amp;lt;/code&amp;gt; ready.&lt;br /&gt;
&lt;br /&gt;
== Configuration in Ubik ==&lt;br /&gt;
Live value servers get added to instances of the '''OSIPI_SERVER''' metaclass, whereas the data points are objects of the '''OSIPI_DATAPOINT''' metaclass. &amp;lt;br/&amp;gt;&lt;br /&gt;
With that difference in mind, follow this guide: [[HowTo:Implementing_Live_Values]].&lt;br /&gt;
&lt;br /&gt;
Not all data types of OSIPI are available to be configured in Ubik. The following table shows the matches:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''OSIPI Data Type'''&lt;br /&gt;
|'''Ubik Data Type'''&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Digital&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;Integer&amp;lt;/code&amp;gt; (0 or 1)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;String&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;String&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Int16&amp;lt;/code&amp;gt; {{Version/ServerSince|3.5.0}}&lt;br /&gt;
|&amp;lt;code&amp;gt;Integer&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Int32&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;Integer&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Float16&amp;lt;/code&amp;gt; {{Version/ServerSince|3.5.0}}&lt;br /&gt;
|&amp;lt;code&amp;gt;Float&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Float32&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;Float&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Float64&amp;lt;/code&amp;gt; {{Version/ServerSince|3.5.0}}&lt;br /&gt;
|&amp;lt;code&amp;gt;Float&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The same is true for the '''OCS API''', nullables are not yet supported.&lt;br /&gt;
&lt;br /&gt;
=== Authentication ===&lt;br /&gt;
The following authentication methods are supported.&lt;br /&gt;
&lt;br /&gt;
==== PI Web API ====&lt;br /&gt;
The OSIPI plugin supports two types of authentication for the '''PIWebAPI''':&lt;br /&gt;
* Basic {{Version/ServerSince|3.5.0}}&lt;br /&gt;
* Current User/Windows Authentication&lt;br /&gt;
&lt;br /&gt;
In the case of '''Basic authentication''', put the credentials in the respective fields &amp;lt;code&amp;gt;LOGINNAME&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;PASSWORD&amp;lt;/code&amp;gt;. Be aware that domain backslashes might need to be doubled, thanks to their escaping nature, e.g.: &amp;lt;code&amp;gt;DOMAIN\\USER&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you leave the &amp;lt;code&amp;gt;LOGINNAME&amp;lt;/code&amp;gt; field empty, the client tries to authenticate against the OSIPI server with &amp;lt;code&amp;gt;[https://docs.microsoft.com/en-us/dotnet/api/system.net.webclient.usedefaultcredentials WebClient.UseDefaultCredentials]&amp;lt;/code&amp;gt;. Should this be the authentication of your choice, be aware that the Ubik Studio/Enterprise Service/Web Service needs to be started as that user that has access to the PI system. &lt;br /&gt;
&lt;br /&gt;
Also, make sure that &amp;lt;code&amp;gt;USE_OCS&amp;lt;/code&amp;gt; is '''not''' checked.&lt;br /&gt;
&lt;br /&gt;
==== OCS API ====&lt;br /&gt;
Only one type of authentication is supported for the '''OCS API''':&lt;br /&gt;
* OAuth2.0/OpenID Connect Client Credentials Flow&lt;br /&gt;
&lt;br /&gt;
For that, make sure to fill up the required fields &amp;lt;code&amp;gt;TENANT_ID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;CLIENT_ID&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;CLIENT_SECRET&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;API_VERSION&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;OCS_NAMESPACE&amp;lt;/code&amp;gt; and make sure that &amp;lt;code&amp;gt;USE_OCS&amp;lt;/code&amp;gt; is checked.&lt;br /&gt;
&lt;br /&gt;
== Attributes {{Version/WinXSince|3.6}} {{Version/XamarinSince|1.1}} {{Version/ServerSince|3.5.0}} ==&lt;br /&gt;
The OSIPI Plugin delivers the correctly formatted value (if numeric) in the Live Value Attributes collection (exposed as &amp;lt;code&amp;gt;FORMATTED&amp;lt;/code&amp;gt;), which can be [[Live_Values#Binding_to_Attributes|bound to directly from XAML]]. &lt;br /&gt;
&lt;br /&gt;
The [https://docs.microsoft.com/en-us/dotnet/api/system.globalization.cultureinfo value formatting culture] can be set in the '''OSIPI_SERVER''' configuration with the &amp;lt;code&amp;gt;FORMATTING_CULTURE&amp;lt;/code&amp;gt; field, which defaults to &amp;lt;code&amp;gt;EN_US&amp;lt;/code&amp;gt;. There's also an option to trim leading zeroes (&amp;lt;code&amp;gt;TRIM_LEADING_ZEROES&amp;lt;/code&amp;gt;, defaulting to &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
This functionality is available in Ubik.Server 3.5.x as well, however, the fields &amp;lt;code&amp;gt;FORMATTING_CULTURE&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;TRIM_LEADING_ZEROES&amp;lt;/code&amp;gt; are not generated automatically. This was repaired in 3.6.0.&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Category:OSIPI&amp;diff=23279</id>
		<title>Category:OSIPI</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Category:OSIPI&amp;diff=23279"/>
				<updated>2021-09-14T14:16:30Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: Created page with &amp;quot;Category:Interfacing&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Interfacing]]&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_3.6_(Server)&amp;diff=23278</id>
		<title>Version 3.6 (Server)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_3.6_(Server)&amp;diff=23278"/>
				<updated>2021-09-14T12:31:23Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: Fixed Spelling mistakes in release notes 2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable sortable&amp;quot; | width = &amp;quot;300&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version !! Release Date&lt;br /&gt;
|- &lt;br /&gt;
| 3.6.0 || 2021.??.??&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Initial Release =&lt;br /&gt;
=== New features ===&lt;br /&gt;
* {{UBIK}} View Items provide the possibility to configure the data that should be (pre)loaded by a View when initiating a View Cache. Using this mechanism gives the customizer a very powerful instrument to tailor the preloading behavior for project-specific needs.&lt;br /&gt;
* {{UBIK}} View Cache Launcher has a possibility to configure a timespan in which the launcher stays inactive (See [[View_Cache_Launcher]]).&lt;br /&gt;
* {{UBIK}} Contexts can derive from each other now. Using this technique can reduce the amount of necessary work when configuring ACM and much more important, will increase maintainability.&lt;br /&gt;
* {{UBIK}} Views can derive from each other now. Using this technique can reduce the amount of necessary work when configuring Views and much more important, will increase maintainability.&lt;br /&gt;
* {{UBIK}} provides the possibility to distribute customizing related binaries via the database now. They do not need to be stored on a server file share anymore.&lt;br /&gt;
* {{UBIK}} supports Shape files for for representing geospatial vector data on the map now (https://wiki.openstreetmap.org/wiki/Shapefiles)&lt;br /&gt;
** [[SYSCLS_MAPSHAPE|Map Shape Classification Object]]&lt;br /&gt;
* {{UBIK}} supports the configuration of objects being automatically synced (make offline available) on clients&lt;br /&gt;
** [[SYSCLS_OFFLINE_SYNC_CONFIGURATION|Offline Sync Configuration Classification Object]]&lt;br /&gt;
* Improved Group Rights Evaluation&lt;br /&gt;
** WebServer Setting UBIK.Service.GroupRightsUpdateIntervall provides the possibility to configure the reload interval fully independent from the Validity Periode now&lt;br /&gt;
** A possibility to trigger a reload of the UserGroups, Logins, and their rights via Custom Code is provided now.&lt;br /&gt;
** The reload of  UserGroups, Logins, and their rights is managed in the background now, which improves the WebServer performance&lt;br /&gt;
* {{UBIK}} provides a set of new features to provide the client with additional information about the current Login&lt;br /&gt;
** {{UBIK}} Web Service provides the possibility to fetch detailed information about the current login &lt;br /&gt;
** If configured, the current login is delivered as part of the infrastructure. The data can be easily be used by the client then&lt;br /&gt;
** The Classification [[SYSCLS_LOGIN|Login Classification]] identifies logins as such. The classification does not insist on the Passwordhash Property anymore.&lt;br /&gt;
* {{UBIK}} supports clients working with and sending data from different time zones&lt;br /&gt;
** A database setting gives the possibility to configure the timezone data - values are stored in the database (downward compatibility)&lt;br /&gt;
* Added [[Data_Import_Service]], a new externally triggered customizable {{UBIK}} Interface &lt;br /&gt;
* {{UBIK}} provides a new classification to define documents as media documents (photo, video, audio)&lt;br /&gt;
** [[SYSCLS_MEDIAFILEDOCUMENT|Media Document Classification]]&lt;br /&gt;
* {{UBIK}} Webservices provides a data import service for standardized imports now.&lt;br /&gt;
* UBIK supports the definition of Logins being limited to login via specific Operation Systems (e.g. an Android User can only login using an Android device but cannot log in using Windows or iOS)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
* A problem with autonomous properties not being filled when performing a branch download is solved now.&lt;br /&gt;
* Relation Editor uses the correct Icons when displaying MetaProperties now (consistent with Details View).&lt;br /&gt;
* DisplayList uses the correct Icons when displaying MetaProperties now.&lt;br /&gt;
* Having more than 500 MetaProperties in the database caused an irritating issue when trying to set the MetaProxy Property Target. This issue is solved now.&lt;br /&gt;
* System Selective Lists can be sent to the client now.&lt;br /&gt;
* A bug in providing Childowner - Info in combination with an active ViewCache is fixed now.&lt;br /&gt;
* Customized Property Values do not interfere with the change of properties on the Web Service anymore.&lt;br /&gt;
* A bug with incorrect ClassType in the NUMERIC_SEQUENCE instance is fixed now.&lt;br /&gt;
* An issue with remaining MetaProperties (in the Sandbox-table) after Metaclass is released is fixed now.&lt;br /&gt;
* Sequential (MRO) Tasks forward their progress to their owners correctly now &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Enhancements ===&lt;br /&gt;
* OPC/UA Live Values do support Attributes now&lt;br /&gt;
* The Login method persists Device Ids (sent from the clients) in UBIK now&lt;br /&gt;
* UBIK provides the possibility to inject your own Credentials Authentication mechanism now. This opens UBIK to use any user authentication system in the backend.&lt;br /&gt;
* UBIK uses a new logging solution. See [[Serilog]] for details.&lt;br /&gt;
* SQL Logging mechanism is easier to enable and the entries are extended showing&lt;br /&gt;
** Elapsed time&lt;br /&gt;
** Affected records&lt;br /&gt;
** Transaction start and end&lt;br /&gt;
** Occurred errors&lt;br /&gt;
* The UBIK Kernel allows deploying a locally staged customizing (without having the need to recompile it first) now.&lt;br /&gt;
* UBIK WebService provides detailed information about View Cache data including its loading performance&lt;br /&gt;
* Compiling the customizing does not copy symbol files to the project share anymore&lt;br /&gt;
* Staging (local compile) does not create a symbol file for the UI Customizing anymore.&lt;br /&gt;
* Staging (local compile) the customizing provides a symbol and the source file now. This is a prerequisite for debugging the customizing.&lt;br /&gt;
* Internal optimizations reduce the number of database accesses by far. This results in higher performance.&lt;br /&gt;
* UBIK uses Global error handling&lt;br /&gt;
* The UBIK Hotspotting Module supports processing new pdf Annotations now as well.&lt;br /&gt;
* The UBIK Hotspotting Module provides a new API for easing the processing of data.&lt;br /&gt;
* The UBIK Hotspotting Module triggers a Thumbnail update of the changed documents now.&lt;br /&gt;
* More performant object saving.&lt;br /&gt;
* Update mechanism provide LDAP System Metaclasses and their properties now.&lt;br /&gt;
*  The Ubik Interface Module Excel provides workflow activities to import data from MS Excel files.&lt;br /&gt;
* UBIK Clients terminate their tokens when logging out now (erroneous SessionManagement).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Build History Web Service =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Build History UBIK.Studio =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Build History UBIK.Plugins =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Category/Version2|{{PAGENAME}}}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Version 3.6|Version 3.6(Server)]]&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_3.6_(Server)&amp;diff=23277</id>
		<title>Version 3.6 (Server)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_3.6_(Server)&amp;diff=23277"/>
				<updated>2021-09-14T12:29:29Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: Fixed Spelling mistakes in release notes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable sortable&amp;quot; | width = &amp;quot;300&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version !! Release Date&lt;br /&gt;
|- &lt;br /&gt;
| 3.6.0 || 2021.??.??&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Initial Release =&lt;br /&gt;
=== New features ===&lt;br /&gt;
* {{UBIK}} View Items provide the possibility to configure the data that should be (pre)loaded by a View when initiating a View Cache. Using this mechanism gives the customizer a very powerful instrument to tailor the preloading behavior for project specific needs.&lt;br /&gt;
* {{UBIK}} View Cache Launcher has a possibility to configure a timespan in which the launcher stays inactive (See [[View_Cache_Launcher]]).&lt;br /&gt;
* {{UBIK}} Contexts can derive from each other now. Using this technique can reduce the amount of necessary work when configuring ACM and much more important, will increase maintainability.&lt;br /&gt;
* {{UBIK}} Views can derive from each other now. Using this technique can reduce the amount of necessary work when configuring Views and much more important, will increase maintainability.&lt;br /&gt;
* {{UBIK}} provides the possibility to distribute customizing related binaries via the database now. They do not need to be stored on a server file share any more.&lt;br /&gt;
* {{UBIK}} supports Shape files for for representing geospatial vector data on the map now (https://wiki.openstreetmap.org/wiki/Shapefiles)&lt;br /&gt;
** [[SYSCLS_MAPSHAPE|Map Shape Classification Object]]&lt;br /&gt;
* {{UBIK}} supports the configuration of objects being automatically synced (make offline available) on clients&lt;br /&gt;
** [[SYSCLS_OFFLINE_SYNC_CONFIGURATION|Offline Sync Configuration Classification Object]]&lt;br /&gt;
* Improved Group Rights Evaluation&lt;br /&gt;
** WebServer Setting UBIK.Service.GroupRightsUpdateIntervall provides the possibility to configure the reload interval fully independend from the Validity Periode now&lt;br /&gt;
** A possibility to trigger a reload of the UserGroups, Logins and their rights via Custom Code is provided now.&lt;br /&gt;
** The reload of  UserGroups, Logins and their rights is managed in the background now, which improves the WebServer performance&lt;br /&gt;
* {{UBIK}} provides a set of new features to provide the client with additional information about the current Login&lt;br /&gt;
** {{UBIK}} Web Service provides the possibility to fetch detail information about the current login &lt;br /&gt;
** If configured, the current login is delivered as part of the infrastructure. The data can be easily be used by the client then&lt;br /&gt;
** The Classification [[SYSCLS_LOGIN|Login Classification]] identifies logins as such. The classification does not insist on the Passwordhash Property any more.&lt;br /&gt;
* {{UBIK}} supports clients working with and sending data from different time zones&lt;br /&gt;
** A database settings gives the possibility to configure the timezone date - values are stored in the database (downward compatibility)&lt;br /&gt;
* Added [[Data_Import_Service]], a new externally triggered customizable {{UBIK}} Interface &lt;br /&gt;
* {{UBIK}} provides a new classification to define documents as media documents (photo, video, audio)&lt;br /&gt;
** [[SYSCLS_MEDIAFILEDOCUMENT|Media Document Classification]]&lt;br /&gt;
* {{UBIK}} Webservices provides a data import service for standardized imports now.&lt;br /&gt;
* UBIK supports the definition of Logins being limited to login via specific Operation Systems (e.g. an Android User can only login using an Android device but cannot login using Windows or iOS)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
* A problem with autonomous properties not being filled when performing a branch download is solved now.&lt;br /&gt;
* Relation Editor uses the correct Icons when displaying MetaProperties now (consistent to Details View).&lt;br /&gt;
* DisplayList uses the correct Icons when displaying MetaProperties now.&lt;br /&gt;
* Having more than 500 Metaproperties in the database caused an irritating issue when trying to set the MetaProxy Property Target. This issue is solved now.&lt;br /&gt;
* System Selective Lists can be sent to the client now.&lt;br /&gt;
* A bug in providing Childowner - Info in combination with an active ViewCache is fixed now.&lt;br /&gt;
* Customized Property Values do not interfere with the change of properties on the Web Service any more.&lt;br /&gt;
* A bug with incorrect classtype in the NUMERIC_SEQUENCE instance is fixed now.&lt;br /&gt;
* An issue with remaining MetaProperties (in the Sandbox-table) after Metaclass is released is fixed now.&lt;br /&gt;
* Sequential (MRO) Tasks forward their progress to their owners corretly now &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Enhancements ===&lt;br /&gt;
* OPC/UA Live Values do support Attributes now&lt;br /&gt;
* The Login method persists Device Ids (sent from the clients) in UBIK now&lt;br /&gt;
* UBIK provides the possibility to inject your own Credentials Authentication mechanism now. This opens UBIK to use any user authentication system in the backend.&lt;br /&gt;
* UBIK uses a new logging solution. See [[Serilog]] for details.&lt;br /&gt;
* SQL Logging mechanism is more easier to enable and the entries are extended showing&lt;br /&gt;
** Elapsed time&lt;br /&gt;
** Affected records&lt;br /&gt;
** Transaction start and end&lt;br /&gt;
** Occurred errors&lt;br /&gt;
* The UBIK Kernel allows deploying a locally staged customizing (without having the need to recompile it first) now.&lt;br /&gt;
* UBIK WebService provides detailed information about View Cache data including its loading performance&lt;br /&gt;
* Compiling the customizing does not copy symbol files to the project share anymore&lt;br /&gt;
* Staging (local compile) does not create a symbol file for the UI Customizing anymore.&lt;br /&gt;
* Staging (local compile) the customizing provides a symbol and the source file now. This is a prerequisite for debugging the customizing.&lt;br /&gt;
* Internal optimizations reduce the number of database accesses by far. This results in higher performance.&lt;br /&gt;
* UBIK uses Global error handling&lt;br /&gt;
* The UBIK Hotspotting Module supports processing new pdf Annotations now as well.&lt;br /&gt;
* The UBIK Hotspotting Module provides a new API for easing the processing of data.&lt;br /&gt;
* The UBIK Hotspotting Module triggers a Thumbnail update of the changed documents now.&lt;br /&gt;
* More performant object saving.&lt;br /&gt;
* Update mechanism provide LDAP System Metaclasses and their properties now.&lt;br /&gt;
*  The Ubik Interface Module Excel provides workflow activities to import data from MS Excel files.&lt;br /&gt;
* UBIK Clients terminate their tokens when logging out now (erroneous SessionManagement).&lt;br /&gt;
&lt;br /&gt;
[[Category:Version 3.6|Version 3.6(Server)]]&lt;br /&gt;
&lt;br /&gt;
= Build History Web Service =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Build History UBIK.Studio =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Build History UBIK.Plugins =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Category/Version2|{{PAGENAME}}}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Version 3.6|Version 3.6(Server)]]&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_4.1_(Xamarin)&amp;diff=23252</id>
		<title>Version 4.1 (Xamarin)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_4.1_(Xamarin)&amp;diff=23252"/>
				<updated>2021-08-23T14:28:48Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release ==&lt;br /&gt;
&lt;br /&gt;
== Beta ==&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
&lt;br /&gt;
=== 4.0.? on 2021-??-?? {{key press|App Center}} ===&lt;br /&gt;
* The app's default profile is now only generated during app startup when no other profiles are detected.&lt;br /&gt;
* Xamarin Android now supports [[Managed_App_Configuration|managed app configuration]] for rolling out up to 9 Ubik profiles in an enterprise environment. &lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= XAML Notes =&lt;br /&gt;
&lt;br /&gt;
== XAML changes ==&lt;br /&gt;
Since there has been a major UI redesign in this version, quite a lot of changes in XAML code (especially bindings) are involved. We have striven to maintain backward compatibility, but some changes either are simply unavoidable or their long term benefits outweigh the efforts required this one time.&lt;br /&gt;
&lt;br /&gt;
=== UBIKContentArea ===&lt;br /&gt;
* Changed from &amp;quot;Properties.Items&amp;quot; to &amp;quot;Properties.VisibleItems&amp;quot; in bindings because Items/AllItems now also include those system/invisible ones that users are not supposed to see.&lt;br /&gt;
&lt;br /&gt;
=== UBIKThemes ===&lt;br /&gt;
* Removed &amp;quot;Content.&amp;quot;, &amp;quot;OwnerModel.&amp;quot; from bindings in DateTemplate &amp;quot;UBIKPropertyItem&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== UBIKEditNA ===&lt;br /&gt;
* Prefixed bindings &amp;quot;EnableNAOption&amp;quot; &amp;amp; &amp;quot;NotApplicable&amp;quot; with &amp;quot;PropertyViewModel.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Editor related templates ===&lt;br /&gt;
{{Hint|The changes are quite extensive and, therefore, we recommended you taking the default templates from the app and re-customize them from there.}}&lt;br /&gt;
&lt;br /&gt;
The affected list of templates include: UBIKEditDateTime, UBIKEditDouble, UBIKEditInt, UBIKEditGuid, UBIKEditGeo, UBIKEditBool, UBIKEditString.&lt;br /&gt;
* Changed from &amp;quot;PropertyItem&amp;quot; to &amp;quot;PropertyViewModel&amp;quot; in bindings;&lt;br /&gt;
* Prefixed bindings &amp;quot;EnableNAOption&amp;quot;, &amp;quot;NotApplicable&amp;quot;, &amp;quot;Unit&amp;quot; &amp;amp; &amp;quot;ShowComboBox&amp;quot; with &amp;quot;PropertyViewModel.&amp;quot;;&lt;br /&gt;
* Changed from &amp;quot;PropertyValue&amp;quot; to &amp;quot;PropertyViewModel.ValueItem.PropertyValue&amp;quot; in bindings;&lt;br /&gt;
* Prefixed binding &amp;quot;FilterQueryResults.Items&amp;quot; with &amp;quot;PropertyViewModel.&amp;quot;; (UBIKEditGuid)&lt;br /&gt;
* Changed from &amp;quot;ViewGuidObjectCommand&amp;quot; to &amp;quot;NavigateToGuidCommand&amp;quot;.  (UBIKEditGuid)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Category/Version2|{{PAGENAME}}}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Version 4.0|Version 4.0 Xamarin]]&lt;br /&gt;
[[Category:Xamarin|Version 4.0 Xamarin]]&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_4.1_(Xamarin)&amp;diff=23251</id>
		<title>Version 4.1 (Xamarin)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_4.1_(Xamarin)&amp;diff=23251"/>
				<updated>2021-08-23T14:27:22Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: Fixed Version Tag...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release ==&lt;br /&gt;
&lt;br /&gt;
== Beta ==&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
&lt;br /&gt;
=== 4.0.? on 2021-??-?? {{key press|App Center}} ===&lt;br /&gt;
* The app's default profile is now only generated during app startup when no other profiles are detected.&lt;br /&gt;
* Xamarin Android now supports [[Managed_App_Configuration|managed app configuration]] for rolling out up to 9 Ubik profiles in an enterprise environment. &lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= XAML Notes =&lt;br /&gt;
&lt;br /&gt;
== XAML changes ==&lt;br /&gt;
Since there has been a major UI redesign in this version, quite a lot of changes in XAML code (especially bindings) are involved. We have striven to maintain backward compatibility, but some changes either are simply unavoidable or their long term benefits outweigh the efforts required this one time.&lt;br /&gt;
&lt;br /&gt;
=== UBIKContentArea ===&lt;br /&gt;
* Changed from &amp;quot;Properties.Items&amp;quot; to &amp;quot;Properties.VisibleItems&amp;quot; in bindings because Items/AllItems now also include those system/invisible ones that users are not supposed to see.&lt;br /&gt;
&lt;br /&gt;
=== UBIKThemes ===&lt;br /&gt;
* Removed &amp;quot;Content.&amp;quot;, &amp;quot;OwnerModel.&amp;quot; from bindings in DateTemplate &amp;quot;UBIKPropertyItem&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== UBIKEditNA ===&lt;br /&gt;
* Prefixed bindings &amp;quot;EnableNAOption&amp;quot; &amp;amp; &amp;quot;NotApplicable&amp;quot; with &amp;quot;PropertyViewModel.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Editor related templates ===&lt;br /&gt;
{{Hint|The changes are quite extensive and, therefore, we recommended you taking the default templates from the app and re-customize them from there.}}&lt;br /&gt;
&lt;br /&gt;
The affected list of templates include: UBIKEditDateTime, UBIKEditDouble, UBIKEditInt, UBIKEditGuid, UBIKEditGeo, UBIKEditBool, UBIKEditString.&lt;br /&gt;
* Changed from &amp;quot;PropertyItem&amp;quot; to &amp;quot;PropertyViewModel&amp;quot; in bindings;&lt;br /&gt;
* Prefixed bindings &amp;quot;EnableNAOption&amp;quot;, &amp;quot;NotApplicable&amp;quot;, &amp;quot;Unit&amp;quot; &amp;amp; &amp;quot;ShowComboBox&amp;quot; with &amp;quot;PropertyViewModel.&amp;quot;;&lt;br /&gt;
* Changed from &amp;quot;PropertyValue&amp;quot; to &amp;quot;PropertyViewModel.ValueItem.PropertyValue&amp;quot; in bindings;&lt;br /&gt;
* Prefixed binding &amp;quot;FilterQueryResults.Items&amp;quot; with &amp;quot;PropertyViewModel.&amp;quot;; (UBIKEditGuid)&lt;br /&gt;
* Changed from &amp;quot;ViewGuidObjectCommand&amp;quot; to &amp;quot;NavigateToGuidCommand&amp;quot;.  (UBIKEditGuid)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Category/Version2|{{PAGENAME}}}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Xamarin|Version 4.0 Xamarin]]&lt;br /&gt;
[[Category:Version 4.0|Version 4.0 Xamarin]]&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Managed_App_Configuration&amp;diff=23250</id>
		<title>Managed App Configuration</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Managed_App_Configuration&amp;diff=23250"/>
				<updated>2021-08-23T14:26:27Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In enterprise environments, there are sometimes hundreds of employee phones centrally managed by some EMM (Enterprise Mobility Management) software. This not only allows to limit the apps available for use (via a company-internal store (&amp;quot;Company App Store&amp;quot;)) and remotely wipe devices (in the case of lost devices and fired employees), it also allows you to remotely set configurations of these apps to ease user experience. There are different types of management, like fully managed phones that belong to the company but also privately-owned phones with a work profile.&lt;br /&gt;
&lt;br /&gt;
Starting with [[Version_4.0_Xamarin| App Version 4.0.0]], the {{UBIK}} Xamarin app will support managed app configuration for configuring profiles. That removes the need to manually copy over a Ubik Profile to every phone and importing it before its users can use Ubik. Historically, there was also the need to deploy the customizing (&amp;quot;XAML&amp;quot;) before the app could be properly used, however, this has been solved already with the help of the [[Deploy_UI_Customizings_(Client)|XAML rollout feature]].  &lt;br /&gt;
&lt;br /&gt;
== Function ==&lt;br /&gt;
The new '''''profile rollout''''' feature allows for the rollout of up to 9 individual [[Settings|Ubik Profiles]]. The configuration supports the [https://appconfig.org/ AppConfig.org] standard, allowing compatibility to almost every EMM software. During the application start, the current configuration values are read and profiles created (with &amp;lt;code&amp;gt;.managed.profile&amp;lt;/code&amp;gt; ending). All profiles created by the system will be updated to the current configuration during the startup phase, allowing recently configured profiles to appear and no longer configured profiles to be removed. Other profiles added to the Ubik application will not be affected by this system (except they have a &amp;lt;code&amp;gt;.managed.profile&amp;lt;/code&amp;gt; ending for some unknown reason). Clearing all profiles also clears the configured profiles, and the app needs to be restarted for them to update.&lt;br /&gt;
&lt;br /&gt;
On Android, the system makes use of the Android Restrictions System. On iOS, the NSUserDefaults System is used. These libraries are native to the system and widely supported.&lt;br /&gt;
&lt;br /&gt;
== Configuration==&lt;br /&gt;
Microsoft Intune is just one of the EMM systems that will work with Ubik. This is the system that Augmensys uses for internal testing. For other EMM systems, the process will be similar.&lt;br /&gt;
&lt;br /&gt;
For Intune, an Application Configuration Policy can be defined. It is possible to limit the scope of this policy to groups, devices, and even device management types. In the Configuration Designer, the desired values can be chosen, but for Ubik, all of them do the same and only differ by the number. For other EMM systems, this might be different, but you should end up with something similar-looking:&lt;br /&gt;
&lt;br /&gt;
[[File:managed-app-configuration.png|thumb|none|750px|Screenshot of creating an App Configuration for Ubik in Microsoft Intune/Endpoint. Note that in the right panel the items to configure can be chosen.|center]]&lt;br /&gt;
&lt;br /&gt;
It is currently possible to define 9 Ubik profiles using this technology.&lt;br /&gt;
&lt;br /&gt;
All that's necessary to get the profile rolled out is to open a profile in your favorite text editor (we recommend Visual Studio Code or Notepad++) and copy the entire content into the configuration value. If your EMM system doesn't want to paste in multi-line strings, use an XML-minifier first.&lt;br /&gt;
&lt;br /&gt;
[[Category:Version 4.0|Managed App Configuration]]&lt;br /&gt;
[[Category:Xamarin|Managed App Configuration]]&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_4.1_(Xamarin)&amp;diff=23249</id>
		<title>Version 4.1 (Xamarin)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_4.1_(Xamarin)&amp;diff=23249"/>
				<updated>2021-08-23T13:48:09Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release ==&lt;br /&gt;
&lt;br /&gt;
== Beta ==&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
&lt;br /&gt;
=== 4.0.? on 2021-??-?? {{key press|App Center}} ===&lt;br /&gt;
* The app's default profile is now only generated during app startup when no other profiles are detected.&lt;br /&gt;
* Xamarin Android now supports [[Managed_App_Configuration|managed app configuration]] for rolling out up to 9 Ubik profiles in an enterprise environment. &lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= XAML Notes =&lt;br /&gt;
&lt;br /&gt;
== XAML changes ==&lt;br /&gt;
Since there has been a major UI redesign in this version, quite a lot of changes in XAML code (especially bindings) are involved. We have striven to maintain backward compatibility, but some changes either are simply unavoidable or their long term benefits outweigh the efforts required this one time.&lt;br /&gt;
&lt;br /&gt;
=== UBIKContentArea ===&lt;br /&gt;
* Changed from &amp;quot;Properties.Items&amp;quot; to &amp;quot;Properties.VisibleItems&amp;quot; in bindings because Items/AllItems now also include those system/invisible ones that users are not supposed to see.&lt;br /&gt;
&lt;br /&gt;
=== UBIKThemes ===&lt;br /&gt;
* Removed &amp;quot;Content.&amp;quot;, &amp;quot;OwnerModel.&amp;quot; from bindings in DateTemplate &amp;quot;UBIKPropertyItem&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== UBIKEditNA ===&lt;br /&gt;
* Prefixed bindings &amp;quot;EnableNAOption&amp;quot; &amp;amp; &amp;quot;NotApplicable&amp;quot; with &amp;quot;PropertyViewModel.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Editor related templates ===&lt;br /&gt;
{{Hint|The changes are quite extensive and, therefore, we recommended you taking the default templates from the app and re-customize them from there.}}&lt;br /&gt;
&lt;br /&gt;
The affected list of templates include: UBIKEditDateTime, UBIKEditDouble, UBIKEditInt, UBIKEditGuid, UBIKEditGeo, UBIKEditBool, UBIKEditString.&lt;br /&gt;
* Changed from &amp;quot;PropertyItem&amp;quot; to &amp;quot;PropertyViewModel&amp;quot; in bindings;&lt;br /&gt;
* Prefixed bindings &amp;quot;EnableNAOption&amp;quot;, &amp;quot;NotApplicable&amp;quot;, &amp;quot;Unit&amp;quot; &amp;amp; &amp;quot;ShowComboBox&amp;quot; with &amp;quot;PropertyViewModel.&amp;quot;;&lt;br /&gt;
* Changed from &amp;quot;PropertyValue&amp;quot; to &amp;quot;PropertyViewModel.ValueItem.PropertyValue&amp;quot; in bindings;&lt;br /&gt;
* Prefixed binding &amp;quot;FilterQueryResults.Items&amp;quot; with &amp;quot;PropertyViewModel.&amp;quot;; (UBIKEditGuid)&lt;br /&gt;
* Changed from &amp;quot;ViewGuidObjectCommand&amp;quot; to &amp;quot;NavigateToGuidCommand&amp;quot;.  (UBIKEditGuid)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Category/Version2|{{PAGENAME}}}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Version 4.0 Xamarin|Version 4.0 Xamarin]]&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Managed_App_Configuration&amp;diff=23248</id>
		<title>Managed App Configuration</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Managed_App_Configuration&amp;diff=23248"/>
				<updated>2021-08-23T13:47:09Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In enterprise environments, there are sometimes hundreds of employee phones centrally managed by some EMM (Enterprise Mobility Management) software. This not only allows to limit the apps available for use (via a company-internal store (&amp;quot;Company App Store&amp;quot;)) and remotely wipe devices (in the case of lost devices and fired employees), it also allows you to remotely set configurations of these apps to ease user experience. There are different types of management, like fully managed phones that belong to the company but also privately-owned phones with a work profile.&lt;br /&gt;
&lt;br /&gt;
Starting with [[Version_4.0_Xamarin| App Version 4.0.0]], the {{UBIK}} Xamarin app will support managed app configuration for configuring profiles. That removes the need to manually copy over a Ubik Profile to every phone and importing it before its users can use Ubik. Historically, there was also the need to deploy the customizing (&amp;quot;XAML&amp;quot;) before the app could be properly used, however, this has been solved already with the help of the XAML rollout feature. &lt;br /&gt;
&lt;br /&gt;
== Function ==&lt;br /&gt;
The new '''''profile rollout''''' feature allows for the rollout of up to 9 individual [[Settings|Ubik Profiles]]. The configuration supports the [https://appconfig.org/ AppConfig.org] standard, allowing compatibility to almost every EMM software. During the application start, the current configuration values are read and profiles created (with &amp;lt;code&amp;gt;.managed.profile&amp;lt;/code&amp;gt; ending). All profiles created by the system will be updated to the current configuration during the startup phase, allowing recently configured profiles to appear and no longer configured profiles to be removed. Other profiles added to the Ubik application will not be affected by this system (except they have a &amp;lt;code&amp;gt;.managed.profile&amp;lt;/code&amp;gt; ending for some unknown reason). Clearing all profiles also clears the configured profiles, and the app needs to be restarted for them to update.&lt;br /&gt;
&lt;br /&gt;
On Android, the system makes use of the Android Restrictions System. On iOS, the NSUserDefaults System is used. These libraries are native to the system and widely supported.&lt;br /&gt;
&lt;br /&gt;
== Configuration==&lt;br /&gt;
Microsoft Intune is just one of the EMM systems that will work with Ubik. This is the system that Augmensys uses for internal testing. For other EMM systems, the process will be similar.&lt;br /&gt;
&lt;br /&gt;
For Intune, an Application Configuration Policy can be defined. It is possible to limit the scope of this policy to groups, devices, and even device management types. In the Configuration Designer, the desired values can be chosen, but for Ubik, all of them do the same and only differ by the number. For other EMM systems, this might be different, but you should end up with something similar-looking:&lt;br /&gt;
&lt;br /&gt;
[[File:managed-app-configuration.png|thumb|none|750px|Screenshot of creating an App Configuration for Ubik in Microsoft Intune/Endpoint. Note that in the right panel the items to configure can be chosen.|center]]&lt;br /&gt;
&lt;br /&gt;
It is currently possible to define 9 Ubik profiles using this technology.&lt;br /&gt;
&lt;br /&gt;
All that's necessary to get the profile rolled out is to open a profile in your favorite text editor (we recommend Visual Studio Code or Notepad++) and copy the entire content into the configuration value. If your EMM system doesn't want to paste in multi-line strings, use an XML-minifier first.&lt;br /&gt;
&lt;br /&gt;
[[Category:Xamarin|Managed App Configuration]]&lt;br /&gt;
[[Category:Version 4.0|Managed App Configuration]]&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Managed_App_Configuration&amp;diff=23247</id>
		<title>Managed App Configuration</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Managed_App_Configuration&amp;diff=23247"/>
				<updated>2021-08-23T13:43:07Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In enterprise environments, there are sometimes hundreds of employee phones centrally managed by some EMM (Enterprise Mobility Management) software. This not only allows to limit the apps available for use (via a company-internal store (&amp;quot;Company App Store&amp;quot;)) and remotely wipe devices (in the case of lost devices and fired employees), it also allows you to remotely set configurations of these apps to ease user experience. There are different types of management, like fully managed phones that belong to the company but also privately-owned phones with a work profile.&lt;br /&gt;
&lt;br /&gt;
Starting with [[Version_4.0_Xamarin| App Version 4.0.0]], the {{UBIK}} Xamarin app will support managed app configuration for configuring profiles. That removes the need to manually copy over a Ubik Profile to every phone and importing it before its users can use Ubik. Historically, there was also the need to deploy the customizing (&amp;quot;XAML&amp;quot;) before the app could be properly used, however, this has been solved already with the help of the XAML rollout feature. &lt;br /&gt;
&lt;br /&gt;
== Function ==&lt;br /&gt;
The new '''''profile rollout''''' feature allows for the rollout of up to 9 individual [[Settings|Ubik Profiles]]. The configuration supports the [https://appconfig.org/ AppConfig.org] standard, allowing compatibility to almost every EMM software. During the application start, the current configuration values are read and profiles created (with &amp;lt;code&amp;gt;.managed.profile&amp;lt;/code&amp;gt; ending). All profiles created by the system will be updated to the current configuration during the startup phase, allowing recently configured profiles to appear and no longer configured profiles to be removed. Other profiles added to the Ubik application will not be affected by this system (except they have a &amp;lt;code&amp;gt;.managed.profile&amp;lt;/code&amp;gt; ending for some unknown reason). Clearing all profiles also clears the configured profiles, and the app needs to be restarted for them to update.&lt;br /&gt;
&lt;br /&gt;
On Android, the system makes use of the Android Restrictions System. On iOS, the NSUserDefaults System is used. These libraries are native to the system and widely supported.&lt;br /&gt;
&lt;br /&gt;
== Configuration==&lt;br /&gt;
Microsoft Intune is just one of the EMM systems that will work with Ubik. This is the system that Augmensys uses for internal testing. For other EMM systems, the process will be similar.&lt;br /&gt;
&lt;br /&gt;
For Intune, an Application Configuration Policy can be defined. It is possible to limit the scope of this policy to groups, devices, and even device management types. In the Configuration Designer, the desired values can be chosen, but for Ubik, all of them do the same and only differ by the number. For other EMM systems, this might be different, but you should end up with something similar-looking:&lt;br /&gt;
&lt;br /&gt;
[[File:managed-app-configuration.png|thumb|none|750px|Screenshot of creating an App Configuration for Ubik in Microsoft Intune/Endpoint. Note that in the right panel the items to configure can be chosen.|center]]&lt;br /&gt;
&lt;br /&gt;
It is currently possible to define 9 Ubik profiles using this technology.&lt;br /&gt;
&lt;br /&gt;
All that's necessary to get the profile rolled out is to open a profile in your favorite text editor (we recommend Visual Studio Code or Notepad++) and copy the entire content into the configuration value. If your EMM system doesn't want to paste in multi-line strings, use an XML-minifier first.&lt;br /&gt;
&lt;br /&gt;
[[Category:Xamarin|Managed App Configuration]]&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Managed_App_Configuration&amp;diff=23238</id>
		<title>Managed App Configuration</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Managed_App_Configuration&amp;diff=23238"/>
				<updated>2021-08-19T15:28:25Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In enterprise environments, there are sometimes hundreds of employee phones centrally managed by some EMM (Enterprise Mobility Management) software. This not only allows to limit the apps available for use (via a company-internal store (&amp;quot;Company App Store&amp;quot;)) and remotely wipe devices (in the case of lost devices and fired employees), it also allows you to remotely set configurations of these apps to ease user experience. There are different types of management, like fully managed phones that belong to the company but also privately-owned phones with a work profile.&lt;br /&gt;
&lt;br /&gt;
Starting with App Version 4.0.0, the Ubik Xamarin app will support managed app configuration for configuring profiles. That removes the need to manually copy over a Ubik Profile to every phone and importing it before its users can use Ubik. Historically, there was also the need to deploy the customizing (&amp;quot;XAML&amp;quot;) before the app could be properly used, however, this has been solved already with the help of the XAML rollout feature. &lt;br /&gt;
&lt;br /&gt;
== Function ==&lt;br /&gt;
The new '''''profile rollout''''' feature allows for the rollout of up to 9 individual [[Settings|Ubik Profiles]]. The configuration supports the [https://appconfig.org/ AppConfig.org] standard, allowing compatibility to almost every EMM software. During the application start, the current configuration values are read and profiles created (with &amp;lt;code&amp;gt;.managed.profile&amp;lt;/code&amp;gt; ending). All profiles created by the system will be updated to the current configuration during the startup phase, allowing recently configured profiles to appear and no longer configured profiles to be removed. Other profiles added to the Ubik application will not be affected by this system (except they have a &amp;lt;code&amp;gt;.managed.profile&amp;lt;/code&amp;gt; ending for some unknown reason). Clearing all profiles also clears the configured profiles, and the app needs to be restarted for them to update.&lt;br /&gt;
&lt;br /&gt;
On Android, the system makes use of the Android Restrictions System. On iOS, the NSUserDefaults System is used. These libraries are native to the system and widely supported.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configuration==&lt;br /&gt;
Microsoft Intune is just one of the EMM systems that will work with Ubik. This is the system that Augmensys uses for internal testing. For other EMM systems, the process will be similar.&lt;br /&gt;
&lt;br /&gt;
For Intune, an Application Configuration Policy can be defined. It is possible to limit the scope of this policy to groups, devices, and even device management types. In the Configuration Designer, the desired values can be chosen, but for Ubik, all of them do the same and only differ by the number. For other EMM systems, this might be different, but you should end up with something similar-looking:&lt;br /&gt;
&lt;br /&gt;
[[File:managed-app-configuration.png|thumb|none|750px|Screenshot of creating an App Configuration for Ubik in Microsoft Intune/Endpoint. Note that in the right panel the items to configure can be chosen.|center]]&lt;br /&gt;
&lt;br /&gt;
It is currently possible to define 9 Ubik profiles using this technology.&lt;br /&gt;
&lt;br /&gt;
All that's necessary to get the profile rolled out is to open a profile in your favorite text editor (we recommend Visual Studio Code or Notepad++) and copy the entire content into the configuration value. If your EMM system doesn't want to paste in multi-line strings, use an XML-minifier first.&lt;br /&gt;
&lt;br /&gt;
[[Category:Xamarin|Managed App Configuration]]&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Managed_App_Configuration&amp;diff=23237</id>
		<title>Managed App Configuration</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Managed_App_Configuration&amp;diff=23237"/>
				<updated>2021-08-19T15:16:23Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In enterprise environments, there are sometimes hundreds of employee phones centrally managed by some EMM (Enterprise Mobility Management) software. This not only allows to limit the apps available for use (via a company-internal store (&amp;quot;Company Play Store&amp;quot;)) and remotely wipe devices (in the case of lost devices and fired employees), it also allows you to remotely set configurations of these apps to ease user experience. There are different types of management, like fully managed phones that belong to the company but also privately-owned phones with a work profile.&lt;br /&gt;
&lt;br /&gt;
Starting with App Version 4.0.0, the Ubik Xamarin app will support managed app configuration for configuring profiles. That removes the need to manually copy over a Ubik Profile to every phone and importing it before its users can use Ubik. Historically, there was also the need to deploy the customizing (&amp;quot;XAML&amp;quot;) before the app could be properly used, however, this has been solved already with the help of the XAML rollout feature. &lt;br /&gt;
&lt;br /&gt;
== Function ==&lt;br /&gt;
The new '''''profile rollout''''' feature allows for the rollout of up to 9 individual [[Settings|Ubik Profiles]]. The configuration supports the [https://appconfig.org/ AppConfig.org] standard, allowing compatibility to almost every EMM software. During the application start, the current configuration values are read and profiles created (with &amp;lt;code&amp;gt;.managed.profile&amp;lt;/code&amp;gt; ending). All profiles created by the system will be updated to the current configuration during the startup phase, allowing recently configured profiles to appear and no longer configured profiles to be removed. Other profiles added to the Ubik application will not be affected by this system (except they have a &amp;lt;code&amp;gt;.managed.profile&amp;lt;/code&amp;gt; ending for some unknown reason). Clearing all profiles also clears the configured profiles, and the app needs to be restarted for them to update.&lt;br /&gt;
&lt;br /&gt;
On Android, the system makes use of the Android Restrictions System. On iOS, the NSUserDefaults System is used. These libraries are native to the system and widely supported.&lt;br /&gt;
&lt;br /&gt;
[[Category:Xamarin|Managed App Configuration]]&lt;br /&gt;
&lt;br /&gt;
== Configuration==&lt;br /&gt;
Microsoft Intune is just one of the EMM systems that will work with Ubik. This is the system that Augmensys uses for internal testing. For other EMM systems, the process will be similar.&lt;br /&gt;
&lt;br /&gt;
For Intune, an Application Configuration Policy can be defined. It is possible to limit the scope of this policy to groups, devices, and even device management types. In the Configuration Designer, the desired values can be chosen, but for Ubik, all of them do the same and only differ by the number. For other EMM systems, this might be different, but you should end up with something similar-looking:&lt;br /&gt;
&lt;br /&gt;
[[File:managed-app-configuration.png|thumb|none|750px|Screenshot of creating an App Configuration for Ubik in Microsoft Intune/Endpoint. Note that in the right panel the items to configure can be chosen.|center]]&lt;br /&gt;
&lt;br /&gt;
It is currently possible to define 9 Ubik profiles using this technology.&lt;br /&gt;
&lt;br /&gt;
All that's necessary to get the profile rolled out is to open a profile in your favorite text editor (we recommend Visual Studio Code or Notepad++) and copy the entire content into the configuration value. If your EMM system doesn't want to paste in multi-line strings, use an XML-minifier first.&lt;br /&gt;
&lt;br /&gt;
[[Category:Xamarin|Managed App Configuration]]&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Managed_App_Configuration&amp;diff=23236</id>
		<title>Managed App Configuration</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Managed_App_Configuration&amp;diff=23236"/>
				<updated>2021-08-19T15:14:38Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In enterprise environments, there are sometimes hundreds of employee phones centrally managed by some EMM (Enterprise Mobility Management) software. This not only allows to limit the apps available for use (via a company-internal store (&amp;quot;Company Play Store&amp;quot;)) and remotely wipe devices (in the case of lost devices and fired employees), it also allows you to remotely set configurations of these apps to ease user experience. There are different types of management, like fully managed phones that belong to the company but also privately-owned phones with a work profile.&lt;br /&gt;
&lt;br /&gt;
Starting with App Version 4.0.0, the Ubik Xamarin app will support managed app configuration for configuring profiles. That removes the need to manually copy over a Ubik Profile to every phone and importing it before its users can use Ubik. Historically, there was also the need to deploy the customizing (&amp;quot;XAML&amp;quot;) before the app could be properly used, however, this has been solved already with the help of the XAML rollout feature. &lt;br /&gt;
&lt;br /&gt;
== Function ==&lt;br /&gt;
The new '''''profile rollout''''' feature allows for the rollout of up to 9 individual [[Settings|Ubik Profiles]]. The configuration supports the [https://appconfig.org/ AppConfig.org] standard, allowing compatibility to almost every EMM software. During the application start, the current configuration values are read and profiles created (with &amp;lt;code&amp;gt;.managed.profile&amp;lt;/code&amp;gt; ending). All profiles created by the system will be updated to the current configuration during the startup phase, allowing recently configured profiles to appear and no longer configured profiles to be removed. Other profiles added to the Ubik application will not be affected by this system (except they have a &amp;lt;code&amp;gt;.managed.profile&amp;lt;/code&amp;gt; ending for some unknown reason). Clearing all profiles also clears the configured profiles, and the app needs to be restarted for them to update.&lt;br /&gt;
&lt;br /&gt;
On Android, the system makes use of the Android Restrictions System. On iOS, the Capabilities System is used. These libraries are native to the system and widely supported.&lt;br /&gt;
&lt;br /&gt;
== Configuration==&lt;br /&gt;
Microsoft Intune is just one of the EMM systems that will work with Ubik. This is the system that Augmensys uses for internal testing. For other EMM systems, the process will be similar.&lt;br /&gt;
&lt;br /&gt;
For Intune, an Application Configuration Policy can be defined. It is possible to limit the scope of this policy to groups, devices, and even device management types. In the Configuration Designer, the desired values can be chosen, but for Ubik, all of them do the same and only differ by the number. For other EMM systems, this might be different, but you should end up with something similar-looking:&lt;br /&gt;
&lt;br /&gt;
[[File:managed-app-configuration.png|thumb|none|750px|Screenshot of creating an App Configuration for Ubik in Microsoft Intune/Endpoint. Note that in the right panel the items to configure can be chosen.|center]]&lt;br /&gt;
&lt;br /&gt;
It is currently possible to define 9 Ubik profiles using this technology.&lt;br /&gt;
&lt;br /&gt;
All that's necessary to get the profile rolled out is to open a profile in your favorite text editor (we recommend Visual Studio Code or Notepad++) and copy the entire content into the configuration value. If your EMM system doesn't want to paste in multi-line strings, use an XML-minifier first.&lt;br /&gt;
&lt;br /&gt;
[[Category:Xamarin|Managed App Configuration]]&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Managed_App_Configuration&amp;diff=23235</id>
		<title>Managed App Configuration</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Managed_App_Configuration&amp;diff=23235"/>
				<updated>2021-08-19T15:13:32Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: Added Intune Screenshot&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In enterprise environments, there are sometimes hundreds of employee phones centrally managed by some EMM (Enterprise Mobility Management) software. This not only allows to limit the apps available for use (via a company-internal store (&amp;quot;Company Play Store&amp;quot;)) and remotely wipe devices (in the case of lost devices and fired employees), it also allows you to remotely set configurations of these apps to ease user experience. There are different types of management, like fully managed phones that belong to the company but also privately-owned phones with a work profile.&lt;br /&gt;
&lt;br /&gt;
Starting with App Version 4.0.0, the Ubik Xamarin app will support managed app configuration for configuring profiles. That removes the need to manually copy over a Ubik Profile to every phone and importing it before its users can use Ubik. Historically, there was also the need to deploy the customizing (&amp;quot;XAML&amp;quot;) before the app could be properly used, however, this has been solved already with the help of the XAML rollout feature. &lt;br /&gt;
&lt;br /&gt;
== Function ==&lt;br /&gt;
The new '''''profile rollout''''' feature allows for the rollout of up to 9 individual [[Settings|Ubik Profiles]]. The configuration supports the [https://appconfig.org/ AppConfig.org] standard, allowing compatibility to almost every EMM software. During the application start, the current configuration values are read and profiles created (with &amp;lt;code&amp;gt;.managed.profile&amp;lt;/code&amp;gt; ending). All profiles created by the system will be updated to the current configuration during the startup phase, allowing recently configured profiles to appear and no longer configured profiles to be removed. Other profiles added to the Ubik application will not be affected by this system (except they have a &amp;lt;code&amp;gt;.managed.profile&amp;lt;/code&amp;gt; ending for some unknown reason). Clearing all profiles also clears the configured profiles, and the app needs to be restarted for them to update.&lt;br /&gt;
&lt;br /&gt;
On Android, the system makes use of the Android Restrictions System. On iOS, the Capabilities System is used. These libraries are native to the system and widely supported.&lt;br /&gt;
&lt;br /&gt;
== Configuration==&lt;br /&gt;
Microsoft Intune is just one of the EMM systems that will work with Ubik. This is the system that Augmensys uses for internal testing. For other EMM systems, the process will be similar.&lt;br /&gt;
&lt;br /&gt;
For Intune, an Application Configuration Policy can be defined. It is possible to limit the scope of this policy to groups, devices, and even device management types. In the Configuration Designer, the desired values can be chosen, but for Ubik, all of them do the same and only differ by the number. For other EMM systems, this might be different, but you should end up with something similar-looking:&lt;br /&gt;
&lt;br /&gt;
[[File:managed-app-configuration.png|thumb|none|750px|Screenshot of creating an App Configuration for Ubik in Microsoft Intune/Endpoint.|center]]&lt;br /&gt;
&lt;br /&gt;
It is currently possible to define 9 Ubik profiles using this technology.&lt;br /&gt;
&lt;br /&gt;
All that's necessary to get the profile rolled out is to open a profile in your favorite text editor (we recommend Visual Studio Code or Notepad++) and copy the entire content into the configuration value. If your EMM system doesn't want to paste in multi-line strings, use an XML-minifier first.&lt;br /&gt;
&lt;br /&gt;
[[Category:Xamarin|Managed App Configuration]]&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=File:Managed-app-configuration.png&amp;diff=23234</id>
		<title>File:Managed-app-configuration.png</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=File:Managed-app-configuration.png&amp;diff=23234"/>
				<updated>2021-08-19T15:10:05Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: File uploaded with MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File uploaded with MsUpload&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Managed_App_Configuration&amp;diff=23233</id>
		<title>Managed App Configuration</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Managed_App_Configuration&amp;diff=23233"/>
				<updated>2021-08-19T15:08:12Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: Created AppConfig Page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In enterprise environments, there are sometimes hundreds of employee phones centrally managed by some EMM (Enterprise Mobility Management) software. This not only allows to limit the apps available for use (via a company-internal store (&amp;quot;Company Play Store&amp;quot;)) and remotely wipe devices (in the case of lost devices and fired employees), it also allows you to remotely set configurations of these apps to ease user experience. There are different types of management, like fully managed phones that belong to the company but also privately-owned phones with a work profile.&lt;br /&gt;
&lt;br /&gt;
Starting with App Version 4.0.0, the Ubik Xamarin app will support managed app configuration for configuring profiles. That removes the need to manually copy over a Ubik Profile to every phone and importing it before its users can use Ubik. Historically, there was also the need to deploy the customizing (&amp;quot;XAML&amp;quot;) before the app could be properly used, however, this has been solved already with the help of the XAML rollout feature. &lt;br /&gt;
&lt;br /&gt;
== Function ==&lt;br /&gt;
The new '''''profile rollout''''' feature allows for the rollout of up to 9 individual [[Settings|Ubik Profiles]]. The configuration supports the [https://appconfig.org/ AppConfig.org] standard, allowing compatibility to almost every EMM software. During the application start, the current configuration values are read and profiles created (with &amp;lt;code&amp;gt;.managed.profile&amp;lt;/code&amp;gt; ending). All profiles created by the system will be updated to the current configuration during the startup phase, allowing recently configured profiles to appear and no longer configured profiles to be removed. Other profiles added to the Ubik application will not be affected by this system (except they have a &amp;lt;code&amp;gt;.managed.profile&amp;lt;/code&amp;gt; ending for some unknown reason). Clearing all profiles also clears the configured profiles, and the app needs to be restarted for them to update.&lt;br /&gt;
&lt;br /&gt;
On Android, the system makes use of the Android Restrictions System. On iOS, the Capabilities System is used. These libraries are native to the system and widely supported.&lt;br /&gt;
&lt;br /&gt;
== Configuration==&lt;br /&gt;
Microsoft Intune is just one of the EMM systems that will work with Ubik. This is the system that Augmensys uses for internal testing. For other EMM systems, the process will be similar.&lt;br /&gt;
&lt;br /&gt;
For Intune, an Application Configuration Policy can be defined. It is possible to limit the scope of this policy to groups, devices, and even device management types. In the Configuration Designer, the desired values can be chosen, but for Ubik, all of them do the same and only differ by the number. For other EMM systems, this might be different, but you should end up with something similar-looking.&lt;br /&gt;
&lt;br /&gt;
It is currently possible to define 9 Ubik profiles using this technology.&lt;br /&gt;
&lt;br /&gt;
All that's necessary to get the profile rolled out is to open a profile in your favorite text editor (we recommend Visual Studio Code or Notepad++) and copy the entire content into the configuration value. If your EMM system doesn't want to paste in multi-line strings, use an XML-minifier first.&lt;br /&gt;
&lt;br /&gt;
[[Category:Xamarin|Managed App Configuration]]&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=OSIPI_(Plugin)&amp;diff=23150</id>
		<title>OSIPI (Plugin)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=OSIPI_(Plugin)&amp;diff=23150"/>
				<updated>2021-06-08T10:46:54Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: /* Attributes {{Version/WinXSince|3.6}} {{Version/XamarinSince|1.1}} {{Version/ServerSince|3.5.0}} */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The OSIPI interface module enables support for reading data from [https://www.osisoft.com/pi-system/ OSIsoft PI systems].&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Supports multiple value types&lt;br /&gt;
* Multi-server configuration&lt;br /&gt;
* Correctly formatted value in Attributes&lt;br /&gt;
&lt;br /&gt;
== Prerequesites ==&lt;br /&gt;
To be able to successfully set up the system, the Ubik server/development machine needs access to the OSIPI instance. This can be easily checked in the web browser by navigating to the provided URL. [https://techsupport.osisoft.com/Documentation/PI-Web-API/help.html OSIsoft's PiWebAPI] is a [https://en.wikipedia.org/wiki/Representational_state_transfer REST API], from which the plugin reads data.&lt;br /&gt;
&lt;br /&gt;
== Configuration in Ubik ==&lt;br /&gt;
Live value servers get added to instances of the '''OSIPI_SERVER''' metaclass, whereas the data points are objects of the '''OSIPI_DATAPOINT''' metaclass. &amp;lt;br/&amp;gt;&lt;br /&gt;
With that difference in mind, follow this guide: [[HowTo:Implementing_Live_Values]].&lt;br /&gt;
&lt;br /&gt;
Not all data types of OSIPI are available to be configured in Ubik. The following table shows the matches:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''OSIPI Data Type'''&lt;br /&gt;
|'''Ubik Data Type'''&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Digital&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;Integer&amp;lt;/code&amp;gt; (0 or 1)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;String&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;String&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Int16&amp;lt;/code&amp;gt; {{Version/ServerSince|3.5.0}}&lt;br /&gt;
|&amp;lt;code&amp;gt;Integer&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Int32&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;Integer&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Float16&amp;lt;/code&amp;gt; {{Version/ServerSince|3.5.0}}&lt;br /&gt;
|&amp;lt;code&amp;gt;Float&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Float32&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;Float&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;Float64&amp;lt;/code&amp;gt; {{Version/ServerSince|3.5.0}}&lt;br /&gt;
|&amp;lt;code&amp;gt;Float&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Authentication ===&lt;br /&gt;
The OSIPI plugin supports two types of authentication:&lt;br /&gt;
* Basic {{Version/ServerSince|3.5.0}}&lt;br /&gt;
* Current User&lt;br /&gt;
&lt;br /&gt;
In the case of '''Basic authentication''', put the credentials in the respective fields &amp;lt;code&amp;gt;LOGINNAME&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;PASSWORD&amp;lt;/code&amp;gt;. Be aware that domain backslashes might need to be doubled, thanks to their escaping nature: &amp;lt;code&amp;gt;DOMAIN\\USER&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you leave the &amp;lt;code&amp;gt;LOGINNAME&amp;lt;/code&amp;gt; field empty, the client tries to authenticate against the OSIPI server with &amp;lt;code&amp;gt;[https://docs.microsoft.com/en-us/dotnet/api/system.net.webclient.usedefaultcredentials WebClient.UseDefaultCredentials]&amp;lt;/code&amp;gt;. Should this be the authentication of your choice, be aware that the Ubik Studio/Enterprise Service/Web Service needs to be started as that user that has access to the PI system.&lt;br /&gt;
&lt;br /&gt;
== Attributes {{Version/WinXSince|3.6}} {{Version/XamarinSince|1.1}} {{Version/ServerSince|3.6.0}} ==&lt;br /&gt;
The OSIPI Plugin delivers the correctly formatted value in the Live Value Attributes collection, which can be [[Live_Values#Binding_to_Attributes|bound to directly from XAML]].&lt;br /&gt;
The [https://docs.microsoft.com/en-us/dotnet/api/system.globalization.cultureinfo value formatting culture] can be set in the '''OSIPI_SERVER''' configuration with the &amp;lt;code&amp;gt;FORMATTING_CULTURE&amp;lt;/code&amp;gt; field, which defaults to &amp;lt;code&amp;gt;EN_US&amp;lt;/code&amp;gt;. There's also an option to trim leading zeroes (&amp;lt;code&amp;gt;TRIM_LEADING_ZEROES&amp;lt;/code&amp;gt;, defaulting to &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
This functionality is available in Ubik.Server 3.5.x as well, however, the fields &amp;lt;code&amp;gt;FORMATTING_CULTURE&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;TRIM_LEADING_ZEROES&amp;lt;/code&amp;gt; are not generated automatically. They got added with 3.6.0.&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Main_Page&amp;diff=23108</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Main_Page&amp;diff=23108"/>
				<updated>2021-04-27T13:42:11Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- MAIN DESKTOP DIV --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;nomobile&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;!-- Hide Desktop content from Mobile view --&amp;gt;&lt;br /&gt;
&amp;lt;!-- BOX 1 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- SEARCH BOX --&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: TABLE --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;table&amp;quot; style=&amp;quot;width:100%; border: solid #D3D3D3 1px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: ROW --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tableRow&amp;quot; style=&amp;quot;background: #D3D3D3;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: DATA CELL --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tableCell&amp;quot; style=&amp;quot;border:none;padding:10px;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: inline-block;padding-right:20px&amp;quot;&amp;gt;[[File:IC_MainPage-32.png|30px]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;display: inline-block;&amp;quot;&amp;gt;&amp;lt;inputbox&amp;gt;&lt;br /&gt;
inline=true&lt;br /&gt;
type=fulltext&lt;br /&gt;
width=400&lt;br /&gt;
namespaces=&lt;br /&gt;
searchbuttonlabel=Search&lt;br /&gt;
buttonlabel=Search&lt;br /&gt;
bgcolor=&lt;br /&gt;
break=no&lt;br /&gt;
placeholder=What can we help you with?&lt;br /&gt;
&amp;lt;/inputbox&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: CELL --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: ROW --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: TABLE --&amp;gt;&lt;br /&gt;
&amp;lt;!-- SEARCH BOX --&amp;gt;&lt;br /&gt;
&amp;lt;!-- BEGINNER ITEMS --&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: TABLE --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;table&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: ROW --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tableRow&amp;quot; style=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: CELL --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tableCell&amp;quot; style=&amp;quot;border:none;padding:10px;background:none;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- INLINE TABLE --&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;table style=&amp;quot;width:70%&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:center;width:10%;background:#ffffff;border-radius:5px&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;mp-beginnersLink&amp;quot;&amp;gt;[[What_is_UBIK|What is {{UBIK}}?]]&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:IC_MainPage-06a.png|link=What_is_UBIK|What is UBIK|x50px]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width:5%&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:center;width:10%;background:#ffffff;border-radius:5px&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;mp-beginnersLink&amp;quot;&amp;gt;[[Getting Started|Getting started]]&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:IC_MainPage-05a.png|link=Getting_Started|alt=Getting Started|Getting Started|x50px]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width:5%&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:center;width:10%;background:#ffffff;border-radius:5px&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;mp-beginnersLink&amp;quot;&amp;gt;[[Contact|Contact]]&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:IC_MainPage-04a.png|link=Contact|x50px]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width:5%&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:center;width:10%;background:#ffffff;border-radius:5px&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;mp-beginnersLink&amp;quot;&amp;gt;[[:Category:FAQ|FAQ]]&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:IC_MainPage-02a.png|link=:Category:FAQ|alt=FAQ|FAQ|x50px]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width:5%&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:center;width:10%;background:#ffffff;border-radius:5px&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;mp-beginnersLink&amp;quot;&amp;gt;[[Hardware Page|Hardware]]&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:IC_Hardware03.png|link=Hardware Page|alt=Hardware Page|Hardware Page|x50px]]&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;!-- INLINE TABLE --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: CELL --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: ROW --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: TABLE --&amp;gt;&lt;br /&gt;
&amp;lt;!-- BEGINNER ITEMS --&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: TABLE --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;table&amp;quot; style=&amp;quot;width:100%; border: solid #D3D3D3 1px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: ROW --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tableRow&amp;quot; style=&amp;quot;background: #D3D3D3;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: ICON CELL --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tableCell&amp;quot; style=&amp;quot;border:none;padding:10px;&amp;quot;&amp;gt;[[File:IC_UBIK_IconPack-06.png|20px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: DATA CELL --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tableCell bgAUGMENSYSa&amp;quot; style=&amp;quot;width:100%; padding:0px; margin:auto 0px;border:none;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- PRODUCTS TABLE --&amp;gt;&lt;br /&gt;
&amp;lt;table style=&amp;quot;width:100%;border:none;padding:2px;margin:0px&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;table style=&amp;quot;width:100%;border:1px;padding:0px;margin-top:20px&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:center;width:33%&amp;quot;&amp;gt;&lt;br /&gt;
[[File:App-Ubik_g.png|link=UBIK_Studio_Basics|130px]]&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;mp-productsLink2&amp;quot;&amp;gt;[[UBIK_Studio_Basics|Studio]]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:center;width:33%&amp;quot;&amp;gt;&lt;br /&gt;
[[File:App-Ubik_go.png|link=SmartStudio|130px]]&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;mp-productsLink2&amp;quot;&amp;gt;[[SmartStudio|Smart Studio]]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align:center;width:33%&amp;quot;&amp;gt;&lt;br /&gt;
[[File:App-Ubik_Grey.png|link=UBIK_Client_Getting_Started|130px]]&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;mp-productsLink2&amp;quot;&amp;gt;[[UBIK_Client_Getting_Started|Client]]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;!-- PRODUCTS TABLE --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: DATA CELL --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: ROW --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: TABLE --&amp;gt;&lt;br /&gt;
&amp;lt;!-- BOX 1 --&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;!-- DIV: SPACER ROW --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;height:20px&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: SPACER ROW --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- DIV: BOX 1 --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;table&amp;quot; style=&amp;quot;width:100%;border: none;background: #fff;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: BOX 1 TABLE ROW --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tableRow&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: LEFT CELL --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;tableCell&amp;quot; style=&amp;quot;width:30%;border:none;background: #fff;&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: VERSION BOX TABLE --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;table&amp;quot; style=&amp;quot;border: solid #D3D3D3 1px;background: #fff;margin-right:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: VERSION BOX TABLE ROW --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tableRow&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: ICON CELL --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tableCell&amp;quot; style=&amp;quot;border:none;padding:5px&amp;quot;&amp;gt;[[File:IC_MainPage-31.png|30px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: ICON CELL --&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: DATA CELL --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tableCell&amp;quot; style=&amp;quot;width:100%; padding-left:20px;border:none;background: #fff&amp;quot;&amp;gt;&lt;br /&gt;
{{:List_of_Versions}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: DATA CELL --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: VERSION BOX TABLE ROW --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: VERSION BOX TABLE --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: LEFT CELL --&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: RIGHT CELL --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tableCell&amp;quot; style=&amp;quot;width:30%;border:none;background: #fff;margin:0 auto;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: TABLE --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;table&amp;quot; style=&amp;quot;border: none;background: #fff;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: ROW --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tableRow&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: CELL --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tableCell&amp;quot; style=&amp;quot;width:100%; padding-left:20px;border:none;background: #fff;margin: 0 auto&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: NEWS BOX TABLE --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;table&amp;quot; style=&amp;quot;border: solid #D3D3D3 1px;background: #fff;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: NEWS BOX TABLE ROW --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tableRow&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: ICON CELL --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tableCell&amp;quot; style=&amp;quot;border:none;padding-left:5px;padding-right:5px;padding-top:10px;&amp;quot;&amp;gt;[[File:IC_MainPage-30.png|30px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: ICON CELL --&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: DATA CELL --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tableCell&amp;quot; style=&amp;quot;width:100%; padding-left:20px;border:none;background: #fff;margin: 0 auto&amp;quot;&amp;gt;&lt;br /&gt;
{{:News_and_Announcements}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: DATA CELL --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: NEWS BOX TABLE ROW --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: NEWS BOX TABLE --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: CELL --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: ROW --&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: TAGCLOUD ROW --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tableRow&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: TAGCLOUD CELL --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;tableCell&amp;quot; style=&amp;quot;width:100%; padding-left:20px;border:none;background: #fff;margin: 0 auto&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- TAG CLOUD --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:auto;width:80%;text-align:center;padding-top:50px;&amp;quot;&amp;gt;{{TagCloud|include=Built-in_objects,Client,How-To,FAQ,Document,Installing,POI,Server,Session_management|depth=3}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- TAG CLOUD --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: TAGCLOUD CELL --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: TAGCLOUD ROW --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: TABLE --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: RIGHT CELL --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: BOX 1 TABLE ROW --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- DIV: BOX 1 --&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;!-- ROW FOOTER --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Impressium --&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;UBIK&amp;quot; class=&amp;quot;mainpage-bottom&amp;quot; align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Augmensys_Logo_2019_small.png|center|link=Augmensys GmbH]]&lt;br /&gt;
&amp;lt;div id=&amp;quot;user&amp;quot; style=&amp;quot;font-size:85%;&amp;quot;&amp;gt;[[Special:Statistics|{{NUMBEROFUSERS}}]] users registered&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;online&amp;quot; style=&amp;quot;font-size:85%;&amp;quot;&amp;gt;[[Special:Statistics|{{NUMBEROFACTIVEUSERS}}]] users active in the last 30 days&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;articlecount&amp;quot; style=&amp;quot;font-size:85%;&amp;quot;&amp;gt;[[Special:Statistics|{{NUMBEROFARTICLES}}]] articles currently added&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- ROW FOOTER --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Hide Desktop content from Mobile view --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- MAIN DESKTOP DIV --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- MAIN MOBILE DIV --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;nodesktop&amp;quot;&amp;gt;&lt;br /&gt;
  {{:Main_Page_Mobile}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- MAIN MOBILE DIV --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__NOTOC____NOEDITSECTION__&lt;br /&gt;
{{DISPLAYTITLE:&amp;lt;span style=&amp;quot;display:none&amp;quot;&amp;gt;{{FULLPAGENAME}}&amp;lt;/span&amp;gt;}}&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=List_of_Versions&amp;diff=23107</id>
		<title>List of Versions</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=List_of_Versions&amp;diff=23107"/>
				<updated>2021-04-27T13:29:42Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: Fixed release dates of 3.6 and 4.0.0 being in the past&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:IC_MainPage-20.png]] '''Future versions'''&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;table&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
{{Item/Version|2021-??-??| {{Version/WinX|4.0}}}}&lt;br /&gt;
{{Item/Version|2021-??-??| [[Version_1.2_Xamarin]]}}&lt;br /&gt;
{{Item/Version|2021-11-30| {{Version/Server|4.0.0}}}}&lt;br /&gt;
{{Item/Version|2021-06-??| {{Version/Server|3.6}}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Check mark}} '''Released versions'''&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;table&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
{{Item/Version|2021-04-23| {{Version/WinX|3.8}}}}&lt;br /&gt;
{{Item/Version|2020-11-12| [[Version_1.1_Xamarin]]}}&lt;br /&gt;
{{Item/Version|2020-04-09| {{Version/Server|3.5.0}}}}&lt;br /&gt;
{{Item/Version|2020-03-27| {{Version/WinX|3.7}}}}&lt;br /&gt;
{{Item/Version|2020-02-13| {{Version/WinX|3.6}}}}&lt;br /&gt;
{{Item/Version|2019-11-04| [[Version_1.0_(Xamarin.iOS)]]}}&lt;br /&gt;
{{Item/Version|2019-10-21| [[Version_1.0_(Xamarin.Android)]]}}&lt;br /&gt;
{{Item/Version|2019-04-30| {{Version/WinX|3.5}}}}&lt;br /&gt;
{{Item/Version|2018-12-10| {{Version/Server|2.6.3}}}}&lt;br /&gt;
{{Item/Version|2018-12-10| {{Version/WinX|3.4}}}}&lt;br /&gt;
{{Item/Version|2018-10-24| {{Version/WinX|3.3}}}}&lt;br /&gt;
{{Item/Version|2018-07-06| {{Version/WinX|3.2.0}}}}&lt;br /&gt;
{{Item/Version|2018-04-19| {{Version/Android|3.0.0}}}}&lt;br /&gt;
{{Item/Version|2018-04-04| {{Version/Server|2.6.2}}}}&lt;br /&gt;
{{Item/Version|2018-03-08| {{Version/Android|2.6.0}}}}&lt;br /&gt;
{{Item/Version|2018-01-23| {{Version/WinX|3.1.0}}}}&lt;br /&gt;
{{Item/Version|2017-10-13| {{Version/WinX|3.0.0}}}}&lt;br /&gt;
{{Item/Version|2017-06-14| {{Version/Server|2.6.0}}}}&lt;br /&gt;
{{Item/Version|2017-02-13| {{Version/WinX|2.6.0}}}}&lt;br /&gt;
{{Item/Version|2016-07-21| {{Version/Android|2.5.5}}}}&lt;br /&gt;
{{Item/Version|2016-07-21| {{Version/Android|2.5.4}}}}&lt;br /&gt;
{{Item/Version|2016-04-01| {{Version/Android|2.5.3}}}}&lt;br /&gt;
{{Item/Version|2016-05-13| {{Version/WinX|2.5.2}}}}&lt;br /&gt;
{{Item/Version|2016-01-27| {{Version/Android|2.5.2}}}}&lt;br /&gt;
{{Item/Version|2015-11-25| {{Version/Web|2.5.0}}}}&lt;br /&gt;
{{Item/Version|2015-11-20| {{Version/Android|2.5.1}}}}&lt;br /&gt;
{{Item/Version|2015-11-17| {{Version/Android|2.5.0}}}}&lt;br /&gt;
{{Item/Version|2015-10-15| {{Version/Server|2.5.0}}}}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
{{Item/Version|2015-07-09| {{Version/Android|2.4.6}}}}&lt;br /&gt;
{{Item/Version|2015-06-24| {{Version/Android|2.4.5}}}}&lt;br /&gt;
{{Item/Version|2015-05-21| {{Version/Server|2.4.3}}}}&lt;br /&gt;
{{Item/Version|2015-04-23| {{Version/Android|2.4.4}}}}&lt;br /&gt;
{{Item/Version|2015-04-08| {{Version/Android|2.4.3}}}}&lt;br /&gt;
{{Item/Version|2015-03-20| {{Version/Android|2.4.2}}&amp;lt;br /&amp;gt;{{Version/Server|2.4.2}}}}&lt;br /&gt;
{{Item/Version|2015-03-12| {{Version/Server|2.4.1}}}}&lt;br /&gt;
{{Item/Version|2015-03-04| {{Version/Android|2.4.1}}}}&lt;br /&gt;
{{Item/Version|2014-12-05| {{Version/Android|2.4.1}}&amp;lt;br /&amp;gt;{{Version/Server|2.4.0}}}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[File:IC_MainPage-20.png]] '''Available Release Candidates'''&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;table&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
{{Item/Version|2020-01-01| {{Version/Android|3.1.0}}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
[[File:IC_MainPage-21.png]] '''[[:Category:Release notes|Previous versions]]'''&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=SSRS_Reporting&amp;diff=22956</id>
		<title>SSRS Reporting</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=SSRS_Reporting&amp;diff=22956"/>
				<updated>2021-01-21T15:12:59Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://docs.microsoft.com/en-us/sql/reporting-services/create-deploy-and-manage-mobile-and-paginated-reports SSRS], short for '''SQL Server Reporting Services''', allow the creation of completely customizable data reports using SQL data. Templates are designed using the Report Designer, which will then be filled up dynamically by the data from the SQL Server. For Ubik, this technology allows the creation of customer-specific reports from data of the Ubik system.&lt;br /&gt;
&lt;br /&gt;
== System Architecture ==&lt;br /&gt;
To get SSRS running, a Windows server is required, and access to the data source (SQL Server) is necessary. The SSRS service needs to be accessible from the UBIK Web Server and/or UBIK Enterprise Service, depending on the customizing. The same server hosting the UBIK Web Service and/or the Ubik Enterprise Server (if hosted on an extra server) can be used for hosting SSRS as well.&lt;br /&gt;
&lt;br /&gt;
== Report Creation from UBIK Customizing ==&lt;br /&gt;
There's a Report Generation plugin available for Ubik: ''UBIK.Interface.Module.SSRS''. Two ways of generating a report are exposed, one using the '''Report''' class and one using the '''ServerReportRender''' class.&lt;br /&gt;
&lt;br /&gt;
=== Report Class ===&lt;br /&gt;
The '''Report''' class creates a report via the ancient [https://docs.microsoft.com/en-us/sql/reporting-services/report-server-web-service/methods/report-server-web-service-endpoints#the-execution-endpoint SSRS ReportExecution2005.asmx] SOAP endpoint.&lt;br /&gt;
While this method works fine for most use cases, for very large reports (&amp;gt; ~1.5 GB in our experience), the report service will stop with an error. If such a case is encountered, the other service documented below should be used instead.&lt;br /&gt;
&lt;br /&gt;
=== ServerReportRenderer Class {{Version/ServerSince|3.6}} === &lt;br /&gt;
[[File:ssrs_web_viewer.png |thumb|border|alt=Web viewer controls|Web viewer controls]]&lt;br /&gt;
&lt;br /&gt;
The '''ServerReportRenderer''' uses a different and more modern approach to render the data: It calls the [https://docs.microsoft.com/en-us/sql/reporting-services/url-access-ssrs URL of the web viewer] and tells it what to do via the parameters, just like the user would by clicking buttons in the toolbar.&lt;br /&gt;
This methodology makes it really easy to implement, as the rendering results are the same if executed manually in the web viewer.&lt;br /&gt;
&lt;br /&gt;
[[Category:Pages with broken file links|SSRS Reporting]]&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=SSRS_Reporting&amp;diff=22955</id>
		<title>SSRS Reporting</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=SSRS_Reporting&amp;diff=22955"/>
				<updated>2021-01-21T15:11:55Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://docs.microsoft.com/en-us/sql/reporting-services/create-deploy-and-manage-mobile-and-paginated-reports SSRS], short for '''SQL Server Reporting Services''', allow the creation of completely customizable data reports using SQL data. Templates are designed using the Report Designer, which will then be filled up dynamically by the data from the SQL Server. For Ubik, this technology allows the creation of customer-specific reports from data of the Ubik system.&lt;br /&gt;
&lt;br /&gt;
== System Architecture ==&lt;br /&gt;
To get SSRS running, a Windows server is required, and access to the data source (SQL Server) is necessary. The SSRS service needs to be accessible from the UBIK Web Server and/or UBIK Enterprise Service, depending on the customizing. The same server hosting the UBIK Web Service and/or the Ubik Enterprise Server (if hosted on an extra server) can be used for hosting SSRS as well.&lt;br /&gt;
&lt;br /&gt;
== Report Creation from UBIK Customizing ==&lt;br /&gt;
There's a Report Generation plugin available for Ubik: ''UBIK.Interface.Module.SSRS''. Two ways of generating a report are exposed, one using the '''Report''' class and one using the '''ServerReportRender''' class.&lt;br /&gt;
&lt;br /&gt;
=== Report Class ===&lt;br /&gt;
The '''Report''' class creates a report via the ancient SSRS ReportExecution2005 SOAP endpoint.&lt;br /&gt;
While this method works fine for most use cases, for very large reports (&amp;gt; ~1.5 GB in our experience), the report service will stop with an error. If such a case is encountered, the other service documented below should be used instead.&lt;br /&gt;
&lt;br /&gt;
=== ServerReportRenderer Class {{Version/ServerSince|3.6}} === &lt;br /&gt;
[[File:ssrs_web_viewer.png |thumb|border|alt=Web viewer controls|Web viewer controls]]&lt;br /&gt;
&lt;br /&gt;
The '''ServerReportRenderer''' uses a different and more modern approach to render the data: It calls the [https://docs.microsoft.com/en-us/sql/reporting-services/url-access-ssrs URL of the web viewer] and tells it what to do via the parameters, just like the user would by clicking buttons in the toolbar.&lt;br /&gt;
This methodology makes it really easy to implement, as the rendering results are the same if executed manually in the web viewer.&lt;br /&gt;
&lt;br /&gt;
[[Category:Pages with broken file links|SSRS Reporting]]&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=SSRS_Reporting&amp;diff=22954</id>
		<title>SSRS Reporting</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=SSRS_Reporting&amp;diff=22954"/>
				<updated>2021-01-21T15:09:09Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://docs.microsoft.com/en-us/sql/reporting-services/create-deploy-and-manage-mobile-and-paginated-reports SSRS], short for '''SQL Server Reporting Services''', allow the creation of completely customizable data reports using SQL data. Templates are designed using the Report Designer, which will then be filled up dynamically by the data from the SQL Server. For Ubik, this technology allows the creation of customer-specific reports from data of the Ubik system.&lt;br /&gt;
&lt;br /&gt;
== System Architecture ==&lt;br /&gt;
To get SSRS running, a Windows server is required, and access to the data source (SQL Server) is necessary. The SSRS service needs to be accessible from the UBIK Web Server and/or UBIK Enterprise Service, depending on the customizing. The same server hosting the UBIK Web Service and/or the Ubik Enterprise Server (if hosted on an extra server) can be used for hosting SSRS as well.&lt;br /&gt;
&lt;br /&gt;
== Report Creation from UBIK Customizing ==&lt;br /&gt;
There's a Report Generation plugin available for Ubik: ''UBIK.Interface.Module.SSRS''. Two ways of generating a report are exposed, one using the '''Report''' class and one using the '''ServerReportRender''' class.&lt;br /&gt;
&lt;br /&gt;
=== Report Class ===&lt;br /&gt;
The '''Report''' class creates a report via the ancient SSRS ReportExecution2005 SOAP endpoint.&lt;br /&gt;
While this method works fine for most use cases, for very large reports (&amp;gt; ~1.5 GB in our experience), the report service will stop with an error. If such a case is encountered, the other service documented below should be used instead.&lt;br /&gt;
&lt;br /&gt;
=== ServerReportRenderer Class {{Version/ServerSince|3.6}} === &lt;br /&gt;
[[File:ssrs_web_viewer.png |thumb|border|alt=Web viewer controls|Web viewer controls]]&lt;br /&gt;
&lt;br /&gt;
The '''ServerReportRenderer''' uses a different and more modern approach to render the data: It calls the URL of the web viewer and tells it what to do via the parameters, just like the user would by clicking buttons in the toolbar.&lt;br /&gt;
This methodology makes it really easy to implement, as the rendering results are the same if executed manually in the web viewer.&lt;br /&gt;
&lt;br /&gt;
[[Category:Pages with broken file links|SSRS Reporting]]&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=SSRS_Reporting&amp;diff=22953</id>
		<title>SSRS Reporting</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=SSRS_Reporting&amp;diff=22953"/>
				<updated>2021-01-21T15:08:11Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://docs.microsoft.com/en-us/sql/reporting-services/create-deploy-and-manage-mobile-and-paginated-reports SSRS], short for '''SQL Server Reporting Services''', allow the creation of completely customizable data reports using SQL data. Templates are designed using the Report Designer, which will then be filled up dynamically by the data from the SQL Server. For Ubik, this technology allows the creation of customer-specific reports from data of the Ubik system.&lt;br /&gt;
&lt;br /&gt;
== System Architecture ==&lt;br /&gt;
To get SSRS running, a Windows server is required, and access to the data source (SQL Server) is necessary. The SSRS service needs to be accessible from the UBIK Web Server and/or UBIK Enterprise Service, depending on the customizing. The same server hosting the UBIK Web Service and/or the Ubik Enterprise Server (if hosted on an extra server) can be used for hosting SSRS as well.&lt;br /&gt;
&lt;br /&gt;
== Report Templates ==&lt;br /&gt;
Template stuff, will be done with images&lt;br /&gt;
&lt;br /&gt;
== Report Creation from UBIK Customizing ==&lt;br /&gt;
There's a Report Generation plugin available for Ubik: ''UBIK.Interface.Module.SSRS''. Two ways of generating a report are exposed, one using the '''Report''' class and one using the '''ServerReportRender''' class.&lt;br /&gt;
&lt;br /&gt;
=== Report Class ===&lt;br /&gt;
The '''Report''' class creates a report via the ancient SSRS ReportExecution2005 SOAP endpoint.&lt;br /&gt;
While this method works fine for most use cases, for very large reports (&amp;gt; ~1.5 GB in our experience), the report service will stop with an error. If such a case is encountered, the other service documented below should be used instead.&lt;br /&gt;
&lt;br /&gt;
=== ServerReportRenderer Class {{Version/ServerSince|3.6}} === &lt;br /&gt;
[[File:ssrs_web_viewer.png |thumb|border|alt=Web viewer controls|Web viewer controls]]&lt;br /&gt;
&lt;br /&gt;
The '''ServerReportRenderer''' uses a different and more modern approach to render the data: It calls the URL of the web viewer and tells it what to do via the parameters, just like the user would by clicking buttons in the toolbar.&lt;br /&gt;
This methodology makes it really easy to implement, as the rendering results are the same if executed manually in the web viewer.&lt;br /&gt;
&lt;br /&gt;
[[Category:Pages with broken file links|SSRS Reporting]]&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=File:Ssrs_web_viewer.png&amp;diff=22952</id>
		<title>File:Ssrs web viewer.png</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=File:Ssrs_web_viewer.png&amp;diff=22952"/>
				<updated>2021-01-21T15:07:17Z</updated>
		
		<summary type="html">&lt;p&gt;MKR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>MKR</name></author>	</entry>

	</feed>