<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.innovaphone.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lme</id>
	<title>innovaphone wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.innovaphone.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lme"/>
	<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Special:Contributions/Lme"/>
	<updated>2026-05-05T15:38:50Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference15r1:Concept_App_Service_Working&amp;diff=79485</id>
		<title>Reference15r1:Concept App Service Working</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference15r1:Concept_App_Service_Working&amp;diff=79485"/>
		<updated>2026-04-16T11:37:42Z</updated>

		<summary type="html">&lt;p&gt;Lme: /* Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
The Working App is an app for recording working hours. There is a user app (Working User) to start/stop time tracking and an admin app (Working Manager) to view working hours for all users.&lt;br /&gt;
&lt;br /&gt;
== Applies To == &lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX from version 15r1&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* innovaphone PBX&lt;br /&gt;
* innovaphone Application Platform&lt;br /&gt;
* innovaphone myApps&lt;br /&gt;
* Firmware V15r1 or higher&lt;br /&gt;
* License “App(innovaphone-working)” (order no. 02-00050-010) per application-user&lt;br /&gt;
&lt;br /&gt;
==Concept==&lt;br /&gt;
&lt;br /&gt;
The innovaphone Service Working App is an app to track working hours.&lt;br /&gt;
There is a user app (Working User) to start/stop time tracking (clock style) or to add entries manually. These entries must be confirmed (=submitted) to be displayed on the admin app. Once they are confirmed, they can no longer be edited. There is also an admin app (Working Manager) to display the working time information for all users and where the configuration settings can be changed.&lt;br /&gt;
The app is designed to help employees and employers to easily track working hours in a digital manner.&lt;br /&gt;
&lt;br /&gt;
==How it works==&lt;br /&gt;
&lt;br /&gt;
The first time a user starts the Working App on myApps a new entry is created in the database for this user, based on the &amp;quot;Name&amp;quot; of this user, which will be used to store all the working hours entries, vacation days, sick days and national holidays. Entering the working hours is a two step task, because after defining the start/stop time it is also necessary to &amp;quot;confirm/submit&amp;quot; these hours as correct, after the confirmation is done the user can&#039;t change them anymore and they will be displayed on the admin app.&lt;br /&gt;
&lt;br /&gt;
In the Working manager App the list of the users&#039; names is based on the &amp;quot;Display Name&amp;quot;, if no DN is set then the &amp;quot;Name&amp;quot; will be used. Once the users have opened the working app at least once, they will appear in the list of all users in the Working Manager App. The app adds a red mark when an user does not fulfill the working hours regulation.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
===== Working time tracking and absences such as vacation/sick days and costume work types =====&lt;br /&gt;
&lt;br /&gt;
* Work time account: Overview of the current work time balance &lt;br /&gt;
* Add pre-defined labels to working times&lt;br /&gt;
&lt;br /&gt;
===== Working time regulations =====&lt;br /&gt;
&lt;br /&gt;
*Timeout to submit entries (days): max interval the user has to submit the working hours.&lt;br /&gt;
* Min break time after 6 hours: min break time if the user has worked more than 6 hours.&lt;br /&gt;
* Min break time after 9 hours: min break time if the user has worked more than 9 hours.&lt;br /&gt;
* Default working hours&lt;br /&gt;
&lt;br /&gt;
===== Groups/Group rights =====&lt;br /&gt;
&lt;br /&gt;
* Groups can be defined&lt;br /&gt;
* Only the managers of the groups can see the users on the group on the Working Manager App&lt;br /&gt;
* Working types only available for the users on the group can be configured&lt;br /&gt;
* Enable/disable restrictions to submit working hours for the users on the group&lt;br /&gt;
* Enable/Disable verification by manager before submission to Human Resources&lt;br /&gt;
&lt;br /&gt;
===== Import and export of existing tracked time with the help of CSV =====&lt;br /&gt;
&lt;br /&gt;
===== Archiving working times of deleted employees =====&lt;br /&gt;
&lt;br /&gt;
===== User replication: New users appear once assigned the Working User App =====&lt;br /&gt;
&lt;br /&gt;
===== Create Connect-Posts with every absence request =====&lt;br /&gt;
&lt;br /&gt;
== Apps ==&lt;br /&gt;
=== innovaphone-working ===&lt;br /&gt;
[[Image: Innovaphone-working.png|/Innovaphone-working.png|/Innovaphone-working.png]]&lt;br /&gt;
This is an app (Working User), where the user can enter the working hours, holidays, sick and vacation days. This can be done by clicking on the start/stop button. The user have also a calendar view to add, edit or delete working hours.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-working-api ===&lt;br /&gt;
[[Image: Innovaphone-working-api.png|/Innovaphone-working-api.png|/Innovaphone-working-api.png]]&lt;br /&gt;
This is a hidden app (Working Api), where the myApps session is been monitorized when the autostart/stop of the working times is enabled on the Working User App.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
;Websocket: to set a websocket connection.&lt;br /&gt;
;Hidden: to configure the app as hidden.&lt;br /&gt;
;Admin: to get the app object name where to send the notifications.&lt;br /&gt;
;PbxApi: to send the notifications.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-working-client-api ===&lt;br /&gt;
[[Image: Innovaphone-working-api.png|/Innovaphone-working-api.png|/Innovaphone-working-api.png]]&lt;br /&gt;
This is an app needed to provide the Working Client API, so that other apps can start/stop working times. The innovaphone-working-client-api app is also a hidden app. The Settings plugin also sets the hidden function. This app should be granted to apps that use it, not to users.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
;Websocket: to set a websocket connection.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-working-manager ===&lt;br /&gt;
[[Image: Innovaphone-working-admin.png‎|/Innovaphone-working-admin.png|/Innovaphone-working-admin.png]]&lt;br /&gt;
This is an admin app (Working Manager), where an administrator (i.e. Human Resources) can see the users&#039; working hours. Several settings like the working hours per day can be configured per user and they are set to 8 hours from monday to friday by default.&lt;br /&gt;
&lt;br /&gt;
Now &amp;quot;hr&amp;quot; must be entered as Mode on the app object on the PBX. With that now there are 2 workingmanager apps for the user-objects avaiable:&amp;lt;br&amp;gt; &lt;br /&gt;
workingmanager and &amp;lt;br&amp;gt;&lt;br /&gt;
workingmanager~hr. &amp;lt;br&amp;gt;&lt;br /&gt;
The administrator needs both.&lt;br /&gt;
* workingmanager: the managers on the group can only see the users on the group (no hamburger menu avaiable)&lt;br /&gt;
* workingmanager~hr: all the users can be seen there and all the configurations are available&lt;br /&gt;
&lt;br /&gt;
Also some config items can be edited on the hamburguer menu:&lt;br /&gt;
&lt;br /&gt;
* General settings&lt;br /&gt;
&lt;br /&gt;
* Default working hours: workings hours defined per day when a user opens the app for the first time, which can be modified per user on the Admin App (Working Manager).&lt;br /&gt;
&lt;br /&gt;
* Rights&lt;br /&gt;
** Config groups&amp;lt;br /&amp;gt;&lt;br /&gt;
== CSV export ==&lt;br /&gt;
The users&#039; data can be exported and imported on CSV format. There are some fixed fields that are available for the import and the export. There are also some other fields that are only displayed on the export file just as extra information, which are marked with (*).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Users&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that come with the CSV are the SIP, GUID, domain, display name, the defined working hours per day and the personal number.&lt;br /&gt;
&amp;amp;sip;&amp;amp;guid;&amp;amp;domain;&amp;amp;dn;&amp;amp;monday;&amp;amp;tuesday;&amp;amp;wednesday;&amp;amp;thursday;&amp;amp;friday;&amp;amp;saturday;&amp;amp;sunday;&amp;amp;p_number&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;null;innovaphone.com;Atlantis;8;8;8;8;8;0;0;0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Absences&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that come with the CSV are the SIP, the start timestamp, the working hours, label (&#039;&#039;&#039;vacation&#039;&#039;&#039; for a vacation day, &#039;&#039;&#039;hvacation&#039;&#039;&#039; for a 1/2 day vacation, &#039;&#039;&#039;holiday&#039;&#039;&#039; for national holidays, &#039;&#039;&#039;sick&#039;&#039;&#039; for sick leave), confirmed (if the absence has been submitted), date, and the personal number.&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;duration;&amp;amp;label;&amp;amp;confirmed;&amp;amp;date;&amp;amp;p_number&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712181600000;8;hvacation;true;2024-04-04;0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Times&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that come with the CSV are the SIP, the start timestamp, the stop timestamp, confirmed (if has been submitted), the display name, the personal number, the start date, the start time, the stop date, the stop time, the amount of hours and the label (if a type has been selected).&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;stop;&amp;amp;confirmed;&amp;amp;dn;&amp;amp;p_number;&amp;amp;start_date;&amp;amp;start_time;&amp;amp;stop_date;&amp;amp;stop_time;&amp;amp;hours;&amp;amp;label&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712651520199;1712651700199;true;Atlantis;0;2024-04-09;10:32:00.199+00:00;2024-04-09;10:35:00.199+00:00;0,1;&lt;br /&gt;
&lt;br /&gt;
== CSV import ==&lt;br /&gt;
&#039;&#039;&#039;Users&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that should come with the CSV are the SIP, GUID, domain, display name, the defined working hours per day and the personal number.&lt;br /&gt;
&amp;amp;sip;&amp;amp;guid;&amp;amp;domain;&amp;amp;dn;&amp;amp;monday;&amp;amp;tuesday;&amp;amp;wednesday;&amp;amp;thursday;&amp;amp;friday;&amp;amp;saturday;&amp;amp;sunday;&amp;amp;p_number&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;null;innovaphone.com;Atlantis;8;8;8;8;8;0;0;0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Absences&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that should come with the CSV are the SIP, the start timestamp, duration (the working hours), label (&#039;&#039;&#039;vacation&#039;&#039;&#039; for a vacation day, &#039;&#039;&#039;hvacation&#039;&#039;&#039; for a 1/2 day vacation, &#039;&#039;&#039;holiday&#039;&#039;&#039; for national holidays, &#039;&#039;&#039;sick&#039;&#039;&#039; for sick leave), confirmed (if the absence has been submitted) and date (if present timestamp will be ignored). The date must always have the english format, i.e. MM-DD-YYYY.&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;duration;&amp;amp;label;&amp;amp;confirmed;&amp;amp;date&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712181600000;8;hvacation;true;2024-04-04&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Times&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that should come with the CSV are the SIP, the start timestamp, the stop timestamp, confirmed (if has been submitted).&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;stop;&amp;amp;confirmed&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712651520199;1712651700199;true&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
;workingmanager: the name of the working admin app.&lt;br /&gt;
&lt;br /&gt;
== Settings Plugins ==&lt;br /&gt;
&lt;br /&gt;
=== Working ===&lt;br /&gt;
&lt;br /&gt;
With the Working plugin App Objects can be created, edited and deleted on the PBX.&lt;br /&gt;
&lt;br /&gt;
You can also configure the Connect instance and language for Connect Posts for absences.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
* Install the Working App with the new AP app installer available in the Settings . &#039;&#039;Hint : after the installation done, close and open again the Settings to refresh the list of the installed app (the coloured plug-in)&#039;&#039;&lt;br /&gt;
* Create a new PBX Object for the Working User, Working Manager and Working API Apps with the Settings  Plugin.&lt;br /&gt;
* Assign the Working User (to normal users) and Working Manager App (to administration for example Human Resources) by selecting the config template that should include the App.&lt;br /&gt;
* Assign the Working API to all the users, so users can use the auto start/stop and push notifications.&lt;br /&gt;
* Assign license &amp;quot;App(innovaphone-working)&amp;quot; via config template or directly to all users using the APP.&lt;br /&gt;
* Assign the Working hr mode directly via config template. &lt;br /&gt;
* Set configuration settings on the &amp;quot;burger&amp;quot; menu of the Working Manager App (i.e. Reports Interval in weeks, groups and types configuration...).&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
Trace flags for App on App Platform:&lt;br /&gt;
*App&lt;br /&gt;
*App Database&lt;br /&gt;
*App Websocket&lt;br /&gt;
&lt;br /&gt;
Trace flags for myApps Client:&lt;br /&gt;
*Browser Console&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [https://sdk.innovaphone.com/14r2/web1/com.innovaphone.working/com.innovaphone.working.htm SDK Documentation - Working API]&lt;br /&gt;
* [https://sdk.innovaphone.com/14r2/doc/service/Working.htm SDK Documentation - Working Client API]&lt;/div&gt;</summary>
		<author><name>Lme</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference15r1:Concept_App_Service_Working&amp;diff=79483</id>
		<title>Reference15r1:Concept App Service Working</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference15r1:Concept_App_Service_Working&amp;diff=79483"/>
		<updated>2026-04-16T11:28:30Z</updated>

		<summary type="html">&lt;p&gt;Lme: /* Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
The Working App is an app for recording working hours. There is a user app (Working User) to start/stop time tracking and an admin app (Working Manager) to view working hours for all users.&lt;br /&gt;
&lt;br /&gt;
== Applies To == &lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX from version 15r1&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* innovaphone PBX&lt;br /&gt;
* innovaphone Application Platform&lt;br /&gt;
* innovaphone myApps&lt;br /&gt;
* Firmware V15r1 or higher&lt;br /&gt;
* License “App(innovaphone-working)” (order no. 02-00050-010) per application-user&lt;br /&gt;
&lt;br /&gt;
==Concept==&lt;br /&gt;
&lt;br /&gt;
The innovaphone Service Working App is an app to track working hours.&lt;br /&gt;
There is a user app (Working User) to start/stop time tracking (clock style) or to add entries manually. These entries must be confirmed (=submitted) to be displayed on the admin app. Once they are confirmed, they can no longer be edited. There is also an admin app (Working Manager) to display the working time information for all users and where the configuration settings can be changed.&lt;br /&gt;
The app is designed to help employees and employers to easily track working hours in a digital manner.&lt;br /&gt;
&lt;br /&gt;
==How it works==&lt;br /&gt;
&lt;br /&gt;
The first time a user starts the Working App on myApps a new entry is created in the database for this user, based on the &amp;quot;Name&amp;quot; of this user, which will be used to store all the working hours entries, vacation days, sick days and national holidays. Entering the working hours is a two step task, because after defining the start/stop time it is also necessary to &amp;quot;confirm/submit&amp;quot; these hours as correct, after the confirmation is done the user can&#039;t change them anymore and they will be displayed on the admin app.&lt;br /&gt;
&lt;br /&gt;
In the Working manager App the list of the users&#039; names is based on the &amp;quot;Display Name&amp;quot;, if no DN is set then the &amp;quot;Name&amp;quot; will be used. Once the users have opened the working app at least once, they will appear in the list of all users in the Working Manager App. The app adds a red mark when an user does not fulfill the working hours regulation.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
===== Working time tracking and absences such as vacation/sick days and costume work types =====&lt;br /&gt;
&lt;br /&gt;
* Work time account: Overview of the current work time balance &lt;br /&gt;
* Add pre-defined labels to working times&lt;br /&gt;
&lt;br /&gt;
===== Working time regulations =====&lt;br /&gt;
&lt;br /&gt;
*Timeout to submit entries (days): max interval the user has to submit the working hours.&lt;br /&gt;
* Min break time after 6 hours: min break time if the user has worked more than 6 hours.&lt;br /&gt;
* Min break time after 9 hours: min break time if the user has worked more than 9 hours.&lt;br /&gt;
* Default working hours&lt;br /&gt;
&lt;br /&gt;
===== Groups/Group rights =====&lt;br /&gt;
&lt;br /&gt;
* Groups can be defined&lt;br /&gt;
* Only the managers of the groups can see the users on the group on the Working Manager App&lt;br /&gt;
* Working types only available for the users on the group can be configured&lt;br /&gt;
* Enable/disable restrictions to submit working hours for the users on the group&lt;br /&gt;
* Enable/Disable verification by manager before submission to Human Resources&lt;br /&gt;
&lt;br /&gt;
===== Import and export of existing tracked time with the help of CSV =====&lt;br /&gt;
&lt;br /&gt;
===== Archiving working times of deleted employees =====&lt;br /&gt;
&lt;br /&gt;
===== User replication: New users appear once assigned the Working User App =====&lt;br /&gt;
&lt;br /&gt;
===== Create Connect-Posts with every absence request =====&lt;br /&gt;
&lt;br /&gt;
== Apps ==&lt;br /&gt;
=== innovaphone-working ===&lt;br /&gt;
[[Image: Innovaphone-working.png|innovaphone-working.png/|/Innovaphone-working.png]]&lt;br /&gt;
This is an app (Working User), where the user can enter the working hours, holidays, sick and vacation days. This can be done by clicking on the start/stop button. The user have also a calendar view to add, edit or delete working hours.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-working-api ===&lt;br /&gt;
[[Image: Innovaphone-working-api.png|innovaphone-working-api.png/|/Innovaphone-working-api.png]]&lt;br /&gt;
This is a hidden app (Working Api), where the myApps session is been monitorized when the autostart/stop of the working times is enabled on the Working User App.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
;Websocket: to set a websocket connection.&lt;br /&gt;
;Hidden: to configure the app as hidden.&lt;br /&gt;
;Admin: to get the app object name where to send the notifications.&lt;br /&gt;
;PbxApi: to send the notifications.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-working-client-api ===&lt;br /&gt;
[[Image: Innovaphone-working-api.png|innovaphone-working-api.png/|/Innovaphone-working-api.png]]&lt;br /&gt;
This is an app needed to provide the Working Client API, so that other apps can start/stop working times. The innovaphone-working-client-api app is also a hidden app. The Settings plugin also sets the hidden function. This app should be granted to apps that use it, not to users.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
;Websocket: to set a websocket connection.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-working-manager ===&lt;br /&gt;
[[Image: Innovaphone-working-admin.png‎|innovaphone-working-admin.png/|/Innovaphone-working-admin.png]]&lt;br /&gt;
This is an admin app (Working Manager), where an administrator (i.e. Human Resources) can see the users&#039; working hours. Several settings like the working hours per day can be configured per user and they are set to 8 hours from monday to friday by default.&lt;br /&gt;
&lt;br /&gt;
Now &amp;quot;hr&amp;quot; must be entered as Mode on the app object on the PBX. With that now there are 2 workingmanager apps for the user-objects avaiable:&amp;lt;br&amp;gt; &lt;br /&gt;
workingmanager and &amp;lt;br&amp;gt;&lt;br /&gt;
workingmanager~hr. &amp;lt;br&amp;gt;&lt;br /&gt;
The administrator needs both.&lt;br /&gt;
* workingmanager: the managers on the group can only see the users on the group (no hamburger menu avaiable)&lt;br /&gt;
* workingmanager~hr: all the users can be seen there and all the configurations are available&lt;br /&gt;
&lt;br /&gt;
Also some config items can be edited on the hamburguer menu:&lt;br /&gt;
&lt;br /&gt;
* General settings&lt;br /&gt;
&lt;br /&gt;
* Default working hours: workings hours defined per day when a user opens the app for the first time, which can be modified per user on the Admin App (Working Manager).&lt;br /&gt;
&lt;br /&gt;
* Rights&lt;br /&gt;
** Config groups&amp;lt;br /&amp;gt;&lt;br /&gt;
== CSV export ==&lt;br /&gt;
The users&#039; data can be exported and imported on CSV format. There are some fixed fields that are available for the import and the export. There are also some other fields that are only displayed on the export file just as extra information, which are marked with (*).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Users&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that come with the CSV are the SIP, GUID, domain, display name, the defined working hours per day and the personal number.&lt;br /&gt;
&amp;amp;sip;&amp;amp;guid;&amp;amp;domain;&amp;amp;dn;&amp;amp;monday;&amp;amp;tuesday;&amp;amp;wednesday;&amp;amp;thursday;&amp;amp;friday;&amp;amp;saturday;&amp;amp;sunday;&amp;amp;p_number&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;null;innovaphone.com;Atlantis;8;8;8;8;8;0;0;0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Absences&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that come with the CSV are the SIP, the start timestamp, the working hours, label (&#039;&#039;&#039;vacation&#039;&#039;&#039; for a vacation day, &#039;&#039;&#039;hvacation&#039;&#039;&#039; for a 1/2 day vacation, &#039;&#039;&#039;holiday&#039;&#039;&#039; for national holidays, &#039;&#039;&#039;sick&#039;&#039;&#039; for sick leave), confirmed (if the absence has been submitted), date, and the personal number.&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;duration;&amp;amp;label;&amp;amp;confirmed;&amp;amp;date;&amp;amp;p_number&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712181600000;8;hvacation;true;2024-04-04;0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Times&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that come with the CSV are the SIP, the start timestamp, the stop timestamp, confirmed (if has been submitted), the display name, the personal number, the start date, the start time, the stop date, the stop time, the amount of hours and the label (if a type has been selected).&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;stop;&amp;amp;confirmed;&amp;amp;dn;&amp;amp;p_number;&amp;amp;start_date;&amp;amp;start_time;&amp;amp;stop_date;&amp;amp;stop_time;&amp;amp;hours;&amp;amp;label&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712651520199;1712651700199;true;Atlantis;0;2024-04-09;10:32:00.199+00:00;2024-04-09;10:35:00.199+00:00;0,1;&lt;br /&gt;
&lt;br /&gt;
== CSV import ==&lt;br /&gt;
&#039;&#039;&#039;Users&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that should come with the CSV are the SIP, GUID, domain, display name, the defined working hours per day and the personal number.&lt;br /&gt;
&amp;amp;sip;&amp;amp;guid;&amp;amp;domain;&amp;amp;dn;&amp;amp;monday;&amp;amp;tuesday;&amp;amp;wednesday;&amp;amp;thursday;&amp;amp;friday;&amp;amp;saturday;&amp;amp;sunday;&amp;amp;p_number&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;null;innovaphone.com;Atlantis;8;8;8;8;8;0;0;0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Absences&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that should come with the CSV are the SIP, the start timestamp, duration (the working hours), label (&#039;&#039;&#039;vacation&#039;&#039;&#039; for a vacation day, &#039;&#039;&#039;hvacation&#039;&#039;&#039; for a 1/2 day vacation, &#039;&#039;&#039;holiday&#039;&#039;&#039; for national holidays, &#039;&#039;&#039;sick&#039;&#039;&#039; for sick leave), confirmed (if the absence has been submitted) and date (if present timestamp will be ignored). The date must always have the english format, i.e. MM-DD-YYYY.&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;duration;&amp;amp;label;&amp;amp;confirmed;&amp;amp;date&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712181600000;8;hvacation;true;2024-04-04&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Times&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that should come with the CSV are the SIP, the start timestamp, the stop timestamp, confirmed (if has been submitted).&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;stop;&amp;amp;confirmed&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712651520199;1712651700199;true&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
;workingmanager: the name of the working admin app.&lt;br /&gt;
&lt;br /&gt;
== Settings Plugins ==&lt;br /&gt;
&lt;br /&gt;
=== Working ===&lt;br /&gt;
&lt;br /&gt;
With the Working plugin App Objects can be created, edited and deleted on the PBX.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
* Install the Working App with the new AP app installer available in the Settings . &#039;&#039;Hint : after the installation done, close and open again the Settings to refresh the list of the installed app (the coloured plug-in)&#039;&#039;&lt;br /&gt;
* Create a new PBX Object for the Working User, Working Manager and Working API Apps with the Settings  Plugin.&lt;br /&gt;
* Assign the Working User (to normal users) and Working Manager App (to administration for example Human Resources) by selecting the config template that should include the App.&lt;br /&gt;
* Assign the Working API to all the users, so users can use the auto start/stop and push notifications.&lt;br /&gt;
* Assign license &amp;quot;App(innovaphone-working)&amp;quot; via config template or directly to all users using the APP.&lt;br /&gt;
* Open the object workingmanager / App / Modes: (insert here:) hr.&lt;br /&gt;
* Open the object Config Admin / Apps / workingmanager~hr  (select).&lt;br /&gt;
* Set configuration settings on the &amp;quot;burger&amp;quot; menu of the Working Manager App (i.e. Reports Interval in weeks, groups and types configuration...).&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
Trace flags for App on App Platform:&lt;br /&gt;
*App&lt;br /&gt;
*App Database&lt;br /&gt;
*App Websocket&lt;br /&gt;
&lt;br /&gt;
Trace flags for myApps Client:&lt;br /&gt;
*Browser Console&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [https://sdk.innovaphone.com/14r2/web1/com.innovaphone.working/com.innovaphone.working.htm SDK Documentation - Working API]&lt;br /&gt;
* [https://sdk.innovaphone.com/14r2/doc/service/Working.htm SDK Documentation - Working Client API]&lt;/div&gt;</summary>
		<author><name>Lme</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference15r1:Concept_App_Service_Working&amp;diff=79285</id>
		<title>Reference15r1:Concept App Service Working</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference15r1:Concept_App_Service_Working&amp;diff=79285"/>
		<updated>2026-03-30T06:21:08Z</updated>

		<summary type="html">&lt;p&gt;Lme: /* Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
The Working App is an app for recording working hours. There is a user app (Working User) to start/stop time tracking and an admin app (Working Manager) to view working hours for all users.&lt;br /&gt;
&lt;br /&gt;
== Applies To == &lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX from version 15r1&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* innovaphone PBX&lt;br /&gt;
* innovaphone Application Platform&lt;br /&gt;
* innovaphone myApps&lt;br /&gt;
* Firmware V15r1 or higher&lt;br /&gt;
* License “App(innovaphone-working)” (order no. 02-00050-010) per application-user&lt;br /&gt;
&lt;br /&gt;
==Concept==&lt;br /&gt;
&lt;br /&gt;
The innovaphone Service Working App is an app to track working hours.&lt;br /&gt;
There is a user app (Working User) to start/stop time tracking (clock style) or to add entries manually. These entries must be confirmed (=submitted) to be displayed on the admin app. Once they are confirmed, they can no longer be edited. There is also an admin app (Working Manager) to display the working time information for all users and where the configuration settings can be changed.&lt;br /&gt;
The app is designed to help employees and employers to easily track working hours in a digital manner.&lt;br /&gt;
&lt;br /&gt;
==How it works==&lt;br /&gt;
&lt;br /&gt;
The first time a user starts the Working App on myApps a new entry is created in the database for this user, based on the &amp;quot;Name&amp;quot; of this user, which will be used to store all the working hours entries, vacation days, sick days and national holidays. Entering the working hours is a two step task, because after defining the start/stop time it is also necessary to &amp;quot;confirm/submit&amp;quot; these hours as correct, after the confirmation is done the user can&#039;t change them anymore and they will be displayed on the admin app.&lt;br /&gt;
&lt;br /&gt;
In the Working manager App the list of the users&#039; names is based on the &amp;quot;Display Name&amp;quot;, if no DN is set then the &amp;quot;Name&amp;quot; will be used. Once the users have opened the working app at least once, they will appear in the list of all users in the Working Manager App. The app adds a red mark when an user does not fulfill the working hours regulation.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
===== Working time tracking and absences such as vacation/sick days and costume work types =====&lt;br /&gt;
&lt;br /&gt;
* Work time account: Overview of the current work time balance &lt;br /&gt;
* Add pre-defined labels to working times&lt;br /&gt;
&lt;br /&gt;
===== Working time regulations =====&lt;br /&gt;
&lt;br /&gt;
*Timeout to submit entries (days): max interval the user has to submit the working hours.&lt;br /&gt;
* Min break time after 6 hours: min break time if the user has worked more than 6 hours.&lt;br /&gt;
* Min break time after 9 hours: min break time if the user has worked more than 9 hours.&lt;br /&gt;
* Default working hours&lt;br /&gt;
&lt;br /&gt;
===== Groups/Group rights =====&lt;br /&gt;
&lt;br /&gt;
* Groups can be defined&lt;br /&gt;
* Only the managers of the groups can see the users on the group on the Working Manager App&lt;br /&gt;
* Working types only available for the users on the group can be configured&lt;br /&gt;
* Enable/disable restrictions to submit working hours for the users on the group&lt;br /&gt;
* Enable/Disable verification by manager before submission to Human Resources&lt;br /&gt;
&lt;br /&gt;
===== Import and export of existing tracked time with the help of CSV =====&lt;br /&gt;
&lt;br /&gt;
===== Archiving working times of deleted employees =====&lt;br /&gt;
&lt;br /&gt;
===== User replication: New users appear once assigned the Working User App =====&lt;br /&gt;
&lt;br /&gt;
== Apps ==&lt;br /&gt;
=== innovaphone-working ===&lt;br /&gt;
[[Image: Innovaphone-working.png|innovaphone-working.png/|/Innovaphone-working.png]]&lt;br /&gt;
This is an app (Working User), where the user can enter the working hours, holidays, sick and vacation days. This can be done by clicking on the start/stop button. The user have also a calendar view to add, edit or delete working hours.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-working-api ===&lt;br /&gt;
[[Image: Innovaphone-working-api.png|innovaphone-working-api.png/|/Innovaphone-working-api.png]]&lt;br /&gt;
This is a hidden app (Working Api), where the myApps session is been monitorized when the autostart/stop of the working times is enabled on the Working User App.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
;Websocket: to set a websocket connection.&lt;br /&gt;
;Hidden: to configure the app as hidden.&lt;br /&gt;
;Admin: to get the app object name where to send the notifications.&lt;br /&gt;
;PbxApi: to send the notifications.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-working-client-api ===&lt;br /&gt;
[[Image: Innovaphone-working-api.png|innovaphone-working-api.png/|/Innovaphone-working-api.png]]&lt;br /&gt;
This is an app needed to provide the Working Client API, so that other apps can start/stop working times. The innovaphone-working-client-api app is also a hidden app. The Settings plugin also sets the hidden function. This app should be granted to apps that use it, not to users.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
;Websocket: to set a websocket connection.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-working-manager ===&lt;br /&gt;
[[Image: Innovaphone-working-admin.png‎|innovaphone-working-admin.png/|/Innovaphone-working-admin.png]]&lt;br /&gt;
This is an admin app (Working Manager), where an administrator (i.e. Human Resources) can see the users&#039; working hours. Several settings like the working hours per day can be configured per user and they are set to 8 hours from monday to friday by default.&lt;br /&gt;
&lt;br /&gt;
Now &amp;quot;hr&amp;quot; must be entered as Mode on the app object on the PBX. With that now there are 2 workingmanager apps for the user-objects avaiable:&amp;lt;br&amp;gt; &lt;br /&gt;
workingmanager and &amp;lt;br&amp;gt;&lt;br /&gt;
workingmanager~hr. &amp;lt;br&amp;gt;&lt;br /&gt;
The administrator needs both.&lt;br /&gt;
* workingmanager: the managers on the group can only see the users on the group (no hamburger menu avaiable)&lt;br /&gt;
* workingmanager~hr: all the users can be seen there and all the configurations are available&lt;br /&gt;
&lt;br /&gt;
Also some config items can be edited on the hamburguer menu:&lt;br /&gt;
&lt;br /&gt;
* General settings&lt;br /&gt;
&lt;br /&gt;
* Default working hours: workings hours defined per day when a user opens the app for the first time, which can be modified per user on the Admin App (Working Manager).&lt;br /&gt;
&lt;br /&gt;
* Rights&lt;br /&gt;
** Config groups&amp;lt;br /&amp;gt;&lt;br /&gt;
== CSV export ==&lt;br /&gt;
The users&#039; data can be exported and imported on CSV format. There are some fixed fields that are available for the import and the export. There are also some other fields that are only displayed on the export file just as extra information, which are marked with (*).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Users&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that come with the CSV are the SIP, GUID, domain, display name, the defined working hours per day and the personal number.&lt;br /&gt;
&amp;amp;sip;&amp;amp;guid;&amp;amp;domain;&amp;amp;dn;&amp;amp;monday;&amp;amp;tuesday;&amp;amp;wednesday;&amp;amp;thursday;&amp;amp;friday;&amp;amp;saturday;&amp;amp;sunday;&amp;amp;p_number&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;null;innovaphone.com;Atlantis;8;8;8;8;8;0;0;0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Absences&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that come with the CSV are the SIP, the start timestamp, the working hours, label (&#039;&#039;&#039;vacation&#039;&#039;&#039; for a vacation day, &#039;&#039;&#039;hvacation&#039;&#039;&#039; for a 1/2 day vacation, &#039;&#039;&#039;holiday&#039;&#039;&#039; for national holidays, &#039;&#039;&#039;sick&#039;&#039;&#039; for sick leave), confirmed (if the absence has been submitted), date, and the personal number.&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;duration;&amp;amp;label;&amp;amp;confirmed;&amp;amp;date;&amp;amp;p_number&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712181600000;8;hvacation;true;2024-04-04;0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Times&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that come with the CSV are the SIP, the start timestamp, the stop timestamp, confirmed (if has been submitted), the display name, the personal number, the start date, the start time, the stop date, the stop time, the amount of hours and the label (if a type has been selected).&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;stop;&amp;amp;confirmed;&amp;amp;dn;&amp;amp;p_number;&amp;amp;start_date;&amp;amp;start_time;&amp;amp;stop_date;&amp;amp;stop_time;&amp;amp;hours;&amp;amp;label&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712651520199;1712651700199;true;Atlantis;0;2024-04-09;10:32:00.199+00:00;2024-04-09;10:35:00.199+00:00;0,1;&lt;br /&gt;
&lt;br /&gt;
== CSV import ==&lt;br /&gt;
&#039;&#039;&#039;Users&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that should come with the CSV are the SIP, GUID, domain, display name, the defined working hours per day and the personal number.&lt;br /&gt;
&amp;amp;sip;&amp;amp;guid;&amp;amp;domain;&amp;amp;dn;&amp;amp;monday;&amp;amp;tuesday;&amp;amp;wednesday;&amp;amp;thursday;&amp;amp;friday;&amp;amp;saturday;&amp;amp;sunday;&amp;amp;p_number&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;null;innovaphone.com;Atlantis;8;8;8;8;8;0;0;0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Absences&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that should come with the CSV are the SIP, the start timestamp, duration (the working hours), label (&#039;&#039;&#039;vacation&#039;&#039;&#039; for a vacation day, &#039;&#039;&#039;hvacation&#039;&#039;&#039; for a 1/2 day vacation, &#039;&#039;&#039;holiday&#039;&#039;&#039; for national holidays, &#039;&#039;&#039;sick&#039;&#039;&#039; for sick leave), confirmed (if the absence has been submitted) and date (if present timestamp will be ignored). The date must always have the english format, i.e. MM-DD-YYYY.&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;duration;&amp;amp;label;&amp;amp;confirmed;&amp;amp;date&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712181600000;8;hvacation;true;2024-04-04&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Times&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that should come with the CSV are the SIP, the start timestamp, the stop timestamp, confirmed (if has been submitted).&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;stop;&amp;amp;confirmed&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712651520199;1712651700199;true&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
;workingmanager: the name of the working admin app.&lt;br /&gt;
&lt;br /&gt;
== Settings Plugins ==&lt;br /&gt;
&lt;br /&gt;
=== Working ===&lt;br /&gt;
&lt;br /&gt;
With the Working plugin App Objects can be created, edited and deleted on the PBX.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
* Install the Working App with the new AP app installer available in the Settings . &#039;&#039;Hint : after the installation done, close and open again the Settings to refresh the list of the installed app (the coloured plug-in)&#039;&#039;&lt;br /&gt;
* Create a new PBX Object for the Working User, Working Manager and Working API Apps with the Settings  Plugin.&lt;br /&gt;
* Assign the Working User (to normal users) and Working Manager App (to administration for example Human Resources) by selecting the config template that should include the App.&lt;br /&gt;
* Assign the Working API to all the users, so users can use the auto start/stop and push notifications.&lt;br /&gt;
* Assign license &amp;quot;App(innovaphone-working)&amp;quot; via config template or directly to all users using the APP.&lt;br /&gt;
* Open the object workingmanager / App / Modes: (insert here:) hr.&lt;br /&gt;
* Open the object Config Admin / Apps / workingmanager~hr  (select).&lt;br /&gt;
* Set configuration settings on the &amp;quot;burger&amp;quot; menu of the Working Manager App (i.e. Reports Interval in weeks, groups and types configuration...).&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
Trace flags for App on App Platform:&lt;br /&gt;
*App&lt;br /&gt;
*App Database&lt;br /&gt;
*App Websocket&lt;br /&gt;
&lt;br /&gt;
Trace flags for myApps Client:&lt;br /&gt;
*Browser Console&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [https://sdk.innovaphone.com/14r2/web1/com.innovaphone.working/com.innovaphone.working.htm SDK Documentation - Working API]&lt;br /&gt;
* [https://sdk.innovaphone.com/14r2/doc/service/Working.htm SDK Documentation - Working Client API]&lt;/div&gt;</summary>
		<author><name>Lme</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Service_Working&amp;diff=79284</id>
		<title>Reference16r1:Concept App Service Working</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Service_Working&amp;diff=79284"/>
		<updated>2026-03-30T06:20:33Z</updated>

		<summary type="html">&lt;p&gt;Lme: /* Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Working App is used to record working hours and manage absences. The Working User app can be used to start/stop time tracking and create vacation requests. There is also an admin app (Working Manager) which allows users to view working hours and approve vacation requests.&lt;br /&gt;
&lt;br /&gt;
== Applies To == &lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX from version 16r1&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* innovaphone PBX&lt;br /&gt;
* innovaphone Application Platform&lt;br /&gt;
* innovaphone myApps&lt;br /&gt;
* Firmware V16r1 or higher&lt;br /&gt;
* License “App(innovaphone-working)” (order no. 02-00050-010) per application-user&lt;br /&gt;
&lt;br /&gt;
==Concept==&lt;br /&gt;
&lt;br /&gt;
The innovaphone Service Working App is an application for digital time and absence management.&lt;br /&gt;
&lt;br /&gt;
It consists of two parts:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Working User App&#039;&#039;&#039; – used by employees to track their working hours (via clock-in/clock-out or manual entries) and to manage absence requests such as vacation or leave. Time entries and vacation requests must be confirmed (=submitted) before they appear in the admin app. Once confirmed, they can no longer be edited.&lt;br /&gt;
* &#039;&#039;&#039;Working Manager App&#039;&#039;&#039; – used by administrators or managers to view and manage working time and absence information for all users. It also allows approval or rejection of vacation requests and provides access to configuration settings.&lt;br /&gt;
&lt;br /&gt;
==How it works==&lt;br /&gt;
&lt;br /&gt;
The first time a user starts the Working App on myApps a new entry is created in the database for this user, based on the &amp;quot;Name&amp;quot; of this user, which will be used to store all the working hours entries, vacation days, sick days and national holidays. Entering the working hours is a two step task, because after defining the start/stop time it is also necessary to &amp;quot;confirm/submit&amp;quot; these hours as correct, after the confirmation is done the user can&#039;t change them anymore and they will be displayed on the admin app.&lt;br /&gt;
&lt;br /&gt;
In the Working manager App the list of the users&#039; names is based on the &amp;quot;Display Name&amp;quot;, if no DN is set then the &amp;quot;Name&amp;quot; will be used. Once the users have opened the working app at least once, they will appear in the list of all users in the Working Manager App. The app adds a red mark when an user does not fulfill the working hours regulation.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
=== Working ===&lt;br /&gt;
===== Working time tracking and custom work types =====&lt;br /&gt;
&lt;br /&gt;
* Work time account: Overview of the current work time balance &lt;br /&gt;
* Add pre-defined labels to working times&lt;br /&gt;
* Information about working types marked with a label &lt;br /&gt;
* Total break time per month&lt;br /&gt;
&lt;br /&gt;
===== Working time regulations =====&lt;br /&gt;
&lt;br /&gt;
*Timeout to submit entries (days): max interval the user has to submit the working hours.&lt;br /&gt;
* Min break time after 6 hours: min break time if the user has worked more than 6 hours.&lt;br /&gt;
* Min break time after 9 hours: min break time if the user has worked more than 9 hours.&lt;br /&gt;
* Default working hours&lt;br /&gt;
* Comment on changes to contractual working hours&lt;br /&gt;
&lt;br /&gt;
===== Groups/Group rights =====&lt;br /&gt;
&lt;br /&gt;
* Groups can be defined&lt;br /&gt;
* Only the managers of the groups can see the users on the group on the Working Manager App&lt;br /&gt;
* Working types only available for the users on the group can be configured&lt;br /&gt;
* Enable/disable restrictions to submit working hours for the users on the group&lt;br /&gt;
* Enable/Disable verification by manager before submission to Human Resources&lt;br /&gt;
&lt;br /&gt;
===== Archiving working times of deleted employees =====&lt;br /&gt;
&lt;br /&gt;
===== User replication: New users appear once assigned the Working User App =====&lt;br /&gt;
=== Absences ===&lt;br /&gt;
&lt;br /&gt;
==== vacation management ====&lt;br /&gt;
&lt;br /&gt;
* Creating and approving vacation requests&lt;br /&gt;
* Define vacation rules in general and user-specific terms&lt;br /&gt;
* Creating Other absences with rules&lt;br /&gt;
* Configure vacation how many days can be carried over to the next year and how long they will be available &lt;br /&gt;
&lt;br /&gt;
==== holidays and sick days ====&lt;br /&gt;
&lt;br /&gt;
* Entering sick days &lt;br /&gt;
* Create a list of Public holidays based on Locations&lt;br /&gt;
&lt;br /&gt;
== Apps ==&lt;br /&gt;
=== innovaphone-working ===&lt;br /&gt;
[[Image: Innovaphone-working.png|/Innovaphone-working.png|/Innovaphone-working.png]]&lt;br /&gt;
This is an app (Working User), where the user can enter the working hours, holidays, sick and vacation days. This can be done by clicking on the start/stop button. The user have also a calendar view to add, edit or delete working hours.&lt;br /&gt;
Parameters:&amp;lt;br/&amp;gt;&lt;br /&gt;
;Websocket: to set a websocket connection.&lt;br /&gt;
;Services: API which is used to get access to APIs provided by other App Services.&lt;br /&gt;
;Connect: Needed to access the Connect App and to create a zone for working.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-working-api ===&lt;br /&gt;
[[Image: Innovaphone-working-api.png|/Innovaphone-working-api.png|/Innovaphone-working-api.png]]&lt;br /&gt;
This is a hidden app (Working Api), where the myApps session is been monitorized when the autostart/stop of the working times is enabled on the Working User App.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
;Websocket: to set a websocket connection.&lt;br /&gt;
;Hidden: to configure the app as hidden.&lt;br /&gt;
;Admin: to get the app object name where to send the notifications.&lt;br /&gt;
;PbxApi: to send the notifications.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-working-client-api ===&lt;br /&gt;
[[Image: Innovaphone-working-api.png|/Innovaphone-working-api.png|/Innovaphone-working-api.png]]&lt;br /&gt;
This is an app needed to provide the Working Service API, so that other apps can start/stop working times. The Working Service API app is also a hidden app. The Settings plugin also sets the hidden function. This app should be granted to apps that use it, not to users.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
;Websocket: to set a websocket connection.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-working-manager ===&lt;br /&gt;
[[Image: Innovaphone-working-admin.png‎|/Innovaphone-working-admin.png|/Innovaphone-working-admin.png]]&lt;br /&gt;
This is an admin app (Working Manager), where an administrator (i.e. Human Resources) can see the users&#039; working hours. Several settings like the working hours per day can be configured per user and they are set to 8 hours from monday to friday by default.&lt;br /&gt;
Parameters:&lt;br /&gt;
;Websocket: to set a websocket connection.&lt;br /&gt;
;PbxSignal: Needed for the Badge Counts &lt;br /&gt;
&lt;br /&gt;
Now &amp;quot;hr&amp;quot; must be entered as Mode on the app object on the PBX. With that now there are 2 workingmanager apps for the user-objects avaiable:&amp;lt;br&amp;gt; &lt;br /&gt;
workingmanager and &amp;lt;br&amp;gt;&lt;br /&gt;
workingmanager~hr. &amp;lt;br&amp;gt;&lt;br /&gt;
The administrator needs both.&lt;br /&gt;
* workingmanager: the managers on the group can only see the users on the group (no hamburger menu avaiable)&lt;br /&gt;
* workingmanager~hr: all the users can be seen there and all the configurations are available&lt;br /&gt;
&lt;br /&gt;
Also some config items can be edited on the hamburguer menu:&lt;br /&gt;
&lt;br /&gt;
* General settings&lt;br /&gt;
&lt;br /&gt;
* Default working hours: workings hours defined per day when a user opens the app for the first time, which can be modified per user on the Admin App (Working Manager).&lt;br /&gt;
&lt;br /&gt;
* Rights&lt;br /&gt;
** Config groups&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Public Holidays API ===&lt;br /&gt;
[[Image: Innovaphone-working-api.png|/Innovaphone-working-api.png|/Innovaphone-working-api.png]]&lt;br /&gt;
This API provides public holiday data for other apps. It allows them to check whether a specific date is a public holiday in a given country or region.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
;Websocket: to set a websocket connection.&lt;br /&gt;
;Hidden: to configure the app as hidden.&lt;br /&gt;
&lt;br /&gt;
== Import and export of existing tracked time and absences with the help of CSV ==&lt;br /&gt;
=== CSV export ===&lt;br /&gt;
The users&#039; data can be exported and imported on CSV format. There are some fixed fields that are available for the import and the export. There are also some other fields that are only displayed on the export file just as extra information, which are marked with (*).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Users&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that come with the CSV are the SIP, GUID, domain, display name, the defined working hours per day and the personal number.&lt;br /&gt;
&amp;amp;sip;&amp;amp;guid;&amp;amp;domain;&amp;amp;dn;&amp;amp;monday;&amp;amp;tuesday;&amp;amp;wednesday;&amp;amp;thursday;&amp;amp;friday;&amp;amp;saturday;&amp;amp;sunday;&amp;amp;p_number&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;null;innovaphone.com;Atlantis;8;8;8;8;8;0;0;0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Absences&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that come with the CSV are the SIP, the start timestamp, the working hours, label (&#039;&#039;&#039;vacation&#039;&#039;&#039; for a vacation day, &#039;&#039;&#039;hvacation&#039;&#039;&#039; for a 1/2 day vacation, &#039;&#039;&#039;holiday&#039;&#039;&#039; for national holidays, &#039;&#039;&#039;sick&#039;&#039;&#039; for sick leave), confirmed (if the absence has been submitted), date, and the personal number.&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;duration;&amp;amp;label;&amp;amp;confirmed;&amp;amp;date;&amp;amp;p_number&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712181600000;8;hvacation;true;2024-04-04;0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Times&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that come with the CSV are the SIP, the start timestamp, the stop timestamp, confirmed (if has been submitted), the display name, the personal number, the start date, the start time, the stop date, the stop time, the amount of hours and the label (if a type has been selected).&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;stop;&amp;amp;confirmed;&amp;amp;dn;&amp;amp;p_number;&amp;amp;start_date;&amp;amp;start_time;&amp;amp;stop_date;&amp;amp;stop_time;&amp;amp;hours;&amp;amp;label&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712651520199;1712651700199;true;Atlantis;0;2024-04-09;10:32:00.199+00:00;2024-04-09;10:35:00.199+00:00;0,1;&lt;br /&gt;
&lt;br /&gt;
=== CSV import ===&lt;br /&gt;
&#039;&#039;&#039;Users&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that should come with the CSV are the SIP, GUID, domain, display name, the defined working hours per day and the personal number.&lt;br /&gt;
&amp;amp;sip;&amp;amp;guid;&amp;amp;domain;&amp;amp;dn;&amp;amp;monday;&amp;amp;tuesday;&amp;amp;wednesday;&amp;amp;thursday;&amp;amp;friday;&amp;amp;saturday;&amp;amp;sunday;&amp;amp;p_number&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;null;innovaphone.com;Atlantis;8;8;8;8;8;0;0;0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Absences&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that should come with the CSV are the SIP, the start timestamp, duration (the working hours), label (&#039;&#039;&#039;vacation&#039;&#039;&#039; for a vacation day, &#039;&#039;&#039;hvacation&#039;&#039;&#039; for a 1/2 day vacation, &#039;&#039;&#039;holiday&#039;&#039;&#039; for national holidays, &#039;&#039;&#039;sick&#039;&#039;&#039; for sick leave), confirmed (if the absence has been submitted) and date (if present timestamp will be ignored). The date must always have the english format, i.e. MM-DD-YYYY.&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;duration;&amp;amp;label;&amp;amp;confirmed;&amp;amp;date&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712181600000;8;hvacation;true;2024-04-04&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Times&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that should come with the CSV are the SIP, the start timestamp, the stop timestamp, confirmed (if has been submitted).&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;stop;&amp;amp;confirmed&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712651520199;1712651700199;true&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
;workingmanager: the name of the working admin app.&lt;br /&gt;
&lt;br /&gt;
== Settings Plugins ==&lt;br /&gt;
&lt;br /&gt;
=== Working ===&lt;br /&gt;
&lt;br /&gt;
With the Working plugin App Objects can be created, edited and deleted on the PBX.&lt;br /&gt;
&lt;br /&gt;
=== Settings Plugin - Configuration ===&lt;br /&gt;
General settings for the app can be configured within this area.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PBX Name:&#039;&#039;&#039; This refers to the name of the MasterPBX in the respective system environment. This setting must be set correctly for user replication and other functions to work.&lt;br /&gt;
* &#039;&#039;&#039;Connect Name:&#039;&#039;&#039; The H323 name of the Connect app must be configured here. This is usually “connect,” but it depends on the individual setup of the system.&lt;br /&gt;
* &#039;&#039;&#039;Connect Groups:&#039;&#039;&#039; Here you can define a comma-separated list of PBX group names to be used for Connect integration in private posts. This is necessary in order to be able to include separate PBX groups, such as the human resources department, in private posts in addition to department heads.&lt;br /&gt;
* &#039;&#039;&#039;Language for connectsposts&#039;&#039;&#039;: Integration with the Connect app and thus the creation of “posts” is carried out from a central location. The language can be set for these posts. Currently, there is ‘de’ for German and “en” for English.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
* Install the Working App with the new AP app installer available in the Settings . &#039;&#039;Hint : after the installation done, close and open again the Settings to refresh the list of the installed app (the coloured plug-in)&#039;&#039;&lt;br /&gt;
* Create a new PBX Object for the Working User, Working Manager and Working API Apps with the Settings  Plugin.&lt;br /&gt;
* Assign the Working User (to normal users) and Working Manager App (to administration for example Human Resources) by selecting the config template that should include the App.&lt;br /&gt;
* Assign the Working API to all the users, so users can use the auto start/stop and push notifications.&lt;br /&gt;
* Assign license &amp;quot;App(innovaphone-working)&amp;quot; via config template or directly to all users using the APP.&lt;br /&gt;
* Open the object workingmanager / App / Modes: (insert here:) hr.&lt;br /&gt;
* Open the object Config Admin / Apps / workingmanager~hr  (select).&lt;br /&gt;
* Set configuration settings on the &amp;quot;burger&amp;quot; menu of the Working Manager App (i.e. Reports Interval in weeks, groups and types configuration...).&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
Trace flags for App on App Platform:&lt;br /&gt;
*App&lt;br /&gt;
*App Database&lt;br /&gt;
*App Websocket&lt;br /&gt;
&lt;br /&gt;
Trace flags for myApps Client:&lt;br /&gt;
*Browser Console&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [https://sdk.innovaphone.com/16r1/web1/com.innovaphone.working/com.innovaphone.working.htm SDK Documentation - Working API]&lt;br /&gt;
* [https://sdk.innovaphone.com/16r1/doc/service/Working.htm SDK Documentation - Working Client API]&lt;/div&gt;</summary>
		<author><name>Lme</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Service_Working&amp;diff=79283</id>
		<title>Reference16r1:Concept App Service Working</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Service_Working&amp;diff=79283"/>
		<updated>2026-03-30T06:19:33Z</updated>

		<summary type="html">&lt;p&gt;Lme: /* Related Articles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Working App is used to record working hours and manage absences. The Working User app can be used to start/stop time tracking and create vacation requests. There is also an admin app (Working Manager) which allows users to view working hours and approve vacation requests.&lt;br /&gt;
&lt;br /&gt;
== Applies To == &lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX from version 16r1&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* innovaphone PBX&lt;br /&gt;
* innovaphone Application Platform&lt;br /&gt;
* innovaphone myApps&lt;br /&gt;
* Firmware V16r1 beta1 or higher&lt;br /&gt;
* License “App(innovaphone-working)” (order no. 02-00050-010) per application-user&lt;br /&gt;
&lt;br /&gt;
==Concept==&lt;br /&gt;
&lt;br /&gt;
The innovaphone Service Working App is an application for digital time and absence management.&lt;br /&gt;
&lt;br /&gt;
It consists of two parts:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Working User App&#039;&#039;&#039; – used by employees to track their working hours (via clock-in/clock-out or manual entries) and to manage absence requests such as vacation or leave. Time entries and vacation requests must be confirmed (=submitted) before they appear in the admin app. Once confirmed, they can no longer be edited.&lt;br /&gt;
* &#039;&#039;&#039;Working Manager App&#039;&#039;&#039; – used by administrators or managers to view and manage working time and absence information for all users. It also allows approval or rejection of vacation requests and provides access to configuration settings.&lt;br /&gt;
&lt;br /&gt;
==How it works==&lt;br /&gt;
&lt;br /&gt;
The first time a user starts the Working App on myApps a new entry is created in the database for this user, based on the &amp;quot;Name&amp;quot; of this user, which will be used to store all the working hours entries, vacation days, sick days and national holidays. Entering the working hours is a two step task, because after defining the start/stop time it is also necessary to &amp;quot;confirm/submit&amp;quot; these hours as correct, after the confirmation is done the user can&#039;t change them anymore and they will be displayed on the admin app.&lt;br /&gt;
&lt;br /&gt;
In the Working manager App the list of the users&#039; names is based on the &amp;quot;Display Name&amp;quot;, if no DN is set then the &amp;quot;Name&amp;quot; will be used. Once the users have opened the working app at least once, they will appear in the list of all users in the Working Manager App. The app adds a red mark when an user does not fulfill the working hours regulation.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
=== Working ===&lt;br /&gt;
===== Working time tracking and custom work types =====&lt;br /&gt;
&lt;br /&gt;
* Work time account: Overview of the current work time balance &lt;br /&gt;
* Add pre-defined labels to working times&lt;br /&gt;
* Information about working types marked with a label &lt;br /&gt;
* Total break time per month&lt;br /&gt;
&lt;br /&gt;
===== Working time regulations =====&lt;br /&gt;
&lt;br /&gt;
*Timeout to submit entries (days): max interval the user has to submit the working hours.&lt;br /&gt;
* Min break time after 6 hours: min break time if the user has worked more than 6 hours.&lt;br /&gt;
* Min break time after 9 hours: min break time if the user has worked more than 9 hours.&lt;br /&gt;
* Default working hours&lt;br /&gt;
* Comment on changes to contractual working hours&lt;br /&gt;
&lt;br /&gt;
===== Groups/Group rights =====&lt;br /&gt;
&lt;br /&gt;
* Groups can be defined&lt;br /&gt;
* Only the managers of the groups can see the users on the group on the Working Manager App&lt;br /&gt;
* Working types only available for the users on the group can be configured&lt;br /&gt;
* Enable/disable restrictions to submit working hours for the users on the group&lt;br /&gt;
* Enable/Disable verification by manager before submission to Human Resources&lt;br /&gt;
&lt;br /&gt;
===== Archiving working times of deleted employees =====&lt;br /&gt;
&lt;br /&gt;
===== User replication: New users appear once assigned the Working User App =====&lt;br /&gt;
=== Absences ===&lt;br /&gt;
&lt;br /&gt;
==== vacation management ====&lt;br /&gt;
&lt;br /&gt;
* Creating and approving vacation requests&lt;br /&gt;
* Define vacation rules in general and user-specific terms&lt;br /&gt;
* Creating Other absences with rules&lt;br /&gt;
* Configure vacation how many days can be carried over to the next year and how long they will be available &lt;br /&gt;
&lt;br /&gt;
==== holidays and sick days ====&lt;br /&gt;
&lt;br /&gt;
* Entering sick days &lt;br /&gt;
* Create a list of Public holidays based on Locations&lt;br /&gt;
&lt;br /&gt;
== Apps ==&lt;br /&gt;
=== innovaphone-working ===&lt;br /&gt;
[[Image: Innovaphone-working.png|/Innovaphone-working.png|/Innovaphone-working.png]]&lt;br /&gt;
This is an app (Working User), where the user can enter the working hours, holidays, sick and vacation days. This can be done by clicking on the start/stop button. The user have also a calendar view to add, edit or delete working hours.&lt;br /&gt;
Parameters:&amp;lt;br/&amp;gt;&lt;br /&gt;
;Websocket: to set a websocket connection.&lt;br /&gt;
;Services: API which is used to get access to APIs provided by other App Services.&lt;br /&gt;
;Connect: Needed to access the Connect App and to create a zone for working.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-working-api ===&lt;br /&gt;
[[Image: Innovaphone-working-api.png|/Innovaphone-working-api.png|/Innovaphone-working-api.png]]&lt;br /&gt;
This is a hidden app (Working Api), where the myApps session is been monitorized when the autostart/stop of the working times is enabled on the Working User App.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
;Websocket: to set a websocket connection.&lt;br /&gt;
;Hidden: to configure the app as hidden.&lt;br /&gt;
;Admin: to get the app object name where to send the notifications.&lt;br /&gt;
;PbxApi: to send the notifications.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-working-client-api ===&lt;br /&gt;
[[Image: Innovaphone-working-api.png|/Innovaphone-working-api.png|/Innovaphone-working-api.png]]&lt;br /&gt;
This is an app needed to provide the Working Service API, so that other apps can start/stop working times. The Working Service API app is also a hidden app. The Settings plugin also sets the hidden function. This app should be granted to apps that use it, not to users.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
;Websocket: to set a websocket connection.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-working-manager ===&lt;br /&gt;
[[Image: Innovaphone-working-admin.png‎|/Innovaphone-working-admin.png|/Innovaphone-working-admin.png]]&lt;br /&gt;
This is an admin app (Working Manager), where an administrator (i.e. Human Resources) can see the users&#039; working hours. Several settings like the working hours per day can be configured per user and they are set to 8 hours from monday to friday by default.&lt;br /&gt;
Parameters:&lt;br /&gt;
;Websocket: to set a websocket connection.&lt;br /&gt;
;PbxSignal: Needed for the Badge Counts &lt;br /&gt;
&lt;br /&gt;
Now &amp;quot;hr&amp;quot; must be entered as Mode on the app object on the PBX. With that now there are 2 workingmanager apps for the user-objects avaiable:&amp;lt;br&amp;gt; &lt;br /&gt;
workingmanager and &amp;lt;br&amp;gt;&lt;br /&gt;
workingmanager~hr. &amp;lt;br&amp;gt;&lt;br /&gt;
The administrator needs both.&lt;br /&gt;
* workingmanager: the managers on the group can only see the users on the group (no hamburger menu avaiable)&lt;br /&gt;
* workingmanager~hr: all the users can be seen there and all the configurations are available&lt;br /&gt;
&lt;br /&gt;
Also some config items can be edited on the hamburguer menu:&lt;br /&gt;
&lt;br /&gt;
* General settings&lt;br /&gt;
&lt;br /&gt;
* Default working hours: workings hours defined per day when a user opens the app for the first time, which can be modified per user on the Admin App (Working Manager).&lt;br /&gt;
&lt;br /&gt;
* Rights&lt;br /&gt;
** Config groups&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Public Holidays API ===&lt;br /&gt;
[[Image: Innovaphone-working-api.png|/Innovaphone-working-api.png|/Innovaphone-working-api.png]]&lt;br /&gt;
This API provides public holiday data for other apps. It allows them to check whether a specific date is a public holiday in a given country or region.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
;Websocket: to set a websocket connection.&lt;br /&gt;
;Hidden: to configure the app as hidden.&lt;br /&gt;
&lt;br /&gt;
== Import and export of existing tracked time and absences with the help of CSV ==&lt;br /&gt;
=== CSV export ===&lt;br /&gt;
The users&#039; data can be exported and imported on CSV format. There are some fixed fields that are available for the import and the export. There are also some other fields that are only displayed on the export file just as extra information, which are marked with (*).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Users&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that come with the CSV are the SIP, GUID, domain, display name, the defined working hours per day and the personal number.&lt;br /&gt;
&amp;amp;sip;&amp;amp;guid;&amp;amp;domain;&amp;amp;dn;&amp;amp;monday;&amp;amp;tuesday;&amp;amp;wednesday;&amp;amp;thursday;&amp;amp;friday;&amp;amp;saturday;&amp;amp;sunday;&amp;amp;p_number&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;null;innovaphone.com;Atlantis;8;8;8;8;8;0;0;0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Absences&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that come with the CSV are the SIP, the start timestamp, the working hours, label (&#039;&#039;&#039;vacation&#039;&#039;&#039; for a vacation day, &#039;&#039;&#039;hvacation&#039;&#039;&#039; for a 1/2 day vacation, &#039;&#039;&#039;holiday&#039;&#039;&#039; for national holidays, &#039;&#039;&#039;sick&#039;&#039;&#039; for sick leave), confirmed (if the absence has been submitted), date, and the personal number.&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;duration;&amp;amp;label;&amp;amp;confirmed;&amp;amp;date;&amp;amp;p_number&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712181600000;8;hvacation;true;2024-04-04;0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Times&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that come with the CSV are the SIP, the start timestamp, the stop timestamp, confirmed (if has been submitted), the display name, the personal number, the start date, the start time, the stop date, the stop time, the amount of hours and the label (if a type has been selected).&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;stop;&amp;amp;confirmed;&amp;amp;dn;&amp;amp;p_number;&amp;amp;start_date;&amp;amp;start_time;&amp;amp;stop_date;&amp;amp;stop_time;&amp;amp;hours;&amp;amp;label&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712651520199;1712651700199;true;Atlantis;0;2024-04-09;10:32:00.199+00:00;2024-04-09;10:35:00.199+00:00;0,1;&lt;br /&gt;
&lt;br /&gt;
=== CSV import ===&lt;br /&gt;
&#039;&#039;&#039;Users&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that should come with the CSV are the SIP, GUID, domain, display name, the defined working hours per day and the personal number.&lt;br /&gt;
&amp;amp;sip;&amp;amp;guid;&amp;amp;domain;&amp;amp;dn;&amp;amp;monday;&amp;amp;tuesday;&amp;amp;wednesday;&amp;amp;thursday;&amp;amp;friday;&amp;amp;saturday;&amp;amp;sunday;&amp;amp;p_number&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;null;innovaphone.com;Atlantis;8;8;8;8;8;0;0;0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Absences&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that should come with the CSV are the SIP, the start timestamp, duration (the working hours), label (&#039;&#039;&#039;vacation&#039;&#039;&#039; for a vacation day, &#039;&#039;&#039;hvacation&#039;&#039;&#039; for a 1/2 day vacation, &#039;&#039;&#039;holiday&#039;&#039;&#039; for national holidays, &#039;&#039;&#039;sick&#039;&#039;&#039; for sick leave), confirmed (if the absence has been submitted) and date (if present timestamp will be ignored). The date must always have the english format, i.e. MM-DD-YYYY.&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;duration;&amp;amp;label;&amp;amp;confirmed;&amp;amp;date&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712181600000;8;hvacation;true;2024-04-04&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Times&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that should come with the CSV are the SIP, the start timestamp, the stop timestamp, confirmed (if has been submitted).&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;stop;&amp;amp;confirmed&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712651520199;1712651700199;true&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
;workingmanager: the name of the working admin app.&lt;br /&gt;
&lt;br /&gt;
== Settings Plugins ==&lt;br /&gt;
&lt;br /&gt;
=== Working ===&lt;br /&gt;
&lt;br /&gt;
With the Working plugin App Objects can be created, edited and deleted on the PBX.&lt;br /&gt;
&lt;br /&gt;
=== Settings Plugin - Configuration ===&lt;br /&gt;
General settings for the app can be configured within this area.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PBX Name:&#039;&#039;&#039; This refers to the name of the MasterPBX in the respective system environment. This setting must be set correctly for user replication and other functions to work.&lt;br /&gt;
* &#039;&#039;&#039;Connect Name:&#039;&#039;&#039; The H323 name of the Connect app must be configured here. This is usually “connect,” but it depends on the individual setup of the system.&lt;br /&gt;
* &#039;&#039;&#039;Connect Groups:&#039;&#039;&#039; Here you can define a comma-separated list of PBX group names to be used for Connect integration in private posts. This is necessary in order to be able to include separate PBX groups, such as the human resources department, in private posts in addition to department heads.&lt;br /&gt;
* &#039;&#039;&#039;Language for connectsposts&#039;&#039;&#039;: Integration with the Connect app and thus the creation of “posts” is carried out from a central location. The language can be set for these posts. Currently, there is ‘de’ for German and “en” for English.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
* Install the Working App with the new AP app installer available in the Settings . &#039;&#039;Hint : after the installation done, close and open again the Settings to refresh the list of the installed app (the coloured plug-in)&#039;&#039;&lt;br /&gt;
* Create a new PBX Object for the Working User, Working Manager and Working API Apps with the Settings  Plugin.&lt;br /&gt;
* Assign the Working User (to normal users) and Working Manager App (to administration for example Human Resources) by selecting the config template that should include the App.&lt;br /&gt;
* Assign the Working API to all the users, so users can use the auto start/stop and push notifications.&lt;br /&gt;
* Assign license &amp;quot;App(innovaphone-working)&amp;quot; via config template or directly to all users using the APP.&lt;br /&gt;
* Open the object workingmanager / App / Modes: (insert here:) hr.&lt;br /&gt;
* Open the object Config Admin / Apps / workingmanager~hr  (select).&lt;br /&gt;
* Set configuration settings on the &amp;quot;burger&amp;quot; menu of the Working Manager App (i.e. Reports Interval in weeks, groups and types configuration...).&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
Trace flags for App on App Platform:&lt;br /&gt;
*App&lt;br /&gt;
*App Database&lt;br /&gt;
*App Websocket&lt;br /&gt;
&lt;br /&gt;
Trace flags for myApps Client:&lt;br /&gt;
*Browser Console&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [https://sdk.innovaphone.com/16r1/web1/com.innovaphone.working/com.innovaphone.working.htm SDK Documentation - Working API]&lt;br /&gt;
* [https://sdk.innovaphone.com/16r1/doc/service/Working.htm SDK Documentation - Working Client API]&lt;/div&gt;</summary>
		<author><name>Lme</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Service_Working&amp;diff=79252</id>
		<title>Reference16r1:Concept App Service Working</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Service_Working&amp;diff=79252"/>
		<updated>2026-03-25T13:55:59Z</updated>

		<summary type="html">&lt;p&gt;Lme: /* Absences */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Working App is used to record working hours and manage absences. The Working User app can be used to start/stop time tracking and create vacation requests. There is also an admin app (Working Manager) which allows users to view working hours and approve vacation requests.&lt;br /&gt;
&lt;br /&gt;
== Applies To == &lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX from version 16r1&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* innovaphone PBX&lt;br /&gt;
* innovaphone Application Platform&lt;br /&gt;
* innovaphone myApps&lt;br /&gt;
* Firmware V16r1 beta1 or higher&lt;br /&gt;
* License “App(innovaphone-working)” (order no. 02-00050-010) per application-user&lt;br /&gt;
&lt;br /&gt;
==Concept==&lt;br /&gt;
&lt;br /&gt;
The innovaphone Service Working App is an application for digital time and absence management.&lt;br /&gt;
&lt;br /&gt;
It consists of two parts:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Working User App&#039;&#039;&#039; – used by employees to track their working hours (via clock-in/clock-out or manual entries) and to manage absence requests such as vacation or leave. Time entries and vacation requests must be confirmed (=submitted) before they appear in the admin app. Once confirmed, they can no longer be edited.&lt;br /&gt;
* &#039;&#039;&#039;Working Manager App&#039;&#039;&#039; – used by administrators or managers to view and manage working time and absence information for all users. It also allows approval or rejection of vacation requests and provides access to configuration settings.&lt;br /&gt;
&lt;br /&gt;
==How it works==&lt;br /&gt;
&lt;br /&gt;
The first time a user starts the Working App on myApps a new entry is created in the database for this user, based on the &amp;quot;Name&amp;quot; of this user, which will be used to store all the working hours entries, vacation days, sick days and national holidays. Entering the working hours is a two step task, because after defining the start/stop time it is also necessary to &amp;quot;confirm/submit&amp;quot; these hours as correct, after the confirmation is done the user can&#039;t change them anymore and they will be displayed on the admin app.&lt;br /&gt;
&lt;br /&gt;
In the Working manager App the list of the users&#039; names is based on the &amp;quot;Display Name&amp;quot;, if no DN is set then the &amp;quot;Name&amp;quot; will be used. Once the users have opened the working app at least once, they will appear in the list of all users in the Working Manager App. The app adds a red mark when an user does not fulfill the working hours regulation.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
=== Working ===&lt;br /&gt;
===== Working time tracking and custom work types =====&lt;br /&gt;
&lt;br /&gt;
* Work time account: Overview of the current work time balance &lt;br /&gt;
* Add pre-defined labels to working times&lt;br /&gt;
* Information about working types marked with a label &lt;br /&gt;
* Total break time per month&lt;br /&gt;
&lt;br /&gt;
===== Working time regulations =====&lt;br /&gt;
&lt;br /&gt;
*Timeout to submit entries (days): max interval the user has to submit the working hours.&lt;br /&gt;
* Min break time after 6 hours: min break time if the user has worked more than 6 hours.&lt;br /&gt;
* Min break time after 9 hours: min break time if the user has worked more than 9 hours.&lt;br /&gt;
* Default working hours&lt;br /&gt;
* Comment on changes to contractual working hours&lt;br /&gt;
&lt;br /&gt;
===== Groups/Group rights =====&lt;br /&gt;
&lt;br /&gt;
* Groups can be defined&lt;br /&gt;
* Only the managers of the groups can see the users on the group on the Working Manager App&lt;br /&gt;
* Working types only available for the users on the group can be configured&lt;br /&gt;
* Enable/disable restrictions to submit working hours for the users on the group&lt;br /&gt;
* Enable/Disable verification by manager before submission to Human Resources&lt;br /&gt;
&lt;br /&gt;
===== Archiving working times of deleted employees =====&lt;br /&gt;
&lt;br /&gt;
===== User replication: New users appear once assigned the Working User App =====&lt;br /&gt;
=== Absences ===&lt;br /&gt;
&lt;br /&gt;
==== vacation management ====&lt;br /&gt;
&lt;br /&gt;
* Creating and approving vacation requests&lt;br /&gt;
* Define vacation rules in general and user-specific terms&lt;br /&gt;
* Creating Other absences with rules&lt;br /&gt;
* Configure vacation how many days can be carried over to the next year and how long they will be available &lt;br /&gt;
&lt;br /&gt;
==== holidays and sick days ====&lt;br /&gt;
&lt;br /&gt;
* Entering sick days &lt;br /&gt;
* Create a list of Public holidays based on Locations&lt;br /&gt;
&lt;br /&gt;
== Apps ==&lt;br /&gt;
=== innovaphone-working ===&lt;br /&gt;
[[Image: Innovaphone-working.png|/Innovaphone-working.png|/Innovaphone-working.png]]&lt;br /&gt;
This is an app (Working User), where the user can enter the working hours, holidays, sick and vacation days. This can be done by clicking on the start/stop button. The user have also a calendar view to add, edit or delete working hours.&lt;br /&gt;
Parameters:&amp;lt;br/&amp;gt;&lt;br /&gt;
;Websocket: to set a websocket connection.&lt;br /&gt;
;Services: API which is used to get access to APIs provided by other App Services.&lt;br /&gt;
;Connect: Needed to access the Connect App and to create a zone for working.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-working-api ===&lt;br /&gt;
[[Image: Innovaphone-working-api.png|/Innovaphone-working-api.png|/Innovaphone-working-api.png]]&lt;br /&gt;
This is a hidden app (Working Api), where the myApps session is been monitorized when the autostart/stop of the working times is enabled on the Working User App.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
;Websocket: to set a websocket connection.&lt;br /&gt;
;Hidden: to configure the app as hidden.&lt;br /&gt;
;Admin: to get the app object name where to send the notifications.&lt;br /&gt;
;PbxApi: to send the notifications.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-working-client-api ===&lt;br /&gt;
[[Image: Innovaphone-working-api.png|/Innovaphone-working-api.png|/Innovaphone-working-api.png]]&lt;br /&gt;
This is an app needed to provide the Working Service API, so that other apps can start/stop working times. The Working Service API app is also a hidden app. The Settings plugin also sets the hidden function. This app should be granted to apps that use it, not to users.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
;Websocket: to set a websocket connection.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-working-manager ===&lt;br /&gt;
[[Image: Innovaphone-working-admin.png‎|/Innovaphone-working-admin.png|/Innovaphone-working-admin.png]]&lt;br /&gt;
This is an admin app (Working Manager), where an administrator (i.e. Human Resources) can see the users&#039; working hours. Several settings like the working hours per day can be configured per user and they are set to 8 hours from monday to friday by default.&lt;br /&gt;
Parameters:&lt;br /&gt;
;Websocket: to set a websocket connection.&lt;br /&gt;
;PbxSignal: Needed for the Badge Counts &lt;br /&gt;
&lt;br /&gt;
Now &amp;quot;hr&amp;quot; must be entered as Mode on the app object on the PBX. With that now there are 2 workingmanager apps for the user-objects avaiable:&amp;lt;br&amp;gt; &lt;br /&gt;
workingmanager and &amp;lt;br&amp;gt;&lt;br /&gt;
workingmanager~hr. &amp;lt;br&amp;gt;&lt;br /&gt;
The administrator needs both.&lt;br /&gt;
* workingmanager: the managers on the group can only see the users on the group (no hamburger menu avaiable)&lt;br /&gt;
* workingmanager~hr: all the users can be seen there and all the configurations are available&lt;br /&gt;
&lt;br /&gt;
Also some config items can be edited on the hamburguer menu:&lt;br /&gt;
&lt;br /&gt;
* General settings&lt;br /&gt;
&lt;br /&gt;
* Default working hours: workings hours defined per day when a user opens the app for the first time, which can be modified per user on the Admin App (Working Manager).&lt;br /&gt;
&lt;br /&gt;
* Rights&lt;br /&gt;
** Config groups&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Public Holidays API ===&lt;br /&gt;
[[Image: Innovaphone-working-api.png|/Innovaphone-working-api.png|/Innovaphone-working-api.png]]&lt;br /&gt;
This API provides public holiday data for other apps. It allows them to check whether a specific date is a public holiday in a given country or region.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
;Websocket: to set a websocket connection.&lt;br /&gt;
;Hidden: to configure the app as hidden.&lt;br /&gt;
&lt;br /&gt;
== Import and export of existing tracked time and absences with the help of CSV ==&lt;br /&gt;
=== CSV export ===&lt;br /&gt;
The users&#039; data can be exported and imported on CSV format. There are some fixed fields that are available for the import and the export. There are also some other fields that are only displayed on the export file just as extra information, which are marked with (*).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Users&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that come with the CSV are the SIP, GUID, domain, display name, the defined working hours per day and the personal number.&lt;br /&gt;
&amp;amp;sip;&amp;amp;guid;&amp;amp;domain;&amp;amp;dn;&amp;amp;monday;&amp;amp;tuesday;&amp;amp;wednesday;&amp;amp;thursday;&amp;amp;friday;&amp;amp;saturday;&amp;amp;sunday;&amp;amp;p_number&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;null;innovaphone.com;Atlantis;8;8;8;8;8;0;0;0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Absences&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that come with the CSV are the SIP, the start timestamp, the working hours, label (&#039;&#039;&#039;vacation&#039;&#039;&#039; for a vacation day, &#039;&#039;&#039;hvacation&#039;&#039;&#039; for a 1/2 day vacation, &#039;&#039;&#039;holiday&#039;&#039;&#039; for national holidays, &#039;&#039;&#039;sick&#039;&#039;&#039; for sick leave), confirmed (if the absence has been submitted), date, and the personal number.&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;duration;&amp;amp;label;&amp;amp;confirmed;&amp;amp;date;&amp;amp;p_number&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712181600000;8;hvacation;true;2024-04-04;0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Times&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that come with the CSV are the SIP, the start timestamp, the stop timestamp, confirmed (if has been submitted), the display name, the personal number, the start date, the start time, the stop date, the stop time, the amount of hours and the label (if a type has been selected).&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;stop;&amp;amp;confirmed;&amp;amp;dn;&amp;amp;p_number;&amp;amp;start_date;&amp;amp;start_time;&amp;amp;stop_date;&amp;amp;stop_time;&amp;amp;hours;&amp;amp;label&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712651520199;1712651700199;true;Atlantis;0;2024-04-09;10:32:00.199+00:00;2024-04-09;10:35:00.199+00:00;0,1;&lt;br /&gt;
&lt;br /&gt;
=== CSV import ===&lt;br /&gt;
&#039;&#039;&#039;Users&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that should come with the CSV are the SIP, GUID, domain, display name, the defined working hours per day and the personal number.&lt;br /&gt;
&amp;amp;sip;&amp;amp;guid;&amp;amp;domain;&amp;amp;dn;&amp;amp;monday;&amp;amp;tuesday;&amp;amp;wednesday;&amp;amp;thursday;&amp;amp;friday;&amp;amp;saturday;&amp;amp;sunday;&amp;amp;p_number&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;null;innovaphone.com;Atlantis;8;8;8;8;8;0;0;0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Absences&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that should come with the CSV are the SIP, the start timestamp, duration (the working hours), label (&#039;&#039;&#039;vacation&#039;&#039;&#039; for a vacation day, &#039;&#039;&#039;hvacation&#039;&#039;&#039; for a 1/2 day vacation, &#039;&#039;&#039;holiday&#039;&#039;&#039; for national holidays, &#039;&#039;&#039;sick&#039;&#039;&#039; for sick leave), confirmed (if the absence has been submitted) and date (if present timestamp will be ignored). The date must always have the english format, i.e. MM-DD-YYYY.&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;duration;&amp;amp;label;&amp;amp;confirmed;&amp;amp;date&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712181600000;8;hvacation;true;2024-04-04&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Times&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that should come with the CSV are the SIP, the start timestamp, the stop timestamp, confirmed (if has been submitted).&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;stop;&amp;amp;confirmed&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712651520199;1712651700199;true&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
;workingmanager: the name of the working admin app.&lt;br /&gt;
&lt;br /&gt;
== Settings Plugins ==&lt;br /&gt;
&lt;br /&gt;
=== Working ===&lt;br /&gt;
&lt;br /&gt;
With the Working plugin App Objects can be created, edited and deleted on the PBX.&lt;br /&gt;
&lt;br /&gt;
=== Settings Plugin - Configuration ===&lt;br /&gt;
General settings for the app can be configured within this area.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PBX Name:&#039;&#039;&#039; This refers to the name of the MasterPBX in the respective system environment. This setting must be set correctly for user replication and other functions to work.&lt;br /&gt;
* &#039;&#039;&#039;Connect Name:&#039;&#039;&#039; The H323 name of the Connect app must be configured here. This is usually “connect,” but it depends on the individual setup of the system.&lt;br /&gt;
* &#039;&#039;&#039;Connect Groups:&#039;&#039;&#039; Here you can define a comma-separated list of PBX group names to be used for Connect integration in private posts. This is necessary in order to be able to include separate PBX groups, such as the human resources department, in private posts in addition to department heads.&lt;br /&gt;
* &#039;&#039;&#039;Language for connectsposts&#039;&#039;&#039;: Integration with the Connect app and thus the creation of “posts” is carried out from a central location. The language can be set for these posts. Currently, there is ‘de’ for German and “en” for English.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
* Install the Working App with the new AP app installer available in the Settings . &#039;&#039;Hint : after the installation done, close and open again the Settings to refresh the list of the installed app (the coloured plug-in)&#039;&#039;&lt;br /&gt;
* Create a new PBX Object for the Working User, Working Manager and Working API Apps with the Settings  Plugin.&lt;br /&gt;
* Assign the Working User (to normal users) and Working Manager App (to administration for example Human Resources) by selecting the config template that should include the App.&lt;br /&gt;
* Assign the Working API to all the users, so users can use the auto start/stop and push notifications.&lt;br /&gt;
* Assign license &amp;quot;App(innovaphone-working)&amp;quot; via config template or directly to all users using the APP.&lt;br /&gt;
* Open the object workingmanager / App / Modes: (insert here:) hr.&lt;br /&gt;
* Open the object Config Admin / Apps / workingmanager~hr  (select).&lt;br /&gt;
* Set configuration settings on the &amp;quot;burger&amp;quot; menu of the Working Manager App (i.e. Reports Interval in weeks, groups and types configuration...).&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
Trace flags for App on App Platform:&lt;br /&gt;
*App&lt;br /&gt;
*App Database&lt;br /&gt;
*App Websocket&lt;br /&gt;
&lt;br /&gt;
Trace flags for myApps Client:&lt;br /&gt;
*Browser Console&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [https://sdk.innovaphone.com/14r2/web1/com.innovaphone.working/com.innovaphone.working.htm SDK Documentation - Working API]&lt;br /&gt;
* [https://sdk.innovaphone.com/14r2/doc/service/Working.htm SDK Documentation - Working Client API]&lt;/div&gt;</summary>
		<author><name>Lme</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Service_Working&amp;diff=79249</id>
		<title>Reference16r1:Concept App Service Working</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Service_Working&amp;diff=79249"/>
		<updated>2026-03-24T14:51:06Z</updated>

		<summary type="html">&lt;p&gt;Lme: /* holidays and sick days */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Working App is used to record working hours and manage absences. The Working User app can be used to start/stop time tracking and create vacation requests. There is also an admin app (Working Manager) which allows users to view working hours and approve vacation requests.&lt;br /&gt;
&lt;br /&gt;
== Applies To == &lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX from version 16r1&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* innovaphone PBX&lt;br /&gt;
* innovaphone Application Platform&lt;br /&gt;
* innovaphone myApps&lt;br /&gt;
* Firmware V16r1 beta1 or higher&lt;br /&gt;
* License “App(innovaphone-working)” (order no. 02-00050-010) per application-user&lt;br /&gt;
&lt;br /&gt;
==Concept==&lt;br /&gt;
&lt;br /&gt;
The innovaphone Service Working App is an application for digital time and absence management.&lt;br /&gt;
&lt;br /&gt;
It consists of two parts:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Working User App&#039;&#039;&#039; – used by employees to track their working hours (via clock-in/clock-out or manual entries) and to manage absence requests such as vacation or leave. Time entries and vacation requests must be confirmed (=submitted) before they appear in the admin app. Once confirmed, they can no longer be edited.&lt;br /&gt;
* &#039;&#039;&#039;Working Manager App&#039;&#039;&#039; – used by administrators or managers to view and manage working time and absence information for all users. It also allows approval or rejection of vacation requests and provides access to configuration settings.&lt;br /&gt;
&lt;br /&gt;
==How it works==&lt;br /&gt;
&lt;br /&gt;
The first time a user starts the Working App on myApps a new entry is created in the database for this user, based on the &amp;quot;Name&amp;quot; of this user, which will be used to store all the working hours entries, vacation days, sick days and national holidays. Entering the working hours is a two step task, because after defining the start/stop time it is also necessary to &amp;quot;confirm/submit&amp;quot; these hours as correct, after the confirmation is done the user can&#039;t change them anymore and they will be displayed on the admin app.&lt;br /&gt;
&lt;br /&gt;
In the Working manager App the list of the users&#039; names is based on the &amp;quot;Display Name&amp;quot;, if no DN is set then the &amp;quot;Name&amp;quot; will be used. Once the users have opened the working app at least once, they will appear in the list of all users in the Working Manager App. The app adds a red mark when an user does not fulfill the working hours regulation.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
=== Working ===&lt;br /&gt;
===== Working time tracking and custom work types =====&lt;br /&gt;
&lt;br /&gt;
* Work time account: Overview of the current work time balance &lt;br /&gt;
* Add pre-defined labels to working times&lt;br /&gt;
&lt;br /&gt;
===== Working time regulations =====&lt;br /&gt;
&lt;br /&gt;
*Timeout to submit entries (days): max interval the user has to submit the working hours.&lt;br /&gt;
* Min break time after 6 hours: min break time if the user has worked more than 6 hours.&lt;br /&gt;
* Min break time after 9 hours: min break time if the user has worked more than 9 hours.&lt;br /&gt;
* Default working hours&lt;br /&gt;
&lt;br /&gt;
===== Groups/Group rights =====&lt;br /&gt;
&lt;br /&gt;
* Groups can be defined&lt;br /&gt;
* Only the managers of the groups can see the users on the group on the Working Manager App&lt;br /&gt;
* Working types only available for the users on the group can be configured&lt;br /&gt;
* Enable/disable restrictions to submit working hours for the users on the group&lt;br /&gt;
* Enable/Disable verification by manager before submission to Human Resources&lt;br /&gt;
&lt;br /&gt;
===== Archiving working times of deleted employees =====&lt;br /&gt;
&lt;br /&gt;
===== User replication: New users appear once assigned the Working User App =====&lt;br /&gt;
=== Absences ===&lt;br /&gt;
&lt;br /&gt;
==== vacation management ====&lt;br /&gt;
&lt;br /&gt;
* Creating and approving vacation requests&lt;br /&gt;
* Define vacation rules in general and user-specific terms&lt;br /&gt;
* Creating Other absences with rules&lt;br /&gt;
* Configure vacation how many days can be carried over to the next year and how long they will be available &lt;br /&gt;
&lt;br /&gt;
==== holidays and sick days ====&lt;br /&gt;
&lt;br /&gt;
* Entering sick days &lt;br /&gt;
* Create a list of Public holidays based on Locations&lt;br /&gt;
&lt;br /&gt;
== Apps ==&lt;br /&gt;
=== innovaphone-working ===&lt;br /&gt;
[[Image: Innovaphone-working.png|/Innovaphone-working.png|/Innovaphone-working.png]]&lt;br /&gt;
This is an app (Working User), where the user can enter the working hours, holidays, sick and vacation days. This can be done by clicking on the start/stop button. The user have also a calendar view to add, edit or delete working hours.&lt;br /&gt;
Parameters:&amp;lt;br/&amp;gt;&lt;br /&gt;
;Websocket: to set a websocket connection.&lt;br /&gt;
;Services: API which is used to get access to APIs provided by other App Services.&lt;br /&gt;
;Connect: Needed to access the Connect App and to create a zone for working.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-working-api ===&lt;br /&gt;
[[Image: Innovaphone-working-api.png|/Innovaphone-working-api.png|/Innovaphone-working-api.png]]&lt;br /&gt;
This is a hidden app (Working Api), where the myApps session is been monitorized when the autostart/stop of the working times is enabled on the Working User App.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
;Websocket: to set a websocket connection.&lt;br /&gt;
;Hidden: to configure the app as hidden.&lt;br /&gt;
;Admin: to get the app object name where to send the notifications.&lt;br /&gt;
;PbxApi: to send the notifications.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-working-client-api ===&lt;br /&gt;
[[Image: Innovaphone-working-api.png|/Innovaphone-working-api.png|/Innovaphone-working-api.png]]&lt;br /&gt;
This is an app needed to provide the Working Service API, so that other apps can start/stop working times. The Working Service API app is also a hidden app. The Settings plugin also sets the hidden function. This app should be granted to apps that use it, not to users.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
;Websocket: to set a websocket connection.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-working-manager ===&lt;br /&gt;
[[Image: Innovaphone-working-admin.png‎|/Innovaphone-working-admin.png|/Innovaphone-working-admin.png]]&lt;br /&gt;
This is an admin app (Working Manager), where an administrator (i.e. Human Resources) can see the users&#039; working hours. Several settings like the working hours per day can be configured per user and they are set to 8 hours from monday to friday by default.&lt;br /&gt;
Parameters:&lt;br /&gt;
;Websocket: to set a websocket connection.&lt;br /&gt;
;PbxSignal: Needed for the Badge Counts &lt;br /&gt;
&lt;br /&gt;
Now &amp;quot;hr&amp;quot; must be entered as Mode on the app object on the PBX. With that now there are 2 workingmanager apps for the user-objects avaiable:&amp;lt;br&amp;gt; &lt;br /&gt;
workingmanager and &amp;lt;br&amp;gt;&lt;br /&gt;
workingmanager~hr. &amp;lt;br&amp;gt;&lt;br /&gt;
The administrator needs both.&lt;br /&gt;
* workingmanager: the managers on the group can only see the users on the group (no hamburger menu avaiable)&lt;br /&gt;
* workingmanager~hr: all the users can be seen there and all the configurations are available&lt;br /&gt;
&lt;br /&gt;
Also some config items can be edited on the hamburguer menu:&lt;br /&gt;
&lt;br /&gt;
* General settings&lt;br /&gt;
&lt;br /&gt;
* Default working hours: workings hours defined per day when a user opens the app for the first time, which can be modified per user on the Admin App (Working Manager).&lt;br /&gt;
&lt;br /&gt;
* Rights&lt;br /&gt;
** Config groups&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Public Holidays API ===&lt;br /&gt;
[[Image: Innovaphone-working-api.png|/Innovaphone-working-api.png|/Innovaphone-working-api.png]]&lt;br /&gt;
This API provides public holiday data for other apps. It allows them to check whether a specific date is a public holiday in a given country or region.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
;Websocket: to set a websocket connection.&lt;br /&gt;
;Hidden: to configure the app as hidden.&lt;br /&gt;
&lt;br /&gt;
== Import and export of existing tracked time and absences with the help of CSV ==&lt;br /&gt;
=== CSV export ===&lt;br /&gt;
The users&#039; data can be exported and imported on CSV format. There are some fixed fields that are available for the import and the export. There are also some other fields that are only displayed on the export file just as extra information, which are marked with (*).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Users&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that come with the CSV are the SIP, GUID, domain, display name, the defined working hours per day and the personal number.&lt;br /&gt;
&amp;amp;sip;&amp;amp;guid;&amp;amp;domain;&amp;amp;dn;&amp;amp;monday;&amp;amp;tuesday;&amp;amp;wednesday;&amp;amp;thursday;&amp;amp;friday;&amp;amp;saturday;&amp;amp;sunday;&amp;amp;p_number&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;null;innovaphone.com;Atlantis;8;8;8;8;8;0;0;0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Absences&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that come with the CSV are the SIP, the start timestamp, the working hours, label (&#039;&#039;&#039;vacation&#039;&#039;&#039; for a vacation day, &#039;&#039;&#039;hvacation&#039;&#039;&#039; for a 1/2 day vacation, &#039;&#039;&#039;holiday&#039;&#039;&#039; for national holidays, &#039;&#039;&#039;sick&#039;&#039;&#039; for sick leave), confirmed (if the absence has been submitted), date, and the personal number.&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;duration;&amp;amp;label;&amp;amp;confirmed;&amp;amp;date;&amp;amp;p_number&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712181600000;8;hvacation;true;2024-04-04;0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Times&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that come with the CSV are the SIP, the start timestamp, the stop timestamp, confirmed (if has been submitted), the display name, the personal number, the start date, the start time, the stop date, the stop time, the amount of hours and the label (if a type has been selected).&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;stop;&amp;amp;confirmed;&amp;amp;dn;&amp;amp;p_number;&amp;amp;start_date;&amp;amp;start_time;&amp;amp;stop_date;&amp;amp;stop_time;&amp;amp;hours;&amp;amp;label&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712651520199;1712651700199;true;Atlantis;0;2024-04-09;10:32:00.199+00:00;2024-04-09;10:35:00.199+00:00;0,1;&lt;br /&gt;
&lt;br /&gt;
=== CSV import ===&lt;br /&gt;
&#039;&#039;&#039;Users&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that should come with the CSV are the SIP, GUID, domain, display name, the defined working hours per day and the personal number.&lt;br /&gt;
&amp;amp;sip;&amp;amp;guid;&amp;amp;domain;&amp;amp;dn;&amp;amp;monday;&amp;amp;tuesday;&amp;amp;wednesday;&amp;amp;thursday;&amp;amp;friday;&amp;amp;saturday;&amp;amp;sunday;&amp;amp;p_number&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;null;innovaphone.com;Atlantis;8;8;8;8;8;0;0;0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Absences&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that should come with the CSV are the SIP, the start timestamp, duration (the working hours), label (&#039;&#039;&#039;vacation&#039;&#039;&#039; for a vacation day, &#039;&#039;&#039;hvacation&#039;&#039;&#039; for a 1/2 day vacation, &#039;&#039;&#039;holiday&#039;&#039;&#039; for national holidays, &#039;&#039;&#039;sick&#039;&#039;&#039; for sick leave), confirmed (if the absence has been submitted) and date (if present timestamp will be ignored). The date must always have the english format, i.e. MM-DD-YYYY.&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;duration;&amp;amp;label;&amp;amp;confirmed;&amp;amp;date&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712181600000;8;hvacation;true;2024-04-04&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Times&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that should come with the CSV are the SIP, the start timestamp, the stop timestamp, confirmed (if has been submitted).&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;stop;&amp;amp;confirmed&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712651520199;1712651700199;true&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
;workingmanager: the name of the working admin app.&lt;br /&gt;
&lt;br /&gt;
== Settings Plugins ==&lt;br /&gt;
&lt;br /&gt;
=== Working ===&lt;br /&gt;
&lt;br /&gt;
With the Working plugin App Objects can be created, edited and deleted on the PBX.&lt;br /&gt;
&lt;br /&gt;
=== Settings Plugin - Configuration ===&lt;br /&gt;
General settings for the app can be configured within this area.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PBX Name:&#039;&#039;&#039; This refers to the name of the MasterPBX in the respective system environment. This setting must be set correctly for user replication and other functions to work.&lt;br /&gt;
* &#039;&#039;&#039;Connect Name:&#039;&#039;&#039; The H323 name of the Connect app must be configured here. This is usually “connect,” but it depends on the individual setup of the system.&lt;br /&gt;
* &#039;&#039;&#039;Connect Groups:&#039;&#039;&#039; Here you can define a comma-separated list of PBX group names to be used for Connect integration in private posts. This is necessary in order to be able to include separate PBX groups, such as the human resources department, in private posts in addition to department heads.&lt;br /&gt;
* &#039;&#039;&#039;Language for connectsposts&#039;&#039;&#039;: Integration with the Connect app and thus the creation of “posts” is carried out from a central location. The language can be set for these posts. Currently, there is ‘de’ for German and “en” for English.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
* Install the Working App with the new AP app installer available in the Settings . &#039;&#039;Hint : after the installation done, close and open again the Settings to refresh the list of the installed app (the coloured plug-in)&#039;&#039;&lt;br /&gt;
* Create a new PBX Object for the Working User, Working Manager and Working API Apps with the Settings  Plugin.&lt;br /&gt;
* Assign the Working User (to normal users) and Working Manager App (to administration for example Human Resources) by selecting the config template that should include the App.&lt;br /&gt;
* Assign the Working API to all the users, so users can use the auto start/stop and push notifications.&lt;br /&gt;
* Assign license &amp;quot;App(innovaphone-working)&amp;quot; via config template or directly to all users using the APP.&lt;br /&gt;
* Open the object workingmanager / App / Modes: (insert here:) hr.&lt;br /&gt;
* Open the object Config Admin / Apps / workingmanager~hr  (select).&lt;br /&gt;
* Set configuration settings on the &amp;quot;burger&amp;quot; menu of the Working Manager App (i.e. Reports Interval in weeks, groups and types configuration...).&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
Trace flags for App on App Platform:&lt;br /&gt;
*App&lt;br /&gt;
*App Database&lt;br /&gt;
*App Websocket&lt;br /&gt;
&lt;br /&gt;
Trace flags for myApps Client:&lt;br /&gt;
*Browser Console&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [https://sdk.innovaphone.com/14r2/web1/com.innovaphone.working/com.innovaphone.working.htm SDK Documentation - Working API]&lt;br /&gt;
* [https://sdk.innovaphone.com/14r2/doc/service/Working.htm SDK Documentation - Working Client API]&lt;/div&gt;</summary>
		<author><name>Lme</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Service_Working&amp;diff=79193</id>
		<title>Reference16r1:Concept App Service Working</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Service_Working&amp;diff=79193"/>
		<updated>2026-03-18T13:31:46Z</updated>

		<summary type="html">&lt;p&gt;Lme: /* Working */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Working App is used to record working hours and manage absences. The Working User app can be used to start/stop time tracking and create vacation requests. There is also an admin app (Working Manager) which allows users to view working hours and approve vacation requests.&lt;br /&gt;
&lt;br /&gt;
== Applies To == &lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX from version 16r1&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* innovaphone PBX&lt;br /&gt;
* innovaphone Application Platform&lt;br /&gt;
* innovaphone myApps&lt;br /&gt;
* Firmware V16r1 beta1 or higher&lt;br /&gt;
* License “App(innovaphone-working)” (order no. 02-00050-010) per application-user&lt;br /&gt;
&lt;br /&gt;
==Concept==&lt;br /&gt;
&lt;br /&gt;
The innovaphone Service Working App is an application for digital time and absence management.&lt;br /&gt;
&lt;br /&gt;
It consists of two parts:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Working User App&#039;&#039;&#039; – used by employees to track their working hours (via clock-in/clock-out or manual entries) and to manage absence requests such as vacation or leave. Time entries and vacation requests must be confirmed (=submitted) before they appear in the admin app. Once confirmed, they can no longer be edited.&lt;br /&gt;
* &#039;&#039;&#039;Working Manager App&#039;&#039;&#039; – used by administrators or managers to view and manage working time and absence information for all users. It also allows approval or rejection of vacation requests and provides access to configuration settings.&lt;br /&gt;
&lt;br /&gt;
==How it works==&lt;br /&gt;
&lt;br /&gt;
The first time a user starts the Working App on myApps a new entry is created in the database for this user, based on the &amp;quot;Name&amp;quot; of this user, which will be used to store all the working hours entries, vacation days, sick days and national holidays. Entering the working hours is a two step task, because after defining the start/stop time it is also necessary to &amp;quot;confirm/submit&amp;quot; these hours as correct, after the confirmation is done the user can&#039;t change them anymore and they will be displayed on the admin app.&lt;br /&gt;
&lt;br /&gt;
In the Working manager App the list of the users&#039; names is based on the &amp;quot;Display Name&amp;quot;, if no DN is set then the &amp;quot;Name&amp;quot; will be used. Once the users have opened the working app at least once, they will appear in the list of all users in the Working Manager App. The app adds a red mark when an user does not fulfill the working hours regulation.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
=== Working ===&lt;br /&gt;
===== Working time tracking and custom work types =====&lt;br /&gt;
&lt;br /&gt;
* Work time account: Overview of the current work time balance &lt;br /&gt;
* Add pre-defined labels to working times&lt;br /&gt;
&lt;br /&gt;
===== Working time regulations =====&lt;br /&gt;
&lt;br /&gt;
*Timeout to submit entries (days): max interval the user has to submit the working hours.&lt;br /&gt;
* Min break time after 6 hours: min break time if the user has worked more than 6 hours.&lt;br /&gt;
* Min break time after 9 hours: min break time if the user has worked more than 9 hours.&lt;br /&gt;
* Default working hours&lt;br /&gt;
&lt;br /&gt;
===== Groups/Group rights =====&lt;br /&gt;
&lt;br /&gt;
* Groups can be defined&lt;br /&gt;
* Only the managers of the groups can see the users on the group on the Working Manager App&lt;br /&gt;
* Working types only available for the users on the group can be configured&lt;br /&gt;
* Enable/disable restrictions to submit working hours for the users on the group&lt;br /&gt;
* Enable/Disable verification by manager before submission to Human Resources&lt;br /&gt;
&lt;br /&gt;
===== Archiving working times of deleted employees =====&lt;br /&gt;
&lt;br /&gt;
===== User replication: New users appear once assigned the Working User App =====&lt;br /&gt;
=== Absences ===&lt;br /&gt;
&lt;br /&gt;
==== vacation management ====&lt;br /&gt;
&lt;br /&gt;
* Creating and approving vacation requests&lt;br /&gt;
* Define vacation rules in general and user-specific terms&lt;br /&gt;
&lt;br /&gt;
==== holidays and sick days ====&lt;br /&gt;
&lt;br /&gt;
* Entering sick days &lt;br /&gt;
* Create a list of Public holidays based on Locations&lt;br /&gt;
&lt;br /&gt;
== Apps ==&lt;br /&gt;
=== innovaphone-working ===&lt;br /&gt;
[[Image: Innovaphone-working.png|/Innovaphone-working.png|/Innovaphone-working.png]]&lt;br /&gt;
This is an app (Working User), where the user can enter the working hours, holidays, sick and vacation days. This can be done by clicking on the start/stop button. The user have also a calendar view to add, edit or delete working hours.&lt;br /&gt;
Parameters:&amp;lt;br/&amp;gt;&lt;br /&gt;
;Websocket: to set a websocket connection.&lt;br /&gt;
;Services: API which is used to get access to APIs provided by other App Services.&lt;br /&gt;
;Connect: Needed to access the Connect App and to create a zone for working.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-working-api ===&lt;br /&gt;
[[Image: Innovaphone-working-api.png|/Innovaphone-working-api.png|/Innovaphone-working-api.png]]&lt;br /&gt;
This is a hidden app (Working Api), where the myApps session is been monitorized when the autostart/stop of the working times is enabled on the Working User App.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
;Websocket: to set a websocket connection.&lt;br /&gt;
;Hidden: to configure the app as hidden.&lt;br /&gt;
;Admin: to get the app object name where to send the notifications.&lt;br /&gt;
;PbxApi: to send the notifications.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-working-client-api ===&lt;br /&gt;
[[Image: Innovaphone-working-api.png|/Innovaphone-working-api.png|/Innovaphone-working-api.png]]&lt;br /&gt;
This is an app needed to provide the Working Service API, so that other apps can start/stop working times. The Working Service API app is also a hidden app. The Settings plugin also sets the hidden function. This app should be granted to apps that use it, not to users.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
;Websocket: to set a websocket connection.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-working-manager ===&lt;br /&gt;
[[Image: Innovaphone-working-admin.png‎|/Innovaphone-working-admin.png|/Innovaphone-working-admin.png]]&lt;br /&gt;
This is an admin app (Working Manager), where an administrator (i.e. Human Resources) can see the users&#039; working hours. Several settings like the working hours per day can be configured per user and they are set to 8 hours from monday to friday by default.&lt;br /&gt;
Parameters:&lt;br /&gt;
;Websocket: to set a websocket connection.&lt;br /&gt;
;PbxSignal: Needed for the Badge Counts &lt;br /&gt;
&lt;br /&gt;
Now &amp;quot;hr&amp;quot; must be entered as Mode on the app object on the PBX. With that now there are 2 workingmanager apps for the user-objects avaiable:&amp;lt;br&amp;gt; &lt;br /&gt;
workingmanager and &amp;lt;br&amp;gt;&lt;br /&gt;
workingmanager~hr. &amp;lt;br&amp;gt;&lt;br /&gt;
The administrator needs both.&lt;br /&gt;
* workingmanager: the managers on the group can only see the users on the group (no hamburger menu avaiable)&lt;br /&gt;
* workingmanager~hr: all the users can be seen there and all the configurations are available&lt;br /&gt;
&lt;br /&gt;
Also some config items can be edited on the hamburguer menu:&lt;br /&gt;
&lt;br /&gt;
* General settings&lt;br /&gt;
&lt;br /&gt;
* Default working hours: workings hours defined per day when a user opens the app for the first time, which can be modified per user on the Admin App (Working Manager).&lt;br /&gt;
&lt;br /&gt;
* Rights&lt;br /&gt;
** Config groups&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Public Holidays API ===&lt;br /&gt;
[[Image: Innovaphone-working-api.png|/Innovaphone-working-api.png|/Innovaphone-working-api.png]]&lt;br /&gt;
This API provides public holiday data for other apps. It allows them to check whether a specific date is a public holiday in a given country or region.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
;Websocket: to set a websocket connection.&lt;br /&gt;
;Hidden: to configure the app as hidden.&lt;br /&gt;
&lt;br /&gt;
== Import and export of existing tracked time and absences with the help of CSV ==&lt;br /&gt;
=== CSV export ===&lt;br /&gt;
The users&#039; data can be exported and imported on CSV format. There are some fixed fields that are available for the import and the export. There are also some other fields that are only displayed on the export file just as extra information, which are marked with (*).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Users&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that come with the CSV are the SIP, GUID, domain, display name, the defined working hours per day and the personal number.&lt;br /&gt;
&amp;amp;sip;&amp;amp;guid;&amp;amp;domain;&amp;amp;dn;&amp;amp;monday;&amp;amp;tuesday;&amp;amp;wednesday;&amp;amp;thursday;&amp;amp;friday;&amp;amp;saturday;&amp;amp;sunday;&amp;amp;p_number&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;null;innovaphone.com;Atlantis;8;8;8;8;8;0;0;0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Absences&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that come with the CSV are the SIP, the start timestamp, the working hours, label (&#039;&#039;&#039;vacation&#039;&#039;&#039; for a vacation day, &#039;&#039;&#039;hvacation&#039;&#039;&#039; for a 1/2 day vacation, &#039;&#039;&#039;holiday&#039;&#039;&#039; for national holidays, &#039;&#039;&#039;sick&#039;&#039;&#039; for sick leave), confirmed (if the absence has been submitted), date, and the personal number.&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;duration;&amp;amp;label;&amp;amp;confirmed;&amp;amp;date;&amp;amp;p_number&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712181600000;8;hvacation;true;2024-04-04;0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Times&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that come with the CSV are the SIP, the start timestamp, the stop timestamp, confirmed (if has been submitted), the display name, the personal number, the start date, the start time, the stop date, the stop time, the amount of hours and the label (if a type has been selected).&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;stop;&amp;amp;confirmed;&amp;amp;dn;&amp;amp;p_number;&amp;amp;start_date;&amp;amp;start_time;&amp;amp;stop_date;&amp;amp;stop_time;&amp;amp;hours;&amp;amp;label&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712651520199;1712651700199;true;Atlantis;0;2024-04-09;10:32:00.199+00:00;2024-04-09;10:35:00.199+00:00;0,1;&lt;br /&gt;
&lt;br /&gt;
=== CSV import ===&lt;br /&gt;
&#039;&#039;&#039;Users&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that should come with the CSV are the SIP, GUID, domain, display name, the defined working hours per day and the personal number.&lt;br /&gt;
&amp;amp;sip;&amp;amp;guid;&amp;amp;domain;&amp;amp;dn;&amp;amp;monday;&amp;amp;tuesday;&amp;amp;wednesday;&amp;amp;thursday;&amp;amp;friday;&amp;amp;saturday;&amp;amp;sunday;&amp;amp;p_number&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;null;innovaphone.com;Atlantis;8;8;8;8;8;0;0;0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Absences&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that should come with the CSV are the SIP, the start timestamp, duration (the working hours), label (&#039;&#039;&#039;vacation&#039;&#039;&#039; for a vacation day, &#039;&#039;&#039;hvacation&#039;&#039;&#039; for a 1/2 day vacation, &#039;&#039;&#039;holiday&#039;&#039;&#039; for national holidays, &#039;&#039;&#039;sick&#039;&#039;&#039; for sick leave), confirmed (if the absence has been submitted) and date (if present timestamp will be ignored). The date must always have the english format, i.e. MM-DD-YYYY.&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;duration;&amp;amp;label;&amp;amp;confirmed;&amp;amp;date&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712181600000;8;hvacation;true;2024-04-04&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Times&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that should come with the CSV are the SIP, the start timestamp, the stop timestamp, confirmed (if has been submitted).&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;stop;&amp;amp;confirmed&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712651520199;1712651700199;true&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
;workingmanager: the name of the working admin app.&lt;br /&gt;
&lt;br /&gt;
== Settings Plugins ==&lt;br /&gt;
&lt;br /&gt;
=== Working ===&lt;br /&gt;
&lt;br /&gt;
With the Working plugin App Objects can be created, edited and deleted on the PBX.&lt;br /&gt;
&lt;br /&gt;
=== Settings Plugin - Configuration ===&lt;br /&gt;
General settings for the app can be configured within this area.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PBX Name:&#039;&#039;&#039; This refers to the name of the MasterPBX in the respective system environment. This setting must be set correctly for user replication and other functions to work.&lt;br /&gt;
* &#039;&#039;&#039;Connect Name:&#039;&#039;&#039; The H323 name of the Connect app must be configured here. This is usually “connect,” but it depends on the individual setup of the system.&lt;br /&gt;
* &#039;&#039;&#039;Connect Groups:&#039;&#039;&#039; Here you can define a comma-separated list of PBX group names to be used for Connect integration in private posts. This is necessary in order to be able to include separate PBX groups, such as the human resources department, in private posts in addition to department heads.&lt;br /&gt;
* &#039;&#039;&#039;Language for connectsposts&#039;&#039;&#039;: Integration with the Connect app and thus the creation of “posts” is carried out from a central location. The language can be set for these posts. Currently, there is ‘de’ for German and “en” for English.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
* Install the Working App with the new AP app installer available in the Settings . &#039;&#039;Hint : after the installation done, close and open again the Settings to refresh the list of the installed app (the coloured plug-in)&#039;&#039;&lt;br /&gt;
* Create a new PBX Object for the Working User, Working Manager and Working API Apps with the Settings  Plugin.&lt;br /&gt;
* Assign the Working User (to normal users) and Working Manager App (to administration for example Human Resources) by selecting the config template that should include the App.&lt;br /&gt;
* Assign the Working API to all the users, so users can use the auto start/stop and push notifications.&lt;br /&gt;
* Assign license &amp;quot;App(innovaphone-working)&amp;quot; via config template or directly to all users using the APP.&lt;br /&gt;
* Open the object workingmanager / App / Modes: (insert here:) hr.&lt;br /&gt;
* Open the object Config Admin / Apps / workingmanager~hr  (select).&lt;br /&gt;
* Set configuration settings on the &amp;quot;burger&amp;quot; menu of the Working Manager App (i.e. Reports Interval in weeks, groups and types configuration...).&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
Trace flags for App on App Platform:&lt;br /&gt;
*App&lt;br /&gt;
*App Database&lt;br /&gt;
*App Websocket&lt;br /&gt;
&lt;br /&gt;
Trace flags for myApps Client:&lt;br /&gt;
*Browser Console&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [https://sdk.innovaphone.com/14r2/web1/com.innovaphone.working/com.innovaphone.working.htm SDK Documentation - Working API]&lt;br /&gt;
* [https://sdk.innovaphone.com/14r2/doc/service/Working.htm SDK Documentation - Working Client API]&lt;/div&gt;</summary>
		<author><name>Lme</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Service_Working&amp;diff=79192</id>
		<title>Reference16r1:Concept App Service Working</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Service_Working&amp;diff=79192"/>
		<updated>2026-03-18T13:26:33Z</updated>

		<summary type="html">&lt;p&gt;Lme: /* holidays and sick days */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Working App is used to record working hours and manage absences. The Working User app can be used to start/stop time tracking and create vacation requests. There is also an admin app (Working Manager) which allows users to view working hours and approve vacation requests.&lt;br /&gt;
&lt;br /&gt;
== Applies To == &lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX from version 16r1&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* innovaphone PBX&lt;br /&gt;
* innovaphone Application Platform&lt;br /&gt;
* innovaphone myApps&lt;br /&gt;
* Firmware V16r1 beta1 or higher&lt;br /&gt;
* License “App(innovaphone-working)” (order no. 02-00050-010) per application-user&lt;br /&gt;
&lt;br /&gt;
==Concept==&lt;br /&gt;
&lt;br /&gt;
The innovaphone Service Working App is an application for digital time and absence management.&lt;br /&gt;
&lt;br /&gt;
It consists of two parts:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Working User App&#039;&#039;&#039; – used by employees to track their working hours (via clock-in/clock-out or manual entries) and to manage absence requests such as vacation or leave. Time entries and vacation requests must be confirmed (=submitted) before they appear in the admin app. Once confirmed, they can no longer be edited.&lt;br /&gt;
* &#039;&#039;&#039;Working Manager App&#039;&#039;&#039; – used by administrators or managers to view and manage working time and absence information for all users. It also allows approval or rejection of vacation requests and provides access to configuration settings.&lt;br /&gt;
&lt;br /&gt;
==How it works==&lt;br /&gt;
&lt;br /&gt;
The first time a user starts the Working App on myApps a new entry is created in the database for this user, based on the &amp;quot;Name&amp;quot; of this user, which will be used to store all the working hours entries, vacation days, sick days and national holidays. Entering the working hours is a two step task, because after defining the start/stop time it is also necessary to &amp;quot;confirm/submit&amp;quot; these hours as correct, after the confirmation is done the user can&#039;t change them anymore and they will be displayed on the admin app.&lt;br /&gt;
&lt;br /&gt;
In the Working manager App the list of the users&#039; names is based on the &amp;quot;Display Name&amp;quot;, if no DN is set then the &amp;quot;Name&amp;quot; will be used. Once the users have opened the working app at least once, they will appear in the list of all users in the Working Manager App. The app adds a red mark when an user does not fulfill the working hours regulation.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
=== Working ===&lt;br /&gt;
===== Working time tracking and costume work types =====&lt;br /&gt;
&lt;br /&gt;
* Work time account: Overview of the current work time balance &lt;br /&gt;
* Add pre-defined labels to working times&lt;br /&gt;
&lt;br /&gt;
===== Working time regulations =====&lt;br /&gt;
&lt;br /&gt;
*Timeout to submit entries (days): max interval the user has to submit the working hours.&lt;br /&gt;
* Min break time after 6 hours: min break time if the user has worked more than 6 hours.&lt;br /&gt;
* Min break time after 9 hours: min break time if the user has worked more than 9 hours.&lt;br /&gt;
* Default working hours&lt;br /&gt;
&lt;br /&gt;
===== Groups/Group rights =====&lt;br /&gt;
&lt;br /&gt;
* Groups can be defined&lt;br /&gt;
* Only the managers of the groups can see the users on the group on the Working Manager App&lt;br /&gt;
* Working types only available for the users on the group can be configured&lt;br /&gt;
* Enable/disable restrictions to submit working hours for the users on the group&lt;br /&gt;
* Enable/Disable verification by manager before submission to Human Resources&lt;br /&gt;
&lt;br /&gt;
===== Archiving working times of deleted employees =====&lt;br /&gt;
&lt;br /&gt;
===== User replication: New users appear once assigned the Working User App =====&lt;br /&gt;
=== Absences ===&lt;br /&gt;
&lt;br /&gt;
==== vacation management ====&lt;br /&gt;
&lt;br /&gt;
* Creating and approving vacation requests&lt;br /&gt;
* Define vacation rules in general and user-specific terms&lt;br /&gt;
&lt;br /&gt;
==== holidays and sick days ====&lt;br /&gt;
&lt;br /&gt;
* Entering sick days &lt;br /&gt;
* Create a list of Public holidays based on Locations&lt;br /&gt;
&lt;br /&gt;
== Apps ==&lt;br /&gt;
=== innovaphone-working ===&lt;br /&gt;
[[Image: Innovaphone-working.png|/Innovaphone-working.png|/Innovaphone-working.png]]&lt;br /&gt;
This is an app (Working User), where the user can enter the working hours, holidays, sick and vacation days. This can be done by clicking on the start/stop button. The user have also a calendar view to add, edit or delete working hours.&lt;br /&gt;
Parameters:&amp;lt;br/&amp;gt;&lt;br /&gt;
;Websocket: to set a websocket connection.&lt;br /&gt;
;Services: API which is used to get access to APIs provided by other App Services.&lt;br /&gt;
;Connect: Needed to access the Connect App and to create a zone for working.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-working-api ===&lt;br /&gt;
[[Image: Innovaphone-working-api.png|/Innovaphone-working-api.png|/Innovaphone-working-api.png]]&lt;br /&gt;
This is a hidden app (Working Api), where the myApps session is been monitorized when the autostart/stop of the working times is enabled on the Working User App.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
;Websocket: to set a websocket connection.&lt;br /&gt;
;Hidden: to configure the app as hidden.&lt;br /&gt;
;Admin: to get the app object name where to send the notifications.&lt;br /&gt;
;PbxApi: to send the notifications.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-working-client-api ===&lt;br /&gt;
[[Image: Innovaphone-working-api.png|/Innovaphone-working-api.png|/Innovaphone-working-api.png]]&lt;br /&gt;
This is an app needed to provide the Working Service API, so that other apps can start/stop working times. The Working Service API app is also a hidden app. The Settings plugin also sets the hidden function. This app should be granted to apps that use it, not to users.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
;Websocket: to set a websocket connection.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-working-manager ===&lt;br /&gt;
[[Image: Innovaphone-working-admin.png‎|/Innovaphone-working-admin.png|/Innovaphone-working-admin.png]]&lt;br /&gt;
This is an admin app (Working Manager), where an administrator (i.e. Human Resources) can see the users&#039; working hours. Several settings like the working hours per day can be configured per user and they are set to 8 hours from monday to friday by default.&lt;br /&gt;
Parameters:&lt;br /&gt;
;Websocket: to set a websocket connection.&lt;br /&gt;
;PbxSignal: Needed for the Badge Counts &lt;br /&gt;
&lt;br /&gt;
Now &amp;quot;hr&amp;quot; must be entered as Mode on the app object on the PBX. With that now there are 2 workingmanager apps for the user-objects avaiable:&amp;lt;br&amp;gt; &lt;br /&gt;
workingmanager and &amp;lt;br&amp;gt;&lt;br /&gt;
workingmanager~hr. &amp;lt;br&amp;gt;&lt;br /&gt;
The administrator needs both.&lt;br /&gt;
* workingmanager: the managers on the group can only see the users on the group (no hamburger menu avaiable)&lt;br /&gt;
* workingmanager~hr: all the users can be seen there and all the configurations are available&lt;br /&gt;
&lt;br /&gt;
Also some config items can be edited on the hamburguer menu:&lt;br /&gt;
&lt;br /&gt;
* General settings&lt;br /&gt;
&lt;br /&gt;
* Default working hours: workings hours defined per day when a user opens the app for the first time, which can be modified per user on the Admin App (Working Manager).&lt;br /&gt;
&lt;br /&gt;
* Rights&lt;br /&gt;
** Config groups&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Public Holidays API ===&lt;br /&gt;
[[Image: Innovaphone-working-api.png|/Innovaphone-working-api.png|/Innovaphone-working-api.png]]&lt;br /&gt;
This API provides public holiday data for other apps. It allows them to check whether a specific date is a public holiday in a given country or region.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
;Websocket: to set a websocket connection.&lt;br /&gt;
;Hidden: to configure the app as hidden.&lt;br /&gt;
&lt;br /&gt;
== Import and export of existing tracked time and absences with the help of CSV ==&lt;br /&gt;
=== CSV export ===&lt;br /&gt;
The users&#039; data can be exported and imported on CSV format. There are some fixed fields that are available for the import and the export. There are also some other fields that are only displayed on the export file just as extra information, which are marked with (*).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Users&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that come with the CSV are the SIP, GUID, domain, display name, the defined working hours per day and the personal number.&lt;br /&gt;
&amp;amp;sip;&amp;amp;guid;&amp;amp;domain;&amp;amp;dn;&amp;amp;monday;&amp;amp;tuesday;&amp;amp;wednesday;&amp;amp;thursday;&amp;amp;friday;&amp;amp;saturday;&amp;amp;sunday;&amp;amp;p_number&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;null;innovaphone.com;Atlantis;8;8;8;8;8;0;0;0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Absences&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that come with the CSV are the SIP, the start timestamp, the working hours, label (&#039;&#039;&#039;vacation&#039;&#039;&#039; for a vacation day, &#039;&#039;&#039;hvacation&#039;&#039;&#039; for a 1/2 day vacation, &#039;&#039;&#039;holiday&#039;&#039;&#039; for national holidays, &#039;&#039;&#039;sick&#039;&#039;&#039; for sick leave), confirmed (if the absence has been submitted), date, and the personal number.&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;duration;&amp;amp;label;&amp;amp;confirmed;&amp;amp;date;&amp;amp;p_number&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712181600000;8;hvacation;true;2024-04-04;0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Times&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that come with the CSV are the SIP, the start timestamp, the stop timestamp, confirmed (if has been submitted), the display name, the personal number, the start date, the start time, the stop date, the stop time, the amount of hours and the label (if a type has been selected).&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;stop;&amp;amp;confirmed;&amp;amp;dn;&amp;amp;p_number;&amp;amp;start_date;&amp;amp;start_time;&amp;amp;stop_date;&amp;amp;stop_time;&amp;amp;hours;&amp;amp;label&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712651520199;1712651700199;true;Atlantis;0;2024-04-09;10:32:00.199+00:00;2024-04-09;10:35:00.199+00:00;0,1;&lt;br /&gt;
&lt;br /&gt;
=== CSV import ===&lt;br /&gt;
&#039;&#039;&#039;Users&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that should come with the CSV are the SIP, GUID, domain, display name, the defined working hours per day and the personal number.&lt;br /&gt;
&amp;amp;sip;&amp;amp;guid;&amp;amp;domain;&amp;amp;dn;&amp;amp;monday;&amp;amp;tuesday;&amp;amp;wednesday;&amp;amp;thursday;&amp;amp;friday;&amp;amp;saturday;&amp;amp;sunday;&amp;amp;p_number&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;null;innovaphone.com;Atlantis;8;8;8;8;8;0;0;0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Absences&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that should come with the CSV are the SIP, the start timestamp, duration (the working hours), label (&#039;&#039;&#039;vacation&#039;&#039;&#039; for a vacation day, &#039;&#039;&#039;hvacation&#039;&#039;&#039; for a 1/2 day vacation, &#039;&#039;&#039;holiday&#039;&#039;&#039; for national holidays, &#039;&#039;&#039;sick&#039;&#039;&#039; for sick leave), confirmed (if the absence has been submitted) and date (if present timestamp will be ignored). The date must always have the english format, i.e. MM-DD-YYYY.&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;duration;&amp;amp;label;&amp;amp;confirmed;&amp;amp;date&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712181600000;8;hvacation;true;2024-04-04&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Times&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that should come with the CSV are the SIP, the start timestamp, the stop timestamp, confirmed (if has been submitted).&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;stop;&amp;amp;confirmed&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712651520199;1712651700199;true&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
;workingmanager: the name of the working admin app.&lt;br /&gt;
&lt;br /&gt;
== Settings Plugins ==&lt;br /&gt;
&lt;br /&gt;
=== Working ===&lt;br /&gt;
&lt;br /&gt;
With the Working plugin App Objects can be created, edited and deleted on the PBX.&lt;br /&gt;
&lt;br /&gt;
=== Settings Plugin - Configuration ===&lt;br /&gt;
General settings for the app can be configured within this area.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PBX Name:&#039;&#039;&#039; This refers to the name of the MasterPBX in the respective system environment. This setting must be set correctly for user replication and other functions to work.&lt;br /&gt;
* &#039;&#039;&#039;Connect Name:&#039;&#039;&#039; The H323 name of the Connect app must be configured here. This is usually “connect,” but it depends on the individual setup of the system.&lt;br /&gt;
* &#039;&#039;&#039;Connect Groups:&#039;&#039;&#039; Here you can define a comma-separated list of PBX group names to be used for Connect integration in private posts. This is necessary in order to be able to include separate PBX groups, such as the human resources department, in private posts in addition to department heads.&lt;br /&gt;
* &#039;&#039;&#039;Language for connectsposts&#039;&#039;&#039;: Integration with the Connect app and thus the creation of “posts” is carried out from a central location. The language can be set for these posts. Currently, there is ‘de’ for German and “en” for English.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
* Install the Working App with the new AP app installer available in the Settings . &#039;&#039;Hint : after the installation done, close and open again the Settings to refresh the list of the installed app (the coloured plug-in)&#039;&#039;&lt;br /&gt;
* Create a new PBX Object for the Working User, Working Manager and Working API Apps with the Settings  Plugin.&lt;br /&gt;
* Assign the Working User (to normal users) and Working Manager App (to administration for example Human Resources) by selecting the config template that should include the App.&lt;br /&gt;
* Assign the Working API to all the users, so users can use the auto start/stop and push notifications.&lt;br /&gt;
* Assign license &amp;quot;App(innovaphone-working)&amp;quot; via config template or directly to all users using the APP.&lt;br /&gt;
* Open the object workingmanager / App / Modes: (insert here:) hr.&lt;br /&gt;
* Open the object Config Admin / Apps / workingmanager~hr  (select).&lt;br /&gt;
* Set configuration settings on the &amp;quot;burger&amp;quot; menu of the Working Manager App (i.e. Reports Interval in weeks, groups and types configuration...).&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
Trace flags for App on App Platform:&lt;br /&gt;
*App&lt;br /&gt;
*App Database&lt;br /&gt;
*App Websocket&lt;br /&gt;
&lt;br /&gt;
Trace flags for myApps Client:&lt;br /&gt;
*Browser Console&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [https://sdk.innovaphone.com/14r2/web1/com.innovaphone.working/com.innovaphone.working.htm SDK Documentation - Working API]&lt;br /&gt;
* [https://sdk.innovaphone.com/14r2/doc/service/Working.htm SDK Documentation - Working Client API]&lt;/div&gt;</summary>
		<author><name>Lme</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference14r2:MyApps_Plugin_for_Virtual_Desktops&amp;diff=79011</id>
		<title>Reference14r2:MyApps Plugin for Virtual Desktops</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference14r2:MyApps_Plugin_for_Virtual_Desktops&amp;diff=79011"/>
		<updated>2026-03-05T07:19:19Z</updated>

		<summary type="html">&lt;p&gt;Lme: /* Audio Quality issues (e.g. choppy audio) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
== Description ==&lt;br /&gt;
A softphone running at a terminal server (Citrix, Windows, ...) has the problem that audio and video streams start and terminate at the server.&lt;br /&gt;
Received audio from remote peer at the server must be transmitted to the local client for playback and audio delivered by the audio device must be also transmitted from the local client to the server for transmission to remote peer.&lt;br /&gt;
This transmission of the audio stream between server and client adds a delay which makes the communication impossible.&lt;br /&gt;
Video suffers from the same limitations. &lt;br /&gt;
&lt;br /&gt;
The myApps Virtual Desktop Plugin enables media data to be transferred to the local client in terminal server environments.&lt;br /&gt;
== Applies To == &lt;br /&gt;
* innovaphone PBX from version 14r2&lt;br /&gt;
* Client OS: Windows, Linux&amp;lt;ref&amp;gt;VDI Plugin for Linux only connects to Citrix or VMWare Horizon, RDP still not supported&amp;lt;/ref&amp;gt;(Ubuntu 22 or 23, RangeeOS&amp;lt;ref&amp;gt;RangeeOS is listed due to a customer testimonial. No tests have been conducted by innovaphone. Tests were done using myapps 14r2sr3, RangeeOS Firmware 12.00 build 203 ff and Citrix Workspace 2311. (Workspace version 2402 &amp;amp; 2405 have a bug with USB redirection and 2408 is not starting reliably)&amp;lt;/ref&amp;gt;, IGEL OS&amp;lt;ref&amp;gt;IGEL OS: available at [https://app.igel.com/myAppsPlugin/15.1.455+1 IGEL App Portal]&amp;lt;/ref&amp;gt;) or MacOS operating systems&lt;br /&gt;
* Hypervisor OS: Citrix, Windows Terminal Server environments and VMWare Horizon&amp;lt;ref&amp;gt;VMWare Horizon OS is listed due to a customer testimonial. No tests have been conducted by innovaphone.&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* innovaphone PBX&lt;br /&gt;
* innovaphone myApps V14r2&lt;br /&gt;
* innovaphone myApps Plugin V14r2&lt;br /&gt;
* Firmware V14r2 final&lt;br /&gt;
&lt;br /&gt;
== Concept ==&lt;br /&gt;
The myApps Plugin at the client is in charge of all tasks related to the media streams and the management of the Audio/Video devices. For instance: &lt;br /&gt;
* start or stop an audio/video device&lt;br /&gt;
* gathering of the ICE candidates&lt;br /&gt;
* connect to a remote peer with the ICE protocol&lt;br /&gt;
* start a ringing device&lt;br /&gt;
* rendering of video&lt;br /&gt;
&lt;br /&gt;
But we now need a way of communicating between the myApps running at the terminal server and the myApps plugin running at the terminal client in order to carry out all these actions.&lt;br /&gt;
 &lt;br /&gt;
Main VDI Platforms (Citrix, Windows, VMware) provide a way of communicating between server and client through Virtual Channels:&lt;br /&gt;
&amp;lt;!-- no more accessible https://support.citrix.com/article/CTX116890/citrix-ica-virtual-channels-overview --&amp;gt;&lt;br /&gt;
* [https://docs.citrix.com/en-us/citrix-virtual-apps-desktops/technical-overview/virtual-channels Citrix technical overview]&lt;br /&gt;
* [https://support.citrix.com/support-home/kbsearch/article?articleNumber=CTX691230 Citrix support article summary]&lt;br /&gt;
* [https://learn.microsoft.com/en-us/windows/win32/termserv/using-terminal-services-virtual-channels Microsoft Remote Desktop Services virtual channels]&lt;br /&gt;
&lt;br /&gt;
=== Call signaling ===&lt;br /&gt;
The VDI Plugin has no connection to the PBX. Signaling is still done at the terminal server by the myApps client.&lt;br /&gt;
&lt;br /&gt;
=== Audio transmission ===&lt;br /&gt;
The plugin connects Audio, ICE and DTLS directly to the other endpoint.&amp;lt;br&amp;gt;Since Audio itself does not use virtual channels, the plugin on the client must be able [[Howto:What_Ports_are_used_for_Signaling_and_Voice_Traffic_in_SIP_and_H.323%3F#ICE_STUN_TURN|to reach the TURN/STUN server via port 3478]].&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&#039;&#039;&#039;Citrix Workspace app must first be installed on all platforms. This is necessary because the myApps plugin must copy a .dll (Windows) / .so (MacOS/Linux) into the Citrix installation directory.&amp;lt;br&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
For this to work, the Citrix installation directory must be in the %ProgramFiles(x86)% or %ProgramFiles% directory.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
The myApps Plugin .msi must be installed or deployed at the Thin-Client and does not require any configuration.&lt;br /&gt;
&lt;br /&gt;
=== MacOS ===&lt;br /&gt;
Install the myAppsPlugin.dmg or .pkg at the Thin-Client and does not require any configuration.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
Update your Linux PC first:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;sudo apt-get update&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Download latest Citrix Workspace App (Mar 7, 2024) for Debian and x86_64 platform: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;https://www.citrix.com/downloads/workspace-app/linux/workspace-app-for-linux-latest.html&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Citrix Workspace app needs &#039;&#039;&#039;libwebkit2gtk-4.0-37&#039;&#039;&#039; packet and this packet is not available in Ubuntu-24.04 version.&lt;br /&gt;
&lt;br /&gt;
Install it at your Linux PC:&lt;br /&gt;
&lt;br /&gt;
https://docs.citrix.com/en-us/citrix-workspace-app-for-linux/install.html&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;sudo apt install -f ./icaclient_&amp;lt;version&amp;gt;._amd64.deb&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Install (or update) now the myApps Plugin:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;sudo apt install -f ./myAppsPlugin.deb&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Headset Buttons:&lt;br /&gt;
&lt;br /&gt;
*Jabra: Create a file sudo &amp;lt;your-favorite-text-editor&amp;gt; /etc/udev/rules.d/50-udev-java.rules&lt;br /&gt;
**Add &amp;lt;code&amp;gt;ATTRS{idVendor}==&amp;quot;0b0e&amp;quot;, MODE=&amp;quot;0666&amp;quot;, GROUP=&amp;quot;users&amp;quot;&amp;lt;/code&amp;gt; as content. After creating the udev file (as root), reload the udev rules using: &amp;lt;code&amp;gt;sudo udevadm control --reload&amp;lt;/code&amp;gt;&lt;br /&gt;
*Epos: Create a file sudo &amp;lt;your-favorite-text-editor&amp;gt; /etc/udev/rules.d/50-udev-epos.rules&lt;br /&gt;
** Add &amp;lt;code&amp;gt;ATTRS{idVendor}==&amp;quot;1395&amp;quot;, MODE=&amp;quot;0666&amp;quot;, GROUP=&amp;quot;users&amp;quot;&amp;lt;/code&amp;gt; as content. After creating the udev file (as root), reload the udev rules using: &amp;lt;code&amp;gt;sudo udevadm control --reload&amp;lt;/code&amp;gt; &lt;br /&gt;
*Plantronics: Create a file sudo &amp;lt;your-favorite-text-editor&amp;gt; /etc/udev/rules.d/50-udev-plantronics.rules&lt;br /&gt;
** Add &amp;lt;code&amp;gt;ATTRS{idVendor}==&amp;quot;047f&amp;quot;, MODE=&amp;quot;0666&amp;quot;, GROUP=&amp;quot;users&amp;quot;&amp;lt;/code&amp;gt; as content. After creating the udev file (as root), reload the udev rules using: &amp;lt;code&amp;gt;sudo udevadm control --reload&amp;lt;/code&amp;gt; &lt;br /&gt;
* Snom: Create a file sudo &amp;lt;your-favorite-text-editor&amp;gt; /etc/udev/rules.d/50-udev-snom.rules&lt;br /&gt;
** Add &amp;lt;code&amp;gt;ATTRS{idVendor}==&amp;quot;251c&amp;quot;, MODE=&amp;quot;0666&amp;quot;, GROUP=&amp;quot;users&amp;quot;&amp;lt;/code&amp;gt; as content. After creating the udev file (as root), reload the udev rules using: &amp;lt;code&amp;gt;sudo udevadm control --reload&amp;lt;/code&amp;gt; &lt;br /&gt;
*  Yealink: Create a file sudo &amp;lt;your-favorite-text-editor&amp;gt; /etc/udev/rules.d/50-udev-yealink.rules&lt;br /&gt;
** Add &amp;lt;code&amp;gt;ATTRS{idVendor}==&amp;quot;6993&amp;quot;, MODE=&amp;quot;0666&amp;quot;, GROUP=&amp;quot;users&amp;quot;&amp;lt;/code&amp;gt; as content. After creating the udev file (as root), reload the udev rules using: &amp;lt;code&amp;gt;sudo udevadm control --reload&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
No additional configuration required.&lt;br /&gt;
&lt;br /&gt;
=== Configuration on the Terminalserver ===&lt;br /&gt;
The Softphone App at the terminal server does not require any additional configuration.&lt;br /&gt;
&lt;br /&gt;
== How it works ==&lt;br /&gt;
User starts the VDI software (Citrix Workspace App or Windows Remotedesktop) needed to connect to a remote server. &lt;br /&gt;
&lt;br /&gt;
This software automatically starts the myApps Plugin. No user action required.&lt;br /&gt;
&lt;br /&gt;
The user starts myApps at the server for the Softphone App. myApps discovers that it is running in terminal server environment and will connect to the plugin which was already started by the VDI software.&lt;br /&gt;
&lt;br /&gt;
The user does not need to have any knowledge about the myApps Plugin.&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* The audio module in the MyApps Plugin for Linux/IgelOS has no echo cancellation. It is therefore recommended to use a headset, as headsets usually have their own echo cancellers.&lt;br /&gt;
* Webcam and remote videos must be rendered over the Softphone App but for the time being a native window is opened at the terminal client (only for the Windows Plugin)&lt;br /&gt;
* Connecting to a conference or 3rd party conference does not transmit video as video starts in the Javascript code of the Softphone App and Javascript has no access to the local webcam at the remote server. &lt;br /&gt;
**Video is displayed but with delay due to the rendering process. &lt;br /&gt;
**Citrix may provide access to the local webcam internally and the webcam may be available but remote peer will probably experience delay of the received video.&lt;br /&gt;
* When MyApps is used as a Citrix Published App, notification pop-ups cannot be displayed. This is because Citrix does not recognize the notifications as part of MyApps and therefore does not show them as part of the published app. If the full desktop is used in Citrix, the notifications function correctly.&lt;br /&gt;
* Start of AppSharing remains at the terminal server but the transmission of the media now starts at the local client.&lt;br /&gt;
* The MyApps Plugin for macOS supports only Citrix Workspace, the &amp;quot;Windows-App&amp;quot; from Microsoft is currently not supported&lt;br /&gt;
&amp;lt;br/&amp;gt;We need to implement an exception for appSharing in the future as the transmission must happen at the server.&lt;br /&gt;
&amp;lt;br/&amp;gt;For the time being the appSharing is transmitted to the client and forwarded to the remote peer adding some delay due to this tranmission between server and client (only for the Windows Plugin)&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
If the problem still exists after trying the OS-specific hints below, open a support ticket and send a trace from the myApps client (remote) with App and Browser option. Please send also all myAppsPlugin-x.txt and myAppsRemote-x.txt trace files from the myApps-plugin on the local PC.&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting Windows ===&lt;br /&gt;
If Citrix is used as a terminal server environment:&lt;br /&gt;
#Citrix must be installed &#039;&#039;&#039;BEFORE&#039;&#039;&#039; the plugin&lt;br /&gt;
#Check in &amp;quot;C:/program files/Citrix/ICA Client&amp;quot; folder, there is the .dll myAppscitrixremoteserviesvc.dll&lt;br /&gt;
#Check in the registry, that: Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Citrix\ICA Client\Engine\Configuration\Advanced\Modules\ICA 3.0 is there.&amp;lt;br /&amp;gt;&amp;quot;VirtualDriverEx&amp;quot; must be there with the value: InnovaphoneCitrixPlugin&lt;br /&gt;
#In Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Citrix\ICA Client\Engine\Configuration\Advanced\Modules\InnovaphoneCitrixPlugin as Drivename and DrivenameWin32 you should find the .dll as value and as innovaphone path the path of the plugin for the file myAppsplugin&lt;br /&gt;
&lt;br /&gt;
Dump files are in the trace folder c:\users\$user\Appdata\local\innovaphone\myAppsPlugin if client crash at start.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remote desktop (Windows)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
After installing the plugin, check this registry folder:&lt;br /&gt;
&lt;br /&gt;
Computer\HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default\AddIns\innovaphoneRemoteServicesSvc64&lt;br /&gt;
&lt;br /&gt;
and check as &amp;quot;Name&amp;quot; the path of the .dll &amp;lt;--- c:\program files(x86)\iinnovaphone\myAppsPlugin\myAppsRemoteServiceSvc64.dll&lt;br /&gt;
&lt;br /&gt;
check that the .dll exist in the mentioned direcotry and the plugin.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Disable Echo Canceler (Windows PC)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Computer\HKEY_CURRENT_USER\Software\innovaphone\myApps einen neuen Eintrag erstellen:&lt;br /&gt;
&lt;br /&gt;
Type: DWORD (REG_DWORD)&lt;br /&gt;
&lt;br /&gt;
Name: disableEchoCanceller&lt;br /&gt;
&lt;br /&gt;
Value: 1      ( or use, Value: 0 to enable the Echo Canceller)&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting Linux ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;​Citrix Workspace App must be installed before the myAppsPlugin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Innovaphone Plugin is installed under /opt/innovaphone/&#039;&#039;&#039;myAppsPlugin&#039;&#039;&#039; and in /opt/Citrix/ICAClient/&#039;&#039;&#039;myAppsCitrixPlugin.so&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
myAppsCitrixPlugin.so library is called by the Citrix Workspace App and this library opens the myAppsPlugin.&lt;br /&gt;
&lt;br /&gt;
There is a file in the Citrix installation called module.ini (/opt/Citrix/ICAClient/config/module.ini). ​Inside this file the myApps Citrix Plugin library is included:​&lt;br /&gt;
&lt;br /&gt;
- ​VirtualDriver entry must contain myAppsCitrixPlugin&lt;br /&gt;
&lt;br /&gt;
- a line with &#039;&#039;&#039;​myAppsCitrixPlugin=On&#039;&#039;&#039;​ must exist and &lt;br /&gt;
&lt;br /&gt;
Following directory &#039;&#039;&#039;/var/log/apps/myAppsPlugin/&#039;&#039;&#039; must also exist for the log files with write permission for everyone (drwxrwxrwx)&lt;br /&gt;
&lt;br /&gt;
====Audio Quality issues (e.g. choppy audio)====&lt;br /&gt;
If you run into audio quality when using myapps on Linux, the following configuration is recommended:&lt;br /&gt;
&lt;br /&gt;
*  Use Pipewire as the audio server&lt;br /&gt;
* Set the system-wide sample rate (default 44.1 kHz) to 48 kHz, since most USB headsets (e.g. Jabra) operate at 48 kHz.&lt;br /&gt;
&lt;br /&gt;
You need to apply settings on OS level, since the audio backend and sample rate are operating system settings and cannot be controlled by the application.&lt;br /&gt;
&lt;br /&gt;
You can check the Active audio server and sample rate with the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;pactl info&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Based on your language-settings you will get a different output.&lt;br /&gt;
But you want to look for something like &amp;quot;Server Name&amp;quot; and &amp;quot;Default-Sample-Specification&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The expected results are (Language set to English):&lt;br /&gt;
&lt;br /&gt;
Server Name: pulseaudio&lt;br /&gt;
&lt;br /&gt;
Default Sample Specification: s16le 2ch 48000Hz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you use pipewire you will get something like this:&lt;br /&gt;
&lt;br /&gt;
Server Name: PulseAudio (on PipeWire 1.4.2)&lt;br /&gt;
&lt;br /&gt;
Default Sample Specification: float32le 2ch 48000Hz&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting MacOS ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;​Citrix Workspace App must be installed before the myAppsPlugin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In /Library/Application Support/Citrix/PlugIns&lt;br /&gt;
&lt;br /&gt;
must exist ​myAppsCitrixPlugin.plugin -&amp;gt; /Application/myappsPlugin.app/Contents/PlugIns/myapps_citrix_plugin.plugin&lt;br /&gt;
&lt;br /&gt;
​under:​&lt;br /&gt;
&lt;br /&gt;
​/Users/.../Library/Application Support/Citrix Receiver&lt;br /&gt;
&lt;br /&gt;
​​there is a file called Modules. ​Inside this file the myApps Plugin is included:​&lt;br /&gt;
&lt;br /&gt;
- ​VirtualDriver entry must contain myAppsCitrixPlugin&lt;br /&gt;
&lt;br /&gt;
- a line with myAppsCitrixPlugin=On must exist&lt;br /&gt;
&lt;br /&gt;
- and another line with [myAppsCitrixPlugin]  too&lt;br /&gt;
&lt;br /&gt;
​both things are done during the installation. In case something is not working must check that the link to the plugin exists and that the modules file contains these entries.&lt;br /&gt;
&lt;br /&gt;
​​And under /Users/.../Library/Containers/com.innovaphone.myapps-plugin-14r2/Data/Documents a log file is created: myAppsPlugin.txt&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting Citrix ===&lt;br /&gt;
A Virtual Channel Policy must be added to the Registry at the &#039;&#039;&#039;Citrix Server&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Create &#039;&#039;&#039;VCPolicies&#039;&#039;&#039; folder under &#039;&#039;&#039;HKLM/Software/Policies/Citrix&#039;&#039;&#039; if it does not exist.&lt;br /&gt;
&lt;br /&gt;
Create &#039;&#039;&#039;VCPolicies&#039;&#039;&#039; folder under &#039;&#039;&#039;HKLM/Software/WOW6432Node/Policies/Citrix&#039;&#039;&#039; if it does not exist.&lt;br /&gt;
&lt;br /&gt;
Create a REG_MULTI_SZ entry with the name &#039;&#039;&#039;VirtualChannelWhiteList&#039;&#039;&#039;. This entry must contain as value: &#039;&#039;&#039;INNOHDX,C:\Program Files (x86)\innovaphone\myApps\myApps.exe&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting RTP Stream ===&lt;br /&gt;
&lt;br /&gt;
You can analyze the RTP stream with the switch &amp;quot;--record-rtp-stream&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* RTP reception after Echo Canceller and JitterBuffer&lt;br /&gt;
* Audio from microphone and send to RTP&lt;br /&gt;
&lt;br /&gt;
You have to start the myApps client as follows: myApps.exe --record-rtp-stream&lt;br /&gt;
&lt;br /&gt;
After the call, you can find the audio files in the folder: C:\Users\...\AppData\Local\innovaphone\myApps&lt;br /&gt;
&lt;br /&gt;
Tool to listen to the RTP stream: Audacity&lt;br /&gt;
&lt;br /&gt;
Go to: File / Import / Raw Data and open the Folder with the Rtp stream and select the file.&lt;br /&gt;
&lt;br /&gt;
For RTP-Send and RTP-Recv Data, use the Audio Codec G711 -&amp;gt; A-Law and 8000 &lt;br /&gt;
&lt;br /&gt;
For the Wave-in (out) Data Use Signed 16-bit PCM and 8000 Abtastrate&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
&lt;br /&gt;
* https://wiki.innovaphone.com/index.php?title=Reference14r2:Concept_myApps&lt;br /&gt;
* https://wiki.innovaphone.com/index.php?title=Reference14r2:Concept_App_SoftphoneApp&lt;/div&gt;</summary>
		<author><name>Lme</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference14r2:MyApps_Plugin_for_Virtual_Desktops&amp;diff=78807</id>
		<title>Reference14r2:MyApps Plugin for Virtual Desktops</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference14r2:MyApps_Plugin_for_Virtual_Desktops&amp;diff=78807"/>
		<updated>2026-01-28T12:55:59Z</updated>

		<summary type="html">&lt;p&gt;Lme: /* Audio Quality issues (e.g. choppy audio) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
== Description ==&lt;br /&gt;
A softphone running at a terminal server (Citrix, Windows, ...) has the problem that audio and video streams start and terminate at the server.&lt;br /&gt;
Received audio from remote peer at the server must be transmitted to the local client for playback and audio delivered by the audio device must be also transmitted from the local client to the server for transmission to remote peer.&lt;br /&gt;
This transmission of the audio stream between server and client adds a delay which makes the communication impossible.&lt;br /&gt;
Video suffers from the same limitations. &lt;br /&gt;
&lt;br /&gt;
The myApps Virtual Desktop Plugin enables media data to be transferred to the local client in terminal server environments.&lt;br /&gt;
== Applies To == &lt;br /&gt;
* innovaphone PBX from version 14r2&lt;br /&gt;
* Client OS: Windows, Linux (Ubuntu 22 or 23, RangeeOS&amp;lt;ref&amp;gt;RangeeOS is listed due to a customer testimonial. No tests have been conducted by innovaphone. Tests were done using myapps 14r2sr3, RangeeOS Firmware 12.00 build 203 ff and Citrix Workspace 2311. (Workspace version 2402 &amp;amp; 2405 have a bug with USB redirection and 2408 is not starting reliably)&amp;lt;/ref&amp;gt;, IGEL OS&amp;lt;ref&amp;gt;IGEL OS: available at [https://app.igel.com/myAppsPlugin/15.1.455+1 IGEL App Portal]&amp;lt;/ref&amp;gt;) or MacOS operating systems&lt;br /&gt;
* Hypervisor OS: Citrix, Windows Terminal Server environments and VMWare Horizon&amp;lt;ref&amp;gt;VMWare Horizon OS is listed due to a customer testimonial. No tests have been conducted by innovaphone.&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* innovaphone PBX&lt;br /&gt;
* innovaphone myApps V14r2&lt;br /&gt;
* innovaphone myApps Plugin V14r2&lt;br /&gt;
* Firmware V14r2 final&lt;br /&gt;
&lt;br /&gt;
== Concept ==&lt;br /&gt;
The myApps Plugin at the client is in charge of all tasks related to the media streams and the management of the Audio/Video devices. For instance: &lt;br /&gt;
* start or stop an audio/video device&lt;br /&gt;
* gathering of the ICE candidates&lt;br /&gt;
* connect to a remote peer with the ICE protocol&lt;br /&gt;
* start a ringing device&lt;br /&gt;
* rendering of video&lt;br /&gt;
&lt;br /&gt;
But we now need a way of communicating between the myApps running at the terminal server and the myApps plugin running at the terminal client in order to carry out all these actions.&lt;br /&gt;
 &lt;br /&gt;
Main VDI Platforms (Citrix, Windows, VMware) provide a way of communicating between server and client through Virtual Channels:&lt;br /&gt;
&amp;lt;!-- no more accessible https://support.citrix.com/article/CTX116890/citrix-ica-virtual-channels-overview --&amp;gt;&lt;br /&gt;
* [https://docs.citrix.com/en-us/citrix-virtual-apps-desktops/technical-overview/virtual-channels Citrix technical overview]&lt;br /&gt;
* [https://support.citrix.com/support-home/kbsearch/article?articleNumber=CTX691230 Citrix support article summary]&lt;br /&gt;
* [https://learn.microsoft.com/en-us/windows/win32/termserv/using-terminal-services-virtual-channels Microsoft Remote Desktop Services virtual channels]&lt;br /&gt;
&lt;br /&gt;
=== Call signaling ===&lt;br /&gt;
The VDI Plugin has no connection to the PBX. Signaling is still done at the terminal server by the myApps client.&lt;br /&gt;
&lt;br /&gt;
=== Audio transmission ===&lt;br /&gt;
The plugin connects Audio, ICE and DTLS directly to the other endpoint.&amp;lt;br&amp;gt;Since Audio itself does not use virtual channels, the plugin on the client must be able [[Howto:What_Ports_are_used_for_Signaling_and_Voice_Traffic_in_SIP_and_H.323%3F#ICE_STUN_TURN|to reach the TURN/STUN server via port 3478]].&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&#039;&#039;&#039;Citrix Workspace app must first be installed on all platforms. This is necessary because the myApps plugin must copy a .dll (Windows) / .so (MacOS/Linux) into the Citrix installation directory.&amp;lt;br&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
For this to work, the Citrix installation directory must be in the %ProgramFiles(x86)% or %ProgramFiles% directory.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
The myApps Plugin .msi must be installed or deployed at the Thin-Client and does not require any configuration.&lt;br /&gt;
&lt;br /&gt;
=== MacOS ===&lt;br /&gt;
Install the myAppsPlugin.dmg or .pkg at the Thin-Client and does not require any configuration.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
Update your Linux PC first:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;sudo apt-get update&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Download latest Citrix Workspace App (Mar 7, 2024) for Debian and x86_64 platform: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;https://www.citrix.com/downloads/workspace-app/linux/workspace-app-for-linux-latest.html&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Citrix Workspace app needs &#039;&#039;&#039;libwebkit2gtk-4.0-37&#039;&#039;&#039; packet and this packet is not available in Ubuntu-24.04 version.&lt;br /&gt;
&lt;br /&gt;
Install it at your Linux PC:&lt;br /&gt;
&lt;br /&gt;
https://docs.citrix.com/en-us/citrix-workspace-app-for-linux/install.html&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;sudo apt install -f ./icaclient_&amp;lt;version&amp;gt;._amd64.deb&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Install (or update) now the myApps Plugin:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;sudo apt install -f ./myAppsPlugin.deb&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Headset Buttons:&lt;br /&gt;
&lt;br /&gt;
*Jabra: Create a file sudo &amp;lt;your-favorite-text-editor&amp;gt; /etc/udev/rules.d/50-udev-java.rules&lt;br /&gt;
**Add &amp;lt;code&amp;gt;ATTRS{idVendor}==&amp;quot;0b0e&amp;quot;, MODE=&amp;quot;0666&amp;quot;, GROUP=&amp;quot;users&amp;quot;&amp;lt;/code&amp;gt; as content. After creating the udev file (as root), reload the udev rules using: &amp;lt;code&amp;gt;sudo udevadm control --reload&amp;lt;/code&amp;gt;&lt;br /&gt;
*Epos: Create a file sudo &amp;lt;your-favorite-text-editor&amp;gt; /etc/udev/rules.d/50-udev-epos.rules&lt;br /&gt;
** Add &amp;lt;code&amp;gt;ATTRS{idVendor}==&amp;quot;1395&amp;quot;, MODE=&amp;quot;0666&amp;quot;, GROUP=&amp;quot;users&amp;quot;&amp;lt;/code&amp;gt; as content. After creating the udev file (as root), reload the udev rules using: &amp;lt;code&amp;gt;sudo udevadm control --reload&amp;lt;/code&amp;gt; &lt;br /&gt;
*Plantronics: Create a file sudo &amp;lt;your-favorite-text-editor&amp;gt; /etc/udev/rules.d/50-udev-plantronics.rules&lt;br /&gt;
** Add &amp;lt;code&amp;gt;ATTRS{idVendor}==&amp;quot;047f&amp;quot;, MODE=&amp;quot;0666&amp;quot;, GROUP=&amp;quot;users&amp;quot;&amp;lt;/code&amp;gt; as content. After creating the udev file (as root), reload the udev rules using: &amp;lt;code&amp;gt;sudo udevadm control --reload&amp;lt;/code&amp;gt; &lt;br /&gt;
* Snom: Create a file sudo &amp;lt;your-favorite-text-editor&amp;gt; /etc/udev/rules.d/50-udev-snom.rules&lt;br /&gt;
** Add &amp;lt;code&amp;gt;ATTRS{idVendor}==&amp;quot;251c&amp;quot;, MODE=&amp;quot;0666&amp;quot;, GROUP=&amp;quot;users&amp;quot;&amp;lt;/code&amp;gt; as content. After creating the udev file (as root), reload the udev rules using: &amp;lt;code&amp;gt;sudo udevadm control --reload&amp;lt;/code&amp;gt; &lt;br /&gt;
*  Yealink: Create a file sudo &amp;lt;your-favorite-text-editor&amp;gt; /etc/udev/rules.d/50-udev-yealink.rules&lt;br /&gt;
** Add &amp;lt;code&amp;gt;ATTRS{idVendor}==&amp;quot;6993&amp;quot;, MODE=&amp;quot;0666&amp;quot;, GROUP=&amp;quot;users&amp;quot;&amp;lt;/code&amp;gt; as content. After creating the udev file (as root), reload the udev rules using: &amp;lt;code&amp;gt;sudo udevadm control --reload&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
No additional configuration required.&lt;br /&gt;
&lt;br /&gt;
=== Configuration on the Terminalserver ===&lt;br /&gt;
The Softphone App at the terminal server does not require any additional configuration.&lt;br /&gt;
&lt;br /&gt;
== How it works ==&lt;br /&gt;
User starts the VDI software (Citrix Workspace App or Windows Remotedesktop) needed to connect to a remote server. &lt;br /&gt;
&lt;br /&gt;
This software automatically starts the myApps Plugin. No user action required.&lt;br /&gt;
&lt;br /&gt;
The user starts myApps at the server for the Softphone App. myApps discovers that it is running in terminal server environment and will connect to the plugin which was already started by the VDI software.&lt;br /&gt;
&lt;br /&gt;
The user does not need to have any knowledge about the myApps Plugin.&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* The audio module in the MyApps Plugin for Linux/IgelOS has no echo cancellation. It is therefore recommended to use a headset, as headsets usually have their own echo cancellers.&lt;br /&gt;
* Webcam and remote videos must be rendered over the Softphone App but for the time being a native window is opened at the terminal client (only for the Windows Plugin)&lt;br /&gt;
* Connecting to a conference or 3rd party conference does not transmit video as video starts in the Javascript code of the Softphone App and Javascript has no access to the local webcam at the remote server. &lt;br /&gt;
**Video is displayed but with delay due to the rendering process. &lt;br /&gt;
**Citrix may provide access to the local webcam internally and the webcam may be available but remote peer will probably experience delay of the received video.&lt;br /&gt;
* When MyApps is used as a Citrix Published App, notification pop-ups cannot be displayed. This is because Citrix does not recognize the notifications as part of MyApps and therefore does not show them as part of the published app. If the full desktop is used in Citrix, the notifications function correctly.&lt;br /&gt;
* Start of AppSharing remains at the terminal server but the transmission of the media now starts at the local client.&lt;br /&gt;
* The MyApps Plugin for macOS supports only Citrix Workspace, the &amp;quot;Windows-App&amp;quot; from Microsoft is currently not supported&lt;br /&gt;
&amp;lt;br/&amp;gt;We need to implement an exception for appSharing in the future as the transmission must happen at the server.&lt;br /&gt;
&amp;lt;br/&amp;gt;For the time being the appSharing is transmitted to the client and forwarded to the remote peer adding some delay due to this tranmission between server and client (only for the Windows Plugin)&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
If the problem still exists after trying the OS-specific hints below, open a support ticket and send a trace from the myApps client (remote) with App and Browser option. Please send also all myAppsPlugin-x.txt and myAppsRemote-x.txt trace files from the myApps-plugin on the local PC.&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting Windows ===&lt;br /&gt;
If Citrix is used as a terminal server environment:&lt;br /&gt;
#Citrix must be installed &#039;&#039;&#039;BEFORE&#039;&#039;&#039; the plugin&lt;br /&gt;
#Check in &amp;quot;C:/program files/Citrix/ICA Client&amp;quot; folder, there is the .dll myAppscitrixremoteserviesvc.dll&lt;br /&gt;
#Check in the registry, that: Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Citrix\ICA Client\Engine\Configuration\Advanced\Modules\ICA 3.0 is there.&amp;lt;br /&amp;gt;&amp;quot;VirtualDriverEx&amp;quot; must be there with the value: InnovaphoneCitrixPlugin&lt;br /&gt;
#In Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Citrix\ICA Client\Engine\Configuration\Advanced\Modules\InnovaphoneCitrixPlugin as Drivename and DrivenameWin32 you should find the .dll as value and as innovaphone path the path of the plugin for the file myAppsplugin&lt;br /&gt;
&lt;br /&gt;
Dump files are in the trace folder c:\users\$user\Appdata\local\innovaphone\myAppsPlugin if client crash at start.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remote desktop (Windows)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
After installing the plugin, check this registry folder:&lt;br /&gt;
&lt;br /&gt;
Computer\HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default\AddIns\innovaphoneRemoteServicesSvc64&lt;br /&gt;
&lt;br /&gt;
and check as &amp;quot;Name&amp;quot; the path of the .dll &amp;lt;--- c:\program files(x86)\iinnovaphone\myAppsPlugin\myAppsRemoteServiceSvc64.dll&lt;br /&gt;
&lt;br /&gt;
check that the .dll exist in the mentioned direcotry and the plugin.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Disable Echo Canceler (Windows PC)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Computer\HKEY_CURRENT_USER\Software\innovaphone\myApps einen neuen Eintrag erstellen:&lt;br /&gt;
&lt;br /&gt;
Type: DWORD (REG_DWORD)&lt;br /&gt;
&lt;br /&gt;
Name: disableEchoCanceller&lt;br /&gt;
&lt;br /&gt;
Value: 1      ( or use, Value: 0 to enable the Echo Canceller)&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting Linux ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;​Citrix Workspace App must be installed before the myAppsPlugin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Innovaphone Plugin is installed under /opt/innovaphone/&#039;&#039;&#039;myAppsPlugin&#039;&#039;&#039; and in /opt/Citrix/ICAClient/&#039;&#039;&#039;myAppsCitrixPlugin.so&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
myAppsCitrixPlugin.so library is called by the Citrix Workspace App and this library opens the myAppsPlugin.&lt;br /&gt;
&lt;br /&gt;
There is a file in the Citrix installation called module.ini (/opt/Citrix/ICAClient/config/module.ini). ​Inside this file the myApps Citrix Plugin library is included:​&lt;br /&gt;
&lt;br /&gt;
- ​VirtualDriver entry must contain myAppsCitrixPlugin&lt;br /&gt;
&lt;br /&gt;
- a line with &#039;&#039;&#039;​myAppsCitrixPlugin=On&#039;&#039;&#039;​ must exist and &lt;br /&gt;
&lt;br /&gt;
Following directory &#039;&#039;&#039;/var/log/apps/myAppsPlugin/&#039;&#039;&#039; must also exist for the log files with write permission for everyone (drwxrwxrwx)&lt;br /&gt;
&lt;br /&gt;
====Audio Quality issues (e.g. choppy audio)====&lt;br /&gt;
If you run into audio quality when using myapps on Linux, the following configuration is recommended:&lt;br /&gt;
&lt;br /&gt;
*  Use PulseAudio as the audio server&lt;br /&gt;
* Set the system-wide sample rate (default 44.1 kHz) to 48 kHz, since most USB headsets (e.g. Jabra) operate at 48 kHz.&lt;br /&gt;
&lt;br /&gt;
You need to apply settings on OS level, since the audio backend and sample rate are operating system settings and cannot be controlled by the application.&lt;br /&gt;
&lt;br /&gt;
You can check the Active audio server and sample rate with the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;pactl info&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Based on your language-settings you will get a different output.&lt;br /&gt;
But you want to look for something like &amp;quot;Server Name&amp;quot; and &amp;quot;Default-Sample-Specification&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The expected results are (Language set to English):&lt;br /&gt;
&lt;br /&gt;
Server Name: pulseaudio&lt;br /&gt;
&lt;br /&gt;
Default Sample Specification: s16le 2ch 48000Hz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you use pipewire you will get something like this:&lt;br /&gt;
&lt;br /&gt;
Server Name: PulseAudio (on PipeWire 1.4.2)&lt;br /&gt;
&lt;br /&gt;
Default Sample Specification: float32le 2ch 48000Hz&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting MacOS ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;​Citrix Workspace App must be installed before the myAppsPlugin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In /Library/Application Support/Citrix/PlugIns&lt;br /&gt;
&lt;br /&gt;
must exist ​myAppsCitrixPlugin.plugin -&amp;gt; /Application/myappsPlugin.app/Contents/PlugIns/myapps_citrix_plugin.plugin&lt;br /&gt;
&lt;br /&gt;
​under:​&lt;br /&gt;
&lt;br /&gt;
​/Users/.../Library/Application Support/Citrix Receiver&lt;br /&gt;
&lt;br /&gt;
​​there is a file called Modules. ​Inside this file the myApps Plugin is included:​&lt;br /&gt;
&lt;br /&gt;
- ​VirtualDriver entry must contain myAppsCitrixPlugin&lt;br /&gt;
&lt;br /&gt;
- a line with myAppsCitrixPlugin=On must exist&lt;br /&gt;
&lt;br /&gt;
- and another line with [myAppsCitrixPlugin]  too&lt;br /&gt;
&lt;br /&gt;
​both things are done during the installation. In case something is not working must check that the link to the plugin exists and that the modules file contains these entries.&lt;br /&gt;
&lt;br /&gt;
​​And under /Users/.../Library/Containers/com.innovaphone.myapps-plugin-14r2/Data/Documents a log file is created: myAppsPlugin.txt&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting Citrix ===&lt;br /&gt;
A Virtual Channel Policy must be added to the Registry at the &#039;&#039;&#039;Citrix Server&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Create &#039;&#039;&#039;VCPolicies&#039;&#039;&#039; folder under &#039;&#039;&#039;HKLM/Software/Policies/Citrix&#039;&#039;&#039; if it does not exist.&lt;br /&gt;
&lt;br /&gt;
Create &#039;&#039;&#039;VCPolicies&#039;&#039;&#039; folder under &#039;&#039;&#039;HKLM/Software/WOW6432Node/Policies/Citrix&#039;&#039;&#039; if it does not exist.&lt;br /&gt;
&lt;br /&gt;
Create a REG_MULTI_SZ entry with the name &#039;&#039;&#039;VirtualChannelWhiteList&#039;&#039;&#039;. This entry must contain as value: &#039;&#039;&#039;INNOHDX,C:\Program Files (x86)\innovaphone\myApps\myApps.exe&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting RTP Stream ===&lt;br /&gt;
&lt;br /&gt;
You can analyze the RTP stream with the switch &amp;quot;--record-rtp-stream&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* RTP reception after Echo Canceller and JitterBuffer&lt;br /&gt;
* Audio from microphone and send to RTP&lt;br /&gt;
&lt;br /&gt;
You have to start the myApps client as follows: myApps.exe --record-rtp-stream&lt;br /&gt;
&lt;br /&gt;
After the call, you can find the audio files in the folder: C:\Users\...\AppData\Local\innovaphone\myApps&lt;br /&gt;
&lt;br /&gt;
Tool to listen to the RTP stream: Audacity&lt;br /&gt;
&lt;br /&gt;
Go to: File / Import / Raw Data and open the Folder with the Rtp stream and select the file.&lt;br /&gt;
&lt;br /&gt;
For RTP-Send and RTP-Recv Data, use the Audio Codec G711 -&amp;gt; A-Law and 8000 &lt;br /&gt;
&lt;br /&gt;
For the Wave-in (out) Data Use Signed 16-bit PCM and 8000 Abtastrate&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
&lt;br /&gt;
* https://wiki.innovaphone.com/index.php?title=Reference14r2:Concept_myApps&lt;br /&gt;
* https://wiki.innovaphone.com/index.php?title=Reference14r2:Concept_App_SoftphoneApp&lt;/div&gt;</summary>
		<author><name>Lme</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference14r2:MyApps_Plugin_for_Virtual_Desktops&amp;diff=78803</id>
		<title>Reference14r2:MyApps Plugin for Virtual Desktops</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference14r2:MyApps_Plugin_for_Virtual_Desktops&amp;diff=78803"/>
		<updated>2026-01-28T10:23:16Z</updated>

		<summary type="html">&lt;p&gt;Lme: /* Troubleshooting Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
== Description ==&lt;br /&gt;
A softphone running at a terminal server (Citrix, Windows, ...) has the problem that audio and video streams start and terminate at the server.&lt;br /&gt;
Received audio from remote peer at the server must be transmitted to the local client for playback and audio delivered by the audio device must be also transmitted from the local client to the server for transmission to remote peer.&lt;br /&gt;
This transmission of the audio stream between server and client adds a delay which makes the communication impossible.&lt;br /&gt;
Video suffers from the same limitations. &lt;br /&gt;
&lt;br /&gt;
The myApps Virtual Desktop Plugin enables media data to be transferred to the local client in terminal server environments.&lt;br /&gt;
== Applies To == &lt;br /&gt;
* innovaphone PBX from version 14r2&lt;br /&gt;
* Client OS: Windows, Linux (Ubuntu 22 or 23, RangeeOS&amp;lt;ref&amp;gt;RangeeOS is listed due to a customer testimonial. No tests have been conducted by innovaphone. Tests were done using myapps 14r2sr3, RangeeOS Firmware 12.00 build 203 ff and Citrix Workspace 2311. (Workspace version 2402 &amp;amp; 2405 have a bug with USB redirection and 2408 is not starting reliably)&amp;lt;/ref&amp;gt;, IGEL OS&amp;lt;ref&amp;gt;IGEL OS: available at [https://app.igel.com/myAppsPlugin/15.1.455+1 IGEL App Portal]&amp;lt;/ref&amp;gt;) or MacOS operating systems&lt;br /&gt;
* Hypervisor OS: Citrix, Windows Terminal Server environments and VMWare Horizon&amp;lt;ref&amp;gt;VMWare Horizon OS is listed due to a customer testimonial. No tests have been conducted by innovaphone.&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* innovaphone PBX&lt;br /&gt;
* innovaphone myApps V14r2&lt;br /&gt;
* innovaphone myApps Plugin V14r2&lt;br /&gt;
* Firmware V14r2 final&lt;br /&gt;
&lt;br /&gt;
== Concept ==&lt;br /&gt;
The myApps Plugin at the client is in charge of all tasks related to the media streams and the management of the Audio/Video devices. For instance: &lt;br /&gt;
* start or stop an audio/video device&lt;br /&gt;
* gathering of the ICE candidates&lt;br /&gt;
* connect to a remote peer with the ICE protocol&lt;br /&gt;
* start a ringing device&lt;br /&gt;
* rendering of video&lt;br /&gt;
&lt;br /&gt;
But we now need a way of communicating between the myApps running at the terminal server and the myApps plugin running at the terminal client in order to carry out all these actions.&lt;br /&gt;
 &lt;br /&gt;
Main VDI Platforms (Citrix, Windows, VMware) provide a way of communicating between server and client through Virtual Channels:&lt;br /&gt;
&amp;lt;!-- no more accessible https://support.citrix.com/article/CTX116890/citrix-ica-virtual-channels-overview --&amp;gt;&lt;br /&gt;
* [https://docs.citrix.com/en-us/citrix-virtual-apps-desktops/technical-overview/virtual-channels Citrix technical overview]&lt;br /&gt;
* [https://support.citrix.com/support-home/kbsearch/article?articleNumber=CTX691230 Citrix support article summary]&lt;br /&gt;
* [https://learn.microsoft.com/en-us/windows/win32/termserv/using-terminal-services-virtual-channels Microsoft Remote Desktop Services virtual channels]&lt;br /&gt;
&lt;br /&gt;
=== Call signaling ===&lt;br /&gt;
The VDI Plugin has no connection to the PBX. Signaling is still done at the terminal server by the myApps client.&lt;br /&gt;
&lt;br /&gt;
=== Audio transmission ===&lt;br /&gt;
The plugin connects Audio, ICE and DTLS directly to the other endpoint.&amp;lt;br&amp;gt;Since Audio itself does not use virtual channels, the plugin on the client must be able [[Howto:What_Ports_are_used_for_Signaling_and_Voice_Traffic_in_SIP_and_H.323%3F#ICE_STUN_TURN|to reach the TURN/STUN server via port 3478]].&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&#039;&#039;&#039;Citrix Workspace app must first be installed on all platforms. This is necessary because the myApps plugin must copy a .dll (Windows) / .so (MacOS/Linux) into the Citrix installation directory.&amp;lt;br&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
For this to work, the Citrix installation directory must be in the %ProgramFiles(x86)% or %ProgramFiles% directory.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
The myApps Plugin .msi must be installed or deployed at the Thin-Client and does not require any configuration.&lt;br /&gt;
&lt;br /&gt;
=== MacOS ===&lt;br /&gt;
Install the myAppsPlugin.dmg or .pkg at the Thin-Client and does not require any configuration.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
Update your Linux PC first:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;sudo apt-get update&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Download latest Citrix Workspace App (Mar 7, 2024) for Debian and x86_64 platform: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;https://www.citrix.com/downloads/workspace-app/linux/workspace-app-for-linux-latest.html&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Citrix Workspace app needs &#039;&#039;&#039;libwebkit2gtk-4.0-37&#039;&#039;&#039; packet and this packet is not available in Ubuntu-24.04 version.&lt;br /&gt;
&lt;br /&gt;
Install it at your Linux PC:&lt;br /&gt;
&lt;br /&gt;
https://docs.citrix.com/en-us/citrix-workspace-app-for-linux/install.html&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;sudo apt install -f ./icaclient_&amp;lt;version&amp;gt;._amd64.deb&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Install (or update) now the myApps Plugin:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;sudo apt install -f ./myAppsPlugin.deb&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Headset Buttons:&lt;br /&gt;
&lt;br /&gt;
*Jabra: Create a file sudo &amp;lt;your-favorite-text-editor&amp;gt; /etc/udev/rules.d/50-udev-java.rules&lt;br /&gt;
**Add &amp;lt;code&amp;gt;ATTRS{idVendor}==&amp;quot;0b0e&amp;quot;, MODE=&amp;quot;0666&amp;quot;, GROUP=&amp;quot;users&amp;quot;&amp;lt;/code&amp;gt; as content. After creating the udev file (as root), reload the udev rules using: &amp;lt;code&amp;gt;sudo udevadm control --reload&amp;lt;/code&amp;gt;&lt;br /&gt;
*Epos: Create a file sudo &amp;lt;your-favorite-text-editor&amp;gt; /etc/udev/rules.d/50-udev-epos.rules&lt;br /&gt;
** Add &amp;lt;code&amp;gt;ATTRS{idVendor}==&amp;quot;1395&amp;quot;, MODE=&amp;quot;0666&amp;quot;, GROUP=&amp;quot;users&amp;quot;&amp;lt;/code&amp;gt; as content. After creating the udev file (as root), reload the udev rules using: &amp;lt;code&amp;gt;sudo udevadm control --reload&amp;lt;/code&amp;gt; &lt;br /&gt;
*Plantronics: Create a file sudo &amp;lt;your-favorite-text-editor&amp;gt; /etc/udev/rules.d/50-udev-plantronics.rules&lt;br /&gt;
** Add &amp;lt;code&amp;gt;ATTRS{idVendor}==&amp;quot;047f&amp;quot;, MODE=&amp;quot;0666&amp;quot;, GROUP=&amp;quot;users&amp;quot;&amp;lt;/code&amp;gt; as content. After creating the udev file (as root), reload the udev rules using: &amp;lt;code&amp;gt;sudo udevadm control --reload&amp;lt;/code&amp;gt; &lt;br /&gt;
* Snom: Create a file sudo &amp;lt;your-favorite-text-editor&amp;gt; /etc/udev/rules.d/50-udev-snom.rules&lt;br /&gt;
** Add &amp;lt;code&amp;gt;ATTRS{idVendor}==&amp;quot;251c&amp;quot;, MODE=&amp;quot;0666&amp;quot;, GROUP=&amp;quot;users&amp;quot;&amp;lt;/code&amp;gt; as content. After creating the udev file (as root), reload the udev rules using: &amp;lt;code&amp;gt;sudo udevadm control --reload&amp;lt;/code&amp;gt; &lt;br /&gt;
*  Yealink: Create a file sudo &amp;lt;your-favorite-text-editor&amp;gt; /etc/udev/rules.d/50-udev-yealink.rules&lt;br /&gt;
** Add &amp;lt;code&amp;gt;ATTRS{idVendor}==&amp;quot;6993&amp;quot;, MODE=&amp;quot;0666&amp;quot;, GROUP=&amp;quot;users&amp;quot;&amp;lt;/code&amp;gt; as content. After creating the udev file (as root), reload the udev rules using: &amp;lt;code&amp;gt;sudo udevadm control --reload&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
No additional configuration required.&lt;br /&gt;
&lt;br /&gt;
=== Configuration on the Terminalserver ===&lt;br /&gt;
The Softphone App at the terminal server does not require any additional configuration.&lt;br /&gt;
&lt;br /&gt;
== How it works ==&lt;br /&gt;
User starts the VDI software (Citrix Workspace App or Windows Remotedesktop) needed to connect to a remote server. &lt;br /&gt;
&lt;br /&gt;
This software automatically starts the myApps Plugin. No user action required.&lt;br /&gt;
&lt;br /&gt;
The user starts myApps at the server for the Softphone App. myApps discovers that it is running in terminal server environment and will connect to the plugin which was already started by the VDI software.&lt;br /&gt;
&lt;br /&gt;
The user does not need to have any knowledge about the myApps Plugin.&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* The audio module in the MyApps Plugin for Linux/IgelOS has no echo cancellation. It is therefore recommended to use a headset, as headsets usually have their own echo cancellers.&lt;br /&gt;
* Webcam and remote videos must be rendered over the Softphone App but for the time being a native window is opened at the terminal client (only for the Windows Plugin)&lt;br /&gt;
* Connecting to a conference or 3rd party conference does not transmit video as video starts in the Javascript code of the Softphone App and Javascript has no access to the local webcam at the remote server. &lt;br /&gt;
**Video is displayed but with delay due to the rendering process. &lt;br /&gt;
**Citrix may provide access to the local webcam internally and the webcam may be available but remote peer will probably experience delay of the received video.&lt;br /&gt;
* When MyApps is used as a Citrix Published App, notification pop-ups cannot be displayed. This is because Citrix does not recognize the notifications as part of MyApps and therefore does not show them as part of the published app. If the full desktop is used in Citrix, the notifications function correctly.&lt;br /&gt;
* Start of AppSharing remains at the terminal server but the transmission of the media now starts at the local client.&lt;br /&gt;
* The MyApps Plugin for macOS supports only Citrix Workspace, the &amp;quot;Windows-App&amp;quot; from Microsoft is currently not supported&lt;br /&gt;
&amp;lt;br/&amp;gt;We need to implement an exception for appSharing in the future as the transmission must happen at the server.&lt;br /&gt;
&amp;lt;br/&amp;gt;For the time being the appSharing is transmitted to the client and forwarded to the remote peer adding some delay due to this tranmission between server and client (only for the Windows Plugin)&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
If the problem still exists after trying the OS-specific hints below, open a support ticket and send a trace from the myApps client (remote) with App and Browser option. Please send also all myAppsPlugin-x.txt and myAppsRemote-x.txt trace files from the myApps-plugin on the local PC.&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting Windows ===&lt;br /&gt;
If Citrix is used as a terminal server environment:&lt;br /&gt;
#Citrix must be installed &#039;&#039;&#039;BEFORE&#039;&#039;&#039; the plugin&lt;br /&gt;
#Check in &amp;quot;C:/program files/Citrix/ICA Client&amp;quot; folder, there is the .dll myAppscitrixremoteserviesvc.dll&lt;br /&gt;
#Check in the registry, that: Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Citrix\ICA Client\Engine\Configuration\Advanced\Modules\ICA 3.0 is there.&amp;lt;br /&amp;gt;&amp;quot;VirtualDriverEx&amp;quot; must be there with the value: InnovaphoneCitrixPlugin&lt;br /&gt;
#In Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Citrix\ICA Client\Engine\Configuration\Advanced\Modules\InnovaphoneCitrixPlugin as Drivename and DrivenameWin32 you should find the .dll as value and as innovaphone path the path of the plugin for the file myAppsplugin&lt;br /&gt;
&lt;br /&gt;
Dump files are in the trace folder c:\users\$user\Appdata\local\innovaphone\myAppsPlugin if client crash at start.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remote desktop (Windows)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
After installing the plugin, check this registry folder:&lt;br /&gt;
&lt;br /&gt;
Computer\HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default\AddIns\innovaphoneRemoteServicesSvc64&lt;br /&gt;
&lt;br /&gt;
and check as &amp;quot;Name&amp;quot; the path of the .dll &amp;lt;--- c:\program files(x86)\iinnovaphone\myAppsPlugin\myAppsRemoteServiceSvc64.dll&lt;br /&gt;
&lt;br /&gt;
check that the .dll exist in the mentioned direcotry and the plugin.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Disable Echo Canceler (Windows PC)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Computer\HKEY_CURRENT_USER\Software\innovaphone\myApps einen neuen Eintrag erstellen:&lt;br /&gt;
&lt;br /&gt;
Type: DWORD (REG_DWORD)&lt;br /&gt;
&lt;br /&gt;
Name: disableEchoCanceller&lt;br /&gt;
&lt;br /&gt;
Value: 1      ( or use, Value: 0 to enable the Echo Canceller)&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting Linux ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;​Citrix Workspace App must be installed before the myAppsPlugin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Innovaphone Plugin is installed under /opt/innovaphone/&#039;&#039;&#039;myAppsPlugin&#039;&#039;&#039; and in /opt/Citrix/ICAClient/&#039;&#039;&#039;myAppsCitrixPlugin.so&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
myAppsCitrixPlugin.so library is called by the Citrix Workspace App and this library opens the myAppsPlugin.&lt;br /&gt;
&lt;br /&gt;
There is a file in the Citrix installation called module.ini (/opt/Citrix/ICAClient/config/module.ini). ​Inside this file the myApps Citrix Plugin library is included:​&lt;br /&gt;
&lt;br /&gt;
- ​VirtualDriver entry must contain myAppsCitrixPlugin&lt;br /&gt;
&lt;br /&gt;
- a line with &#039;&#039;&#039;​myAppsCitrixPlugin=On&#039;&#039;&#039;​ must exist and &lt;br /&gt;
&lt;br /&gt;
Following directory &#039;&#039;&#039;/var/log/apps/myAppsPlugin/&#039;&#039;&#039; must also exist for the log files with write permission for everyone (drwxrwxrwx)&lt;br /&gt;
&lt;br /&gt;
====Recommendation for Linux Administrators (Audio)====&lt;br /&gt;
&lt;br /&gt;
For optimal and stable audio quality when using myapps on Linux, the following configuration is recommended:&lt;br /&gt;
&lt;br /&gt;
Use PulseAudio as the audio server&lt;br /&gt;
PipeWire may cause audio quality issues due to its PulseAudio compatibility layer.&lt;br /&gt;
&lt;br /&gt;
Set the system-wide sample rate to 48 kHz &lt;br /&gt;
Most USB headsets (e.g. Jabra) operate at 48 kHz.&lt;br /&gt;
Using 44.1 kHz causes unnecessary resampling and may degrade audio quality.&lt;br /&gt;
&lt;br /&gt;
Apply settings on OS level&lt;br /&gt;
Audio backend and sample rate are operating system settings and cannot be controlled by the application.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;THIS WILL NOT HELP YOU IF YOU HAVE NO AUDIO AT ALL&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You can check the Active audio server and samplerate with the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;pactl info&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Based on your language-settings you will get a different output.&lt;br /&gt;
But you want to look for something like &amp;quot;Server Name&amp;quot; and &amp;quot;Default-Sample-Specification&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The expected results are (Language set to English):&lt;br /&gt;
&lt;br /&gt;
Server Name: pulseaudio&lt;br /&gt;
&lt;br /&gt;
Default Sample Specification: s16le 2ch 48000Hz&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting MacOS ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;​Citrix Workspace App must be installed before the myAppsPlugin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In /Library/Application Support/Citrix/PlugIns&lt;br /&gt;
&lt;br /&gt;
must exist ​myAppsCitrixPlugin.plugin -&amp;gt; /Application/myappsPlugin.app/Contents/PlugIns/myapps_citrix_plugin.plugin&lt;br /&gt;
&lt;br /&gt;
​under:​&lt;br /&gt;
&lt;br /&gt;
​/Users/.../Library/Application Support/Citrix Receiver&lt;br /&gt;
&lt;br /&gt;
​​there is a file called Modules. ​Inside this file the myApps Plugin is included:​&lt;br /&gt;
&lt;br /&gt;
- ​VirtualDriver entry must contain myAppsCitrixPlugin&lt;br /&gt;
&lt;br /&gt;
- a line with myAppsCitrixPlugin=On must exist&lt;br /&gt;
&lt;br /&gt;
- and another line with [myAppsCitrixPlugin]  too&lt;br /&gt;
&lt;br /&gt;
​both things are done during the installation. In case something is not working must check that the link to the plugin exists and that the modules file contains these entries.&lt;br /&gt;
&lt;br /&gt;
​​And under /Users/.../Library/Containers/com.innovaphone.myapps-plugin-14r2/Data/Documents a log file is created: myAppsPlugin.txt&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting Citrix ===&lt;br /&gt;
A Virtual Channel Policy must be added to the Registry at the &#039;&#039;&#039;Citrix Server&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Create &#039;&#039;&#039;VCPolicies&#039;&#039;&#039; folder under &#039;&#039;&#039;HKLM/Software/Policies/Citrix&#039;&#039;&#039; if it does not exist.&lt;br /&gt;
&lt;br /&gt;
Create &#039;&#039;&#039;VCPolicies&#039;&#039;&#039; folder under &#039;&#039;&#039;HKLM/Software/WOW6432Node/Policies/Citrix&#039;&#039;&#039; if it does not exist.&lt;br /&gt;
&lt;br /&gt;
Create a REG_MULTI_SZ entry with the name &#039;&#039;&#039;VirtualChannelWhiteList&#039;&#039;&#039;. This entry must contain as value: &#039;&#039;&#039;INNOHDX,C:\Program Files (x86)\innovaphone\myApps\myApps.exe&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting RTP Stream ===&lt;br /&gt;
&lt;br /&gt;
You can analyze the RTP stream with the switch &amp;quot;--record-rtp-stream&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* RTP reception after Echo Canceller and JitterBuffer&lt;br /&gt;
* Audio from microphone and send to RTP&lt;br /&gt;
&lt;br /&gt;
You have to start the myApps client as follows: myApps.exe --record-rtp-stream&lt;br /&gt;
&lt;br /&gt;
After the call, you can find the audio files in the folder: C:\Users\...\AppData\Local\innovaphone\myApps&lt;br /&gt;
&lt;br /&gt;
Tool to listen to the RTP stream: Audacity&lt;br /&gt;
&lt;br /&gt;
Go to: File / Import / Raw Data and open the Folder with the Rtp stream and select the file.&lt;br /&gt;
&lt;br /&gt;
For RTP-Send and RTP-Recv Data, use the Audio Codec G711 -&amp;gt; A-Law and 8000 &lt;br /&gt;
&lt;br /&gt;
For the Wave-in (out) Data Use Signed 16-bit PCM and 8000 Abtastrate&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
&lt;br /&gt;
* https://wiki.innovaphone.com/index.php?title=Reference14r2:Concept_myApps&lt;br /&gt;
* https://wiki.innovaphone.com/index.php?title=Reference14r2:Concept_App_SoftphoneApp&lt;/div&gt;</summary>
		<author><name>Lme</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Service_Connector_for_kuando%C2%AE&amp;diff=78554</id>
		<title>Reference16r1:Concept App Service Connector for kuando®</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Service_Connector_for_kuando%C2%AE&amp;diff=78554"/>
		<updated>2025-12-01T07:33:26Z</updated>

		<summary type="html">&lt;p&gt;Lme: /* Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
[[Category:Concept App Service Connector for kuando®]]&lt;br /&gt;
&amp;lt;!-- busylight, busy lamp, busylamp, busy light, kuando, kuandohub, kuando hub, plenom, connector --&amp;gt;&lt;br /&gt;
== Applies To == &lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX from version 13r3&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
The basic aim of this app is to synchronize the busy status across innovaphone and other applications via a software called &amp;quot;kuandoHUB®&amp;quot;. Optionally, the control of a USB-busylight from the manufacturer &#039;&#039;Plenom&#039;&#039; / &#039;&#039;kuando®&#039;&#039; which is connected to the PC via USB and displays the current telephony status in different colors. You can checkout a [https://www.youtube.com/watch?v=wtFEswUKnTE short videotalk] about this solution.&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
For both solutions (with/without Busylight) a license is needed.&lt;br /&gt;
* &#039;&#039;&#039;license &amp;quot;App(innovaphone-kuando-with-busylight)&amp;quot;&#039;&#039;&#039; - a Busylight is required&lt;br /&gt;
* &#039;&#039;&#039;license &amp;quot;App(innovaphone-kuando)&amp;quot;&#039;&#039;&#039; - no busylight is required &lt;br /&gt;
&lt;br /&gt;
The license &amp;quot;App(innovaphone-kuando)&amp;quot; can ALSO be used for a Busylight setup. For example, if the setup is started without a Busylight, but in a later step the customer wants a Busylight.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Support to control (LED and Audio) a physical Busylight for calls in the innovaphone environment&lt;br /&gt;
* Support for virtual desktop environments, as myApps and &#039;&#039;kuandoHUB®&#039;&#039; communicate with each other via HTTP&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Additional Features in Windows Systems&#039;&#039;&#039;&lt;br /&gt;
* Synchronizes call state (line is free/busy) and presence between Innovaphone PBX and various 3rd Party Applications via &#039;&#039;kuandoHUB®&#039;&#039;&lt;br /&gt;
* Support to switch a myApps user to busy, when calling in a supported 3rd party application&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* innovaphone AppPlatform&lt;br /&gt;
* innovaphone myApps &lt;br /&gt;
* innovaphone SoftphoneApp or PhoneApp&lt;br /&gt;
* a separate .zip package called &amp;quot;Additional Software - Connector for kuando®&amp;quot; with additional Software which you can get from https://store.innovaphone.com/ in the tab &amp;quot;Software&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Setup with a physically Busylight ===&lt;br /&gt;
* A physically &#039;&#039;Plenom ®&#039;&#039; / &#039;&#039;kuando®&#039;&#039; USB-Busylight&lt;br /&gt;
* license &amp;quot;App(innovaphone-kuando-with-busylight)&amp;quot;&lt;br /&gt;
* Windows&lt;br /&gt;
** kuandoHUB® (minimum 2.1.1)&lt;br /&gt;
** Desired Windows kuandoHUB® Plugins and/or additional Plugins from [https://www.plenom.com/downloads/download-software/ kuando® Download Website]&lt;br /&gt;
*** Check the [[#Synchronization Concept kuandoHUB®|Synchronization Concept]] for supported 3rd-party Software&lt;br /&gt;
* MacOS&lt;br /&gt;
** kuandoHUB® (minimum 1.0.9)&lt;br /&gt;
** MacOS_BusylightHTTP (minimum 1.0.8)&lt;br /&gt;
&lt;br /&gt;
=== Setup without a physically Busylight ===&lt;br /&gt;
* license &amp;quot;App(innovaphone-kuando)&amp;quot;&lt;br /&gt;
* Windows&lt;br /&gt;
** kuandoHUB®-innovaphone (minimum 0.9.5)&lt;br /&gt;
** Supported Windows kuandoHUB® Plugins&lt;br /&gt;
*** MS Teams&lt;br /&gt;
*** Webex&lt;br /&gt;
*** Zoom&lt;br /&gt;
&lt;br /&gt;
;Important setup instructions&lt;br /&gt;
: Currently, the Zoom- and Team plugins include the presence priorities (available, away, busy etc.) per default, which we don’t want here.&amp;lt;br&amp;gt;&lt;br /&gt;
:In further versions, we will ignore these presence states. For the moment, please import the attached busylight_example.reg into your local Windows registry, which includes the correct states for Zoom and Teams, which is just the call state.&lt;br /&gt;
&lt;br /&gt;
== Concept ==&lt;br /&gt;
The basic concept is, to synchronize the callstates and presence across different software solutions and to meet the requirements of the respective user.&lt;br /&gt;
&lt;br /&gt;
From the user&#039;s point of view, he usually has several communication tools, but he can and usually only wants to make calls with one of these tools at the same time. This is exactly where the approach lies, in bringing together the respective status of various software.&lt;br /&gt;
&lt;br /&gt;
This approach is taken over by the &#039;&#039;kuandoHUB®&#039;&#039;. Any software can register to the &#039;&#039;kuandoHUB®&#039;&#039; as 3rd-party application and distribute his own information about active calls or current presence to them. The &#039;&#039;kuandoHUB®&#039;&#039; serves as a central collection point for all states and thus, forms the center of the integration. With an active registration to the &#039;&#039;kuandoHUB®&#039;&#039; every 3rd-party application can set and revoke his own states.&lt;br /&gt;
&lt;br /&gt;
Within the &#039;&#039;kuandoHUB®&#039;&#039; configuration, there is a software prioritization that can be defined by the user to obtain the desired behavior in each case. (Example: An &amp;quot;innovaphone call state&amp;quot; has a higher priority than a &amp;quot;Microsoft Teams presence note&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== Example flow ===&lt;br /&gt;
In this example, we would like to illustrate the flow of an incoming call in the innovaphone envrionment:&lt;br /&gt;
# The PBX tells myApps about a call &lt;br /&gt;
# myApps forward this information to the App &#039;&#039;Connector for kuando®&#039;&#039; &lt;br /&gt;
# The &#039;&#039;Connector for kuando®&#039;&#039; distribute this information to the HTTP-Interface of the kuandoHUB®&lt;br /&gt;
# optional: If you use the &#039;&#039;kuandoHUB®&#039;&#039;, it can communicate with the LED Lamp via USB&lt;br /&gt;
# Other 3rd-party applications are able to request for the current state and do stuff in his own environment with this&lt;br /&gt;
&lt;br /&gt;
The chain shown below acts in the opposite direction if, for example, a Skype call is received.&lt;br /&gt;
The result would be, that the user would be on the phone in Skype and would also be busy in the PBX and a corresponding call partner would be shown.&lt;br /&gt;
&lt;br /&gt;
[[Image:Kuando_connector_example_flow.png|kuando_connector_example_flow.png/]]&lt;br /&gt;
&lt;br /&gt;
=== Technical Overview ===&lt;br /&gt;
[[Image:Kuando_connector.png|kuando_connector.png/]]&lt;br /&gt;
&lt;br /&gt;
=== Technical Concept ===&lt;br /&gt;
We start the technical details in the myApps environment (top left of the picture). This is the starting point for a myApps user.&lt;br /&gt;
The admin has already assigned both apps (&#039;&#039;Connector for kuando®&#039;&#039; and &#039;&#039;Connector for kuando® config&#039;&#039;) to the user.&lt;br /&gt;
&lt;br /&gt;
;myApps&lt;br /&gt;
When starting myApps, only the app &#039;&#039;Connector for kuando® config&#039;&#039; is visible with an app icon, as the &#039;&#039;Connector for kuando®&#039;&#039; is a hidden app that should only have background tasks and will start automatically.&lt;br /&gt;
&lt;br /&gt;
If the user opens the app &#039;&#039;Connector for kuando® config&#039;&#039;, it authorizes itself to the appropriate PBX object, which has a connection to the app service of the same name of the respective app instance. &lt;br /&gt;
Likewise, a separate websocket connection is established from the client (the opened app) to the endpoint of the app instance, via which the app can speak directly with the app service.&lt;br /&gt;
In this case, user-specific configurations can be read from the database and saved via the connection to the app service.&lt;br /&gt;
&lt;br /&gt;
The same applies to the hidden service &#039;&#039;Connector for kuando®&#039;&#039;, which is automatically started as soon myApps is started. &lt;br /&gt;
Once the service has been started, it runs continuously in the background and serves the kuandoHUB®.&lt;br /&gt;
&lt;br /&gt;
;kuandoHUB®&lt;br /&gt;
If you want to use a physically USB Busylight, you can use the &#039;&#039;kuandoHUB®&#039;&#039; (center left in the picture). It forms a kind of collection point to which all applications on the PC (&#039;&#039;myApps&#039;&#039;, &#039;&#039;Skype&#039;&#039;, &#039;&#039;MS Teams&#039;&#039;, &#039;&#039;Webex&#039;&#039;, etc.) can communicate their current status.&lt;br /&gt;
&lt;br /&gt;
Within the &#039;&#039;kuandoHUB®&#039;&#039;, there is a user configuration to achieve a weighting of the different solutions.&lt;br /&gt;
(Example: An &amp;quot;innovaphone call state&amp;quot; should have a higher priority than a &amp;quot;Microsoft Teams presence note&amp;quot;).&lt;br /&gt;
Based on this weighting, exactly one status is always gained and used as the current status.&lt;br /&gt;
&lt;br /&gt;
The colour of the selected status is displayed by the &#039;&#039;kuandoHUB®&#039;&#039; on the installed USB lamp. If you have connected several busylights, they will all be controlled in parallel. In addition, the &#039;&#039;kuandoHUB®&#039;&#039; provides an interface with which any software can query the current status.&lt;br /&gt;
&lt;br /&gt;
This means, for example:&lt;br /&gt;
Skype can report an active call. The &#039;&#039;kuandoHUB®&#039;&#039; sets the lamp to red and knows that an active call is running in the &#039;&#039;Skype&#039;&#039; software. myApps can now query the current status and knows that the user has an active call in &#039;&#039;Skype&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
kuando® offers a small mini installation for download per supported 3rd party application.&lt;br /&gt;
That means, if you want to use this solution with Skype, you have to install the &#039;&#039;kuandoHUB®&#039;&#039; and the &#039;&#039;kuando® Skype Extension&#039;&#039;.&lt;br /&gt;
If you want to use &#039;&#039;Skype&#039;&#039; and &#039;&#039;Webex&#039;&#039;, you have to install both the &#039;&#039;Skype Extension&#039;&#039; and the &#039;&#039;Webex Extension&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
When recognizing calls, it is important that no calls can be recognized in a web session.  If you want &#039;&#039;MS Teams&#039;&#039; calls to be recognized, for example, you must have installed the extension and use the client for the call and not participate in a session in the browser.&lt;br /&gt;
As a rule, it is sufficient to have the client installed. If you then receive an invitation to a conference from an external contact, the installed client opens automatically, if available.&lt;br /&gt;
&lt;br /&gt;
;kuandoHUB® innovaphone Edition&lt;br /&gt;
If you don&#039;t want to use a physically USB Busylight, you can use the &#039;&#039;kuandoHUB® innovaphone Edition&#039;&#039; (center left in the picture). It forms a kind of collection point to which supported applications on the PC can communicate their current status.&lt;br /&gt;
&lt;br /&gt;
Within the &#039;&#039;kuandoHUB® innovaphone Edition&#039;&#039; there is no configuration.&lt;br /&gt;
&lt;br /&gt;
kuando® offers a small mini installation for download per supported 3rd party application.&lt;br /&gt;
That means, if you want to use this solution with MS-Teams, you have to install the &#039;&#039;kuandoHUB® innovaphone Edition&#039;&#039; and the &#039;&#039;kuando® MS-Teams Extension&#039;&#039;.&lt;br /&gt;
If you want to use &#039;&#039;MS-Teams&#039;&#039; and &#039;&#039;Webex&#039;&#039;, you have to install both the &#039;&#039;MS-Teams Extension&#039;&#039; and the &#039;&#039;Webex Extension&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
When recognizing calls, it is important that no calls can be recognized in a web session.  If you want &#039;&#039;MS Teams&#039;&#039; calls to be recognized, for example, you must have installed the extension and use the client for the call and not participate in a session in the browser.&lt;br /&gt;
As a rule, it is sufficient to have the client installed. If you then receive an invitation to a conference from an external contact, the installed client opens automatically, if available.&lt;br /&gt;
&lt;br /&gt;
=== Synchronization Concept kuandoHUB® ===&lt;br /&gt;
It is not trivial to reconcile the various statuses of active phone calls, conferences and presences.&lt;br /&gt;
The following rules apply for prioritizing to a single status.&lt;br /&gt;
&lt;br /&gt;
# Calls overwrite presence information&lt;br /&gt;
# A manual presence in myApps overwrite a presence from &#039;&#039;kuandoHUB®&#039;&#039;&lt;br /&gt;
# The prioritization of the active state (only one is possible) results from the &#039;&#039;kuandoHUB®&#039;&#039; configuration. (see: [[#kuandoHUB® prioritization|kuandoHUB® prioritization]])&lt;br /&gt;
&lt;br /&gt;
The following states are supported by myApps: &amp;lt;code&amp;gt;free, busy, away, dnd, onthephone&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We will use the following mapping to apply the names state from a 3rd-party software that submit their state via &#039;&#039;kuandoHUB®&#039;&#039; to myApps:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;2&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! kuandoHUB® platform / Source Software &lt;br /&gt;
! Event(s)&lt;br /&gt;
! Transformed myApps State&lt;br /&gt;
|-&lt;br /&gt;
| 3CX&lt;br /&gt;
| Call Alert, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Alcatel Rainbow Office&lt;br /&gt;
| Call Alert, In-a-Conference, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Atos Unify Office&lt;br /&gt;
| Call Alert, In-a-Conference, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Avaya Cloud Office&lt;br /&gt;
| Call Alert, In-a-Conference, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Avaya Workplace&lt;br /&gt;
| Call Alert, In a call&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Avaya One-X Communicator&lt;br /&gt;
| Call alert, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| AT&amp;amp;T Office@Hand&lt;br /&gt;
| Call Alert, In-a-Conference, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| BT Cloud Work&lt;br /&gt;
| Call Alert, In-a-Conference, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Cisco Jabber&lt;br /&gt;
| Call Alert, In-a-Conference, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Ecotel&lt;br /&gt;
| Call Alert, In-a-Conference, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Eastlink&lt;br /&gt;
| Call Alert, In-a-Conference, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| MS Teams&lt;br /&gt;
| On-The-Phone, In-a-Conference, Call Alert&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Plantronics Hub&lt;br /&gt;
| Call Alert, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| RingCentral Unified&lt;br /&gt;
| Call Alert, On-The-Phone, In-a-Conference&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| RingCentral Softphone&lt;br /&gt;
| Call alert, In a call&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Slack&lt;br /&gt;
| Call-Alert, On-The-Phone, In-A-Meeting&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Symphony&lt;br /&gt;
| Call Alert, On-The-Phone, In-A-Conference&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| TELUS Business Connect&lt;br /&gt;
| Call Alert, On-The-Phone, In-a-Conference&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Broadsoft UC-One&lt;br /&gt;
| Call Alert, On-The-Phone, In-a-Conference&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Jabra&lt;br /&gt;
| Call Alert, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Verizon&lt;br /&gt;
| Call Alert, On-The-Phone, In-a-Conference&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Vodafone&lt;br /&gt;
| Call Alert, On-The-Phone, In-a-Conference&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Webex&lt;br /&gt;
| Call Alert, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Zoom&lt;br /&gt;
| Call Alert, In-a-Zoom-Meeting&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Manual Changer&lt;br /&gt;
| Available, LTM (listen the music), Off&lt;br /&gt;
| free&lt;br /&gt;
|-&lt;br /&gt;
| Manual Changer&lt;br /&gt;
| Busy&lt;br /&gt;
| busy&lt;br /&gt;
|-&lt;br /&gt;
| Manual Changer&lt;br /&gt;
| Away, NAW (not at work)&lt;br /&gt;
| away&lt;br /&gt;
|-&lt;br /&gt;
| Manual Changer&lt;br /&gt;
| DND&lt;br /&gt;
| dnd&lt;br /&gt;
|-&lt;br /&gt;
| Manual Changer&lt;br /&gt;
| Lunch&lt;br /&gt;
| lunch (implicit away with lunch message)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A software or event that is not listed in the mapping table above result in &#039;&#039;none&#039;&#039;, which have no effect to call state or presence state. In this case, you will see &amp;lt;code&amp;gt;transforming: ignored, sending application is unknown&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;transforming: ignored, sending event is unknown&amp;lt;/code&amp;gt; in the myApps trace.&lt;br /&gt;
It is possible that new/different commands may be sent from third party applications in the future. If you have an application that is not on this list, but a &#039;&#039;kuandoHUB®&#039;&#039; plugin exists for it, please let us know.&lt;br /&gt;
&lt;br /&gt;
=== Specialities for some kuandoHub® plugins ===&lt;br /&gt;
&lt;br /&gt;
Please note: innovaphone supports a variety of &amp;quot;commands&amp;quot; and &amp;quot;states&amp;quot; produced by external third-party applications. innovaphone cannot and has not tested every single third-party application, and cannot provide detailed information about the dedicated configuration of a specific third-party application. Nevertheless, we are happy to list special configurations hints to be aware of with the respective third-party applications.&lt;br /&gt;
&lt;br /&gt;
==== Zoom ====&lt;br /&gt;
You have to be logged on with your account in the Zoom client, otherwise Zoom will not broadcast the state.&lt;br /&gt;
&lt;br /&gt;
==== MS Teams ====&lt;br /&gt;
After installing and starting the &amp;quot;Busylight for MS Teams&amp;quot; plugin from plenom, this popup might be shown:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:Busylight teams popup.jpg|busylight_teams_popup.jpg/]]&lt;br /&gt;
&lt;br /&gt;
You have to follow the instructions from the popup, to make the teams-plugin work.&lt;br /&gt;
&lt;br /&gt;
This is caused by the [[Reference13r3:Concept myApps Office Integration| myApps Office Integration]], which sets myApps as &amp;quot;default IM Provider&amp;quot; in the Windows Registry, at every start of myApps.&lt;br /&gt;
But for the kuando-teams-plugin to work, Microsoft Teams needs to be set as &amp;quot;default IM Provider&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
So after every restart of the computer, you have to make these changes in team.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get rid of it permanently, the only solution is, to disable the Office Integration in myApps.&amp;lt;br /&amp;gt;&lt;br /&gt;
If myApps is already installed, you have to disable it via registry entry on the Windows host. [[Reference13r1:Concept myApps platform services#MSI Parameters and install options| Here]] you can find all information, regarding the entry.&lt;br /&gt;
This entry can also be deployed via .msi-file, as written in the same section.&lt;br /&gt;
&lt;br /&gt;
Also for new myApps installations, you can disable the Office Integration in the setup process (activate &amp;quot;disable Office Integration&amp;quot; there).&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To sum it up and since only one default IM Provider can exist (Microsoft restriction, not from our side), you can&#039;t use the Office Intregration anymore, if you want to use the Teams plugin for kuandoHUB®.&lt;br /&gt;
&lt;br /&gt;
=== Synchronization kuandoHUB®-innovaphone ===&lt;br /&gt;
As mentioned [[Reference13r3:Concept App Service Connector for kuando®#Setup without a physically Busylight| above]], currently the only supported plenom plugins are:&lt;br /&gt;
* MS Teams&lt;br /&gt;
* Webex&lt;br /&gt;
* Zoom&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Apps ==&lt;br /&gt;
&lt;br /&gt;
=== Connector for kuando® App (innovaphone-kuando) ===&lt;br /&gt;
This endpoint provides all the necessary components for the background process to talk to the &#039;&#039;kuandoHUB®&#039;&#039;, the LED lamp and the PBX and to perform the respective call state or presence updates.&lt;br /&gt;
&lt;br /&gt;
=== Connector for kuando® Config App (innovaphone-kuando-config) ===&lt;br /&gt;
This endpoint provides the user an app, for a test of the local LED lamp and a frontend for user-specific configurations and tracing settings.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
=== innovaphone configuration ===&lt;br /&gt;
==== Creating app objects via PBX Manager ====&lt;br /&gt;
After you have installed the App and create an instance, the PBX Manager provides a plugin to perform the configuration. Two apps need to be created at this point. &lt;br /&gt;
* &#039;&#039;Connector for kuando®&#039;&#039; which is not visible to the user and runs purely as a hidden service in the user&#039;s myApps environment to communicate with the &#039;&#039;kuandoHUB®&#039;&#039; in background.&lt;br /&gt;
* &#039;&#039;Connector for kuando® Config&#039;&#039; which gives the user the possibility to test his physical LED lamp and to make local settings if necessary.&lt;br /&gt;
&lt;br /&gt;
Afterwards, you have to distribute both apps directly via configuration at the user or via config template.&lt;br /&gt;
&lt;br /&gt;
Also make sure, that the user has a Connector for kuando® App license (innovaphone-kuando) assigned.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: The apps should only be activated for users who actually use them. Since the service is always started in the background, many unnecessary log files are written if the kuandoHUB® is not rechable and repeated attempts are made to reach the kuandoHUB®.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Creating app objects manually ====&lt;br /&gt;
If you don&#039;t want to use the PBX Manager and rather create the App objects manually: &lt;br /&gt;
* Create two App objects - one for the connector for kuando and for the connector for kuando config&lt;br /&gt;
* Name them properly&lt;br /&gt;
* Set the correct App URL, which points to the app instance on the AP&lt;br /&gt;
* set the required config options&lt;br /&gt;
&lt;br /&gt;
Example for App &#039;&#039;&#039;Connector for Kuando&#039;&#039;&#039; app object&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;URL Example:&#039;&#039;&#039; &#039;&#039;https://ap.domain.com/domain.com/kuandoconnector/innovaphone-kuando&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Options to activate:&#039;&#039;&#039; &#039;&#039;Hidden, Websocket, Admin, PbxApi&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for App &#039;&#039;&#039;Connector for Kuando Config&#039;&#039;&#039; app object&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;URL Example:&#039;&#039;&#039; &#039;&#039;https://ap.domain.com/domain.com/kuandoconnector/innovaphone-kuando-config&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Options to activate:&#039;&#039;&#039; none&lt;br /&gt;
&lt;br /&gt;
=== kuandoHUB® configuration ===&lt;br /&gt;
In the left menu you find an entry &#039;&#039;Plattform-Prioritäten&#039;&#039;. There you have to set a default configuration.&lt;br /&gt;
* Set the source &#039;&#039;Manual Changer&#039;&#039; to the bottom of the List and enable the checkmark &#039;&#039;Aktiv&#039;&#039;&lt;br /&gt;
* Navigate in the left menu to &#039;&#039;Farben&#039;&#039; and select the green one&lt;br /&gt;
&lt;br /&gt;
With this setup, you have a default configuration, that your lamp shows a green color if no other software distribute a status.&lt;br /&gt;
&lt;br /&gt;
The HTTP Server function must also be activated in the advanced settings.&lt;br /&gt;
&lt;br /&gt;
==== kuandoHUB® prioritization ====&lt;br /&gt;
In the &#039;&#039;kuandoHUB®&#039;&#039; you can check the currently active states. It will be indicated with a gray background in the 3rd party software list.&lt;br /&gt;
&#039;&#039;&#039;It is very important that presence states that &amp;quot;free signal&amp;quot; like &amp;quot;Free / Available&amp;quot; such as &amp;quot;MS Teams / available&amp;quot; are deactivated in the &#039;&#039;kuandoHUB®&#039;&#039;, otherwise they may overwrite other states.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Also you have to sort you events in the &#039;&#039;kuandoHUB®&#039;&#039; configuration. Make sure that all telephone events (ringing, busy, on the phone, ...) are of higher value than simple presence events. You can download [[index.php?title=Media:Default kuando prioritiesbackup.zip|&#039;&#039;&#039;&#039;&#039;here&#039;&#039;&#039;&#039;&#039;]] a sample configuration file.&lt;br /&gt;
&lt;br /&gt;
=== kuandoHUB® innovaphone Edition ===&lt;br /&gt;
There is no configuration UI.&lt;br /&gt;
&lt;br /&gt;
== Special Setups ==&lt;br /&gt;
=== Using a remote busylight ===&lt;br /&gt;
If the busylight isn&#039;t connected locally on the same client, where you use myApps - for example in a Citrix environment, where myApps is started inside the environment, but the busylight is connected at the local computer -, you can still access the busylight with some configuration on the local client.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Configuration on the client, where the busylight is physically connected&#039;&#039;&#039;&lt;br /&gt;
* install the kuandoHUB® software&lt;br /&gt;
* If you use a remote workplace, in the windows registry will be a new REG_DWORD with the name &amp;quot;http_port&amp;quot;created under the path &amp;lt;code&amp;gt;Computer\HKEY_CURRENT_USER\Software\Busylight&amp;lt;/code&amp;gt; &lt;br /&gt;
* create an incoming Windows Firewall entry, where incoming traffic to tcp port &#039;&#039;&#039;****&#039;&#039;&#039; is allowed&lt;br /&gt;
** Windows-Powershell command for this: &amp;lt;code&amp;gt;New-NetFirewallRule -DisplayName &amp;quot;Allow Busylight HTTP Port [PORT]&amp;quot; -Direction Inbound -Action Allow -EdgeTraversalPolicy Allow -Protocol TCP -LocalPort [PORT]&amp;lt;/code&amp;gt;&lt;br /&gt;
* create an entry in the &#039;&#039;&#039;http.sys&#039;&#039;&#039;-file for the URL example: http://+:8989/ &lt;br /&gt;
** Windows-Powershell command for this: &amp;lt;code&amp;gt;netsh http add urlacl url=http://+:[PORT]/ user=DOMAIN\user&amp;lt;/code&amp;gt; - change the &amp;quot;user&amp;quot;-part to your needs.&lt;br /&gt;
* make sure, that &#039;&#039;&#039;HTTP Server&#039;&#039;&#039; is activated in the kuandoHUB® softwares advanced settings&lt;br /&gt;
** registry entry for this is: entry type &#039;&#039;&#039;&amp;quot;REG_DWORD&amp;quot;&#039;&#039;&#039;, name &#039;&#039;&#039;&amp;quot;http_enabled&amp;quot;&#039;&#039;&#039;, value &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
* restart the kuandoHUB®&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Configuration on the client, where myApps is installed&#039;&#039;&#039;&lt;br /&gt;
* open the &#039;&#039;&#039;CONNECTOR FOR KUANDO CONFIG&#039;&#039;&#039;-App&lt;br /&gt;
* set the &#039;&#039;&#039;HTTP Server URL:&#039;&#039;&#039; according to the clients IP address and port, where the busylight is physically connected to&lt;br /&gt;
** example: &#039;&#039;&#039;http://192.168.0.100:8989&#039;&#039;&#039;&lt;br /&gt;
* enter the &#039;&#039;&#039;HTTP Server access token:&#039;&#039;&#039;, which you can either copy from the kuandoHUB® (advanced settings), or the registry&lt;br /&gt;
** if no registry entry exist, you can create one: entry type &#039;&#039;&#039;&amp;quot;REG_SZ&amp;quot;&#039;&#039;&#039;, name it &#039;&#039;&#039;&amp;quot;http_token&amp;quot;&#039;&#039;&#039;, and set the value to whatever you want - a crypto entry is recommended&lt;br /&gt;
&lt;br /&gt;
Now the busylight can be used, even from an remote computer.&lt;br /&gt;
For more information, the kuandoHUB® manual can be found in the downloaded kuandoHUB® setup folder.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IMPORTANT:&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
You have to use the myApps Launcher for this special setup, since Web-Browsers doesn&#039;t allow mixed content, which is needed (kuandoHUB® use http, whereas myApps uses https).&lt;br /&gt;
&lt;br /&gt;
=== Using kuandoHUB® in a remote environment ===&lt;br /&gt;
When kuandoHUB® is started in a remote environment, it uses dynamic ports so that multiple users can use the kuandoHUB® at the same time.&lt;br /&gt;
myApps must connect to this port. In this scenario, kuandoHUB® stores the port in the registry and myapps checks whether a dynamic port must be used.&lt;br /&gt;
&lt;br /&gt;
If such a dynamic port is found in the registry, it temporarily overwrites the connection configuration in the app.&lt;br /&gt;
&lt;br /&gt;
You see this in the logfile:&lt;br /&gt;
 kuando-log: Overwrite local http port with http://localhost:1234&lt;br /&gt;
&lt;br /&gt;
=== Simultaneous use of &amp;quot;Connector for kuando&amp;quot; and &amp;quot;Connector for Office365&amp;quot; ===&lt;br /&gt;
To support the coexistence of both apps, the user can activate the &#039;&#039;Ignore MS Teams&#039;&#039; option in their configuration.&lt;br /&gt;
This means that incoming MS Teams actions are ignored, as they are processed by the &#039;&#039;Connector for Office365&#039;&#039; app.&lt;br /&gt;
Otherwise, you end up in a situation where a call remains in the PBX even though it has been hung up in MS Teams.&lt;br /&gt;
&lt;br /&gt;
== Known Limitation ==&lt;br /&gt;
&lt;br /&gt;
=== myApps Office Integration won&#039;t work, if MS Teams plugin is used===&lt;br /&gt;
As mentioned [[#MS Teams|above]], the [[Reference13r3:Concept myApps Office Integration| myApps Office Integration]] can&#039;t be used anymore, if you use the MS teams plugin for kuandoHUB®.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
Troubleshooting can be a bit tricky at this point. You should first think about which side the error is on, in order to be able to approach it accordingly.&lt;br /&gt;
&lt;br /&gt;
=== myApps site ===&lt;br /&gt;
&lt;br /&gt;
The configuration app will show some red warning banner:&lt;br /&gt;
* no license&lt;br /&gt;
* no kuandoHUB® detected&lt;br /&gt;
* to old kuandoHUB® version&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t see a red error message at the top of the app, you should go ahead to find your issue.&lt;br /&gt;
&lt;br /&gt;
==== Tracing ====&lt;br /&gt;
You will find trace output in the browser console, or in the myApps log if you have enabled before the trace flags &#039;&#039;browser console&#039;&#039; in the myApps launcher trace options.&lt;br /&gt;
&lt;br /&gt;
To better understand the logfile flow, you here will find a sample startup if the hidden service is closed (you have no calls before) and you get an incoming call.&lt;br /&gt;
 open kuando url=https://...&lt;br /&gt;
 started: kuando (hidden)&lt;br /&gt;
 ...&lt;br /&gt;
 send to kuando: {&amp;quot;mt&amp;quot;:&amp;quot;ApiUpdate&amp;quot;,&amp;quot;apis&amp;quot;:{&amp;quot;com.innovaphone.notificationhandler&amp;quot;:{...&lt;br /&gt;
 ...&lt;br /&gt;
 kuando-log: start.url=wss://... start.originalUrl=https://...&lt;br /&gt;
 kuando-log: debug - lamp_myapps_state: free&lt;br /&gt;
 kuando-log: debug - lamp_call_state: free&lt;br /&gt;
 kuando-log: debug - kuando_hub_installed: undefined&lt;br /&gt;
 kuando-log: debug - count_calls: 0&lt;br /&gt;
 ...&lt;br /&gt;
 kuando-log: app not initialized, sleep&lt;br /&gt;
 ...&lt;br /&gt;
 kuando-log: Instance Connected&lt;br /&gt;
 kuando-log: init http post request: http://localhost:8989/?http_token=&lt;br /&gt;
 kuando-log: init http get request: http://localhost:8989/?action=currentpresence&amp;amp;http_token=&lt;br /&gt;
 kuando-log: 3rd party state result: innovaphone myApps / Blink / Blink&lt;br /&gt;
&lt;br /&gt;
You see that there is a prefix in all needed logfiles.&lt;br /&gt;
&lt;br /&gt;
So it is a good thing to filter for:&lt;br /&gt;
* &amp;lt;code&amp;gt;kuando-log:&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;kuando-config-log:&amp;lt;/code&amp;gt; &lt;br /&gt;
* or use a regex to get all relevant logfiles &amp;lt;code&amp;gt;/(kuando-config-log|kuando-log)/&amp;lt;/code&amp;gt;&lt;br /&gt;
to see all the output from the specific app.&lt;br /&gt;
&lt;br /&gt;
==== Test the kuandoHUB® connection ====&lt;br /&gt;
* You can use the &#039;&#039;Connector for kuando® Config App&#039;&#039; to test the connection and test the UBS-Busylight&lt;br /&gt;
* You can test the functionality of your local &#039;&#039;kuandoHUB®&#039;&#039;, if you open the URL &amp;lt;code&amp;gt;http://localhost:8989/&amp;lt;/code&amp;gt;. If you get this JSON output &amp;lt;code&amp;gt;{&amp;quot;response&amp;quot;: &amp;quot;OK&amp;quot;}&amp;lt;/code&amp;gt; it works fine.&lt;br /&gt;
&lt;br /&gt;
==== Nothing happens / I do not see related logfiles in the console ====&lt;br /&gt;
* Make sure, that the user has a valid license. If not you will see a error message in the &#039;&#039;Connector for kuando® Config App&#039;&#039; or the following message in your myApps trace: &amp;lt;code&amp;gt;kuando-log: no app license, stop service&amp;lt;/code&amp;gt;&lt;br /&gt;
* Make sure, that the user has configured a &amp;quot;default telephony app&amp;quot; in his myApps or started the phone app. (If no phone app is opened a standard app has to be defined, that the PBX can wake up the associated phone app. Waking up the phone app implicitly wakes up the &#039;&#039;Connector for kuando® App&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
=== kuandoHUB® site ===&lt;br /&gt;
&lt;br /&gt;
==== kuandoHUB® traces ====&lt;br /&gt;
You don&#039;t have direct logfiles of the kuandoHUB®, but there is a solution from Microsoft called [https://docs.microsoft.com/en-us/sysinternals/downloads/debugview Debug view] which the kuandoHUB® uses for its debug output.&lt;br /&gt;
You only need to start the software &#039;&#039;Debug view&#039;&#039;. No further configuration is necessary.&lt;br /&gt;
All debug outputs of current processes that support the &#039;&#039;Debug View&#039;&#039; method are recorded directly. You can then save these log files.&lt;br /&gt;
&lt;br /&gt;
==== Support Case ====&lt;br /&gt;
If you have problems with the kuandoHUB® or a kuandoHUB®-Plugin for a third-party software, you can open a corresponding ticket with Plenom at [mailto:support@plenom.com support@plenom.com].&lt;br /&gt;
&lt;br /&gt;
==== Problem with Office 365 Cloud ====&lt;br /&gt;
For each mail Outlook show: &amp;quot;Ein Programm versucht, auf Ihre in Outlook gespeicherten Informationen zu E-Mail-Adressen zuzugreifen. ...&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Solution&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Configure and activate all Outlook functions in kuando hub. Send an E-Mail and now the light goes purple. Now deactivate the service and delete this service in &amp;quot;Plattformprioritäten&amp;quot;. Outlook will now automatically shut down. Now the service of kuando is deinstalled in outlook.&lt;/div&gt;</summary>
		<author><name>Lme</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Service_Connector_for_kuando%C2%AE&amp;diff=78537</id>
		<title>Reference16r1:Concept App Service Connector for kuando®</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference16r1:Concept_App_Service_Connector_for_kuando%C2%AE&amp;diff=78537"/>
		<updated>2025-11-25T10:08:49Z</updated>

		<summary type="html">&lt;p&gt;Lme: /* Special Setups */ change for new kuando remote busy light&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
[[Category:Concept App Service Connector for kuando®]]&lt;br /&gt;
&amp;lt;!-- busylight, busy lamp, busylamp, busy light, kuando, kuandohub, kuando hub, plenom, connector --&amp;gt;&lt;br /&gt;
== Applies To == &lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX from version 13r3&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
The basic aim of this app is to synchronize the busy status across innovaphone and other applications via a software called &amp;quot;kuandoHUB®&amp;quot;. Optionally, the control of a USB-busylight from the manufacturer &#039;&#039;Plenom&#039;&#039; / &#039;&#039;kuando®&#039;&#039; which is connected to the PC via USB and displays the current telephony status in different colors. You can checkout a [https://www.youtube.com/watch?v=wtFEswUKnTE short videotalk] about this solution.&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
For both solutions (with/without Busylight) a license is needed.&lt;br /&gt;
* &#039;&#039;&#039;license &amp;quot;App(innovaphone-kuando-with-busylight)&amp;quot;&#039;&#039;&#039; - a Busylight is required&lt;br /&gt;
* &#039;&#039;&#039;license &amp;quot;App(innovaphone-kuando)&amp;quot;&#039;&#039;&#039; - no busylight is required &lt;br /&gt;
&lt;br /&gt;
The license &amp;quot;App(innovaphone-kuando)&amp;quot; can ALSO be used for a Busylight setup. For example, if the setup is started without a Busylight, but in a later step the customer wants a Busylight.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Support to control (LED and Audio) a physical Busylight for calls in the innovaphone environment&lt;br /&gt;
* Support for virtual desktop environments, as myApps and &#039;&#039;kuandoHUB®&#039;&#039; communicate with each other via HTTP&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Additional Features in Windows Systems&#039;&#039;&#039;&lt;br /&gt;
* Synchronizes call state (line is free/busy) and presence between Innovaphone PBX and various 3rd Party Applications via &#039;&#039;kuandoHUB®&#039;&#039;&lt;br /&gt;
* Support to switch a myApps user to busy, when calling in a supported 3rd party application&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* innovaphone AppPlatform&lt;br /&gt;
* innovaphone myApps &lt;br /&gt;
* innovaphone SoftphoneApp or PhoneApp&lt;br /&gt;
* a separate .zip package called &amp;quot;Additional Software - Connector for kuando®&amp;quot; with additional Software which you can get from https://store.innovaphone.com/ in the tab &amp;quot;Software&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Setup with a physically Busylight ===&lt;br /&gt;
* A physically &#039;&#039;Plenom ®&#039;&#039; / &#039;&#039;kuando®&#039;&#039; USB-Busylight&lt;br /&gt;
* license &amp;quot;App(innovaphone-kuando-with-busylight)&amp;quot;&lt;br /&gt;
* Windows&lt;br /&gt;
** kuandoHUB® (minimum 1.1.14.4)&lt;br /&gt;
** Desired Windows kuandoHUB® Plugins and/or additional Plugins from [https://www.plenom.com/downloads/download-software/ kuando® Download Website]&lt;br /&gt;
*** Check the [[#Synchronization Concept kuandoHUB®|Synchronization Concept]] for supported 3rd-party Software&lt;br /&gt;
* MacOS&lt;br /&gt;
** kuandoHUB® (minimum 1.0.9)&lt;br /&gt;
** MacOS_BusylightHTTP (minimum 1.0.8)&lt;br /&gt;
&lt;br /&gt;
=== Setup without a physically Busylight ===&lt;br /&gt;
* license &amp;quot;App(innovaphone-kuando)&amp;quot;&lt;br /&gt;
* Windows&lt;br /&gt;
** kuandoHUB®-innovaphone (minimum 0.9.1)&lt;br /&gt;
** Supported Windows kuandoHUB® Plugins&lt;br /&gt;
*** MS Teams&lt;br /&gt;
*** Webex&lt;br /&gt;
*** Zoom&lt;br /&gt;
&lt;br /&gt;
;Important setup instructions&lt;br /&gt;
: Currently, the Zoom- and Team plugins include the presence priorities (available, away, busy etc.) per default, which we don’t want here.&amp;lt;br&amp;gt;&lt;br /&gt;
:In further versions, we will ignore these presence states. For the moment, please import the attached busylight_example.reg into your local Windows registry, which includes the correct states for Zoom and Teams, which is just the call state.&lt;br /&gt;
&lt;br /&gt;
== Concept ==&lt;br /&gt;
The basic concept is, to synchronize the callstates and presence across different software solutions and to meet the requirements of the respective user.&lt;br /&gt;
&lt;br /&gt;
From the user&#039;s point of view, he usually has several communication tools, but he can and usually only wants to make calls with one of these tools at the same time. This is exactly where the approach lies, in bringing together the respective status of various software.&lt;br /&gt;
&lt;br /&gt;
This approach is taken over by the &#039;&#039;kuandoHUB®&#039;&#039;. Any software can register to the &#039;&#039;kuandoHUB®&#039;&#039; as 3rd-party application and distribute his own information about active calls or current presence to them. The &#039;&#039;kuandoHUB®&#039;&#039; serves as a central collection point for all states and thus, forms the center of the integration. With an active registration to the &#039;&#039;kuandoHUB®&#039;&#039; every 3rd-party application can set and revoke his own states.&lt;br /&gt;
&lt;br /&gt;
Within the &#039;&#039;kuandoHUB®&#039;&#039; configuration, there is a software prioritization that can be defined by the user to obtain the desired behavior in each case. (Example: An &amp;quot;innovaphone call state&amp;quot; has a higher priority than a &amp;quot;Microsoft Teams presence note&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== Example flow ===&lt;br /&gt;
In this example, we would like to illustrate the flow of an incoming call in the innovaphone envrionment:&lt;br /&gt;
# The PBX tells myApps about a call &lt;br /&gt;
# myApps forward this information to the App &#039;&#039;Connector for kuando®&#039;&#039; &lt;br /&gt;
# The &#039;&#039;Connector for kuando®&#039;&#039; distribute this information to the HTTP-Interface of the kuandoHUB®&lt;br /&gt;
# optional: If you use the &#039;&#039;kuandoHUB®&#039;&#039;, it can communicate with the LED Lamp via USB&lt;br /&gt;
# Other 3rd-party applications are able to request for the current state and do stuff in his own environment with this&lt;br /&gt;
&lt;br /&gt;
The chain shown below acts in the opposite direction if, for example, a Skype call is received.&lt;br /&gt;
The result would be, that the user would be on the phone in Skype and would also be busy in the PBX and a corresponding call partner would be shown.&lt;br /&gt;
&lt;br /&gt;
[[Image:Kuando_connector_example_flow.png|kuando_connector_example_flow.png/]]&lt;br /&gt;
&lt;br /&gt;
=== Technical Overview ===&lt;br /&gt;
[[Image:Kuando_connector.png|kuando_connector.png/]]&lt;br /&gt;
&lt;br /&gt;
=== Technical Concept ===&lt;br /&gt;
We start the technical details in the myApps environment (top left of the picture). This is the starting point for a myApps user.&lt;br /&gt;
The admin has already assigned both apps (&#039;&#039;Connector for kuando®&#039;&#039; and &#039;&#039;Connector for kuando® config&#039;&#039;) to the user.&lt;br /&gt;
&lt;br /&gt;
;myApps&lt;br /&gt;
When starting myApps, only the app &#039;&#039;Connector for kuando® config&#039;&#039; is visible with an app icon, as the &#039;&#039;Connector for kuando®&#039;&#039; is a hidden app that should only have background tasks and will start automatically.&lt;br /&gt;
&lt;br /&gt;
If the user opens the app &#039;&#039;Connector for kuando® config&#039;&#039;, it authorizes itself to the appropriate PBX object, which has a connection to the app service of the same name of the respective app instance. &lt;br /&gt;
Likewise, a separate websocket connection is established from the client (the opened app) to the endpoint of the app instance, via which the app can speak directly with the app service.&lt;br /&gt;
In this case, user-specific configurations can be read from the database and saved via the connection to the app service.&lt;br /&gt;
&lt;br /&gt;
The same applies to the hidden service &#039;&#039;Connector for kuando®&#039;&#039;, which is automatically started as soon myApps is started. &lt;br /&gt;
Once the service has been started, it runs continuously in the background and serves the kuandoHUB®.&lt;br /&gt;
&lt;br /&gt;
;kuandoHUB®&lt;br /&gt;
If you want to use a physically USB Busylight, you can use the &#039;&#039;kuandoHUB®&#039;&#039; (center left in the picture). It forms a kind of collection point to which all applications on the PC (&#039;&#039;myApps&#039;&#039;, &#039;&#039;Skype&#039;&#039;, &#039;&#039;MS Teams&#039;&#039;, &#039;&#039;Webex&#039;&#039;, etc.) can communicate their current status.&lt;br /&gt;
&lt;br /&gt;
Within the &#039;&#039;kuandoHUB®&#039;&#039;, there is a user configuration to achieve a weighting of the different solutions.&lt;br /&gt;
(Example: An &amp;quot;innovaphone call state&amp;quot; should have a higher priority than a &amp;quot;Microsoft Teams presence note&amp;quot;).&lt;br /&gt;
Based on this weighting, exactly one status is always gained and used as the current status.&lt;br /&gt;
&lt;br /&gt;
The colour of the selected status is displayed by the &#039;&#039;kuandoHUB®&#039;&#039; on the installed USB lamp. If you have connected several busylights, they will all be controlled in parallel. In addition, the &#039;&#039;kuandoHUB®&#039;&#039; provides an interface with which any software can query the current status.&lt;br /&gt;
&lt;br /&gt;
This means, for example:&lt;br /&gt;
Skype can report an active call. The &#039;&#039;kuandoHUB®&#039;&#039; sets the lamp to red and knows that an active call is running in the &#039;&#039;Skype&#039;&#039; software. myApps can now query the current status and knows that the user has an active call in &#039;&#039;Skype&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
kuando® offers a small mini installation for download per supported 3rd party application.&lt;br /&gt;
That means, if you want to use this solution with Skype, you have to install the &#039;&#039;kuandoHUB®&#039;&#039; and the &#039;&#039;kuando® Skype Extension&#039;&#039;.&lt;br /&gt;
If you want to use &#039;&#039;Skype&#039;&#039; and &#039;&#039;Webex&#039;&#039;, you have to install both the &#039;&#039;Skype Extension&#039;&#039; and the &#039;&#039;Webex Extension&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
When recognizing calls, it is important that no calls can be recognized in a web session.  If you want &#039;&#039;MS Teams&#039;&#039; calls to be recognized, for example, you must have installed the extension and use the client for the call and not participate in a session in the browser.&lt;br /&gt;
As a rule, it is sufficient to have the client installed. If you then receive an invitation to a conference from an external contact, the installed client opens automatically, if available.&lt;br /&gt;
&lt;br /&gt;
;kuandoHUB® innovaphone Edition&lt;br /&gt;
If you don&#039;t want to use a physically USB Busylight, you can use the &#039;&#039;kuandoHUB® innovaphone Edition&#039;&#039; (center left in the picture). It forms a kind of collection point to which supported applications on the PC can communicate their current status.&lt;br /&gt;
&lt;br /&gt;
Within the &#039;&#039;kuandoHUB® innovaphone Edition&#039;&#039; there is no configuration.&lt;br /&gt;
&lt;br /&gt;
kuando® offers a small mini installation for download per supported 3rd party application.&lt;br /&gt;
That means, if you want to use this solution with MS-Teams, you have to install the &#039;&#039;kuandoHUB® innovaphone Edition&#039;&#039; and the &#039;&#039;kuando® MS-Teams Extension&#039;&#039;.&lt;br /&gt;
If you want to use &#039;&#039;MS-Teams&#039;&#039; and &#039;&#039;Webex&#039;&#039;, you have to install both the &#039;&#039;MS-Teams Extension&#039;&#039; and the &#039;&#039;Webex Extension&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
When recognizing calls, it is important that no calls can be recognized in a web session.  If you want &#039;&#039;MS Teams&#039;&#039; calls to be recognized, for example, you must have installed the extension and use the client for the call and not participate in a session in the browser.&lt;br /&gt;
As a rule, it is sufficient to have the client installed. If you then receive an invitation to a conference from an external contact, the installed client opens automatically, if available.&lt;br /&gt;
&lt;br /&gt;
=== Synchronization Concept kuandoHUB® ===&lt;br /&gt;
It is not trivial to reconcile the various statuses of active phone calls, conferences and presences.&lt;br /&gt;
The following rules apply for prioritizing to a single status.&lt;br /&gt;
&lt;br /&gt;
# Calls overwrite presence information&lt;br /&gt;
# A manual presence in myApps overwrite a presence from &#039;&#039;kuandoHUB®&#039;&#039;&lt;br /&gt;
# The prioritization of the active state (only one is possible) results from the &#039;&#039;kuandoHUB®&#039;&#039; configuration. (see: [[#kuandoHUB® prioritization|kuandoHUB® prioritization]])&lt;br /&gt;
&lt;br /&gt;
The following states are supported by myApps: &amp;lt;code&amp;gt;free, busy, away, dnd, onthephone&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We will use the following mapping to apply the names state from a 3rd-party software that submit their state via &#039;&#039;kuandoHUB®&#039;&#039; to myApps:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;2&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! kuandoHUB® platform / Source Software &lt;br /&gt;
! Event(s)&lt;br /&gt;
! Transformed myApps State&lt;br /&gt;
|-&lt;br /&gt;
| 3CX&lt;br /&gt;
| Call Alert, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Alcatel Rainbow Office&lt;br /&gt;
| Call Alert, In-a-Conference, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Atos Unify Office&lt;br /&gt;
| Call Alert, In-a-Conference, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Avaya Cloud Office&lt;br /&gt;
| Call Alert, In-a-Conference, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Avaya Workplace&lt;br /&gt;
| Call Alert, In a call&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Avaya One-X Communicator&lt;br /&gt;
| Call alert, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| AT&amp;amp;T Office@Hand&lt;br /&gt;
| Call Alert, In-a-Conference, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| BT Cloud Work&lt;br /&gt;
| Call Alert, In-a-Conference, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Cisco Jabber&lt;br /&gt;
| Call Alert, In-a-Conference, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Ecotel&lt;br /&gt;
| Call Alert, In-a-Conference, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Eastlink&lt;br /&gt;
| Call Alert, In-a-Conference, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| MS Teams&lt;br /&gt;
| On-The-Phone, In-a-Conference, Call Alert&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Plantronics Hub&lt;br /&gt;
| Call Alert, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| RingCentral Unified&lt;br /&gt;
| Call Alert, On-The-Phone, In-a-Conference&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| RingCentral Softphone&lt;br /&gt;
| Call alert, In a call&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Slack&lt;br /&gt;
| Call-Alert, On-The-Phone, In-A-Meeting&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Symphony&lt;br /&gt;
| Call Alert, On-The-Phone, In-A-Conference&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| TELUS Business Connect&lt;br /&gt;
| Call Alert, On-The-Phone, In-a-Conference&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Broadsoft UC-One&lt;br /&gt;
| Call Alert, On-The-Phone, In-a-Conference&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Jabra&lt;br /&gt;
| Call Alert, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Verizon&lt;br /&gt;
| Call Alert, On-The-Phone, In-a-Conference&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Vodafone&lt;br /&gt;
| Call Alert, On-The-Phone, In-a-Conference&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Webex&lt;br /&gt;
| Call Alert, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Zoom&lt;br /&gt;
| Call Alert, In-a-Zoom-Meeting&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Manual Changer&lt;br /&gt;
| Available, LTM (listen the music), Off&lt;br /&gt;
| free&lt;br /&gt;
|-&lt;br /&gt;
| Manual Changer&lt;br /&gt;
| Busy&lt;br /&gt;
| busy&lt;br /&gt;
|-&lt;br /&gt;
| Manual Changer&lt;br /&gt;
| Away, NAW (not at work)&lt;br /&gt;
| away&lt;br /&gt;
|-&lt;br /&gt;
| Manual Changer&lt;br /&gt;
| DND&lt;br /&gt;
| dnd&lt;br /&gt;
|-&lt;br /&gt;
| Manual Changer&lt;br /&gt;
| Lunch&lt;br /&gt;
| lunch (implicit away with lunch message)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A software or event that is not listed in the mapping table above result in &#039;&#039;none&#039;&#039;, which have no effect to call state or presence state. In this case, you will see &amp;lt;code&amp;gt;transforming: ignored, sending application is unknown&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;transforming: ignored, sending event is unknown&amp;lt;/code&amp;gt; in the myApps trace.&lt;br /&gt;
It is possible that new/different commands may be sent from third party applications in the future. If you have an application that is not on this list, but a &#039;&#039;kuandoHUB®&#039;&#039; plugin exists for it, please let us know.&lt;br /&gt;
&lt;br /&gt;
=== Specialities for some kuandoHub® plugins ===&lt;br /&gt;
&lt;br /&gt;
Please note: innovaphone supports a variety of &amp;quot;commands&amp;quot; and &amp;quot;states&amp;quot; produced by external third-party applications. innovaphone cannot and has not tested every single third-party application, and cannot provide detailed information about the dedicated configuration of a specific third-party application. Nevertheless, we are happy to list special configurations hints to be aware of with the respective third-party applications.&lt;br /&gt;
&lt;br /&gt;
==== Zoom ====&lt;br /&gt;
You have to be logged on with your account in the Zoom client, otherwise Zoom will not broadcast the state.&lt;br /&gt;
&lt;br /&gt;
==== MS Teams ====&lt;br /&gt;
After installing and starting the &amp;quot;Busylight for MS Teams&amp;quot; plugin from plenom, this popup might be shown:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:Busylight teams popup.jpg|busylight_teams_popup.jpg/]]&lt;br /&gt;
&lt;br /&gt;
You have to follow the instructions from the popup, to make the teams-plugin work.&lt;br /&gt;
&lt;br /&gt;
This is caused by the [[Reference13r3:Concept myApps Office Integration| myApps Office Integration]], which sets myApps as &amp;quot;default IM Provider&amp;quot; in the Windows Registry, at every start of myApps.&lt;br /&gt;
But for the kuando-teams-plugin to work, Microsoft Teams needs to be set as &amp;quot;default IM Provider&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
So after every restart of the computer, you have to make these changes in team.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get rid of it permanently, the only solution is, to disable the Office Integration in myApps.&amp;lt;br /&amp;gt;&lt;br /&gt;
If myApps is already installed, you have to disable it via registry entry on the Windows host. [[Reference13r1:Concept myApps platform services#MSI Parameters and install options| Here]] you can find all information, regarding the entry.&lt;br /&gt;
This entry can also be deployed via .msi-file, as written in the same section.&lt;br /&gt;
&lt;br /&gt;
Also for new myApps installations, you can disable the Office Integration in the setup process (activate &amp;quot;disable Office Integration&amp;quot; there).&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To sum it up and since only one default IM Provider can exist (Microsoft restriction, not from our side), you can&#039;t use the Office Intregration anymore, if you want to use the Teams plugin for kuandoHUB®.&lt;br /&gt;
&lt;br /&gt;
=== Synchronization kuandoHUB®-innovaphone ===&lt;br /&gt;
As mentioned [[Reference13r3:Concept App Service Connector for kuando®#Setup without a physically Busylight| above]], currently the only supported plenom plugins are:&lt;br /&gt;
* MS Teams&lt;br /&gt;
* Webex&lt;br /&gt;
* Zoom&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Apps ==&lt;br /&gt;
&lt;br /&gt;
=== Connector for kuando® App (innovaphone-kuando) ===&lt;br /&gt;
This endpoint provides all the necessary components for the background process to talk to the &#039;&#039;kuandoHUB®&#039;&#039;, the LED lamp and the PBX and to perform the respective call state or presence updates.&lt;br /&gt;
&lt;br /&gt;
=== Connector for kuando® Config App (innovaphone-kuando-config) ===&lt;br /&gt;
This endpoint provides the user an app, for a test of the local LED lamp and a frontend for user-specific configurations and tracing settings.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
=== innovaphone configuration ===&lt;br /&gt;
==== Creating app objects via PBX Manager ====&lt;br /&gt;
After you have installed the App and create an instance, the PBX Manager provides a plugin to perform the configuration. Two apps need to be created at this point. &lt;br /&gt;
* &#039;&#039;Connector for kuando®&#039;&#039; which is not visible to the user and runs purely as a hidden service in the user&#039;s myApps environment to communicate with the &#039;&#039;kuandoHUB®&#039;&#039; in background.&lt;br /&gt;
* &#039;&#039;Connector for kuando® Config&#039;&#039; which gives the user the possibility to test his physical LED lamp and to make local settings if necessary.&lt;br /&gt;
&lt;br /&gt;
Afterwards, you have to distribute both apps directly via configuration at the user or via config template.&lt;br /&gt;
&lt;br /&gt;
Also make sure, that the user has a Connector for kuando® App license (innovaphone-kuando) assigned.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: The apps should only be activated for users who actually use them. Since the service is always started in the background, many unnecessary log files are written if the kuandoHUB® is not rechable and repeated attempts are made to reach the kuandoHUB®.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Creating app objects manually ====&lt;br /&gt;
If you don&#039;t want to use the PBX Manager and rather create the App objects manually: &lt;br /&gt;
* Create two App objects - one for the connector for kuando and for the connector for kuando config&lt;br /&gt;
* Name them properly&lt;br /&gt;
* Set the correct App URL, which points to the app instance on the AP&lt;br /&gt;
* set the required config options&lt;br /&gt;
&lt;br /&gt;
Example for App &#039;&#039;&#039;Connector for Kuando&#039;&#039;&#039; app object&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;URL Example:&#039;&#039;&#039; &#039;&#039;https://ap.domain.com/domain.com/kuandoconnector/innovaphone-kuando&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Options to activate:&#039;&#039;&#039; &#039;&#039;Hidden, Websocket, Admin, PbxApi&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for App &#039;&#039;&#039;Connector for Kuando Config&#039;&#039;&#039; app object&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;URL Example:&#039;&#039;&#039; &#039;&#039;https://ap.domain.com/domain.com/kuandoconnector/innovaphone-kuando-config&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Options to activate:&#039;&#039;&#039; none&lt;br /&gt;
&lt;br /&gt;
=== kuandoHUB® configuration ===&lt;br /&gt;
In the left menu you find an entry &#039;&#039;Plattform-Prioritäten&#039;&#039;. There you have to set a default configuration.&lt;br /&gt;
* Set the source &#039;&#039;Manual Changer&#039;&#039; to the bottom of the List and enable the checkmark &#039;&#039;Aktiv&#039;&#039;&lt;br /&gt;
* Navigate in the left menu to &#039;&#039;Farben&#039;&#039; and select the green one&lt;br /&gt;
&lt;br /&gt;
With this setup, you have a default configuration, that your lamp shows a green color if no other software distribute a status.&lt;br /&gt;
&lt;br /&gt;
The HTTP Server function must also be activated in the advanced settings.&lt;br /&gt;
&lt;br /&gt;
==== kuandoHUB® prioritization ====&lt;br /&gt;
In the &#039;&#039;kuandoHUB®&#039;&#039; you can check the currently active states. It will be indicated with a gray background in the 3rd party software list.&lt;br /&gt;
&#039;&#039;&#039;It is very important that presence states that &amp;quot;free signal&amp;quot; like &amp;quot;Free / Available&amp;quot; such as &amp;quot;MS Teams / available&amp;quot; are deactivated in the &#039;&#039;kuandoHUB®&#039;&#039;, otherwise they may overwrite other states.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Also you have to sort you events in the &#039;&#039;kuandoHUB®&#039;&#039; configuration. Make sure that all telephone events (ringing, busy, on the phone, ...) are of higher value than simple presence events. You can download [[index.php?title=Media:Default kuando prioritiesbackup.zip|&#039;&#039;&#039;&#039;&#039;here&#039;&#039;&#039;&#039;&#039;]] a sample configuration file.&lt;br /&gt;
&lt;br /&gt;
=== kuandoHUB® innovaphone Edition ===&lt;br /&gt;
There is no configuration UI.&lt;br /&gt;
&lt;br /&gt;
== Special Setups ==&lt;br /&gt;
=== Using a remote busylight ===&lt;br /&gt;
If the busylight isn&#039;t connected locally on the same client, where you use myApps - for example in a Citrix environment, where myApps is started inside the environment, but the busylight is connected at the local computer -, you can still access the busylight with some configuration on the local client.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Configuration on the client, where the busylight is physically connected&#039;&#039;&#039;&lt;br /&gt;
* install the kuandoHUB® software&lt;br /&gt;
* If you use a remote workplace, in the windows registry will be a new REG_DWORD with the name &amp;quot;http_port&amp;quot;created under the path &amp;lt;code&amp;gt;Computer\HKEY_CURRENT_USER\Software\Busylight&amp;lt;/code&amp;gt; &lt;br /&gt;
* create an incoming Windows Firewall entry, where incoming traffic to tcp port &#039;&#039;&#039;****&#039;&#039;&#039; is allowed&lt;br /&gt;
** Windows-Powershell command for this: &amp;lt;code&amp;gt;New-NetFirewallRule -DisplayName &amp;quot;Allow Busylight HTTP Port [PORT]&amp;quot; -Direction Inbound -Action Allow -EdgeTraversalPolicy Allow -Protocol TCP -LocalPort [PORT]&amp;lt;/code&amp;gt;&lt;br /&gt;
* create an entry in the &#039;&#039;&#039;http.sys&#039;&#039;&#039;-file for the URL example: http://+:8989/ &lt;br /&gt;
** Windows-Powershell command for this: &amp;lt;code&amp;gt;netsh http add urlacl url=http://+:[PORT]/ user=DOMAIN\user&amp;lt;/code&amp;gt; - change the &amp;quot;user&amp;quot;-part to your needs.&lt;br /&gt;
* make sure, that &#039;&#039;&#039;HTTP Server&#039;&#039;&#039; is activated in the kuandoHUB® softwares advanced settings&lt;br /&gt;
** registry entry for this is: entry type &#039;&#039;&#039;&amp;quot;REG_DWORD&amp;quot;&#039;&#039;&#039;, name &#039;&#039;&#039;&amp;quot;http_enabled&amp;quot;&#039;&#039;&#039;, value &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
* restart the kuandoHUB®&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Configuration on the client, where myApps is installed&#039;&#039;&#039;&lt;br /&gt;
* open the &#039;&#039;&#039;CONNECTOR FOR KUANDO CONFIG&#039;&#039;&#039;-App&lt;br /&gt;
* set the &#039;&#039;&#039;HTTP Server URL:&#039;&#039;&#039; according to the clients IP address and port, where the busylight is physically connected to&lt;br /&gt;
** example: &#039;&#039;&#039;http://192.168.0.100:8989&#039;&#039;&#039;&lt;br /&gt;
* enter the &#039;&#039;&#039;HTTP Server access token:&#039;&#039;&#039;, which you can either copy from the kuandoHUB® (advanced settings), or the registry&lt;br /&gt;
** if no registry entry exist, you can create one: entry type &#039;&#039;&#039;&amp;quot;REG_SZ&amp;quot;&#039;&#039;&#039;, name it &#039;&#039;&#039;&amp;quot;http_token&amp;quot;&#039;&#039;&#039;, and set the value to whatever you want - a crypto entry is recommended&lt;br /&gt;
&lt;br /&gt;
Now the busylight can be used, even from an remote computer.&lt;br /&gt;
For more information, the kuandoHUB® manual can be found in the downloaded kuandoHUB® setup folder.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IMPORTANT:&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
You have to use the myApps Launcher for this special setup, since Web-Browsers doesn&#039;t allow mixed content, which is needed (kuandoHUB® use http, whereas myApps uses https).&lt;br /&gt;
&lt;br /&gt;
=== Using kuandoHUB® in a remote environment ===&lt;br /&gt;
When kuandoHUB® is started in a remote environment, it uses dynamic ports so that multiple users can use the kuandoHUB® at the same time.&lt;br /&gt;
myApps must connect to this port. In this scenario, kuandoHUB® stores the port in the registry and myapps checks whether a dynamic port must be used.&lt;br /&gt;
&lt;br /&gt;
If such a dynamic port is found in the registry, it temporarily overwrites the connection configuration in the app.&lt;br /&gt;
&lt;br /&gt;
You see this in the logfile:&lt;br /&gt;
 kuando-log: Overwrite local http port with http://localhost:1234&lt;br /&gt;
&lt;br /&gt;
=== Simultaneous use of &amp;quot;Connector for kuando&amp;quot; and &amp;quot;Connector for Office365&amp;quot; ===&lt;br /&gt;
To support the coexistence of both apps, the user can activate the &#039;&#039;Ignore MS Teams&#039;&#039; option in their configuration.&lt;br /&gt;
This means that incoming MS Teams actions are ignored, as they are processed by the &#039;&#039;Connector for Office365&#039;&#039; app.&lt;br /&gt;
Otherwise, you end up in a situation where a call remains in the PBX even though it has been hung up in MS Teams.&lt;br /&gt;
&lt;br /&gt;
== Known Limitation ==&lt;br /&gt;
&lt;br /&gt;
=== myApps Office Integration won&#039;t work, if MS Teams plugin is used===&lt;br /&gt;
As mentioned [[#MS Teams|above]], the [[Reference13r3:Concept myApps Office Integration| myApps Office Integration]] can&#039;t be used anymore, if you use the MS teams plugin for kuandoHUB®.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
Troubleshooting can be a bit tricky at this point. You should first think about which side the error is on, in order to be able to approach it accordingly.&lt;br /&gt;
&lt;br /&gt;
=== myApps site ===&lt;br /&gt;
&lt;br /&gt;
The configuration app will show some red warning banner:&lt;br /&gt;
* no license&lt;br /&gt;
* no kuandoHUB® detected&lt;br /&gt;
* to old kuandoHUB® version&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t see a red error message at the top of the app, you should go ahead to find your issue.&lt;br /&gt;
&lt;br /&gt;
==== Tracing ====&lt;br /&gt;
You will find trace output in the browser console, or in the myApps log if you have enabled before the trace flags &#039;&#039;browser console&#039;&#039; in the myApps launcher trace options.&lt;br /&gt;
&lt;br /&gt;
To better understand the logfile flow, you here will find a sample startup if the hidden service is closed (you have no calls before) and you get an incoming call.&lt;br /&gt;
 open kuando url=https://...&lt;br /&gt;
 started: kuando (hidden)&lt;br /&gt;
 ...&lt;br /&gt;
 send to kuando: {&amp;quot;mt&amp;quot;:&amp;quot;ApiUpdate&amp;quot;,&amp;quot;apis&amp;quot;:{&amp;quot;com.innovaphone.notificationhandler&amp;quot;:{...&lt;br /&gt;
 ...&lt;br /&gt;
 kuando-log: start.url=wss://... start.originalUrl=https://...&lt;br /&gt;
 kuando-log: debug - lamp_myapps_state: free&lt;br /&gt;
 kuando-log: debug - lamp_call_state: free&lt;br /&gt;
 kuando-log: debug - kuando_hub_installed: undefined&lt;br /&gt;
 kuando-log: debug - count_calls: 0&lt;br /&gt;
 ...&lt;br /&gt;
 kuando-log: app not initialized, sleep&lt;br /&gt;
 ...&lt;br /&gt;
 kuando-log: Instance Connected&lt;br /&gt;
 kuando-log: init http post request: http://localhost:8989/?http_token=&lt;br /&gt;
 kuando-log: init http get request: http://localhost:8989/?action=currentpresence&amp;amp;http_token=&lt;br /&gt;
 kuando-log: 3rd party state result: innovaphone myApps / Blink / Blink&lt;br /&gt;
&lt;br /&gt;
You see that there is a prefix in all needed logfiles.&lt;br /&gt;
&lt;br /&gt;
So it is a good thing to filter for:&lt;br /&gt;
* &amp;lt;code&amp;gt;kuando-log:&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;kuando-config-log:&amp;lt;/code&amp;gt; &lt;br /&gt;
* or use a regex to get all relevant logfiles &amp;lt;code&amp;gt;/(kuando-config-log|kuando-log)/&amp;lt;/code&amp;gt;&lt;br /&gt;
to see all the output from the specific app.&lt;br /&gt;
&lt;br /&gt;
==== Test the kuandoHUB® connection ====&lt;br /&gt;
* You can use the &#039;&#039;Connector for kuando® Config App&#039;&#039; to test the connection and test the UBS-Busylight&lt;br /&gt;
* You can test the functionality of your local &#039;&#039;kuandoHUB®&#039;&#039;, if you open the URL &amp;lt;code&amp;gt;http://localhost:8989/&amp;lt;/code&amp;gt;. If you get this JSON output &amp;lt;code&amp;gt;{&amp;quot;response&amp;quot;: &amp;quot;OK&amp;quot;}&amp;lt;/code&amp;gt; it works fine.&lt;br /&gt;
&lt;br /&gt;
==== Nothing happens / I do not see related logfiles in the console ====&lt;br /&gt;
* Make sure, that the user has a valid license. If not you will see a error message in the &#039;&#039;Connector for kuando® Config App&#039;&#039; or the following message in your myApps trace: &amp;lt;code&amp;gt;kuando-log: no app license, stop service&amp;lt;/code&amp;gt;&lt;br /&gt;
* Make sure, that the user has configured a &amp;quot;default telephony app&amp;quot; in his myApps or started the phone app. (If no phone app is opened a standard app has to be defined, that the PBX can wake up the associated phone app. Waking up the phone app implicitly wakes up the &#039;&#039;Connector for kuando® App&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
=== kuandoHUB® site ===&lt;br /&gt;
&lt;br /&gt;
==== kuandoHUB® traces ====&lt;br /&gt;
You don&#039;t have direct logfiles of the kuandoHUB®, but there is a solution from Microsoft called [https://docs.microsoft.com/en-us/sysinternals/downloads/debugview Debug view] which the kuandoHUB® uses for its debug output.&lt;br /&gt;
You only need to start the software &#039;&#039;Debug view&#039;&#039;. No further configuration is necessary.&lt;br /&gt;
All debug outputs of current processes that support the &#039;&#039;Debug View&#039;&#039; method are recorded directly. You can then save these log files.&lt;br /&gt;
&lt;br /&gt;
==== Support Case ====&lt;br /&gt;
If you have problems with the kuandoHUB® or a kuandoHUB®-Plugin for a third-party software, you can open a corresponding ticket with Plenom at [mailto:support@plenom.com support@plenom.com].&lt;br /&gt;
&lt;br /&gt;
==== Problem with Office 365 Cloud ====&lt;br /&gt;
For each mail Outlook show: &amp;quot;Ein Programm versucht, auf Ihre in Outlook gespeicherten Informationen zu E-Mail-Adressen zuzugreifen. ...&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Solution&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Configure and activate all Outlook functions in kuando hub. Send an E-Mail and now the light goes purple. Now deactivate the service and delete this service in &amp;quot;Plattformprioritäten&amp;quot;. Outlook will now automatically shut down. Now the service of kuando is deinstalled in outlook.&lt;/div&gt;</summary>
		<author><name>Lme</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto15r1:Implement_PBX_with_zero_downtime_using_IPVA_and_VMWare_Fault_Tolerance&amp;diff=75238</id>
		<title>Howto15r1:Implement PBX with zero downtime using IPVA and VMWare Fault Tolerance</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto15r1:Implement_PBX_with_zero_downtime_using_IPVA_and_VMWare_Fault_Tolerance&amp;diff=75238"/>
		<updated>2025-02-27T07:29:08Z</updated>

		<summary type="html">&lt;p&gt;Lme: /* Migration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FIXME|reason=This product is in the beta phase and is not yet finished}}&lt;br /&gt;
==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* IPVA 15r1&lt;br /&gt;
* VMWare ESXi (vSphere) 6.7 - 8&lt;br /&gt;
* VMWare vCenter Server 6.7 - 8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: high availability  --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
===Problem Details===&lt;br /&gt;
The standby functionality implemented in the innovaphone PBX enables to start PBX software on the standby gateway in fail over scenario.  A drawback in this implementation is following - since the standby PBX is running on other physical gateway, all active calls and connections are interrupted while switching from master to standby. The switch to standby hardware takes a while, so the downtime about 2 minutes must be considered additionally.&lt;br /&gt;
&lt;br /&gt;
To be able to implement a PBX with zero downtime on hardware failures, a VMWare [http://www.vmware.com/de/products/vsphere/features/fault-tolerance.html Fault Tolerance(FT)] feature of the VMWare vSphere can be used. Therefore the PBX must be implemented on the innovaphone Virtual Appliance (IPVA) and the Virtual Machine running IPVA must be hosted on a FT-enabled VMWare Cluster.&lt;br /&gt;
&lt;br /&gt;
===System Requirements===&lt;br /&gt;
The VMWare infrastructure must fulfil following requirements to be able to run FT-enabled VMs:&lt;br /&gt;
* VMware vSphere Advanced or Enterprise Edition (FT Support included in this editions)&lt;br /&gt;
* The CPU and chip-set of the Hosts must support Fault Tolerance.&lt;br /&gt;
* The ESXi/vSphere hosts must be equipped with same CPU type and be part of FT-enabled Cluster&lt;br /&gt;
&lt;br /&gt;
===Prepare your VM===&lt;br /&gt;
If you want to use FT you need to use the IPVA Version which includes SCSI-Disks, it&#039;s not possible to use the &amp;quot;Old&amp;quot; IPVA with IDE-Disks. &lt;br /&gt;
To Run the SCSI-IPVA on VMware, you need to do Following steps:&lt;br /&gt;
* Download and unzip &#039;&#039;&#039;ipva-vmx-scsi.zip&#039;&#039;&#039;&lt;br /&gt;
* Convert all 4 disks to the VM by using the following command.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
vmkfstools -i /vmfs/volumes/datastore/current-VM-folder/disk.vmdk /vmfs/volumes/datastore/new-VM-folder/disk.vmdk&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Now you need to attach the New Disks to your VM:&lt;br /&gt;
# You need to detach your old Disks from your IPVA in the settings of your IPVA itself. &lt;br /&gt;
# After you removed all the old Disks, you now need to open the Settings of your IPVA itself again and attach the new Disks.&lt;br /&gt;
# You need to make sure the Disks are on the correct SCSI controllers&lt;br /&gt;
# The Disks need to be on following Positions&lt;br /&gt;
## hd.boot.vmdk SCSI-Controller 0 0:0&lt;br /&gt;
## hd-cf.vmdk SCSI-Controller 0 0:1&lt;br /&gt;
## hd-flash.vmdk SCSI-Controller 1 1:0&lt;br /&gt;
## hd-dump.vmdk SCSI-Controller 1 1:1&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
For detailed implementation of FT-enabled VMWare infrastructure, please refer to the [https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-availability/GUID-7525F8DD-9B8F-4089-B020-BAA4AC6509D2.html VMWare documentation].&lt;br /&gt;
&lt;br /&gt;
On the IPVA side no special settings or changes must be performed to enable FT.&lt;br /&gt;
&lt;br /&gt;
We have tested the FT functionality with following setup and also in our cloud setup:&lt;br /&gt;
&lt;br /&gt;
[[File:FT Test setup.png|ft_test_setup.png/|ft_test_setup.png/]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
While testing the Softphones where in a conference and also calling a WQ. While in an active call, a failure of ESXi/vSphere host was simulated. While testing multiple times, there were some noticeable interruptions in the media stream were realized, while the failover. Even with Video streams there were no problem and everything worked without noticeable problematic behavior.&lt;br /&gt;
&lt;br /&gt;
===Migration===&lt;br /&gt;
To Migrate your system, you can download your Config and upload it to a Fault Tolerance Compatible IPVA.&lt;br /&gt;
&lt;br /&gt;
===Known Problems===&lt;br /&gt;
The Fault Tolerance does not protect the system from software failures(e.g. trap of the IPVA).&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
*[[Reference15r1:Concept Innovaphone Virtual Appliance]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Lme</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto15r1:Implement_PBX_with_zero_downtime_using_IPVA_and_VMWare_Fault_Tolerance&amp;diff=75237</id>
		<title>Howto15r1:Implement PBX with zero downtime using IPVA and VMWare Fault Tolerance</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto15r1:Implement_PBX_with_zero_downtime_using_IPVA_and_VMWare_Fault_Tolerance&amp;diff=75237"/>
		<updated>2025-02-27T07:28:52Z</updated>

		<summary type="html">&lt;p&gt;Lme: /* Migration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FIXME|reason=This product is in the beta phase and is not yet finished}}&lt;br /&gt;
==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* IPVA 15r1&lt;br /&gt;
* VMWare ESXi (vSphere) 6.7 - 8&lt;br /&gt;
* VMWare vCenter Server 6.7 - 8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: high availability  --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
===Problem Details===&lt;br /&gt;
The standby functionality implemented in the innovaphone PBX enables to start PBX software on the standby gateway in fail over scenario.  A drawback in this implementation is following - since the standby PBX is running on other physical gateway, all active calls and connections are interrupted while switching from master to standby. The switch to standby hardware takes a while, so the downtime about 2 minutes must be considered additionally.&lt;br /&gt;
&lt;br /&gt;
To be able to implement a PBX with zero downtime on hardware failures, a VMWare [http://www.vmware.com/de/products/vsphere/features/fault-tolerance.html Fault Tolerance(FT)] feature of the VMWare vSphere can be used. Therefore the PBX must be implemented on the innovaphone Virtual Appliance (IPVA) and the Virtual Machine running IPVA must be hosted on a FT-enabled VMWare Cluster.&lt;br /&gt;
&lt;br /&gt;
===System Requirements===&lt;br /&gt;
The VMWare infrastructure must fulfil following requirements to be able to run FT-enabled VMs:&lt;br /&gt;
* VMware vSphere Advanced or Enterprise Edition (FT Support included in this editions)&lt;br /&gt;
* The CPU and chip-set of the Hosts must support Fault Tolerance.&lt;br /&gt;
* The ESXi/vSphere hosts must be equipped with same CPU type and be part of FT-enabled Cluster&lt;br /&gt;
&lt;br /&gt;
===Prepare your VM===&lt;br /&gt;
If you want to use FT you need to use the IPVA Version which includes SCSI-Disks, it&#039;s not possible to use the &amp;quot;Old&amp;quot; IPVA with IDE-Disks. &lt;br /&gt;
To Run the SCSI-IPVA on VMware, you need to do Following steps:&lt;br /&gt;
* Download and unzip &#039;&#039;&#039;ipva-vmx-scsi.zip&#039;&#039;&#039;&lt;br /&gt;
* Convert all 4 disks to the VM by using the following command.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
vmkfstools -i /vmfs/volumes/datastore/current-VM-folder/disk.vmdk /vmfs/volumes/datastore/new-VM-folder/disk.vmdk&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Now you need to attach the New Disks to your VM:&lt;br /&gt;
# You need to detach your old Disks from your IPVA in the settings of your IPVA itself. &lt;br /&gt;
# After you removed all the old Disks, you now need to open the Settings of your IPVA itself again and attach the new Disks.&lt;br /&gt;
# You need to make sure the Disks are on the correct SCSI controllers&lt;br /&gt;
# The Disks need to be on following Positions&lt;br /&gt;
## hd.boot.vmdk SCSI-Controller 0 0:0&lt;br /&gt;
## hd-cf.vmdk SCSI-Controller 0 0:1&lt;br /&gt;
## hd-flash.vmdk SCSI-Controller 1 1:0&lt;br /&gt;
## hd-dump.vmdk SCSI-Controller 1 1:1&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
For detailed implementation of FT-enabled VMWare infrastructure, please refer to the [https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-availability/GUID-7525F8DD-9B8F-4089-B020-BAA4AC6509D2.html VMWare documentation].&lt;br /&gt;
&lt;br /&gt;
On the IPVA side no special settings or changes must be performed to enable FT.&lt;br /&gt;
&lt;br /&gt;
We have tested the FT functionality with following setup and also in our cloud setup:&lt;br /&gt;
&lt;br /&gt;
[[File:FT Test setup.png|ft_test_setup.png/|ft_test_setup.png/]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
While testing the Softphones where in a conference and also calling a WQ. While in an active call, a failure of ESXi/vSphere host was simulated. While testing multiple times, there were some noticeable interruptions in the media stream were realized, while the failover. Even with Video streams there were no problem and everything worked without noticeable problematic behavior.&lt;br /&gt;
&lt;br /&gt;
===Migration===&lt;br /&gt;
To Migrate your system, you can download your Config and upload it to a Fault Tolerance Compatible setup.&lt;br /&gt;
&lt;br /&gt;
===Known Problems===&lt;br /&gt;
The Fault Tolerance does not protect the system from software failures(e.g. trap of the IPVA).&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
*[[Reference15r1:Concept Innovaphone Virtual Appliance]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Lme</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference15r1:Concept_Virtual_Background_App&amp;diff=75227</id>
		<title>Reference15r1:Concept Virtual Background App</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference15r1:Concept_Virtual_Background_App&amp;diff=75227"/>
		<updated>2025-02-26T12:51:18Z</updated>

		<summary type="html">&lt;p&gt;Lme: Created page with &amp;quot;{{FIXME|reason=This product is in the beta phase and is not yet finished}} Apps  The Virtual Background App is required to use virtual backgrounds in the Softphone, Phone and WebAccess.  == Applies to == * Virtual Background App  == Requirements == * innovaphone PBX * innovaphone Application Platform * V15r1  == PBX Manager Plugins == === Virtual Background === With the Virtual Background plugin the Virtual Background App Object can be created, edite...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FIXME|reason=This product is in the beta phase and is not yet finished}}&lt;br /&gt;
[[Category:Concept|Apps]]&lt;br /&gt;
&lt;br /&gt;
The Virtual Background App is required to use virtual backgrounds in the Softphone, Phone and WebAccess.&lt;br /&gt;
&lt;br /&gt;
== Applies to ==&lt;br /&gt;
* Virtual Background App&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* innovaphone PBX&lt;br /&gt;
* innovaphone Application Platform&lt;br /&gt;
* V15r1&lt;br /&gt;
&lt;br /&gt;
== PBX Manager Plugins ==&lt;br /&gt;
=== Virtual Background ===&lt;br /&gt;
With the Virtual Background plugin the Virtual Background App Object can be created, edited and deleted on the PBX.&lt;br /&gt;
Furthermore, config templates can be used for distribution to users via the PBX Manager plugin. This affects the availability on Softphone and Phone.&lt;br /&gt;
=== Conference ===&lt;br /&gt;
In the Conference plugin, the menu item &amp;quot;Virtual Background for WebAccess&amp;quot; appears for conferences. Here you can control the availability in WebAccess. By default, this is automatically enabled once Virtual Background is installed via the Virtual Background plugin.&lt;br /&gt;
&lt;br /&gt;
== More information ==&lt;br /&gt;
=== Virtual Background App (innovaphone-virtualbackground) ===&lt;br /&gt;
[[File:Virtualbackground.png|50px]]&lt;br /&gt;
&lt;br /&gt;
The hidden app offers an interface via the Service API (com.innovaphone.virtualbackground). If available, the settings options for the virtual background are activated in the respective apps (Softphone, Phone, WebAccess).&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
;URL: &amp;lt;pre&amp;gt;http://&amp;lt;ap.domain.tld&amp;gt;/&amp;lt;domain.tld&amp;gt;/&amp;lt;instance-name&amp;gt;/innovaphone-virtualbackground&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Using different filter and effects&lt;br /&gt;
** Using a blurred background&lt;br /&gt;
** Using a color background&lt;br /&gt;
** Using a image background&lt;br /&gt;
* Integrated in ...&lt;br /&gt;
** Softphone&lt;br /&gt;
** Phone&lt;br /&gt;
** WebAccess&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
# Download the Virtual Background App via App Store.&lt;br /&gt;
# Install the Virtual Background App on the App Platform.&lt;br /&gt;
# Create an instance in the Virtual Background App on the App Platform.&lt;br /&gt;
# Make sure the Instance is running.&lt;br /&gt;
# Create via the PBX Manager Plugin a new Virtual Background App Object and assign the App to authorized users using a config template.&lt;br /&gt;
&lt;br /&gt;
== User interface ==&lt;br /&gt;
=== Softphone and Phone ===&lt;br /&gt;
The virtual background in Softphone and Phone can be activated via the options. Those menu items are only visible if Virtual Background is installed and configured. The following options are available here:&lt;br /&gt;
&lt;br /&gt;
* Do not use&lt;br /&gt;
* Blur background&lt;br /&gt;
* Use color background&lt;br /&gt;
* Use image background&lt;br /&gt;
&lt;br /&gt;
As soon as a value has been selected, further settings can be changed below the selection (intensity of the blur, color selection, image selection). These affect the image or open a dialog. All options, except the uploaded image, are saved in the local storage. A custom image must be uploaded again when Softphone and Phone is restarted.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image: VB-Phone.png|Configuration&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== WebAccess ===&lt;br /&gt;
The virtual background in WebAccess can be activated via the welcome screen and via the options. Those menu items are only visible if Virtual Background is installed and configured. The following options are available here:&lt;br /&gt;
* Do not use &lt;br /&gt;
* Blur background&lt;br /&gt;
* Use color background&lt;br /&gt;
* Use image background&lt;br /&gt;
&lt;br /&gt;
When selecting the color and image background, a corresponding dialog or selection menu opens with which the color or background can be selected. All options, except the uploaded image, are saved in the local storage. A custom image must be uploaded again when WebAccess is restarted.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery type=&amp;quot;slider&amp;quot;&amp;gt;&lt;br /&gt;
Image: VB-WA-Welcome.png|Welcome Screen&lt;br /&gt;
Image: VB-WA.png|Configuration&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Restrictions / Known issues ==&lt;br /&gt;
* Occasionally errors occur when selecting colors on mobile devices&lt;br /&gt;
* Currently, some Firefox&#039;s privacy settings may block the use of Virtual Background&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
If any issue can be reproduced, take a screenshot, save the browser logs and send those attached in your support ticket.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
Currently no related articles available.&lt;/div&gt;</summary>
		<author><name>Lme</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:VB-WA.png&amp;diff=75226</id>
		<title>File:VB-WA.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:VB-WA.png&amp;diff=75226"/>
		<updated>2025-02-26T12:50:48Z</updated>

		<summary type="html">&lt;p&gt;Lme: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VB-WA&lt;/div&gt;</summary>
		<author><name>Lme</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:VB-WA-Welcome.png&amp;diff=75225</id>
		<title>File:VB-WA-Welcome.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:VB-WA-Welcome.png&amp;diff=75225"/>
		<updated>2025-02-26T12:49:34Z</updated>

		<summary type="html">&lt;p&gt;Lme: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VB-WA-Welcome&lt;/div&gt;</summary>
		<author><name>Lme</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:VB-Phone.png&amp;diff=75224</id>
		<title>File:VB-Phone.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:VB-Phone.png&amp;diff=75224"/>
		<updated>2025-02-26T12:46:44Z</updated>

		<summary type="html">&lt;p&gt;Lme: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VB-Phone&lt;/div&gt;</summary>
		<author><name>Lme</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:Virtualbackground.png&amp;diff=75223</id>
		<title>File:Virtualbackground.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:Virtualbackground.png&amp;diff=75223"/>
		<updated>2025-02-26T12:45:28Z</updated>

		<summary type="html">&lt;p&gt;Lme: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;icon&lt;/div&gt;</summary>
		<author><name>Lme</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto15r1:Implement_PBX_with_zero_downtime_using_IPVA_and_VMWare_Fault_Tolerance&amp;diff=74437</id>
		<title>Howto15r1:Implement PBX with zero downtime using IPVA and VMWare Fault Tolerance</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto15r1:Implement_PBX_with_zero_downtime_using_IPVA_and_VMWare_Fault_Tolerance&amp;diff=74437"/>
		<updated>2024-12-05T08:26:06Z</updated>

		<summary type="html">&lt;p&gt;Lme: /* Migration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FIXME|reason=This product is in the beta phase and is not yet finished}}&lt;br /&gt;
==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* IPVA 15r1&lt;br /&gt;
* VMWare ESXi (vSphere) 6.7 - 8&lt;br /&gt;
* VMWare vCenter Server 6.7 - 8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: high availability  --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
===Problem Details===&lt;br /&gt;
The standby functionality implemented in the innovaphone PBX enables to start PBX software on the standby gateway in fail over scenario.  A drawback in this implementation is following - since the standby PBX is running on other physical gateway, all active calls and connections are interrupted while switching from master to standby. The switch to standby hardware takes a while, so the downtime about 2 minutes must be considered additionally.&lt;br /&gt;
&lt;br /&gt;
To be able to implement a PBX with zero downtime on hardware failures, a VMWare [http://www.vmware.com/de/products/vsphere/features/fault-tolerance.html Fault Tolerance(FT)] feature of the VMWare vSphere can be used. Therefore the PBX must be implemented on the innovaphone Virtual Appliance (IPVA) and the Virtual Machine running IPVA must be hosted on a FT-enabled VMWare Cluster.&lt;br /&gt;
&lt;br /&gt;
===System Requirements===&lt;br /&gt;
The VMWare infrastructure must fulfil following requirements to be able to run FT-enabled VMs:&lt;br /&gt;
* VMware vSphere Advanced or Enterprise Edition (FT Support included in this editions)&lt;br /&gt;
* The CPU and chip-set of the Hosts must support Fault Tolerance.&lt;br /&gt;
* The ESXi/vSphere hosts must be equipped with same CPU type and be part of FT-enabled Cluster&lt;br /&gt;
&lt;br /&gt;
===Prepare your VM===&lt;br /&gt;
If you want to use FT you need to use the IPVA Version which includes SCSI-Disks, it&#039;s not possible to use the &amp;quot;Old&amp;quot; IPVA with IDE-Disks. &lt;br /&gt;
To Run the SCSI-IPVA on VMware, you need to do Following steps:&lt;br /&gt;
* Convert all 4 disks to the VM by using the following command. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
vmkfstools -i /vmfs/volumes/datastore/current-VM-folder/disk.vmdk /vmfs/volumes/datastore/new-VM-folder/disk.vmdk&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Now you need to attach the New Disks to your VM:&lt;br /&gt;
# You need to detach your old Disks from your IPVA in the settings of your IPVA itself. &lt;br /&gt;
# After you removed all the old Disks, you now need to open the Settings of your IPVA itself again and attach the new Disks.&lt;br /&gt;
# You need to make sure the Disks are on the correct SCSI controllers&lt;br /&gt;
# The Disks need to be on following Positions&lt;br /&gt;
## hd.boot.vmdk SCSI-Controller 0 0:0&lt;br /&gt;
## hd-cf.vmdk SCSI-Controller 0 0:1&lt;br /&gt;
## hd-flash.vmdk SCSI-Controller 1 1:0&lt;br /&gt;
## hd-dump.vmdk SCSI-Controller 1 1:1&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
For detailed implementation of FT-enabled VMWare infrastructure, please refer to the [https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-availability/GUID-7525F8DD-9B8F-4089-B020-BAA4AC6509D2.html VMWare documentation].&lt;br /&gt;
&lt;br /&gt;
On the IPVA side no special settings or changes must be performed to enable FT.&lt;br /&gt;
&lt;br /&gt;
We have tested the FT functionality with following setup and also in our cloud setup:&lt;br /&gt;
&lt;br /&gt;
[[File:FT Test setup.png|FT_Test_Setup.png/|ft_test_setup.png/]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
While testing the Softphones where in a conference and also calling a WQ. While in an active call, a failure of ESXi/vSphere host was simulated. While testing multiple times, there were some noticeable interruptions in the media stream were realized, while the failover. Even with Video streams there were no problem and everything worked without noticeable problematic behavior.&lt;br /&gt;
&lt;br /&gt;
===Migration===&lt;br /&gt;
To Migrate your existing System to an FT-System, you need to set up a SCSI-IPVA and Download the Config(NOT download with standard password) from your old IPVA. Upload it to your new SCSI-IPVA. Please make sure you give your new VM the same MAC-Address as the old VM, so there won&#039;t be any issues. &lt;br /&gt;
&lt;br /&gt;
===Known Problems===&lt;br /&gt;
The Fault Tolerance does not protect the system from software failures(e.g. trap of the IPVA).&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
*[[Reference15r1:Concept Innovaphone Virtual Appliance]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Lme</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto15r1:Implement_PBX_with_zero_downtime_using_IPVA_and_VMWare_Fault_Tolerance&amp;diff=74436</id>
		<title>Howto15r1:Implement PBX with zero downtime using IPVA and VMWare Fault Tolerance</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto15r1:Implement_PBX_with_zero_downtime_using_IPVA_and_VMWare_Fault_Tolerance&amp;diff=74436"/>
		<updated>2024-12-05T08:21:22Z</updated>

		<summary type="html">&lt;p&gt;Lme: /* More Information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FIXME|reason=This product is in the beta phase and is not yet finished}}&lt;br /&gt;
==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* IPVA 15r1&lt;br /&gt;
* VMWare ESXi (vSphere) 6.7 - 8&lt;br /&gt;
* VMWare vCenter Server 6.7 - 8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: high availability  --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
===Problem Details===&lt;br /&gt;
The standby functionality implemented in the innovaphone PBX enables to start PBX software on the standby gateway in fail over scenario.  A drawback in this implementation is following - since the standby PBX is running on other physical gateway, all active calls and connections are interrupted while switching from master to standby. The switch to standby hardware takes a while, so the downtime about 2 minutes must be considered additionally.&lt;br /&gt;
&lt;br /&gt;
To be able to implement a PBX with zero downtime on hardware failures, a VMWare [http://www.vmware.com/de/products/vsphere/features/fault-tolerance.html Fault Tolerance(FT)] feature of the VMWare vSphere can be used. Therefore the PBX must be implemented on the innovaphone Virtual Appliance (IPVA) and the Virtual Machine running IPVA must be hosted on a FT-enabled VMWare Cluster.&lt;br /&gt;
&lt;br /&gt;
===System Requirements===&lt;br /&gt;
The VMWare infrastructure must fulfil following requirements to be able to run FT-enabled VMs:&lt;br /&gt;
* VMware vSphere Advanced or Enterprise Edition (FT Support included in this editions)&lt;br /&gt;
* The CPU and chip-set of the Hosts must support Fault Tolerance.&lt;br /&gt;
* The ESXi/vSphere hosts must be equipped with same CPU type and be part of FT-enabled Cluster&lt;br /&gt;
&lt;br /&gt;
===Prepare your VM===&lt;br /&gt;
If you want to use FT you need to use the IPVA Version which includes SCSI-Disks, it&#039;s not possible to use the &amp;quot;Old&amp;quot; IPVA with IDE-Disks. &lt;br /&gt;
To Run the SCSI-IPVA on VMware, you need to do Following steps:&lt;br /&gt;
* Convert all 4 disks to the VM by using the following command. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
vmkfstools -i /vmfs/volumes/datastore/current-VM-folder/disk.vmdk /vmfs/volumes/datastore/new-VM-folder/disk.vmdk&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Now you need to attach the New Disks to your VM:&lt;br /&gt;
# You need to detach your old Disks from your IPVA in the settings of your IPVA itself. &lt;br /&gt;
# After you removed all the old Disks, you now need to open the Settings of your IPVA itself again and attach the new Disks.&lt;br /&gt;
# You need to make sure the Disks are on the correct SCSI controllers&lt;br /&gt;
# The Disks need to be on following Positions&lt;br /&gt;
## hd.boot.vmdk SCSI-Controller 0 0:0&lt;br /&gt;
## hd-cf.vmdk SCSI-Controller 0 0:1&lt;br /&gt;
## hd-flash.vmdk SCSI-Controller 1 1:0&lt;br /&gt;
## hd-dump.vmdk SCSI-Controller 1 1:1&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
For detailed implementation of FT-enabled VMWare infrastructure, please refer to the [https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-availability/GUID-7525F8DD-9B8F-4089-B020-BAA4AC6509D2.html VMWare documentation].&lt;br /&gt;
&lt;br /&gt;
On the IPVA side no special settings or changes must be performed to enable FT.&lt;br /&gt;
&lt;br /&gt;
We have tested the FT functionality with following setup and also in our cloud setup:&lt;br /&gt;
&lt;br /&gt;
[[File:FT Test setup.png|FT_Test_Setup.png/|FT_Test_Setup.png/]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
While testing the Softphones where in a conference and also calling a WQ. While in an active call, a failure of ESXi/vSphere host was simulated. While testing multiple times, there were some noticeable interruptions in the media stream were realized, while the failover. Even with Video streams there were no problem and everything worked without noticeable problematic behavior.&lt;br /&gt;
&lt;br /&gt;
===Migration===&lt;br /&gt;
To Migrate your existing System to an FT-System, you need to set up a SCSI-IPVA and Download the Config(NOT download with standard password) from your old IPVA. Upload it to your new SCSI-IPVA.&lt;br /&gt;
&lt;br /&gt;
===Known Problems===&lt;br /&gt;
The Fault Tolerance does not protect the system from software failures(e.g. trap of the IPVA).&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
*[[Reference15r1:Concept Innovaphone Virtual Appliance]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Lme</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto15r1:Implement_PBX_with_zero_downtime_using_IPVA_and_VMWare_Fault_Tolerance&amp;diff=74432</id>
		<title>Howto15r1:Implement PBX with zero downtime using IPVA and VMWare Fault Tolerance</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto15r1:Implement_PBX_with_zero_downtime_using_IPVA_and_VMWare_Fault_Tolerance&amp;diff=74432"/>
		<updated>2024-12-04T08:51:18Z</updated>

		<summary type="html">&lt;p&gt;Lme: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FIXME|reason=This product is in the beta phase and is not yet finished}}&lt;br /&gt;
==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* IPVA 15r1&lt;br /&gt;
* VMWare ESXi (vSphere) 6.7 - 8&lt;br /&gt;
* VMWare vCenter Server 6.7 - 8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: high availability  --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
===Problem Details===&lt;br /&gt;
The standby functionality implemented in the innovaphone PBX enables to start PBX software on the standby gateway in fail over scenario.  A drawback in this implementation is following - since the standby PBX is running on other physical gateway, all active calls and connections are interrupted while switching from master to standby. The switch to standby hardware takes a while, so the downtime about 2 minutes must be considered additionally.&lt;br /&gt;
&lt;br /&gt;
To be able to implement a PBX with zero downtime on hardware failures, a VMWare [http://www.vmware.com/de/products/vsphere/features/fault-tolerance.html Fault Tolerance(FT)] feature of the VMWare vSphere can be used. Therefore the PBX must be implemented on the innovaphone Virtual Appliance (IPVA) and the Virtual Machine running IPVA must be hosted on a FT-enabled VMWare Cluster.&lt;br /&gt;
&lt;br /&gt;
===System Requirements===&lt;br /&gt;
The VMWare infrastructure must fulfil following requirements to be able to run FT-enabled VMs:&lt;br /&gt;
* VMware vSphere Advanced or Enterprise Edition (FT Support included in this editions)&lt;br /&gt;
* The CPU and chip-set of the Hosts must support Fault Tolerance.&lt;br /&gt;
* The ESXi/vSphere hosts must be equipped with same CPU type and be part of FT-enabled Cluster&lt;br /&gt;
&lt;br /&gt;
===Prepare your VM===&lt;br /&gt;
If you want to use FT you need to use the IPVA Version which includes SCSI-Disks, it&#039;s not possible to use the &amp;quot;Old&amp;quot; IPVA with IDE-Disks. &lt;br /&gt;
To Run the SCSI-IPVA on VMware, you need to do Following steps:&lt;br /&gt;
* Convert all 4 disks to the VM by using the following command. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
vmkfstools -i /vmfs/volumes/datastore/current-VM-folder/disk.vmdk /vmfs/volumes/datastore/new-VM-folder/disk.vmdk&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Now you need to attach the New Disks to your VM:&lt;br /&gt;
# You need to detach your old Disks from your IPVA in the settings of your IPVA itself. &lt;br /&gt;
# After you removed all the old Disks, you now need to open the Settings of your IPVA itself again and attach the new Disks.&lt;br /&gt;
# You need to make sure the Disks are on the correct SCSI controllers&lt;br /&gt;
# The Disks need to be on following Positions&lt;br /&gt;
## hd.boot.vmdk SCSI-Controller 0 0:0&lt;br /&gt;
## hd-cf.vmdk SCSI-Controller 0 0:1&lt;br /&gt;
## hd-flash.vmdk SCSI-Controller 1 1:0&lt;br /&gt;
## hd-dump.vmdk SCSI-Controller 1 1:1&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
For detailed implementation of FT-enabled VMWare infrastructure, please refer to the [https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-availability/GUID-7525F8DD-9B8F-4089-B020-BAA4AC6509D2.html VMWare documentation].&lt;br /&gt;
&lt;br /&gt;
On the IPVA side no special settings or changes must be performed to enable FT.&lt;br /&gt;
&lt;br /&gt;
We have tested the FT functionality with following setup and also in our cloud setup:&lt;br /&gt;
&lt;br /&gt;
[[File:FT Test setup.png|FT_Test_Setup.png/|FT_Test_Setup.png/]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
While testing the Softphones where in a conference and also calling a WQ. While in an active call, a failure of ESXi/vSphere host was simulated. While testing multiple times, there were some noticeable interruptions in the media stream were realized, while the failover. Even with Video streams there were no problem and everything worked without noticeable problematic behavior.&lt;br /&gt;
&lt;br /&gt;
===Known Problems===&lt;br /&gt;
The Fault Tolerance does not protect the system from software failures(e.g. trap of the IPVA).&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
*[[Reference15r1:Concept Innovaphone Virtual Appliance]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Lme</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto15r1:Implement_PBX_with_zero_downtime_using_IPVA_and_VMWare_Fault_Tolerance&amp;diff=74431</id>
		<title>Howto15r1:Implement PBX with zero downtime using IPVA and VMWare Fault Tolerance</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto15r1:Implement_PBX_with_zero_downtime_using_IPVA_and_VMWare_Fault_Tolerance&amp;diff=74431"/>
		<updated>2024-12-04T08:05:31Z</updated>

		<summary type="html">&lt;p&gt;Lme: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FIXME|reason=This product is in the beta phase and is not yet finished}}&lt;br /&gt;
==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* IPVA 15r1&lt;br /&gt;
* VMWare ESXi (vSphere) 6.7 - 8&lt;br /&gt;
* VMWare vCenter Server 6.7 - 8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: high availability  --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
===Problem Details===&lt;br /&gt;
The standby functionality implemented in the innovaphone PBX enables to start PBX software on the standby gateway in fail over scenario.  A drawback in this implementation is following - since the standby PBX is running on other physical gateway, all active calls and connections are interrupted while switching from master to standby. The switch to standby hardware takes a while, so the downtime about 2 minutes must be considered additionally.&lt;br /&gt;
&lt;br /&gt;
To be able to implement a PBX with zero downtime on hardware failures, a VMWare [http://www.vmware.com/de/products/vsphere/features/fault-tolerance.html Fault Tolerance(FT)] feature of the VMWare vSphere can be used. Therefore the PBX must be implemented on the innovaphone Virtual Appliance (IPVA) and the Virtual Machine running IPVA must be hosted on a FT-enabled VMWare Cluster.&lt;br /&gt;
&lt;br /&gt;
===System Requirements===&lt;br /&gt;
The VMWare infrastructure must fulfil following requirements to be able to run FT-enabled VMs:&lt;br /&gt;
* VMware vSphere Advanced or Enterprise Edition (FT Support included in this editions)&lt;br /&gt;
* The CPU and chip-set of the Hosts must support Fault Tolerance.&lt;br /&gt;
* The ESXi/vSphere hosts must be equipped with same CPU type and be part of FT-enabled Cluster&lt;br /&gt;
&lt;br /&gt;
===Prepare your VM===&lt;br /&gt;
If you want to use FT you need to use the IPVA Version which includes SCSI-Disks, it&#039;s not possible to use the &amp;quot;Old&amp;quot; IPVA with IDE-Disks. &lt;br /&gt;
To Run the SCSI-IPVA on VMware, you need to do Following steps:&lt;br /&gt;
* Convert all 4 disks to the VM by using the following command. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
vmkfstools -i /vmfs/volumes/datastore/current-VM-folder/disk.vmdk /vmfs/volumes/datastore/new-VM-folder/disk.vmdk&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Now you need to attach the New Disks to your VM:&lt;br /&gt;
# You need to detach your old Disks from your IPVA in the settings of your IPVA itself. &lt;br /&gt;
# After you removed all the old Disks, you now need to open the Settings of your IPVA itself again and attach the new Disks.&lt;br /&gt;
# You need to make sure the Disks are on the correct SCSI controllers&lt;br /&gt;
# The Disks need to be on following Positions&lt;br /&gt;
## hd.boot.vmdk SCSI-Controller 0 0:0&lt;br /&gt;
## hd-cf.vmdk SCSI-Controller 0 0:1&lt;br /&gt;
## hd-flash.vmdk SCSI-Controller 1 1:0&lt;br /&gt;
## hd-dump.vmdk SCSI-Controller 1 1:1&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
For detailed implementation of FT-enabled VMWare infrastructure, please refer to the VMWare documentation.&lt;br /&gt;
&lt;br /&gt;
On the IPVA side no special settings or changes must be performed to enable FT.&lt;br /&gt;
&lt;br /&gt;
We have tested the FT functionality with following setup and also in our cloud setup:&lt;br /&gt;
&lt;br /&gt;
[[File:FT Test setup.png|FT_Test_Setup.png/|FT_Test_Setup.png/]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
While testing the Softphones where in a conference and also calling a WQ. While in an active call, a failure of ESXi/vSphere host was simulated. While testing multiple times, there were some noticeable interruptions in the media stream were realized, while the failover. Even with Video streams there were no problem and everything worked without noticeable problematic behavior.&lt;br /&gt;
&lt;br /&gt;
===Known Problems===&lt;br /&gt;
The Fault Tolerance does not protect the system from software failures(e.g. trap of the IPVA).&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
*[[Reference15r1:Concept Innovaphone Virtual Appliance]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Lme</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto15r1:Implement_PBX_with_zero_downtime_using_IPVA_and_VMWare_Fault_Tolerance&amp;diff=74430</id>
		<title>Howto15r1:Implement PBX with zero downtime using IPVA and VMWare Fault Tolerance</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto15r1:Implement_PBX_with_zero_downtime_using_IPVA_and_VMWare_Fault_Tolerance&amp;diff=74430"/>
		<updated>2024-12-04T08:00:54Z</updated>

		<summary type="html">&lt;p&gt;Lme: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FIXME|reason=This product is in the beta phase and is not yet finished}}&lt;br /&gt;
==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* IPVA 15r1&lt;br /&gt;
* VMWare ESXi (vSphere) 6.7 - 8&lt;br /&gt;
* VMWare vCenter Server 6.7 - 8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: high availability  --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
===Problem Details===&lt;br /&gt;
The standby functionality implemented in the innovaphone PBX enables to start PBX software on the standby gateway in fail over scenario.  A drawback in this implementation is following - since the standby PBX is running on other physical gateway, all active calls and connections are interrupted while switching from master to standby. The switch to standby hardware takes a while, so the downtime about 2 minutes must be considered additionally.&lt;br /&gt;
&lt;br /&gt;
To be able to implement a PBX with zero downtime on hardware failures, a VMWare [http://www.vmware.com/de/products/vsphere/features/fault-tolerance.html Fault Tolerance(FT)] feature of the VMWare vSphere can be used. Therefore the PBX must be implemented on the innovaphone Virtual Appliance (IPVA) and the Virtual Machine running IPVA must be hosted on a FT-enabled VMWare Cluster.&lt;br /&gt;
&lt;br /&gt;
===System Requirements===&lt;br /&gt;
The VMWare infrastructure must fulfil following requirements to be able to run FT-enabled VMs:&lt;br /&gt;
* VMware vSphere Advanced or Enterprise Edition (FT Support included in this editions)&lt;br /&gt;
* The CPU and chip-set of the Hosts must support Fault Tolerance.&lt;br /&gt;
* The ESXi/vSphere hosts must be equipped with same CPU type and be part of FT-enabled Cluster&lt;br /&gt;
&lt;br /&gt;
===Prepare your VM===&lt;br /&gt;
If you want to use FT you need to use the IPVA Version which includes SCSI-Disks, it&#039;s not possible to use the &amp;quot;Old&amp;quot; IPVA with IDE-Disks. &lt;br /&gt;
To Run the SCSI-IPVA on VMware, you need to do Following steps:&lt;br /&gt;
* Convert all 4 disks to the VM by using the following command. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
vmkfstools -i /vmfs/volumes/datastore/current-VM-folder/disk.vmdk /vmfs/volumes/datastore/new-VM-folder/disk.vmdk&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Now you need to attach the New Disks to your VM:&lt;br /&gt;
# You need to detach your old Disks from your IPVA in the settings of your IPVA itself. &lt;br /&gt;
# After you removed all the old Disks, you now need to open the Settings of your IPVA itself again and attach the new Disks.&lt;br /&gt;
# You need to make sure the Disks are on the correct SCSI controllers&lt;br /&gt;
# The Disks need to be on following Positions&lt;br /&gt;
## hd.boot.vmdk SCSI-Controller 0 0:0&lt;br /&gt;
## hd-cf.vmdk SCSI-Controller 0 0:1&lt;br /&gt;
## hd-flash.vmdk SCSI-Controller 1 1:0&lt;br /&gt;
## hd-dump.vmdk SCSI-Controller 1 1:1&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
For detailed implementation of FT-enabled VMWare infrastructure, please refer to the VMWare documentation.&lt;br /&gt;
&lt;br /&gt;
On the IPVA side no special settings or changes must be performed to enable FT.&lt;br /&gt;
&lt;br /&gt;
We have tested the FT functionality with following setup and also in our cloud setup:&lt;br /&gt;
&lt;br /&gt;
[[File:FT Test setup.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
While testing the Softphones where in a conference and also calling a WQ. While in an active call, a failure of ESXi/vSphere host was simulated. While testing multiple times, there were some noticeable interruptions in the media stream were realized, while the failover. Even with Video streams there were no problem and everything worked without noticeable problematic behavior. &lt;br /&gt;
&lt;br /&gt;
===Known Problems===&lt;br /&gt;
The Fault Tolerance does not protect the system from software failures(e.g. trap of the IPVA).&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
*[[Reference15r1:Concept Innovaphone Virtual Appliance]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Lme</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:FT_Test_setup.png&amp;diff=74429</id>
		<title>File:FT Test setup.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:FT_Test_setup.png&amp;diff=74429"/>
		<updated>2024-12-04T07:55:53Z</updated>

		<summary type="html">&lt;p&gt;Lme: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Test Setup mit welchem FT test durchgeführt wurden&lt;/div&gt;</summary>
		<author><name>Lme</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto15r1:Implement_PBX_with_zero_downtime_using_IPVA_and_VMWare_Fault_Tolerance&amp;diff=74388</id>
		<title>Howto15r1:Implement PBX with zero downtime using IPVA and VMWare Fault Tolerance</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto15r1:Implement_PBX_with_zero_downtime_using_IPVA_and_VMWare_Fault_Tolerance&amp;diff=74388"/>
		<updated>2024-12-03T09:03:11Z</updated>

		<summary type="html">&lt;p&gt;Lme: /* More Information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FIXME|reason=This product is in the beta phase and is not yet finished}}&lt;br /&gt;
==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* IPVA 15r1&lt;br /&gt;
* VMWare ESXi (vSphere) 6.7 - 8&lt;br /&gt;
* VMWare vCenter Server 6.7 - 8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: high availability  --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
===Problem Details===&lt;br /&gt;
The standby functionality implemented in the innovaphone PBX enables to start PBX software on the standby gateway in fail over scenario.  A drawback in this implementation is following - since the standby PBX is running on other physical gateway, all active calls and connections are interrupted while switching from master to standby. The switch to standby hardware takes a while, so the downtime about 2 minutes must be considered additionally.&lt;br /&gt;
&lt;br /&gt;
To be able to implement a PBX with zero downtime on hardware failures, a VMWare [http://www.vmware.com/de/products/vsphere/features/fault-tolerance.html Fault Tolerance(FT)] feature of the VMWare vSphere can be used. Therefore the PBX must be implemented on the innovaphone Virtual Appliance (IPVA) and the Virtual Machine running IPVA must be hosted on a FT-enabled VMWare Cluster.&lt;br /&gt;
&lt;br /&gt;
===System Requirements===&lt;br /&gt;
The VMWare infrastructure must fulfil following requirements to be able to run FT-enabled VMs:&lt;br /&gt;
* VMware vSphere Advanced or Enterprise Edition (FT Support included in this editions)&lt;br /&gt;
* The CPU and chip-set of the Hosts must support Fault Tolerance.&lt;br /&gt;
* The ESXi/vSphere hosts must be equipped with same CPU type and be part of FT-enabled Cluster&lt;br /&gt;
&lt;br /&gt;
===Prepare your VM===&lt;br /&gt;
If you want to use FT you need to use the IPVA Version which includes SCSI-Disks, it&#039;s not possible to use the &amp;quot;Old&amp;quot; IPVA with IDE-Disks. &lt;br /&gt;
To Run the SCSI-IPVA on VMware, you need to do Following steps:&lt;br /&gt;
* Convert all 4 disks to the VM by using the following command. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
vmkfstools -i /vmfs/volumes/datastore/current-VM-folder/disk.vmdk /vmfs/volumes/datastore/new-VM-folder/disk.vmdk&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Now you need to attach the New Disks to your VM:&lt;br /&gt;
# You need to detach your old Disks from your IPVA in the settings of your IPVA itself. &lt;br /&gt;
# After you removed all the old Disks, you now need to open the Settings of your IPVA itself again and attach the new Disks.&lt;br /&gt;
# You need to make sure the Disks are on the correct SCSI controllers&lt;br /&gt;
# The Disks need to be on following Positions&lt;br /&gt;
## hd.boot.vmdk SCSI-Controller 0 0:0&lt;br /&gt;
## hd-cf.vmdk SCSI-Controller 0 0:1&lt;br /&gt;
## hd-flash.vmdk SCSI-Controller 1 1:0&lt;br /&gt;
## hd-dump.vmdk SCSI-Controller 1 1:1&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
For detailed implementation of FT-enabled VMWare infrastructure, please refer to the VMWare documentation.&lt;br /&gt;
&lt;br /&gt;
On the IPVA side no special settings or changes must be performed to enable FT.&lt;br /&gt;
&lt;br /&gt;
We have tested the FT functionality with following setup:&lt;br /&gt;
&lt;br /&gt;
[[Image:Vmware ft test setup.png|vmware_ft_test_setup.png/|vmware_ft_test_setup.png/]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
While testing a call between the IP-Phones was established. The media stream was routed via PBX(&amp;quot;RTP Proxy&amp;quot; enabled on PBX/General page). While in an active call, a failure of ESXi/vSphere host was simulated. Two short (1 second) noticeable interruptions in the media stream were realized, while the failover. In case with media stream between the phones (no media relay), no interruption is possible to hear.&lt;br /&gt;
&lt;br /&gt;
===Known Problems===&lt;br /&gt;
The Fault Tolerance does not protect the system from software failures(e.g. trap of the IPVA).&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
*[[Reference15r1:Concept Innovaphone Virtual Appliance]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Lme</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference14r2:Concept_App_Service_TechAssist&amp;diff=74159</id>
		<title>Reference14r2:Concept App Service TechAssist</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference14r2:Concept_App_Service_TechAssist&amp;diff=74159"/>
		<updated>2024-11-19T12:18:05Z</updated>

		<summary type="html">&lt;p&gt;Lme: /* get_pbx_objects_from_config(string config) : array */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[Category:Concept|Apps]]&lt;br /&gt;
[[Category:Concept App Service TechAssist]]&lt;br /&gt;
&amp;lt;!-- techassist, ticket, analyze, debug, tests --&amp;gt;&lt;br /&gt;
== Applies To == &lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX from version 13r2&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
The idea of the TechAssist app is to provide helpful tools for technicians, as well as to analyze static and runtime information of a system and check for problems and improvements. In this way, the app can help you find and solve problems and misconfigurations independently and quickly.&lt;br /&gt;
For this purpose, the app supports&lt;br /&gt;
* the execution of &#039;&#039;tests&#039;&#039;&lt;br /&gt;
** a bunch of manufacturer tests are supplied with the app&lt;br /&gt;
** you can create and save your own tests&lt;br /&gt;
** testresults can be downloaded to attach them to a support ticket&lt;br /&gt;
* a PBX license overview&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
There are no licenses needed for this app&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
The TechAssist App is installed by default for every new installation and is accessible from the Config Admin template.&lt;br /&gt;
&lt;br /&gt;
=== With the PBX manager AP app installer plug-in === &lt;br /&gt;
[[File:Ap_app_installer.png]]&lt;br /&gt;
&lt;br /&gt;
Go to the PBX manager and open the &#039;&#039;&#039;&amp;quot;AP app installer&amp;quot;&#039;&#039;&#039; plugin. On the right panel, the App Store will be shown. &#039;&#039;Hint : if you access it for the first time, you will need to accept the &amp;quot;Terms of Use of the innovaphone App Store&amp;quot;&#039;&#039;&lt;br /&gt;
* In the search field located on the top right corner of the store, search for &#039;&#039;&#039;&amp;quot;Techassist&amp;quot;&#039;&#039;&#039; and click on it&lt;br /&gt;
* Select the proper firmware version, here &#039;&#039;&#039;&amp;quot;v14&amp;quot;&#039;&#039;&#039; and click on install&lt;br /&gt;
* Tick &amp;quot;I accept the terms of use&amp;quot; and continue by clicking on the install yellow button&lt;br /&gt;
* Wait until the install has been finished&lt;br /&gt;
* Close and open the PBX manager to refresh the list of the available colored AP plugin&lt;br /&gt;
* Click on the &#039;&#039;&#039;&amp;quot;AP techassist&amp;quot;&#039;&#039;&#039; and click on &#039;&#039;&#039;&amp;quot; + Add an App&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
* Enter a &#039;&#039;&#039;&amp;quot;Name&amp;quot;&#039;&#039;&#039; that is used as display name &#039;&#039;(all character allowed)&#039;&#039; for it and the &#039;&#039;&#039;&amp;quot;SIP&amp;quot;&#039;&#039;&#039; name that is the administrative field &#039;&#039;(no space, no capital letters)&#039;&#039;. &#039;&#039;e.g : Name: TechAssist, SIP: techassist&#039;&#039;&lt;br /&gt;
&#039;&#039;Hint : The App needs access-right to one devices-api. The access to &amp;quot;devices-api&amp;quot; will be set automatically. If you want to have another devices-apis working with techassist, you have to configure it manually in the advanced UI.&#039;&#039;&lt;br /&gt;
* Tick the appropriate template to distribute the App&lt;br /&gt;
* Click OK to save the settings and a green check mark will be shown to inform you that the configuration is good&lt;br /&gt;
&lt;br /&gt;
== Test Engine - Overview ==&lt;br /&gt;
=== Technical look inside ===&lt;br /&gt;
[[File:Concept_TechAssist.png|thumb|upright=1.0|right|Technical Overview]]&lt;br /&gt;
The app service receives multiple incoming websocket connections of the app objects from the PBXes. By assigning rights to a to your desired &amp;quot;devices-apis&amp;quot; (in the Apps tab), the app service receives the corresponding rights to connect to the respectively activated DevicesApps. All managed domains and devices can then be read in via this connection. (One TechAssist can only connect with one device-api)&lt;br /&gt;
With this procedure, you can work with one DevicesApp instance and across all domains and devices in it.&lt;br /&gt;
&lt;br /&gt;
=== Submodules ===&lt;br /&gt;
The app contains various sub-modules in order to be able to carry out the tests provided by the manufacturer and also to be able to integrate custom tests created by yourself.&lt;br /&gt;
&lt;br /&gt;
;scheduler&lt;br /&gt;
: The scheduler initially loads all tests and performs a plausibility check of the individual tests. From this status onwards, the scheduler ensures that all tests are executed in the required time intervals.&lt;br /&gt;
: Inside the Scheduler the tick is 5000 milliseconds, and test are executed sequentially to prevent high system load&lt;br /&gt;
;cmd&lt;br /&gt;
: The cmd submodule (derived from &amp;quot;command&amp;quot;) can communicate with devices in the installation to query a status, the config or similar. The submodule takes care of all the information that tests from an installation want to have, consolidates them so that queries do not have to be executed multiple times and caches the results.&lt;br /&gt;
;test&lt;br /&gt;
: The test submodule is instantiated per test and provides all necessary functionalities within a test.&lt;br /&gt;
&lt;br /&gt;
=== Language ===&lt;br /&gt;
By design, only the app itself is available in multiple languages. The content of the tests and technical output is intentionally only available in english.&lt;br /&gt;
&lt;br /&gt;
=== Tests ===&lt;br /&gt;
The app contains a bunch of embedded test, but it is also possible to create and save your own tests.&lt;br /&gt;
&lt;br /&gt;
== UI ==&lt;br /&gt;
=== Expert Mode ===&lt;br /&gt;
By default there are some expert information hidden in the left menu bar. You will find a switch for that in the left menu (non-mobile-view) to enable all menu items.&lt;br /&gt;
&lt;br /&gt;
=== Dealing with the Code Editor ===&lt;br /&gt;
The Code Editor is a tool for viewing the tests supplied and writing your own tests based on these tests.&lt;br /&gt;
&lt;br /&gt;
The editor is divided into 3 basic areas.&lt;br /&gt;
;Left - Code Editor&lt;br /&gt;
:This is the code editor where you can write your test code in the browser. When you close the app, the content in the editor is saved, so that the next time you open the app you will find your old code again.&lt;br /&gt;
&lt;br /&gt;
;Top right - Menu bar&lt;br /&gt;
:Here you will find the following functions:&lt;br /&gt;
:Selection of all existing Tests (predefined vendor Tests and your own custom Tests)&lt;br /&gt;
:Load the source code of the selected Test to the code editor&lt;br /&gt;
:Delete the selected test from the app (This is only possible for custom tests)&lt;br /&gt;
:Execute the source code (with or without cached commands in the service) in the Code Editor and show the result&lt;br /&gt;
:Clear the Code Editor&lt;br /&gt;
:Save the current Content from the code Editor as Test&lt;br /&gt;
::The title of your test is divided from the &#039;&#039;title&#039;&#039; property in your test (lower based without non-alphanumeric characters). This means: If you save another Test with the same &#039;&#039;title&#039;&#039; the value will be saved in the other test.&lt;br /&gt;
&lt;br /&gt;
;Top right - Results&lt;br /&gt;
:If you execute, save or delete a test you will get the response/results in this area&lt;br /&gt;
&lt;br /&gt;
== Create your own Testscript ==&lt;br /&gt;
You can create your own Test scripts in a JavaScript based environment.&lt;br /&gt;
A test itself is a JavaScript object with some configurations properties and a section of &#039;&#039;freestyle&#039;&#039; code to use JavaScript habits to perform your test. If your test will be executed, an above layer will call your &#039;&#039;test()&#039;&#039; method and want to have a return object with your result.&lt;br /&gt;
&lt;br /&gt;
There already exists a global Object called &#039;&#039;&#039;tests_add&#039;&#039;&#039;. You can add your own Test as Property to this existing Object like:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
tests_add.my_new_test = tests_add.my_new_test || {&lt;br /&gt;
   title: &#039;Check for xyz&#039;,&lt;br /&gt;
   // configuration properties&lt;br /&gt;
   &lt;br /&gt;
   test: function (cmd, result) {&lt;br /&gt;
       // your custom test code&lt;br /&gt;
&lt;br /&gt;
       return {&lt;br /&gt;
           success: false,&lt;br /&gt;
           msg: &#039;....&#039;&lt;br /&gt;
       };&lt;br /&gt;
   }&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The way to add a test with &amp;lt;code&amp;gt;tests_add.my_new_test = tests_add.my_new_test || {}&amp;lt;/code&amp;gt; is important so that two tests do not overwrite each other. Please also pay attention to this. In this example, we have a &#039;&#039;logical condition&#039;&#039; in the first line. If the test &#039;&#039;my_new_test&#039;&#039; already exists in the object &#039;&#039;tests_add&#039;&#039; the left side from the &#039;&#039;OR-condition&#039;&#039; is &#039;&#039;true&#039;&#039;, and the existing test takes place. Otherwise, it is &#039;&#039;false&#039;&#039; and the right side (your new test object) will be written to &#039;&#039;tests_add.my_new_test&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Configuration Properties ===&lt;br /&gt;
You must configure certain properties in your test so that the scheduler knows exactly how to handle your test.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
tests_add.my_new_test = tests_add.my_new_test || {&lt;br /&gt;
  title: &#039;Unknown / New devices&#039;,&lt;br /&gt;
  description: &#039;Check for unassigned devices in your installation&#039;,&lt;br /&gt;
  todo: &#039;Please check the unknown devices in your installation and acceppt or delete the devices&#039;,&lt;br /&gt;
  author: &#039;slu@innovaphone.com&#039;,&lt;br /&gt;
  enabled: true,&lt;br /&gt;
  schedule: &#039;1h&#039;,&lt;br /&gt;
  commands: { ... },&lt;br /&gt;
&lt;br /&gt;
  test: function (cmd, result) {&lt;br /&gt;
    // your custom test code&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Mandatory properties ====&lt;br /&gt;
&lt;br /&gt;
; title&lt;br /&gt;
: string | The title of your test, which is displayed in the UI&lt;br /&gt;
; description&lt;br /&gt;
: string | A short description of your test, which is displayed in the UI&lt;br /&gt;
; todo&lt;br /&gt;
: string | An instruction on what the user has to do if the check fails. It will be displayed above the logfile in failed tests. (You can use &#039;&#039;\r\n&#039;&#039; for line breaks)&lt;br /&gt;
: Variable &amp;lt;nowiki&amp;gt;{{VERSION}}&amp;lt;/nowiki&amp;gt; will be replaced to current Version of the app like &amp;quot;14r1&amp;quot;&lt;br /&gt;
; author&lt;br /&gt;
: string | The contact of the person who create the test&lt;br /&gt;
; schedule&lt;br /&gt;
: string | The time interval during which the test is to be carried out independently. The format is composed of a numerical value and interval value. This allows you to create combinations such as &amp;lt;code&amp;gt;5m (every 5 minutes), 10h (every 10 hours) or 1d (every day) &amp;lt;/code&amp;gt;. A special case which is also allowed is the value &#039;&#039;none&#039;&#039;. With a &#039;&#039;none&#039;&#039; value, your test will not be executed automatically, but is available in the app. So the user is able to execute your test manually.&lt;br /&gt;
: Possible interval values are:&lt;br /&gt;
: &amp;lt;code&amp;gt;s&amp;lt;/code&amp;gt; (seconds)&lt;br /&gt;
: &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; (minutes)&lt;br /&gt;
: &amp;lt;code&amp;gt;h&amp;lt;/code&amp;gt; (hours)&lt;br /&gt;
: &amp;lt;code&amp;gt;d&amp;lt;/code&amp;gt; (days)&lt;br /&gt;
: &amp;lt;code&amp;gt;w&amp;lt;/code&amp;gt; (weeks)&lt;br /&gt;
: Please note that each execution of a test requires resources. For example, if you create a test with &#039;&#039;1m&#039;&#039; that is executed every minute, you may well create an unpleasant impact! The system automatically checks the execution time of your test against your specified interval. If your test runs for a longer time than your schedule, your &#039;&#039;schedule&#039;&#039; parameter is automatically doubled by the system.&lt;br /&gt;
: Please note the [[#Submodules|Submodule Scheduler]] with Tick and synchronous execution. For example, it is not possible to execute a test every second.&lt;br /&gt;
&lt;br /&gt;
==== Optional properties ====&lt;br /&gt;
&lt;br /&gt;
; commands&lt;br /&gt;
: object | An object in which you can list all the commands, values, etc. that you want to use later in your test. As soon as your test() method is called, the returns of these commands are passed in as parameters so that you can analyze them. For detailed documentation, please see the [[#Property_.22commands.22|commands-documentation]] below.&lt;br /&gt;
; minBuild&lt;br /&gt;
: int | The minimum build version of the app, that the Test will be executed.&lt;br /&gt;
; enabled&lt;br /&gt;
: bool | If &#039;&#039;false&#039;&#039; the test will be loaded but not executed. The user will see the test in the list of test, and it is possible to enable it (default: &#039;&#039;true&#039;&#039;)&lt;br /&gt;
; hidden&lt;br /&gt;
: bool | If &#039;&#039;true&#039;&#039; the test will be skipped by the system and will not be loaded (default: &#039;&#039;false&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
=== Property &amp;quot;commands&amp;quot; ===&lt;br /&gt;
The property &#039;&#039;commands&#039;&#039; is an object where you can define innovaphone specific commands that are executed before your test will be executed. The results of the given commands will be passed to your test in the parameter &#039;&#039;results&#039;&#039;. Think about that, all your commands will be cached until the &#039;&#039;schedule&#039;&#039; timeout is exceeded. This means that you will only get a new result of the command after the schedule time has elapsed in relation to the time of your last execution. The only exceptions is when the user manually re-executes a test via the UI or caching has been explicitly disabled at the command&lt;br /&gt;
&lt;br /&gt;
You have to consider a special nested notation when creating your commands, so that you can use them later.&lt;br /&gt;
&lt;br /&gt;
==== outer commands-object ====&lt;br /&gt;
Let&#039;s start with some first basic rules:&lt;br /&gt;
* &#039;&#039;commands&#039;&#039; is an object with one property per command. At this moment we only list commands, we don&#039;t take care about specific devices, types of models or so on.&lt;br /&gt;
* Every child-property (let&#039;s call it &amp;quot;command-object&amp;quot;) is a new object which contains all needed information for this specific command&lt;br /&gt;
* The title of the property &amp;quot;command-object&amp;quot; is defined by yourself&lt;br /&gt;
** Spoiler: The title of your &amp;quot;command-object&amp;quot; should be used later if you want to read the result for a specific device&lt;br /&gt;
* You can list multiple &amp;quot;command-objects&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Up to here we have the following and can define it like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
commands: {&lt;br /&gt;
  my_command_one: {},&lt;br /&gt;
  my_command_two: {},&lt;br /&gt;
},&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== single command-object ====&lt;br /&gt;
&lt;br /&gt;
Then we have some new rules per &amp;quot;command-object&amp;quot;:&lt;br /&gt;
* A property called &#039;&#039;cmd&#039;&#039; is expected. This property contains the real command which shall be executed (Remember, at this moment we only list commands, we don&#039;t take care about specific devices, types of models or so on)&lt;br /&gt;
** Example 1: &amp;lt;code&amp;gt;cmd: &#039;CMD0/box_info.xml&#039;&amp;lt;/code&amp;gt; will give you the xml output of the general overview page&lt;br /&gt;
** Example 2: &amp;lt;code&amp;gt;cmd: &#039;!mod cmd CDR0 qs&#039;&amp;lt;/code&amp;gt; will give you the amount of buffered CDRs in the CDR0 interface&lt;br /&gt;
** Example 3: &amp;lt;code&amp;gt;cmd: &#039;cfg.txt&#039;&amp;lt;/code&amp;gt; will give you back the full configuration file&lt;br /&gt;
** If you are already firm with the innovaphone based command syntax, you will see that you can use any HTTP command which can be sent to an innovaphone device&lt;br /&gt;
* Some more properties can be defined optionally. See documentation below&lt;br /&gt;
&lt;br /&gt;
Up to here we have an idea of a specific &amp;quot;command-object&amp;quot; and can do the following now:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
commands: {&lt;br /&gt;
  buffered_cdr0: {&lt;br /&gt;
    cmd: &#039;!mod cmd CDR0 qs&#039;,&lt;br /&gt;
  },&lt;br /&gt;
  buffered_cdr1: {&lt;br /&gt;
    cmd: &#039;!mod cmd CDR1 qs&#039;,&lt;br /&gt;
  },&lt;br /&gt;
},&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With this command, we can collect the &amp;quot;buffered CDRs&amp;quot; on both CDR Interfaces in our boxes. Maybe you see it directly... This will not make really sense in a real setup because CDRs only generated by Gateways/PBXes. So we don&#039;t need to bother phones with these requests.&lt;br /&gt;
So from now on we take care about our defined command. There are optional parameters that we can also list inside a &amp;quot;command-object&amp;quot; to let the system know what is the to-do with this command.&lt;br /&gt;
&lt;br /&gt;
;cmd&lt;br /&gt;
: string | Any HTTP command you can send to an innovaphone device. There is a limit of 15 seconds for every http request. If your request exceeds this limit the request will be cancelled.&lt;br /&gt;
;cat&lt;br /&gt;
: array | An optional list of device types on which the command is to be executed. If &#039;&#039;cat&#039;&#039; is empty, it means all devices in your installation.&lt;br /&gt;
: You can define the following device categories:&lt;br /&gt;
: &amp;lt;code&amp;gt;pbx&amp;lt;/code&amp;gt; - all PBXes&lt;br /&gt;
: &amp;lt;code&amp;gt;gw&amp;lt;/code&amp;gt; - all Gateways&lt;br /&gt;
: &amp;lt;code&amp;gt;ap&amp;lt;/code&amp;gt; - all App Platforms&lt;br /&gt;
: &amp;lt;code&amp;gt;dect&amp;lt;/code&amp;gt; - all Dect Gateways&lt;br /&gt;
: &amp;lt;code&amp;gt;phone&amp;lt;/code&amp;gt; - all Phones&lt;br /&gt;
;cache&lt;br /&gt;
: bool | If you set it to &#039;&#039;false&#039;&#039; you will never get a cached value. Please use this option wisely and only if you really need it. (default: &#039;&#039;true&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
Now let&#039;s improve our example from above and get the bufferd CDRx information only from pbxes and gateways.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
commands: {&lt;br /&gt;
  buffered_cdr0: {&lt;br /&gt;
    cmd: &#039;!mod cmd CDR0 qs&#039;,&lt;br /&gt;
    cat: [&#039;pbx&#039;, &#039;gw&#039;],&lt;br /&gt;
  },&lt;br /&gt;
  buffered_cdr1: {&lt;br /&gt;
    cmd: &#039;!mod cmd CDR1 qs&#039;,&lt;br /&gt;
    cat: [&#039;pbx&#039;, &#039;gw&#039;],&lt;br /&gt;
  },&lt;br /&gt;
},&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== execution and results of commands ====&lt;br /&gt;
Up to now, we have only defined commands that are to be executed on certain devices. When your test is executed, the previously defined commands are executed and the system collects the returns in a corresponding object (called &amp;lt;code&amp;gt;results&amp;lt;/code&amp;gt;) which is passed into your &amp;lt;code&amp;gt;test(cmd, results)&amp;lt;/code&amp;gt; method. There you can access the results and do whatever you want to test/analyze or whatever with the return value. You will find an example and some sample-code how to use the results-object in the description of the &#039;&#039;test() method.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== nested commands-objects ====&lt;br /&gt;
You can now send any commands and the results will be returned to you for evaluation.&lt;br /&gt;
As you may have already noticed, there is no possibility to place multiple commands in dependency. But this is the way to do this.&lt;br /&gt;
&lt;br /&gt;
For more complicated tests, it is necessary to execute several commands one after the other and to generate following commands dynamically on the basis of the result of the first command.&lt;br /&gt;
&lt;br /&gt;
For such tests, there is the possibility to specify an object &amp;quot;commands&amp;quot; within a &amp;quot;command-object&amp;quot;. From this level, you can define a dynamic function in which you can apply your own code based on the first result, and then return a new &#039;&#039;commands-object&#039;&#039;. In this return statement, you also have the option of returning another dynamic function in order to be able to create processes of any complexity. Please note that if you not return an &#039;&#039;object&#039;&#039; your return value will be discarded. The results of your nested &#039;&#039;command-objects&#039;&#039; will be passed to the &#039;&#039;test()&#039;&#039; method inside the &#039;&#039;results&#039;&#039; object.&lt;br /&gt;
&lt;br /&gt;
This is certainly not easy to understand. Therefore, let us take a closer look at it with an example.&lt;br /&gt;
&lt;br /&gt;
===== example: nested commands-object which generates the second command from the first result =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
commands: {&lt;br /&gt;
  certificates: {&lt;br /&gt;
    cmd: &#039;X509/mod_cmd.xml&#039;,&lt;br /&gt;
    cat: [&#039;pbx&#039;, &#039;gw&#039;, &#039;dect&#039;],&lt;br /&gt;
    commands: function(cmd, result) {&lt;br /&gt;
                // free style code to build the following commands&lt;br /&gt;
                var xml = cmd.parse_xml(result);&lt;br /&gt;
                //log(JSON.stringify(xml));&lt;br /&gt;
                &lt;br /&gt;
                var fingerprint;&lt;br /&gt;
                // get the fingerprint for single cert&lt;br /&gt;
                if (typeof xml.info.servercert.certificate[&#039;@fingerprint&#039;] !== &#039;undefined&#039;) {&lt;br /&gt;
                    fingerprint = xml.info.servercert.certificate[&#039;@fingerprint&#039;]&lt;br /&gt;
                }&lt;br /&gt;
                // use last certificates in case of multiple&lt;br /&gt;
                else {&lt;br /&gt;
                    fingerprint = xml.info.servercert.certificate[xml.info.servercert.certificate.length - 1][&#039;@fingerprint&#039;];&lt;br /&gt;
                }&lt;br /&gt;
                cmd.log(&#039;Fingerprint: &#039;+fingerprint);&lt;br /&gt;
                &lt;br /&gt;
                return {&lt;br /&gt;
                    certificate: {&lt;br /&gt;
                        cmd: &#039;X509/mod_cmd.xml?cmd=servercert-details&amp;amp;fingerprint=&#039;+fingerprint,&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our goal is to check which key-length is used in the device certificate. But there i no direct command to get this information. So we have to do it in multipe steps.&lt;br /&gt;
&lt;br /&gt;
In this sample, we request the following in the commands object:&lt;br /&gt;
# Execute our command &amp;quot;certificates&amp;quot; on devices (pbx, gw, dect) the command &amp;quot;X509/mod_cmd.xml&amp;quot; which will give you back the xml payload of the page [[{{NAMESPACE}}:General/Certificates]]&lt;br /&gt;
# If the first request is done, the nested &amp;quot;commands&amp;quot; object should be called and we get the result from the first command&lt;br /&gt;
## Now, inside the function &amp;lt;code&amp;gt;commands: function(cmd, result) {&amp;lt;/code&amp;gt; we can use some free-style code to to what we need, to build a following command&lt;br /&gt;
## Here we convert xml to an object and extract the certificate fingerprint from the result of the first request&lt;br /&gt;
## then we return an object with &amp;quot;command-objects&amp;quot;&lt;br /&gt;
### think about that is possible to add an new &amp;lt;code&amp;gt;commands: function(cmd, result) {&amp;lt;/code&amp;gt; inside the return to add a new level :-)&lt;br /&gt;
## this second command will be executed to for every device and the xml payload contains the device certifcate of the current device. (like the popup in the UI if you click on a specific certificate)&lt;br /&gt;
#If all nested commands are processed, then your test() will be called, and you get all the results (in this case &amp;quot;certificates&amp;quot; and &amp;quot;certificate&amp;quot;) in the results-object&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== example: nested commands-object which generates various commands from the first result =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
commands: {&lt;br /&gt;
	config: {&lt;br /&gt;
		cmd: &#039;cfg.txt&#039;,&lt;br /&gt;
		cat: [&#039;pbx&#039;],&lt;br /&gt;
		commands: function(cmd, result) {&lt;br /&gt;
			var lines = result.split(&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
			var output = {};&lt;br /&gt;
			&lt;br /&gt;
			// get pbx loc&lt;br /&gt;
			var loc = false;&lt;br /&gt;
			for (var l = 0; l &amp;lt; lines.length; l++) {&lt;br /&gt;
				if (!lines[l].startsWith(&#039;config change PBX0&#039;)) continue; // skip non pbx line&lt;br /&gt;
				if (lines[l].includes(&#039;/mode standby&#039;)) continue; // skip slave pbxes&lt;br /&gt;
				&lt;br /&gt;
				var match = lines[l].match(/config change PBX0 (.*) \/loc ([^ ][^/]+)/);&lt;br /&gt;
				loc = match[2].substr(0, match[2].length-1);&lt;br /&gt;
				l = lines.length;&lt;br /&gt;
			}&lt;br /&gt;
			cmd.log(&#039;use pbx loc: &#039;+loc);&lt;br /&gt;
			&lt;br /&gt;
			// get user objects&lt;br /&gt;
			var regex = new RegExp(&#039;/\(loc=&#039;+loc+&#039;\)(.*)\(guid;bin=([0-9A-Za-z]+)\)/&#039;);&lt;br /&gt;
			for (var l = 0; l &amp;lt; lines.length; l++) {&lt;br /&gt;
				// skip if user is not from this pbx&lt;br /&gt;
				if (!lines[l].includes(&#039;(loc=&#039;+loc+&#039;)&#039;)) continue;&lt;br /&gt;
				&lt;br /&gt;
				var match = lines[l].match(/\(guid;bin=([0-9A-Za-z]+)\)/);&lt;br /&gt;
				if (!match) continue;&lt;br /&gt;
				cmd.log(&#039;user found: &#039;+match[1]);&lt;br /&gt;
				output[match[1]] = {cmd: &#039;PBX0/ADMIN/mod_cmd_login.xml?cmd=show&amp;amp;user-guid=&#039;+match[1]};&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			return output;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
},&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our goal is to get the xml output from the advanced ui for every pbx object. But there i no direct command to get this information. So we have to do it in multipe steps.&lt;br /&gt;
&lt;br /&gt;
In this sample, we request the following in the commands object:&lt;br /&gt;
# Execute our command &amp;quot;config&amp;quot; on PBXes the get the plain configuration file&lt;br /&gt;
# If the first request is done, the nested &amp;quot;commands&amp;quot; object should be called, and we get the result from the first command&lt;br /&gt;
## Now, inside the function &amp;lt;code&amp;gt;commands: function(cmd, result) {&amp;lt;/code&amp;gt; we can use some free-style code to do what we need, to build multiple following commands&lt;br /&gt;
&lt;br /&gt;
## Here we split the config file by lines breaks and iterate the whole config&lt;br /&gt;
## then we generate an empty return object to fill it later&lt;br /&gt;
### think about that is possible to add an new &amp;lt;code&amp;gt;commands: function(cmd, result) {&amp;lt;/code&amp;gt; inside the return to add a new level :-)&lt;br /&gt;
## If we have checked the pbx and the userobject we add with &amp;lt;code&amp;gt;output[match[1]] = {cmd: &#039;PBX0/ADMIN/mod_cmd_login.xml?cmd=show&amp;amp;user-guid=&#039;+match[1]};&amp;lt;/code&amp;gt; a specific command to the retunr value&lt;br /&gt;
&lt;br /&gt;
In the end, we have a big return object with multiple cmd&#039;s&lt;br /&gt;
In this case we will get all the results in the test() later and can do further stuff with the results.&lt;br /&gt;
&lt;br /&gt;
=== Executable method test() ===&lt;br /&gt;
The upper layer expects a method &amp;lt;code&amp;gt;test(cmd, results)&amp;lt;/code&amp;gt; in your JavaScript object. This method has two parameters.&lt;br /&gt;
&lt;br /&gt;
;cmd&lt;br /&gt;
:An object that offers you a wide range of predefined functions and options. You can see it as a kind of library, which is documented at the [[#cmd object|cmd object]].&lt;br /&gt;
&lt;br /&gt;
;results&lt;br /&gt;
:An object of the results of your commands from the given &#039;&#039;command-objects&#039;&#039; in your test definition.&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample strcuture of the results object&amp;quot; hide=&amp;quot;hide sample strcuture of the results object&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// structure of results object&lt;br /&gt;
{&lt;br /&gt;
  // your command is the property&lt;br /&gt;
  &#039;buffered_cdr0&#039; : {&lt;br /&gt;
    // the unique id of the device is the property&lt;br /&gt;
    &#039;1&#039;: &#039;QS messages: 0 max 2000 chars: 0 max 300000&#039;,&lt;br /&gt;
    &#039;4&#039;: &#039;QS messages: 0 max 2000 chars: 0 max 300000&#039;,&lt;br /&gt;
  },&lt;br /&gt;
  &#039;buffered_cdr1&#039; : {&lt;br /&gt;
    // the unique id of the device is the property&lt;br /&gt;
    &#039;1&#039;: &#039;QS messages: 0 max 2000 chars: 0 max 300000&#039;,&lt;br /&gt;
    &#039;4&#039;: &#039;QS messages: 0 max 2000 chars: 0 max 300000&#039;,&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show best practice code to deal with the results object&amp;quot; hide=&amp;quot;hide best practice code to deal with the results object&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// you can use this inside your function &amp;quot;test: function (cmd, results)&amp;quot; to iterate all commands over all affected devices&lt;br /&gt;
        &lt;br /&gt;
Object.keys(results).forEach(function(command) {&lt;br /&gt;
  log.push(&#039;command: &#039;+command);&lt;br /&gt;
  Object.keys(results[command]).forEach(function(device) {&lt;br /&gt;
    log.push(&#039;device: &#039;+device);&lt;br /&gt;
    var output = results[command][device];&lt;br /&gt;
  });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// expected log array from the code above:&lt;br /&gt;
// $ command: buffered_cdr0&lt;br /&gt;
// $ device: 1&lt;br /&gt;
// $ device: 4&lt;br /&gt;
// $ command: buffered_cdr1&lt;br /&gt;
// $ device: 1&lt;br /&gt;
// $ device: 4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
==== return test result ====&lt;br /&gt;
Your test has to be return an object with your test result. The system expect an object with the following properties.&lt;br /&gt;
&lt;br /&gt;
; success&lt;br /&gt;
: boolean | indicates if your test was successful or not&lt;br /&gt;
; msg&lt;br /&gt;
: string | an optional short message that will be displayed in the UI as preview&lt;br /&gt;
; log&lt;br /&gt;
: array | an optional array with lines of logfile that you can use to display detailed information in the UI at your test result. Use &amp;lt;code&amp;gt;log.push()&amp;lt;/code&amp;gt; to fill up the logfile array. In the frontend, the log will be parsed and mac addresses &amp;lt;code&amp;gt;/(^|\W)([a-f0-9]{12})(\W|$)/i&amp;lt;/code&amp;gt; will be updated with an internal link to devices app. (If you want to create instead debug output to the app-instance logfile you can use &amp;lt;code&amp;gt;cmd.log()&amp;lt;/code&amp;gt;)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
test: function (cmd, results) {&lt;br /&gt;
  // your stuff&lt;br /&gt;
  var count = 2;&lt;br /&gt;
 &lt;br /&gt;
  return {&lt;br /&gt;
    success: false,&lt;br /&gt;
    msg: &#039;There are &#039;+count+&#039; new/unassigned devices in your setup&#039;&lt;br /&gt;
  };&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The full picture ===&lt;br /&gt;
==== Complete sample test to check buffered CDRs ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
tests_add.cdrs_buffered = tests_add.cdrs_buffered || {&lt;br /&gt;
    title: &#039;Buffered CDRs&#039;,&lt;br /&gt;
    description: &#039;This test will check if CDRs on a gateway was buffered and are not transmit to the CDR target yet&#039;,&lt;br /&gt;
    todo: &#039;Check the CDR target&#039;,&lt;br /&gt;
    author: &#039;slu@innovaphone.com&#039;,&lt;br /&gt;
    enabled: true,&lt;br /&gt;
    schedule: &#039;10m&#039;,&lt;br /&gt;
    &lt;br /&gt;
    commands: {&lt;br /&gt;
        cdr0: {&lt;br /&gt;
            cmd: &#039;!mod cmd CDR0 qs&#039;,&lt;br /&gt;
            cat: [&#039;gw&#039;],&lt;br /&gt;
        },&lt;br /&gt;
        cdr1: {&lt;br /&gt;
            cmd: &#039;!mod cmd CDR1 qs&#039;,&lt;br /&gt;
            cat: [&#039;gw&#039;],&lt;br /&gt;
        },&lt;br /&gt;
        cdr2: {&lt;br /&gt;
            cmd: &#039;!mod cmd CDR2 qs&#039;,&lt;br /&gt;
            cat: [&#039;gw&#039;],&lt;br /&gt;
        },&lt;br /&gt;
        cdr3: {&lt;br /&gt;
            cmd: &#039;!mod cmd CDR3 qs&#039;,&lt;br /&gt;
            cat: [&#039;gw&#039;],&lt;br /&gt;
        },&lt;br /&gt;
        cdr4: {&lt;br /&gt;
            cmd: &#039;!mod cmd CDR4 qs&#039;,&lt;br /&gt;
            cat: [&#039;gw&#039;],&lt;br /&gt;
        },&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    test: function (cmd, results) {&lt;br /&gt;
        var log = [];&lt;br /&gt;
        var success = true;&lt;br /&gt;
        &lt;br /&gt;
        for (var n = 0; n &amp;lt; 5; n++) {&lt;br /&gt;
            Object.keys(results[&#039;cdr&#039;+n]).forEach(function(i){&lt;br /&gt;
                var check = calculate_cdrs(results[&#039;cdr&#039;+n][i]);&lt;br /&gt;
                // result was not good, lets create a human error message&lt;br /&gt;
                if (check !== true) {&lt;br /&gt;
                    log.push(cmd.get_device(i).product+&#039; / &#039;+cmd.get_device(i).hwId+&#039; / &#039;+check+&#039;% - &#039;+results[&#039;cdr&#039;+n][i]);&lt;br /&gt;
                    if (success) success = false;&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
    &lt;br /&gt;
        return {&lt;br /&gt;
            success: success,&lt;br /&gt;
            msg: success ? &#039;&#039; : &#039;Devices with buffered CDRs exists&#039;,&lt;br /&gt;
            log: log&lt;br /&gt;
        };&lt;br /&gt;
    &lt;br /&gt;
        function calculate_cdrs(str) {&lt;br /&gt;
            // QS messages: 0 max 2000 chars: 0 max 300000&lt;br /&gt;
            var check = 0;&lt;br /&gt;
            str = str.split(&#039; &#039;);&lt;br /&gt;
            // log.push(str);&lt;br /&gt;
        &lt;br /&gt;
            var messages_current = str[2];&lt;br /&gt;
            var messages_max = str[4];&lt;br /&gt;
            var chars_current = str[6];&lt;br /&gt;
            var chars_max = str[8];&lt;br /&gt;
        &lt;br /&gt;
            // check messages&lt;br /&gt;
            check = cmd.percent(messages_current, messages_max);&lt;br /&gt;
            if (check &amp;gt;= 30) return check;&lt;br /&gt;
        &lt;br /&gt;
            // check chars&lt;br /&gt;
            check = cmd.percent(chars_current, chars_max);&lt;br /&gt;
            if (check &amp;gt;= 30) return check;&lt;br /&gt;
        &lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Complete sample test to check firmware versions ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
tests_add.firmware_version = tests_add.firmware_version || {&lt;br /&gt;
    title: &#039;Supported firmware versions&#039;,&lt;br /&gt;
    description: &#039;Check if you have unsupported firmware version in use&#039;,&lt;br /&gt;
    todo: &#039;Update the firmware on affected devices&#039;,&lt;br /&gt;
    author: &#039;slu@innovaphone.com&#039;,&lt;br /&gt;
    schedule: &#039;1d&#039;,&lt;br /&gt;
    commands: {&lt;br /&gt;
        box_info: {&lt;br /&gt;
            cmd: &#039;CMD0/box_info.xml&#039;,&lt;br /&gt;
        },&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    test: function (cmd, results) {&lt;br /&gt;
        var log = [];&lt;br /&gt;
        var success = true;&lt;br /&gt;
        var msg = &#039;&#039;;&lt;br /&gt;
        &lt;br /&gt;
        Object.keys(results.box_info).forEach(function(i){&lt;br /&gt;
            var xml = cmd.parse_xml(results.box_info[i]);&lt;br /&gt;
            if (typeof xml.info === &#039;undefined&#039;) return;&lt;br /&gt;
            if (typeof xml.info.sys === &#039;undefined&#039;) return;&lt;br /&gt;
            if (typeof xml.info.sys[&#039;@version&#039;] === &#039;undefined&#039;) return;&lt;br /&gt;
            &lt;br /&gt;
            if (&lt;br /&gt;
                xml.info.sys[&#039;@version&#039;].includes(&#039;6.00&#039;) ||&lt;br /&gt;
                xml.info.sys[&#039;@version&#039;].includes(&#039;7.00&#039;) ||&lt;br /&gt;
                xml.info.sys[&#039;@version&#039;].includes(&#039;8.00&#039;) ||&lt;br /&gt;
                xml.info.sys[&#039;@version&#039;].includes(&#039;9.00&#039;) ||&lt;br /&gt;
                xml.info.sys[&#039;@version&#039;].includes(&#039;10.00&#039;) ||&lt;br /&gt;
                xml.info.sys[&#039;@version&#039;].includes(&#039;11.00&#039;) ||&lt;br /&gt;
                xml.info.sys[&#039;@version&#039;].includes(&#039;11r1&#039;) ||&lt;br /&gt;
                xml.info.sys[&#039;@version&#039;].includes(&#039;12r1&#039;) ||&lt;br /&gt;
                xml.info.sys[&#039;@version&#039;].includes(&#039;13r1&#039;)&lt;br /&gt;
            ) {&lt;br /&gt;
                log.push(cmd.get_device(i).product+&#039; / &#039;+cmd.get_device(i).hwId+&#039; / &#039;+xml.info.sys[&#039;@version&#039;]);&lt;br /&gt;
                if (success) success = false;&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        return {&lt;br /&gt;
            success: success,&lt;br /&gt;
            msg: success ? &#039;&#039; : &#039;You use old firmware which is no longer be supported&#039;,&lt;br /&gt;
            log: log&lt;br /&gt;
        };&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== cmd object ===&lt;br /&gt;
The &#039;&#039;&#039;cmd&#039;&#039;&#039; object provides you the following methods:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== get device information / system information ====&lt;br /&gt;
&lt;br /&gt;
===== get_domains() : object =====&lt;br /&gt;
You will receive all existing domains&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code&amp;quot; hide=&amp;quot;hide sample code&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var domains = cmd.get_domains();&lt;br /&gt;
console.log(domains);&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;1&amp;quot;: {&lt;br /&gt;
   &amp;quot;id&amp;quot;: 1,&lt;br /&gt;
   &amp;quot;name&amp;quot;: &amp;quot;slu.de&amp;quot;,&lt;br /&gt;
   &amp;quot;deployAdminPasswords&amp;quot;: true,&lt;br /&gt;
   &amp;quot;isInstanceDomain&amp;quot;: true,&lt;br /&gt;
   &amp;quot;categories&amp;quot;: [ ... ]&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== get_devices() : object =====&lt;br /&gt;
You will receive all existing devices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code&amp;quot; hide=&amp;quot;hide sample code&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var devices = cmd.get_devices();&lt;br /&gt;
console.log(devices);&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;0_009033420623&amp;quot;: {&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;0_009033420623&amp;quot;,&lt;br /&gt;
    &amp;quot;hwId&amp;quot;: &amp;quot;009033420623&amp;quot;,&lt;br /&gt;
    &amp;quot;domainId&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;product&amp;quot;: &amp;quot;IP0011&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;13r3 dvl [13.7526/132035/600]&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;GW&amp;quot;,&lt;br /&gt;
    &amp;quot;pbxActive&amp;quot;: false,&lt;br /&gt;
    &amp;quot;online&amp;quot;: true,&lt;br /&gt;
    &amp;quot;ethIfs&amp;quot;: [ ... ]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;1&amp;quot;: {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;hwId&amp;quot;: &amp;quot;009033420621&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;PBX - pbx.slu.de&amp;quot;,&lt;br /&gt;
    &amp;quot;domainId&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;product&amp;quot;: &amp;quot;IP0011&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;13r3 beta4 [13.7688/137623/600]&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;GW&amp;quot;,&lt;br /&gt;
    &amp;quot;pbxActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;online&amp;quot;: true,&lt;br /&gt;
    &amp;quot;ethIfs&amp;quot;: [ ... ]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;2&amp;quot;: {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 2,&lt;br /&gt;
    &amp;quot;hwId&amp;quot;: &amp;quot;029033420621&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;AP - apps.slu.de&amp;quot;,&lt;br /&gt;
    &amp;quot;domainId&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;product&amp;quot;: &amp;quot;AppPlatform ARM&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;110002 dvl (13r3 137688 beta4 )&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;APP_PLATFORM&amp;quot;,&lt;br /&gt;
    &amp;quot;pbxActive&amp;quot;: false,&lt;br /&gt;
    &amp;quot;online&amp;quot;: true,&lt;br /&gt;
    &amp;quot;ethIfs&amp;quot;: [ ... ]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== get_devices_from_domain(int id) : object =====&lt;br /&gt;
You will receive all devices which are assigned to the given domain&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code&amp;quot; hide=&amp;quot;hide sample code&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var devices = cmd.get_devices_from_domain(1);&lt;br /&gt;
console.log(devices);&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;1&amp;quot;: {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;hwId&amp;quot;: &amp;quot;009033420621&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;PBX - pbx.slu.de&amp;quot;,&lt;br /&gt;
    &amp;quot;domainId&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;product&amp;quot;: &amp;quot;IP0011&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;13r3 beta4 [13.7688/137623/600]&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;GW&amp;quot;,&lt;br /&gt;
    &amp;quot;pbxActive&amp;quot;: true,&lt;br /&gt;
    &amp;quot;online&amp;quot;: true,&lt;br /&gt;
    &amp;quot;ethIfs&amp;quot;: [ ... ]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;2&amp;quot;: {&lt;br /&gt;
    &amp;quot;id&amp;quot;: 2,&lt;br /&gt;
    &amp;quot;hwId&amp;quot;: &amp;quot;029033420621&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;AP - apps.slu.de&amp;quot;,&lt;br /&gt;
    &amp;quot;domainId&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;product&amp;quot;: &amp;quot;AppPlatform ARM&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;110002 dvl (13r3 137688 beta4 )&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;APP_PLATFORM&amp;quot;,&lt;br /&gt;
    &amp;quot;pbxActive&amp;quot;: false,&lt;br /&gt;
    &amp;quot;online&amp;quot;: true,&lt;br /&gt;
    &amp;quot;ethIfs&amp;quot;: [ ... ]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== get_device(int id) : object =====&lt;br /&gt;
You will receive a specific device&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code&amp;quot; hide=&amp;quot;hide sample code&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var device = cmd.get_device(2);&lt;br /&gt;
console.log(device);&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;id&amp;quot;: 2,&lt;br /&gt;
   &amp;quot;hwId&amp;quot;: &amp;quot;029033420621&amp;quot;,&lt;br /&gt;
   &amp;quot;name&amp;quot;: &amp;quot;AP - apps.slu.de&amp;quot;,&lt;br /&gt;
   &amp;quot;domainId&amp;quot;: 1,&lt;br /&gt;
   &amp;quot;product&amp;quot;: &amp;quot;AppPlatform ARM&amp;quot;,&lt;br /&gt;
   &amp;quot;version&amp;quot;: &amp;quot;110002 dvl (13r3 137688 beta4 )&amp;quot;,&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;APP_PLATFORM&amp;quot;,&lt;br /&gt;
   &amp;quot;pbxActive&amp;quot;: false,&lt;br /&gt;
   &amp;quot;online&amp;quot;: true,&lt;br /&gt;
   &amp;quot;ethIfs&amp;quot;: [ ... ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== helper functions ====&lt;br /&gt;
&lt;br /&gt;
===== percent(int value, int total) : float =====&lt;br /&gt;
Returns the number of percent of value to total&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code&amp;quot; hide=&amp;quot;hide sample code&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var check = cmd.percent(50, 100);&lt;br /&gt;
console.log(check);&lt;br /&gt;
50&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== parse_xml(string xml, string element = &amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt;) : object =====&lt;br /&gt;
Returns an object/array representation of given XML string. Note that very large XML inputs cannot be converted directly because there are some restrictions in the duktape environment. If you receive an exception with &#039;&#039;Error: RangeError: regexp executor recursion limit&#039;&#039; you have to define which element do you want to converted (See the second example).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code&amp;quot; hide=&amp;quot;hide sample code&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var json = cmd.parse_xml(&#039;&amp;lt;sample&amp;gt;&amp;lt;item property_1=&amp;quot;value_1&amp;quot; property_2=&amp;quot;value_2&amp;quot;&amp;gt;content of item&amp;lt;/item&amp;gt;&amp;lt;item_short prop_1=&amp;quot;value_prop_1&amp;quot; /&amp;gt;&amp;lt;/sample&amp;gt;&#039;);&lt;br /&gt;
console.log(json);&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;sample&amp;quot;: {&lt;br /&gt;
    &amp;quot;item&amp;quot;: {&lt;br /&gt;
      &amp;quot;@property_1&amp;quot;: &amp;quot;value_1&amp;quot;,&lt;br /&gt;
      &amp;quot;@property_2&amp;quot;: &amp;quot;value_2&amp;quot;,&lt;br /&gt;
      &amp;quot;#&amp;quot;: &amp;quot;content of item&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;item_short&amp;quot;: {&lt;br /&gt;
      &amp;quot;@prop_1&amp;quot;: &amp;quot;value_prop_1&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code with large xml payload&amp;quot; hide=&amp;quot;hide sample code with large xml payload&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
var xml_registrations_on_big_pbx = &#039;\&lt;br /&gt;
  &amp;lt;show state=&amp;quot;up&amp;quot; time=&amp;quot;267993&amp;quot; loc=&amp;quot;pbx&amp;quot;&amp;gt;\&lt;br /&gt;
    &amp;lt;attrs&amp;gt;&amp;lt;/attrs&amp;gt;\&lt;br /&gt;
    &amp;lt;reg cn=&amp;quot;Fax&amp;quot; guid=&amp;quot;829a6aeec2a76401c62600155d50c817&amp;quot; h323=&amp;quot;fax&amp;quot; pwd=&amp;quot;********&amp;quot; pwdx=&amp;quot;********&amp;quot; prot=&amp;quot;JSON&amp;quot;&amp;gt;\&lt;br /&gt;
      &amp;lt;ep type=&amp;quot;gk&amp;quot; addr=&amp;quot;172.16.176.205&amp;quot; time=&amp;quot;10&amp;quot;/&amp;gt;\&lt;br /&gt;
      &amp;lt;pseudo-common lics=&amp;quot;.reporting.&amp;quot;/&amp;gt;\&lt;br /&gt;
      &amp;lt;pseudo type=&amp;quot;fax&amp;quot;/&amp;gt;\&lt;br /&gt;
    &amp;lt;/reg&amp;gt;\&lt;br /&gt;
    &amp;lt;reg cn=&amp;quot;Voicemail de&amp;quot; guid=&amp;quot;5ceb0ee7c2a76401bb2600155d50c817&amp;quot; h323=&amp;quot;voicemail-de&amp;quot; pwd=&amp;quot;********&amp;quot; pwdx=&amp;quot;********&amp;quot; prot=&amp;quot;JSON&amp;quot;&amp;gt;\&lt;br /&gt;
      &amp;lt;ep type=&amp;quot;gk&amp;quot; addr=&amp;quot;172.16.176.205&amp;quot; time=&amp;quot;10&amp;quot;/&amp;gt;\&lt;br /&gt;
      &amp;lt;pseudo-common lics=&amp;quot;.uc.voicemail.reporting.&amp;quot;/&amp;gt;\&lt;br /&gt;
      &amp;lt;pseudo type=&amp;quot;vm&amp;quot;/&amp;gt;\&lt;br /&gt;
    &amp;lt;/reg&amp;gt;\&lt;br /&gt;
    ... and so on ...\&lt;br /&gt;
  &amp;lt;/show&amp;gt;&#039;;&lt;br /&gt;
var json = cmd.parse_xml(xml_registrations_on_big_pbx, &#039;reg&#039;);&lt;br /&gt;
console.log(json);&lt;br /&gt;
[&lt;br /&gt;
  {&amp;quot;@cn&amp;quot;:&amp;quot;Fax&amp;quot;, &amp;quot;@guid&amp;quot;:&amp;quot;829a6aeec2a76401c62600155d50c817&amp;quot;, ... &amp;quot;ep&amp;quot;:{&amp;quot;@type&amp;quot;:&amp;quot;gk&amp;quot;,&amp;quot;@addr&amp;quot;:&amp;quot;172.16.176.205&amp;quot;,&amp;quot;@time&amp;quot;:&amp;quot;10&amp;quot;}, ...},&lt;br /&gt;
  {&amp;quot;@cn&amp;quot;:&amp;quot;Voicemail&amp;quot;, &amp;quot;@guid&amp;quot;:&amp;quot;5ceb0ee7c2a76401bb2600155d50c817&amp;quot;, ... &amp;quot;ep&amp;quot;:{&amp;quot;@type&amp;quot;:&amp;quot;gk&amp;quot;,&amp;quot;@addr&amp;quot;:&amp;quot;172.16.176.205&amp;quot;,&amp;quot;@time&amp;quot;:&amp;quot;10&amp;quot;}, ...},&lt;br /&gt;
  ...&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== is_supported_version(string version) : object =====&lt;br /&gt;
Return if the given Version string is supported according to [[Howto:Supported innovaphone versions]].&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code&amp;quot; hide=&amp;quot;hide sample code&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
cmd.is_supported_version(&#039;13r3 sr9 [13.7886/1000/0]&#039;); // return &amp;quot;true&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== get_version_from_build(int build) : string =====&lt;br /&gt;
Return the named version from given build number. (13r3, 14r1 or similar)&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code&amp;quot; hide=&amp;quot;hide sample code&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
cmd.get_version_from_build(1410485); // return &amp;quot;14r1&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== get_pbx_objects_from_config(string config) : array =====&lt;br /&gt;
Extract from a config file PBX Objects with support for different views, DynPBXes and the removal of marks-as-deleted objects&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code&amp;quot; hide=&amp;quot;hide sample code&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// &amp;quot;config&amp;quot; contains the result from your &amp;quot;cfg.txt&amp;quot;&lt;br /&gt;
cmd.get_pbx_objects_from_config(config); &lt;br /&gt;
&lt;br /&gt;
// return &lt;br /&gt;
[&lt;br /&gt;
   &amp;quot;mod cmd FLASHDIR0 add-item 102 (cn=user-1)(h323=user-1)(e164=10)&amp;quot;,&lt;br /&gt;
   &amp;quot;mod cmd FLASHDIR0 add-item 102 (cn=user-2)(h323=user-2)(e164=20)&amp;quot;,&lt;br /&gt;
   &amp;quot;mod cmd FLASHDIR0 add-item 105 (cn=user-1-in-dynpbx)(h323=user-1-in-dynpbx)(e164=50)&amp;quot;,&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== debug ====&lt;br /&gt;
&lt;br /&gt;
===== log(string message) : void =====&lt;br /&gt;
You can write a logfile line to the app debug log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;spoiler show=&amp;quot;show sample code&amp;quot; hide=&amp;quot;hide sample code&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var domains = cmd.log(&#039;my first logfile line&#039;);&lt;br /&gt;
07-26 07:58:33.179 TechAssist@slu.de (b0728708) | Test &amp;quot;sample_test&amp;quot; | my first logfile line&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/spoiler&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Secret knowledge for good tests ==&lt;br /&gt;
; bool PBX-Object config attributes&lt;br /&gt;
: You will find config attributes like &amp;lt;code&amp;gt;no-subscribe=&amp;quot;true&amp;quot;&amp;lt;/code&amp;gt; (this is from a Trunk Object) in the config. Please note that if the attribute is &#039;&#039;missing&#039;&#039; or the value is &#039;&#039;false&#039;&#039; it is false, otherwise it is &#039;&#039;true&#039;&#039;. For example, the value &amp;lt;code&amp;gt;no-subscribe=&amp;quot;on&amp;quot;&amp;lt;/code&amp;gt; is also true.&lt;br /&gt;
; bool Interface config attributes&lt;br /&gt;
: You will find config attributes like &amp;lt;code&amp;gt;/direct-sig on&amp;lt;/code&amp;gt; (this is from a SIP interface) in the config. Please note that they are exists bool-attribute which are &#039;&#039;true&#039;&#039; if the attribute is existing. In the case of bool-attribute the following value make no matter. For example, the attribute &amp;lt;code&amp;gt;/direct-sig off&amp;lt;/code&amp;gt; is also true.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Startup Logfile ===&lt;br /&gt;
If you enable the traceflag &#039;&#039;App&#039;&#039; in your App instance, you will find the following logs:&lt;br /&gt;
&lt;br /&gt;
 AppService::AppStart TechAssist@slu.de&lt;br /&gt;
 App instance started 14C1363 14C1363&lt;br /&gt;
 ...&lt;br /&gt;
 // App begins to load embedded tests&lt;br /&gt;
 JavaScript: Files tests/*&lt;br /&gt;
 ...&lt;br /&gt;
 // Scheduler begins to load all the tests&lt;br /&gt;
 scheduler init&lt;br /&gt;
 init test &amp;quot;firmware_version&amp;quot;&lt;br /&gt;
 firmware_version: Test added successful&lt;br /&gt;
 init test &amp;quot;pbx_mediarelay&amp;quot;&lt;br /&gt;
 pbx_mediarelay: Test added successful&lt;/div&gt;</summary>
		<author><name>Lme</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto14r2:Firmware_Upgrade_V14r1_V14r2&amp;diff=73563</id>
		<title>Howto14r2:Firmware Upgrade V14r1 V14r2</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto14r2:Firmware_Upgrade_V14r1_V14r2&amp;diff=73563"/>
		<updated>2024-09-20T14:20:43Z</updated>

		<summary type="html">&lt;p&gt;Lme: /* Manual steps needed after upgrade */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Applies To ==&lt;br /&gt;
This information applies to:&lt;br /&gt;
&lt;br /&gt;
* All 14r2 capable innovaphone devices&lt;br /&gt;
: For a general overview of the upgrade process and a list of supported devices with 14r2, see [[Howto:Firmware Upgrade]]&lt;br /&gt;
== Licenses ==&lt;br /&gt;
In case of cloud or rental model, don&#039;t worry about licenses.&lt;br /&gt;
&lt;br /&gt;
If the system is licensed on premise, and you already have V14 licenses, there is nothing to do. Otherwise, you&#039;ll need to regenerate the license file for V14 in https://portal.innovaphone.com/ and load into the system before upgrade.&lt;br /&gt;
&lt;br /&gt;
== Migration Policy ==&lt;br /&gt;
Here is how you upgrade a system from 14r1 to 14r2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red; font-weight: bold&amp;quot;&amp;gt;Before you begin, be sure that your whole installation is running the latest 14r1 service release. If you are still running 13r3 or earlier, be sure to update to [[Howto14r1:Firmware_Upgrade_V13r3_V14r1|14r1 latest service release]] before.&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IPVA - Flash preparations ===&lt;br /&gt;
Due to an internal change in the flash segment allocation in the IPVA environment, you may have to prepare your system for the upgrade.&amp;lt;br&amp;gt;&lt;br /&gt;
Please execute the command &amp;lt;code&amp;gt;!mod cmd FLASHMAN0 info&amp;lt;/code&amp;gt; on all your IPVAs before the update. You must check whether all flash segments are allocated in your current installation.&lt;br /&gt;
&lt;br /&gt;
In this example, you can see that 228 segments are used by the LDAP (marked in green), and a total of 228 segments are available (marked in yellow).&lt;br /&gt;
If the difference between these two numbers is less than 10, you must perform the following steps before the upgrade:&lt;br /&gt;
# Download the configuration (NOT &amp;quot;with standard password&amp;quot;) from the IPVA&lt;br /&gt;
# Upload the configuration to the IPVA&lt;br /&gt;
# Reboot the IPVA&lt;br /&gt;
&lt;br /&gt;
 segments=249, segment-size=0x10000 (64k)&lt;br /&gt;
 LDAP - used 47k avail 43k owned 14592k (&amp;lt;span style=&amp;quot;background-color: lightgreen&amp;quot;&amp;gt;segments 228&amp;lt;/span&amp;gt;) maximum 14592k (&amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;segments 228&amp;lt;/span&amp;gt;, configured 228)&lt;br /&gt;
 VARS - used 51k avail 8k owned 1280k (segments 20) maximum 1280k (segments 20, configured 20)&lt;br /&gt;
&lt;br /&gt;
After execute the above command again, you will see the following. The segments used by the LDAP (marked in green) changed.&lt;br /&gt;
&lt;br /&gt;
 segments=249, segment-size=0x10000 (64k)&lt;br /&gt;
 LDAP - used 47k avail 61k owned 128k (&amp;lt;span style=&amp;quot;background-color: lightgreen&amp;quot;&amp;gt;segments 2&amp;lt;/span&amp;gt;) maximum 14592k (&amp;lt;span style=&amp;quot;background-color: yellow&amp;quot;&amp;gt;segments 228&amp;lt;/span&amp;gt;, configured 228)&lt;br /&gt;
 VARS - used 24k avail 21k owned 1280k (segments 20) maximum 1280k (segments 20, configured 20)&lt;br /&gt;
&lt;br /&gt;
If the difference between these two numbers is now greater than 10, you can go ahead with your upgrade. Otherwise, please open a support case.&lt;br /&gt;
&lt;br /&gt;
=== App Platform and Apps ===&lt;br /&gt;
14r2 Apps are no longer compatible with App Platform Images version 11xxxx or below due to a major update of the used OpenSSL library, as the old 1.1 version is deprecated.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* upgrade your App Platform to version 12xxxx in the settings of your App Platform Manager via the Update option (open the AP Manager, Burger menu, Settings, update -&amp;gt; update to 12xxxx) and then carry out the &#039;&#039;&#039;restart&#039;&#039;&#039; offered in the update procedure&lt;br /&gt;
* verify that the App Platform is rebooted by checking the version using the &amp;quot;burger menu / Settings / Update&amp;quot; in the App Platform Manager&lt;br /&gt;
* upgrade your Apps to version 14r2 now&lt;br /&gt;
&lt;br /&gt;
 Note that all previous versions of Apps will still run on App Platform version 12xxxx, just 14r2 Apps require this new image version.&lt;br /&gt;
&lt;br /&gt;
=== App Platform replication ===&lt;br /&gt;
Sadly it&#039;s not possible to upgrade the App Platform on App Platform Standbys directly due to a major version change of the PostgreSQL database. &lt;br /&gt;
&lt;br /&gt;
So follow these steps:&lt;br /&gt;
* disable replication on each &#039;&#039;&#039;standby&#039;&#039;&#039; App Platform&lt;br /&gt;
* shutdown each &#039;&#039;&#039;standby&#039;&#039;&#039; App Platform&lt;br /&gt;
* proceed with the regular update on your infrastructure for all other devices&lt;br /&gt;
* verify proper function of your system&lt;br /&gt;
* startup each &#039;&#039;&#039;standby&#039;&#039;&#039; App Platform&lt;br /&gt;
* follow the [[#App_Platform_and_Apps|above steps]] to upgrade each &#039;&#039;&#039;standby&#039;&#039;&#039; App Platform&lt;br /&gt;
* activate standby replication on the &#039;&#039;&#039;standbys&#039;&#039;&#039; App Platforms again now (this will do a full replication again which might take some time)&lt;br /&gt;
&lt;br /&gt;
Alternatively you can install the standbys from scratch.&lt;br /&gt;
&lt;br /&gt;
== Changes visible to the end customers ==&lt;br /&gt;
Listed here are changes that should be communicated by resellers to end users prior to a 14r2 upgrade, as the change will be visible/audible in the behaviour of the application/device.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;myApps accessibility&#039;&#039;&#039;: Several improvements in myApps accessibility like &#039;&#039;&#039;screen reader support&#039;&#039;&#039; and &#039;&#039;&#039;keyboard control&#039;&#039;&#039; [[Reference14r2:Concept_myApps#Accessibility]]&lt;br /&gt;
* &#039;&#039;&#039;Connect UI&#039;&#039;&#039;: Changes and improvements in the UI of the Connect app&lt;br /&gt;
* &#039;&#039;&#039;Fax Cover Page&#039;&#039;&#039;: For outgoing FAX documents, a cover page with user content can be prepend&lt;br /&gt;
&lt;br /&gt;
== Manual steps needed after upgrade ==&lt;br /&gt;
If the installer is not used for a new installation, some new default settings are not set. Please evaluate per app whether you want to configure the new default settings manually.&lt;br /&gt;
&lt;br /&gt;
=== Calendar App ===&lt;br /&gt;
Microsoft Office 365 Exchange. Microsoft [https://techcommunity.microsoft.com/t5/exchange-team-blog/retirement-of-rbac-application-impersonation-in-exchange-online/ba-p/4062671 Retirement of RBAC Application Impersonation in Exchange Online] . You have to change some configurations in the PBX Manager Plugin for the Calendar App. See [[Howto13r2:Setting up Calendar with OAuth2]]&lt;br /&gt;
&lt;br /&gt;
=== Connect App / Search App ===&lt;br /&gt;
In order for the Search App to find Connect posts, you need to make sure to change the following things:&lt;br /&gt;
* PBX Manager plugin &amp;quot;AP messages&amp;quot; - &amp;quot;Api&amp;quot; - Make sure to enable &amp;quot;Config User&amp;quot; for the Messages API Object. (&#039;&#039;&#039;Not&#039;&#039;&#039; Administrators or Moderators)&lt;br /&gt;
* For the &amp;quot;Connect&amp;quot; PBX-Object &lt;br /&gt;
** In the &amp;quot;App&amp;quot;-Tab enable &amp;quot;PbxApi&amp;quot; (additionally to &amp;quot;Websocket&amp;quot; and &amp;quot;PbxSignal&amp;quot;)&lt;br /&gt;
** In the &amp;quot;Apps&amp;quot;-Tab enable &amp;quot;messages-api&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Contacts App === &lt;br /&gt;
You have to enable the checkmark &amp;quot;Websocket&amp;quot; in the App Object. Otherwise you will not have new &amp;quot;Add Contacts&amp;quot; functions inside the PhoneApps&lt;br /&gt;
&lt;br /&gt;
=== Mail2Fax === &lt;br /&gt;
You can now enter mail server settings in the PBX Manager plugin for the fax app, to use the Mail2Fax feature. See [[Reference14r2:Concept_App_Service_Fax]]&lt;br /&gt;
&lt;br /&gt;
=== WorkingManager ===&lt;br /&gt;
You need to add the string &amp;quot;hr&amp;quot; to the &amp;quot;Modes&amp;quot; field in the WorkingManager app object to create a special app that can be assigned to a user that grants all rights. Otherwise, users to whom the WorkingManager is assigned will only have the assigned group permissions. &lt;br /&gt;
See https://wiki.innovaphone.com/index.php?title=Reference14r2:Concept_App_Service_Working#innovaphone-working-admin&lt;br /&gt;
&lt;br /&gt;
== New Apps ==&lt;br /&gt;
New Apps will not be installed automatically by the 14r1 to 14r2 upgrade. The installation description of new 14r2 apps is usually in the concept article. Please rate per app whether you want to install/use the new app and configure it manually.&lt;br /&gt;
&lt;br /&gt;
* [[Reference14r2:Concept_App_Remote_Control]]&lt;br /&gt;
* [[Reference14r2:Concept_App_Service_Translations]]&lt;br /&gt;
&lt;br /&gt;
== Removed ==&lt;br /&gt;
The following software is no longer included in 14r2.&lt;br /&gt;
&lt;br /&gt;
* Nothing&lt;br /&gt;
&lt;br /&gt;
== Deprecated ==&lt;br /&gt;
The following software is based on legacy technology, with no further development and limited maintenance and support.&lt;br /&gt;
We strongly recommend migrating to our successor products that are fully compatible with 14r2 and myApps technology.&lt;br /&gt;
&lt;br /&gt;
* running an AP on the CF card of an IPxx10 gateway is no longer supported, use a gateway with an SSD or a Virtual Machine to run the AP instead. The Linux/AP functionality is not yet removed from the firmware, so when migrating to 14r2, existing installations will continue to work (even if unsupported).&lt;br /&gt;
* iQM (innovaphone Queue Monitor) is deprecated, and we recommend migrating to the [[Howto:Queueboard_-_MediaRunway_-_Partner_App|Queueboard App]].&lt;br /&gt;
&lt;br /&gt;
== Previously deprecated and now no longer supported == &lt;br /&gt;
The following software is based on legacy technology, with no further development and no more maintenance and support.&amp;lt;br&amp;gt;&lt;br /&gt;
See: [[Howto14r1:Firmware_Upgrade_V13r3_V14r1#Deprecated_in_14r1]]&amp;lt;br&amp;gt;&lt;br /&gt;
We strongly recommend migrating to our successor products.&lt;br /&gt;
&lt;br /&gt;
;Linux Application Platform (v10)&lt;br /&gt;
:Please migrate to the &#039;&#039;&#039;innovaphone App Platform&#039;&#039;&#039;.&lt;br /&gt;
;innovaphone Faxserver (v10)&lt;br /&gt;
:Please migrate to the &#039;&#039;&#039;Fax App&#039;&#039;&#039;.&lt;br /&gt;
;innovaphone Reporting (v10)&lt;br /&gt;
:Please migrate to the &#039;&#039;&#039;Reports App&#039;&#039;&#039;.&lt;br /&gt;
;innovaphone Exchange (v10)&lt;br /&gt;
:Please migrate to the &#039;&#039;&#039;Calendar App&#039;&#039;&#039;.&lt;br /&gt;
;Operator (v9)&lt;br /&gt;
:Please migrate to the &#039;&#039;&#039;Switchboard App&#039;&#039;&#039;.&lt;br /&gt;
;innovaphone Voice Recording 2014&lt;br /&gt;
:Please migrate to the &#039;&#039;&#039;Recordings App&#039;&#039;&#039;.&lt;br /&gt;
;PBX Object External UC&lt;br /&gt;
:Existing configurations still work. But new configurations can&#039;t be done using the advanced UI anymore.&lt;br /&gt;
:Please use the integrated &#039;&#039;&#039;UC&#039;&#039;&#039; and &#039;&#039;&#039;federation&#039;&#039;&#039; features of the &#039;&#039;&#039;innovaphone PBX&#039;&#039;&#039;.&lt;br /&gt;
:For presence synchronization with other systems we recommend using&lt;br /&gt;
:* &#039;&#039;&#039;innovaphone myApps Connector for Microsoft 365&#039;&#039;&#039;&lt;br /&gt;
:* &#039;&#039;&#039;Connector for kuando®&#039;&#039;&#039;&lt;br /&gt;
:* &#039;&#039;&#039;Calendar App&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
===Long Update-duration===&lt;br /&gt;
When you update, it can be up to 10 minutes before you have access to your app platform again.&lt;br /&gt;
&lt;br /&gt;
===Downgrade on IPVA with large configuration===&lt;br /&gt;
The number of 64kB memory segments that an IPVA uses internally to store &amp;quot;VARS&amp;quot; has been increased from 10 to 20. This is only an internal adjustment and does not require any adjustment to the virtual machine.&lt;br /&gt;
&lt;br /&gt;
After an upgrade to v14r2 a downgrade is possible as long as the total space used by VARS is less than 540 kB, i.e. &amp;lt;code&amp;gt;mod cmd FLASHMAN0 info&amp;lt;/code&amp;gt; -&amp;gt; VARS - used=nk (n &amp;lt;= 540)&lt;br /&gt;
&lt;br /&gt;
Because VARS data may be scattered over all assigned segments, the downgrade procedure must be:&lt;br /&gt;
# &amp;quot;config download&amp;quot; to gather the potentially scattered VARS&lt;br /&gt;
# downgrade&lt;br /&gt;
# &amp;quot;config upload&amp;quot; to restore the VARS as densely packed&lt;br /&gt;
&lt;br /&gt;
== Resources Considerations ==&lt;br /&gt;
New firmware always has more features which in turn requires more resources. Growing firmware will thus consume both more flash and RAM for sure. A given system configuration will run flawlessly after a firmware largely only if there is still enough memory left after boot.&lt;br /&gt;
&lt;br /&gt;
Standard configurations which are according the specs will run on all supported hardware. However, unusual configurations may not. It is a good idea to examine both flash and RAM memory left on high load situations in your existing configuration to see if there is enough resources left for an upgrade. Please find details in Reference:Device Health Check.&lt;br /&gt;
&lt;br /&gt;
=== RAM ===&lt;br /&gt;
As a rough rule of thumb, a 14r2 release will consume the same amount of RAM compared to a v14r1 firmware.&lt;br /&gt;
&lt;br /&gt;
=== Flash Memory  ===&lt;br /&gt;
As a rough rule of thumb, a v14r2 release will consume ~ 64KB more flash memory compared to a v14r1 firmware.&lt;br /&gt;
New firmware comes with new code for new features which consumes more flash memory for the firmware image. For this reason, devices may run out of flash memory during upgrade to v14r2.  Here is the recommended procedure for upgrade on such devices:&lt;br /&gt;
&lt;br /&gt;
* save entire configuration&lt;br /&gt;
* reset to factory defaults&lt;br /&gt;
* load saved configuration (this will reorganize the flash memory usage)&lt;br /&gt;
* upgrade to new firmware&lt;br /&gt;
&lt;br /&gt;
When there is still not enough flash memory available to store the new firmware (Web GUI ends up in a &#039;&#039;Firmwareupdate failed:no space&#039;&#039; / Update client end in a &#039;&#039;Error 0x00130001 Major FLASHMAN0 no space&#039;&#039; event) please open a support case with your current configuration file.&lt;/div&gt;</summary>
		<author><name>Lme</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference14r2:Concept_App_Service_Working&amp;diff=72913</id>
		<title>Reference14r2:Concept App Service Working</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference14r2:Concept_App_Service_Working&amp;diff=72913"/>
		<updated>2024-07-30T12:27:14Z</updated>

		<summary type="html">&lt;p&gt;Lme: /* innovaphone-working-client-api */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
The Working App is an app for recording working hours. There is a user app (Working User) to start/stop time tracking and an admin app (Working Manager) to view working hours for all users.&lt;br /&gt;
== Applies To == &lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX from version 14r2&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
* innovaphone PBX&lt;br /&gt;
* innovaphone Application Platform&lt;br /&gt;
* innovaphone myAPPS&lt;br /&gt;
* Firmware V14r2 beta1 or higher&lt;br /&gt;
* License “App(innovaphone-working)” (order no. 02-00050-010) per application-user&lt;br /&gt;
&lt;br /&gt;
==Concept==&lt;br /&gt;
&lt;br /&gt;
The innovaphone Service Working App is an app to track working hours.&lt;br /&gt;
There is a user app (Working User) to start/stop time tracking (clock style) or to add entries manually. These entries must be confirmed (=submitted) to be displayed on the admin app. Once they are confirmed, they can no longer be edited. There is also an admin app (Working Manager) to display the working time information for all users and where the configuration settings can be changed.&lt;br /&gt;
The app is designed to help employees and employers to easily track working hours in a digital manner.&lt;br /&gt;
&lt;br /&gt;
==How it works==&lt;br /&gt;
&lt;br /&gt;
The first time a user starts the Working App on myApps a new entry is created in the database for this user, based on the &amp;quot;Name&amp;quot; of this user, which will be used to store all the working hours entries, vacation days, sick days and national holidays. Entering the working hours is a two step task, because after defining the start/stop time it is also necessary to &amp;quot;confirm/submit&amp;quot; these hours as correct, after the confirmation is done the user can&#039;t change them anymore and they will be displayed on the admin app.&lt;br /&gt;
&lt;br /&gt;
In the Working Admin App the list of the users&#039; names is based on the &amp;quot;Display Name&amp;quot;, if no DN is set then the &amp;quot;Name&amp;quot; will be used. Once the users have opened the working app at least once, they will appear in the list of all users in the Working Manager App. The app adds a red mark when an user does not fulfill the working hours regulation.&lt;br /&gt;
&lt;br /&gt;
== Apps ==&lt;br /&gt;
=== innovaphone-working ===&lt;br /&gt;
[[Image: Innovaphone-working.png]]&lt;br /&gt;
This is an app (Working User), where the user can enter the working hours, holidays, sick and vacation days. This can be done by clicking on the start/stop button. The user have also a calendar view to add, edit or delete working hours.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-working-api ===&lt;br /&gt;
[[Image: Innovaphone-working-api.png]]&lt;br /&gt;
This is a hidden app (Working Api), where the myApps session is been monitorized when the autostart/stop of the working times is enabled on the Working User App.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
;Websocket: to set a websocket connection.&lt;br /&gt;
;Hidden: to configure the app as hidden.&lt;br /&gt;
;Admin: to get the app object name where to send the notifications.&lt;br /&gt;
;PbxApi: to send the notifications.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-working-client-api ===&lt;br /&gt;
[[Image: Innovaphone-working-api.png]]&lt;br /&gt;
This is an app needed to provide the Working Client API, so that other apps can start/stop working times. The innovaphone-working-client-api app is also a hidden app. The PBX Manager plugin also sets the hidden function.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
;Websocket: to set a websocket connection.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-working-admin ===&lt;br /&gt;
[[Image: Innovaphone-working-admin.png‎]]&lt;br /&gt;
This is an admin app (Working Manager), where an administrator (i.e. Human Resources) can see the users&#039; working hours. Periodic reports are generated with a list of users who do not comply with the hours restrictions. Several settings like the working hours per day can be configured per user and they are set to 8 hours from monday to friday by default.&lt;br /&gt;
&lt;br /&gt;
Now &amp;quot;hr&amp;quot; must be entered as Mode on the app object on the PBX. With that now there are 2 apps avaiable: workingmanager and workingmanager~hr&lt;br /&gt;
* workingmanager: the managers on the group can only see the users on the group (no hamburger menu avaiable)&lt;br /&gt;
* workingmanager~hr: all the users can be seen there and all the configurations are available&lt;br /&gt;
&lt;br /&gt;
Also some config items can be edited on the hamburguer menu:&lt;br /&gt;
&lt;br /&gt;
* General settings&lt;br /&gt;
** Timeout to submit entries (days): max interval the user has to submit the working hours.&lt;br /&gt;
** Min break time after 6 hours: min break time if the user has worked more than 6 hours.&lt;br /&gt;
** Min break time after 9 hours: min break time if the user has worked more than 9 hours.&lt;br /&gt;
** Config working types: which can be selected on the dropdown for every working interval and are available for all users.&lt;br /&gt;
&lt;br /&gt;
* No email reports are available on 14r2&lt;br /&gt;
&lt;br /&gt;
* Default working hours: workings hours defined per day when a user opens the app for the first time, which can be modified per user on the Admin App (Working Manager).&lt;br /&gt;
** Monday&lt;br /&gt;
** Tuesday&lt;br /&gt;
** Wednesday&lt;br /&gt;
** Thursday&lt;br /&gt;
** Friday&lt;br /&gt;
** Saturday&lt;br /&gt;
** Sunday&lt;br /&gt;
&lt;br /&gt;
* Rights&lt;br /&gt;
** Config groups&lt;br /&gt;
*** Groups can be defined&lt;br /&gt;
*** Only the managers of the groups can see the users on the group on the Working Manager App&lt;br /&gt;
*** Working types only available for the users on the group can be configured&lt;br /&gt;
*** Enable/disable restrictions to submit working hours for the users on the group&lt;br /&gt;
&lt;br /&gt;
The users&#039; data can be exported and imported on CSV format. There are some fixed fields that are available for the import and the export. There are also some other fields that are only displayed on the export file just as extra information, which are marked with (*).&lt;br /&gt;
&lt;br /&gt;
==== CSV export ====&lt;br /&gt;
&#039;&#039;&#039;Users&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that come with the CSV are the SIP, GUID, domain, display name, the defined working hours per day and the personal number.&lt;br /&gt;
&amp;amp;sip;&amp;amp;guid;&amp;amp;domain;&amp;amp;dn;&amp;amp;monday;&amp;amp;tuesday;&amp;amp;wednesday;&amp;amp;thursday;&amp;amp;friday;&amp;amp;saturday;&amp;amp;sunday;&amp;amp;p_number&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;null;innovaphone.com;Atlantis;8;8;8;8;8;0;0;0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Absences&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that come with the CSV are the SIP, the start timestamp, the working hours, label (&#039;&#039;&#039;vacation&#039;&#039;&#039; for a vacation day, &#039;&#039;&#039;hvacation&#039;&#039;&#039; for a 1/2 day vacation, &#039;&#039;&#039;holiday&#039;&#039;&#039; for national holidays, &#039;&#039;&#039;sick&#039;&#039;&#039; for sick leave), confirmed (if the absence has been submitted), date, and the personal number.&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;duration;&amp;amp;label;&amp;amp;confirmed;&amp;amp;date;&amp;amp;p_number&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712181600000;8;hvacation;true;2024-04-04;0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Times&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that come with the CSV are the SIP, the start timestamp, the stop timestamp, confirmed (if has been submitted), the display name, the personal number, the start date, the start time, the stop date, the stop time, the amount of hours and the label (if a type has been selected).&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;stop;&amp;amp;confirmed;&amp;amp;dn;&amp;amp;p_number;&amp;amp;start_date;&amp;amp;start_time;&amp;amp;stop_date;&amp;amp;stop_time;&amp;amp;hours;&amp;amp;label&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712651520199;1712651700199;true;Atlantis;0;2024-04-09;10:32:00.199+00:00;2024-04-09;10:35:00.199+00:00;0,1;&lt;br /&gt;
&lt;br /&gt;
==== CSV import ====&lt;br /&gt;
&#039;&#039;&#039;Users&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that should come with the CSV are the SIP, GUID, domain, display name, the defined working hours per day and the personal number.&lt;br /&gt;
&amp;amp;sip;&amp;amp;guid;&amp;amp;domain;&amp;amp;dn;&amp;amp;monday;&amp;amp;tuesday;&amp;amp;wednesday;&amp;amp;thursday;&amp;amp;friday;&amp;amp;saturday;&amp;amp;sunday;&amp;amp;p_number&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;null;innovaphone.com;Atlantis;8;8;8;8;8;0;0;0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Absences&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that should come with the CSV are the SIP, the start timestamp, duration (the working hours), label (&#039;&#039;&#039;vacation&#039;&#039;&#039; for a vacation day, &#039;&#039;&#039;hvacation&#039;&#039;&#039; for a 1/2 day vacation, &#039;&#039;&#039;holiday&#039;&#039;&#039; for national holidays, &#039;&#039;&#039;sick&#039;&#039;&#039; for sick leave), confirmed (if the absence has been submitted) and date (if present timestamp will be ignored). The date must always have the english format, i.e. MM-DD-YYYY.&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;duration;&amp;amp;label;&amp;amp;confirmed;&amp;amp;date&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712181600000;8;hvacation;true;2024-04-04&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Times&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The fields that should come with the CSV are the SIP, the start timestamp, the stop timestamp, confirmed (if has been submitted).&lt;br /&gt;
&amp;amp;sip;&amp;amp;start;&amp;amp;stop;&amp;amp;confirmed&amp;lt;br&amp;gt;&lt;br /&gt;
atlantis;1712651520199;1712651700199;true&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
;workingadmin: the name of the working admin app.&lt;br /&gt;
&lt;br /&gt;
== PBX Manager Plugins ==&lt;br /&gt;
&lt;br /&gt;
=== Working ===&lt;br /&gt;
&lt;br /&gt;
With the Working plugin App Objects can be created, edited and deleted on the PBX.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
* Install the Working App with the new AP app installer available in the PBX manager. &#039;&#039;Hint : after the installation done, close and open again the PBX Manager to refresh the list of the installed app (the coloured plug-in)&#039;&#039;&lt;br /&gt;
* Create a new PBX Object for the Working User, Working Manager and Working API Apps with the PBX Manager Plugin.&lt;br /&gt;
* Assign the Working User (to normal users) and Working Manager App (to administration for example Human Resources) by selecting the config template that should include the App.&lt;br /&gt;
* Assign the Working API to all the users, so users can use the auto start/stop and push notifications.&lt;br /&gt;
* Assign license &amp;quot;App(innovaphone-working)&amp;quot; via config template or directly to all users using the APP.&lt;br /&gt;
* Set configuration settings on the &amp;quot;burger&amp;quot; menu of the Working Manager App (i.e. Reports Interval in weeks, groups and types configuration...).&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
Trace flags for App on App Platform:&lt;br /&gt;
&lt;br /&gt;
*App&lt;br /&gt;
*App Database&lt;br /&gt;
*App Websocket&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Trace flags for myAPPS Client:&lt;br /&gt;
&lt;br /&gt;
*Browser Console&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [https://sdk.innovaphone.com/14r2/web1/com.innovaphone.working/com.innovaphone.working.htm SDK Documentation - Working API]&lt;br /&gt;
* [https://sdk.innovaphone.com/14r2/doc/service/Working.htm SDK Documentation - Working Client API]&lt;/div&gt;</summary>
		<author><name>Lme</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference13r3:Concept_App_Service_Connector_for_kuando%C2%AE&amp;diff=71351</id>
		<title>Reference13r3:Concept App Service Connector for kuando®</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference13r3:Concept_App_Service_Connector_for_kuando%C2%AE&amp;diff=71351"/>
		<updated>2024-04-03T07:39:06Z</updated>

		<summary type="html">&lt;p&gt;Lme: /* Tracing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
[[Category:Concept App Service Connector for kuando®]]&lt;br /&gt;
&amp;lt;!-- busylight, busy lamp, busylamp, busy light, kuando, kuandohub, kuando hub, plenom, connector --&amp;gt;&lt;br /&gt;
== Applies To == &lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX from version 13r3&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
The basic aim of this app is to synchronize the busy status across innovaphone and other applications via a software called &amp;quot;kuandoHUB®&amp;quot;. Optionally, the control of a USB-busylight from the manufacturer &#039;&#039;Plenom&#039;&#039; / &#039;&#039;kuando®&#039;&#039; which is connected to the PC via USB and displays the current telephony status in different colors. You can checkout a [https://www.youtube.com/watch?v=wtFEswUKnTE short videotalk] about this solution.&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
For both solutions (with/without Busylight) a license is needed.&lt;br /&gt;
* &#039;&#039;&#039;license &amp;quot;App(innovaphone-kuando-with-busylight)&amp;quot;&#039;&#039;&#039; - a Busylight is required&lt;br /&gt;
* &#039;&#039;&#039;license &amp;quot;App(innovaphone-kuando)&amp;quot;&#039;&#039;&#039; - no busylight is required &lt;br /&gt;
&lt;br /&gt;
The license &amp;quot;App(innovaphone-kuando)&amp;quot; can ALSO be used for a Busylight setup. For example, if the setup is started without a Busylight, but in a later step the customer wants a Busylight.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Support to control a physical Busylight for calls in the innovaphone environment&lt;br /&gt;
* Support for virtual desktop environments, as myApps and &#039;&#039;kuandoHUB®&#039;&#039; communicate with each other via HTTP&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Additional Features in Windows Systems&#039;&#039;&#039;&lt;br /&gt;
* Synchronizes call state (line is free/busy) and presence between Innovaphone PBX and various 3rd Party Applications via &#039;&#039;kuandoHUB®&#039;&#039;&lt;br /&gt;
* Support to switch a myApps user to busy, when calling in a supported 3rd party application&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* innovaphone AppPlatform&lt;br /&gt;
* innovaphone myApps &lt;br /&gt;
* innovaphone SoftphoneApp or PhoneApp&lt;br /&gt;
* a separate .zip package called &amp;quot;Additional Software - Connector for kuando®&amp;quot; with additional Software which you can get from https://store.innovaphone.com/ in the tab &amp;quot;Software&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Setup with a physically Busylight ===&lt;br /&gt;
* A physically &#039;&#039;Plenom ®&#039;&#039; / &#039;&#039;kuando®&#039;&#039; USB-Busylight&lt;br /&gt;
* license &amp;quot;App(innovaphone-kuando-with-busylight)&amp;quot;&lt;br /&gt;
* Windows&lt;br /&gt;
** kuandoHUB® (minimum 1.1.14.4)&lt;br /&gt;
** Desired Windows kuandoHUB® Plugins and/or additional Plugins from kuando® Website&lt;br /&gt;
*** Check the [[#Synchronization_Concept|Synchronization Concept]] for supported 3rd-party Software&lt;br /&gt;
* MacOS&lt;br /&gt;
** kuandoHUB® (minimum 1.0.9)&lt;br /&gt;
** MacOS_BusylightHTTP (minimum 1.0.8)&lt;br /&gt;
&lt;br /&gt;
=== Setup without a physically Busylight ===&lt;br /&gt;
* license &amp;quot;App(innovaphone-kuando)&amp;quot;&lt;br /&gt;
* Windows&lt;br /&gt;
** kuandoHUB®-innovaphone (minimum 0.9.1)&lt;br /&gt;
** Supported Windows kuandoHUB® Plugins&lt;br /&gt;
*** MS Teams&lt;br /&gt;
*** Webex&lt;br /&gt;
*** Zoom&lt;br /&gt;
&lt;br /&gt;
;Important setup instructions&lt;br /&gt;
: Currently, the Zoom- and Team plugins include the presence priorities (available, away, busy etc.) per default, which we don’t want here.&amp;lt;br&amp;gt;&lt;br /&gt;
:In further versions, we will ignore these presence states. For the moment, please import the attached busylight_example.reg into your local Windows registry, which includes the correct states for Zoom and Teams, which is just the call state.&lt;br /&gt;
&lt;br /&gt;
== Concept ==&lt;br /&gt;
The basic concept is, to synchronize the callstates and presence across different software solutions and to meet the requirements of the respective user.&lt;br /&gt;
&lt;br /&gt;
From the user&#039;s point of view, he usually has several communication tools, but he can and usually only wants to make calls with one of these tools at the same time. This is exactly where the approach lies, in bringing together the respective status of various software.&lt;br /&gt;
&lt;br /&gt;
This approach is taken over by the &#039;&#039;kuandoHUB®&#039;&#039;. Any software can register to the &#039;&#039;kuandoHUB®&#039;&#039; as 3rd-party application and distribute his own information about active calls or current presence to them. The &#039;&#039;kuandoHUB®&#039;&#039; serves as a central collection point for all states and thus, forms the center of the integration. With an active registration to the &#039;&#039;kuandoHUB®&#039;&#039; every 3rd-party application can set and revoke his own states.&lt;br /&gt;
&lt;br /&gt;
Within the &#039;&#039;kuandoHUB®&#039;&#039; configuration, there is a software prioritization that can be defined by the user to obtain the desired behavior in each case. (Example: An &amp;quot;innovaphone call state&amp;quot; has a higher priority than a &amp;quot;Microsoft Teams presence note&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== Example flow ===&lt;br /&gt;
In this example, we would like to illustrate the flow of an incoming call in the innovaphone envrionment:&lt;br /&gt;
# The PBX tells myApps about a call &lt;br /&gt;
# myApps forward this information to the App &#039;&#039;Connector for kuando®&#039;&#039; &lt;br /&gt;
# The &#039;&#039;Connector for kuando®&#039;&#039; distribute this information to the HTTP-Interface of the kuandoHUB®&lt;br /&gt;
# optional: If you use the &#039;&#039;kuandoHUB®&#039;&#039;, it can communicate with the LED Lamp via USB&lt;br /&gt;
# Other 3rd-party applications are able to request for the current state and do stuff in his own environment with this&lt;br /&gt;
&lt;br /&gt;
The chain shown below acts in the opposite direction if, for example, a Skype call is received.&lt;br /&gt;
The result would be, that the user would be on the phone in Skype and would also be busy in the PBX and a corresponding call partner would be shown.&lt;br /&gt;
&lt;br /&gt;
[[Image:Kuando_connector_example_flow.png]]&lt;br /&gt;
&lt;br /&gt;
=== Technical Overview ===&lt;br /&gt;
[[Image:Kuando_connector.png]]&lt;br /&gt;
&lt;br /&gt;
=== Technical Concept ===&lt;br /&gt;
We start the technical details in the myApps environment (top left of the picture). This is the starting point for a myApps user.&lt;br /&gt;
The admin has already assigned both apps (&#039;&#039;Connector for kuando®&#039;&#039; and &#039;&#039;Connector for kuando® config&#039;&#039;) to the user.&lt;br /&gt;
&lt;br /&gt;
;myApps&lt;br /&gt;
When starting myApps, only the app &#039;&#039;Connector for kuando® config&#039;&#039; is visible with an app icon, as the &#039;&#039;Connector for kuando®&#039;&#039; is a hidden app that should only have background tasks and will start automatically.&lt;br /&gt;
&lt;br /&gt;
If the user opens the app &#039;&#039;Connector for kuando® config&#039;&#039;, it authorizes itself to the appropriate PBX object, which has a connection to the app service of the same name of the respective app instance. &lt;br /&gt;
Likewise, a separate websocket connection is established from the client (the opened app) to the endpoint of the app instance, via which the app can speak directly with the app service.&lt;br /&gt;
In this case, user-specific configurations can be read from the database and saved via the connection to the app service.&lt;br /&gt;
&lt;br /&gt;
The same applies to the hidden service &#039;&#039;Connector for kuando®&#039;&#039;, which is automatically started as soon myApps is started. &lt;br /&gt;
Once the service has been started, it runs continuously in the background and serves the kuandoHUB®.&lt;br /&gt;
&lt;br /&gt;
;kuandoHUB®&lt;br /&gt;
If you want to use a physically USB Busylight, you can use the &#039;&#039;kuandoHUB®&#039;&#039; (center left in the picture). It forms a kind of collection point to which all applications on the PC (&#039;&#039;myApps&#039;&#039;, &#039;&#039;Skype&#039;&#039;, &#039;&#039;MS Teams&#039;&#039;, &#039;&#039;Webex&#039;&#039;, etc.) can communicate their current status.&lt;br /&gt;
&lt;br /&gt;
Within the &#039;&#039;kuandoHUB®&#039;&#039;, there is a user configuration to achieve a weighting of the different solutions.&lt;br /&gt;
(Example: An &amp;quot;innovaphone call state&amp;quot; should have a higher priority than a &amp;quot;Microsoft Teams presence note&amp;quot;).&lt;br /&gt;
Based on this weighting, exactly one status is always gained and used as the current status.&lt;br /&gt;
&lt;br /&gt;
The colour of the selected status is displayed by the &#039;&#039;kuandoHUB®&#039;&#039; on the installed USB lamp. If you have connected several busylights, they will all be controlled in parallel. In addition, the &#039;&#039;kuandoHUB®&#039;&#039; provides an interface with which any software can query the current status.&lt;br /&gt;
&lt;br /&gt;
This means, for example:&lt;br /&gt;
Skype can report an active call. The &#039;&#039;kuandoHUB®&#039;&#039; sets the lamp to red and knows that an active call is running in the &#039;&#039;Skype&#039;&#039; software. myApps can now query the current status and knows that the user has an active call in &#039;&#039;Skype&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
kuando® offers a small mini installation for download per supported 3rd party application.&lt;br /&gt;
That means, if you want to use this solution with Skype, you have to install the &#039;&#039;kuandoHUB®&#039;&#039; and the &#039;&#039;kuando® Skype Extension&#039;&#039;.&lt;br /&gt;
If you want to use &#039;&#039;Skype&#039;&#039; and &#039;&#039;Webex&#039;&#039;, you have to install both the &#039;&#039;Skype Extension&#039;&#039; and the &#039;&#039;Webex Extension&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
When recognizing calls, it is important that no calls can be recognized in a web session.  If you want &#039;&#039;MS Teams&#039;&#039; calls to be recognized, for example, you must have installed the extension and use the client for the call and not participate in a session in the browser.&lt;br /&gt;
As a rule, it is sufficient to have the client installed. If you then receive an invitation to a conference from an external contact, the installed client opens automatically, if available.&lt;br /&gt;
&lt;br /&gt;
;kuandoHUB® innovaphone Edition&lt;br /&gt;
If you don&#039;t want to use a physically USB Busylight, you can use the &#039;&#039;kuandoHUB® innovaphone Edition&#039;&#039; (center left in the picture). It forms a kind of collection point to which supported applications on the PC can communicate their current status.&lt;br /&gt;
&lt;br /&gt;
Within the &#039;&#039;kuandoHUB® innovaphone Edition&#039;&#039; there is no configuration.&lt;br /&gt;
&lt;br /&gt;
kuando® offers a small mini installation for download per supported 3rd party application.&lt;br /&gt;
That means, if you want to use this solution with MS-Teams, you have to install the &#039;&#039;kuandoHUB® innovaphone Edition&#039;&#039; and the &#039;&#039;kuando® MS-Teams Extension&#039;&#039;.&lt;br /&gt;
If you want to use &#039;&#039;MS-Teams&#039;&#039; and &#039;&#039;Webex&#039;&#039;, you have to install both the &#039;&#039;MS-Teams Extension&#039;&#039; and the &#039;&#039;Webex Extension&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
When recognizing calls, it is important that no calls can be recognized in a web session.  If you want &#039;&#039;MS Teams&#039;&#039; calls to be recognized, for example, you must have installed the extension and use the client for the call and not participate in a session in the browser.&lt;br /&gt;
As a rule, it is sufficient to have the client installed. If you then receive an invitation to a conference from an external contact, the installed client opens automatically, if available.&lt;br /&gt;
&lt;br /&gt;
=== Synchronization Concept kuandoHUB® ===&lt;br /&gt;
It is not trivial to reconcile the various statuses of active phone calls, conferences and presences.&lt;br /&gt;
The following rules apply for prioritizing to a single status.&lt;br /&gt;
&lt;br /&gt;
# Calls overwrite presence information&lt;br /&gt;
# A manual presence in myApps overwrite a presence from &#039;&#039;kuandoHUB®&#039;&#039;&lt;br /&gt;
# The prioritization of the active state (only one is possible) results from the &#039;&#039;kuandoHUB®&#039;&#039; configuration. (see: [[#kuandoHUB.C2.AE_prioritisation|kuandoHUB® prioritization]])&lt;br /&gt;
&lt;br /&gt;
The following states are supported by myApps: &amp;lt;code&amp;gt;free, busy, away, dnd, onthephone&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We will use the following mapping to apply the names state from a 3rd-party software that submit their state via &#039;&#039;kuandoHUB®&#039;&#039; to myApps:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;2&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! kuandoHUB® platform / Source Software &lt;br /&gt;
! Event(s)&lt;br /&gt;
! Transformed myApps State&lt;br /&gt;
|-&lt;br /&gt;
| 3CX&lt;br /&gt;
| Call Alert, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Alcatel Rainbow Office&lt;br /&gt;
| Call Alert, In-a-Conference, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Atos Unify Office&lt;br /&gt;
| Call Alert, In-a-Conference, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Avaya Cloud Office&lt;br /&gt;
| Call Alert, In-a-Conference, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Avaya Workplace&lt;br /&gt;
| Call Alert, In a call&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Avaya One-X Communicator&lt;br /&gt;
| Call alert, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| AT&amp;amp;T Office@Hand&lt;br /&gt;
| Call Alert, In-a-Conference, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| BT Cloud Work&lt;br /&gt;
| Call Alert, In-a-Conference, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Cisco Jabber&lt;br /&gt;
| Call Alert, In-a-Conference, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Ecotel&lt;br /&gt;
| Call Alert, In-a-Conference, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Eastlink&lt;br /&gt;
| Call Alert, In-a-Conference, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| MS Teams&lt;br /&gt;
| On-The-Phone, In-a-Conference, Call Alert&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Plantronics Hub&lt;br /&gt;
| Call Alert, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| RingCentral Unified&lt;br /&gt;
| Call Alert, On-The-Phone, In-a-Conference&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| RingCentral Softphone&lt;br /&gt;
| Call alert, In a call&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Slack&lt;br /&gt;
| Call-Alert, On-The-Phone, In-A-Meeting&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Symphony&lt;br /&gt;
| Call Alert, On-The-Phone, In-A-Conference&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| TELUS Business Connect&lt;br /&gt;
| Call Alert, On-The-Phone, In-a-Conference&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Broadsoft UC-One&lt;br /&gt;
| Call Alert, On-The-Phone, In-a-Conference&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Jabra&lt;br /&gt;
| Call Alert, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Verizon&lt;br /&gt;
| Call Alert, On-The-Phone, In-a-Conference&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Vodafone&lt;br /&gt;
| Call Alert, On-The-Phone, In-a-Conference&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Webex&lt;br /&gt;
| Call Alert, On-The-Phone&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Zoom&lt;br /&gt;
| Call Alert, In-a-Zoom-Meeting&lt;br /&gt;
| onthephone&lt;br /&gt;
|-&lt;br /&gt;
| Manual Changer&lt;br /&gt;
| Available, LTM (listen the music), Off&lt;br /&gt;
| free&lt;br /&gt;
|-&lt;br /&gt;
| Manual Changer&lt;br /&gt;
| Busy&lt;br /&gt;
| busy&lt;br /&gt;
|-&lt;br /&gt;
| Manual Changer&lt;br /&gt;
| Away, NAW (not at work)&lt;br /&gt;
| away&lt;br /&gt;
|-&lt;br /&gt;
| Manual Changer&lt;br /&gt;
| DND&lt;br /&gt;
| dnd&lt;br /&gt;
|-&lt;br /&gt;
| Manual Changer&lt;br /&gt;
| Lunch&lt;br /&gt;
| lunch (implicit away with lunch message)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A software or event that is not listed in the mapping table above result in &#039;&#039;none&#039;&#039;, which have no effect to call state or presence state. In this case, you will see &amp;lt;code&amp;gt;transforming: ignored, sending application is unknown&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;transforming: ignored, sending event is unknown&amp;lt;/code&amp;gt; in the myApps trace.&lt;br /&gt;
It is possible that new/different commands may be sent from third party applications in the future. If you have an application that is not on this list, but a &#039;&#039;kuandoHUB®&#039;&#039; plugin exists for it, please let us know.&lt;br /&gt;
&lt;br /&gt;
=== Specialities for some kuandoHub® plugins ===&lt;br /&gt;
&lt;br /&gt;
Please note: innovaphone supports a variety of &amp;quot;commands&amp;quot; and &amp;quot;states&amp;quot; produced by external third-party applications. innovaphone cannot and has not tested every single third-party application, and cannot provide detailed information about the dedicated configuration of a specific third-party application. Nevertheless, we are happy to list special configurations hints to be aware of with the respective third-party applications.&lt;br /&gt;
&lt;br /&gt;
==== Zoom ====&lt;br /&gt;
You have to be logged on with your account in the Zoom client, otherwise Zoom will not broadcast the state.&lt;br /&gt;
&lt;br /&gt;
==== MS Teams ====&lt;br /&gt;
After installing and starting the &amp;quot;Busylight for MS Teams&amp;quot; plugin from plenom, this popup might be shown:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:Busylight teams popup.jpg]]&lt;br /&gt;
&lt;br /&gt;
You have to follow the instructions from the popup, to make the teams-plugin work.&lt;br /&gt;
&lt;br /&gt;
This is caused by the [[Reference13r3:Concept_myApps_Office_Integration | myApps Office Integration]], which sets myApps as &amp;quot;default IM Provider&amp;quot; in the Windows Registry, at every start of myApps.&lt;br /&gt;
But for the kuando-teams-plugin to work, Microsoft Teams needs to be set as &amp;quot;default IM Provider&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
So after every restart of the computer, you have to make these changes in team.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get rid of it permanently, the only solution is, to disable the Office Integration in myApps.&amp;lt;br /&amp;gt;&lt;br /&gt;
If myApps is already installed, you have to disable it via registry entry on the Windows host. [[Reference13r1:Concept_myApps_platform_services#MSI_Parameters_and_install_options | Here]] you can find all information, regarding the entry.&lt;br /&gt;
This entry can also be deployed via .msi-file, as written in the same section.&lt;br /&gt;
&lt;br /&gt;
Also for new myApps installations, you can disable the Office Integration in the setup process (activate &amp;quot;disable Office Integration&amp;quot; there).&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To sum it up and since only one default IM Provider can exist (Microsoft restriction, not from our side), you can&#039;t use the Office Intregration anymore, if you want to use the Teams plugin for kuandoHUB®.&lt;br /&gt;
&lt;br /&gt;
=== Synchronization kuandoHUB®-innovaphone ===&lt;br /&gt;
As mentioned [[Reference13r3:Concept_App_Service_Connector_for_kuando%C2%AE#Setup_without_a_physically_Busylight | above]], currently the only supported plenom plugins are:&lt;br /&gt;
* MS Teams&lt;br /&gt;
* Webex&lt;br /&gt;
* Zoom&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Apps ==&lt;br /&gt;
&lt;br /&gt;
=== Connector for kuando® App (innovaphone-kuando) ===&lt;br /&gt;
This endpoint provides all the necessary components for the background process to talk to the &#039;&#039;kuandoHUB®&#039;&#039;, the LED lamp and the PBX and to perform the respective call state or presence updates.&lt;br /&gt;
&lt;br /&gt;
=== Connector for kuando® Config App (innovaphone-kuando-config) ===&lt;br /&gt;
This endpoint provides the user an app, for a test of the local LED lamp and a frontend for user-specific configurations and tracing settings.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
=== innovaphone configuration ===&lt;br /&gt;
==== Creating app objects via PBX Manager ====&lt;br /&gt;
After you have installed the App and create an instance, the PBX Manager provides a plugin to perform the configuration. Two apps need to be created at this point. &lt;br /&gt;
* &#039;&#039;Connector for kuando®&#039;&#039; which is not visible to the user and runs purely as a hidden service in the user&#039;s myApps environment to communicate with the &#039;&#039;kuandoHUB®&#039;&#039; in background.&lt;br /&gt;
* &#039;&#039;Connector for kuando® Config&#039;&#039; which gives the user the possibility to test his physical LED lamp and to make local settings if necessary.&lt;br /&gt;
&lt;br /&gt;
Afterwards, you have to distribute both apps directly via configuration at the user or via config template.&lt;br /&gt;
&lt;br /&gt;
Also make sure, that the user has a Connector for kuando® App license (innovaphone-kuando) assigned.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: The apps should only be activated for users who actually use them. Since the service is always started in the background, many unnecessary log files are written if the kuandoHUB® is not rechable and repeated attempts are made to reach the kuandoHUB®.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Creating app objects manually ====&lt;br /&gt;
If you don&#039;t want to use the PBX Manager and rather create the App objects manually: &lt;br /&gt;
* Create two App objects - one for the connector for kuando and for the connector for kuando config&lt;br /&gt;
* Name them properly&lt;br /&gt;
* Set the correct App URL, which points to the app instance on the AP&lt;br /&gt;
* set the required config options&lt;br /&gt;
&lt;br /&gt;
Example for App &#039;&#039;&#039;Connector for Kuando&#039;&#039;&#039; app object&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;URL Example:&#039;&#039;&#039; &#039;&#039;https://ap.domain.com/domain.com/kuandoconnector/innovaphone-kuando&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Options to activate:&#039;&#039;&#039; &#039;&#039;Hidden, Websocket, Admin, PbxApi&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for App &#039;&#039;&#039;Connector for Kuando Config&#039;&#039;&#039; app object&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;URL Example:&#039;&#039;&#039; &#039;&#039;https://ap.domain.com/domain.com/kuandoconnector/innovaphone-kuando-config&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Options to activate:&#039;&#039;&#039; none&lt;br /&gt;
&lt;br /&gt;
=== kuandoHUB® configuration ===&lt;br /&gt;
In the left menu you find an entry &#039;&#039;Plattform-Prioritäten&#039;&#039;. There you have to set a default configuration.&lt;br /&gt;
* Set the source &#039;&#039;Manual Changer&#039;&#039; to the bottom of the List and enable the checkmark &#039;&#039;Aktiv&#039;&#039;&lt;br /&gt;
* Navigate in the left menu to &#039;&#039;Farben&#039;&#039; and select the green one&lt;br /&gt;
&lt;br /&gt;
With this setup, you have a default configuration, that your lamp shows a green color if no other software distribute a status.&lt;br /&gt;
&lt;br /&gt;
The HTTP Server function must also be activated in the advanced settings.&lt;br /&gt;
&lt;br /&gt;
==== kuandoHUB® prioritization ====&lt;br /&gt;
In the &#039;&#039;kuandoHUB®&#039;&#039; you can check the currently active states. It will be indicated with a gray background in the 3rd party software list.&lt;br /&gt;
&#039;&#039;&#039;It is very important that presence states that &amp;quot;free signal&amp;quot; like &amp;quot;Free / Available&amp;quot; such as &amp;quot;MS Teams / available&amp;quot; are deactivated in the &#039;&#039;kuandoHUB®&#039;&#039;, otherwise they may overwrite other states.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Also you have to sort you events in the &#039;&#039;kuandoHUB®&#039;&#039; configuration. Make sure that all telephone events (ringing, busy, on the phone, ...) are of higher value than simple presence events. You can download [[:Media:Default_kuando_prioritiesbackup.zip‎|&#039;&#039;&#039;&#039;&#039;here&#039;&#039;&#039;&#039;&#039;]] a sample configuration file.&lt;br /&gt;
&lt;br /&gt;
=== kuandoHUB® innovaphone Edition ===&lt;br /&gt;
There is no configuration UI.&lt;br /&gt;
&lt;br /&gt;
== Special Setups ==&lt;br /&gt;
=== Using a remote busylight ===&lt;br /&gt;
If the busylight isn&#039;t connected locally on the same client, where you use myApps - for example in a Citrix environment, where myApps is started inside the environment, but the busylight is connected at the local computer -, you can still access the busylight with some configuration on the local client.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Configuration on the client, where the busylight is physically connected&#039;&#039;&#039;&lt;br /&gt;
* install the kuandoHUB® software&lt;br /&gt;
* in the Windows registry, open the path &amp;lt;code&amp;gt;Computer\HKEY_CURRENT_USER\Software\Busylight&amp;lt;/code&amp;gt; and create an entry with type &#039;&#039;&#039;&amp;quot;REG_SZ&amp;quot;&#039;&#039;&#039;, name it &#039;&#039;&#039;&amp;quot;http_uri&amp;quot;&#039;&#039;&#039; and set the value to &#039;&#039;&#039;&amp;quot;http://+:8989/&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
* create an incoming Windows Firewall entry, where incoming traffic to tcp port &#039;&#039;&#039;&amp;quot;8989&amp;quot;&#039;&#039;&#039; is allowed&lt;br /&gt;
** Windows-Powershell command for this: &amp;lt;code&amp;gt;New-NetFirewallRule -DisplayName &amp;quot;Allow Busylight HTTP Port 8989&amp;quot; -Direction Inbound -Action Allow -EdgeTraversalPolicy Allow -Protocol TCP -LocalPort 8989&amp;lt;/code&amp;gt;&lt;br /&gt;
* create an entry in the &#039;&#039;&#039;http.sys&#039;&#039;&#039;-file for the URL http://+:8989/&lt;br /&gt;
** Windows-Powershell command for this: &amp;lt;code&amp;gt;netsh http add urlacl url=http://+:8989/ user=DOMAIN\user&amp;lt;/code&amp;gt; - change the &amp;quot;user&amp;quot;-part to your needs.&lt;br /&gt;
* make sure, that &#039;&#039;&#039;HTTP Server&#039;&#039;&#039; is activated in the kuandoHUB® softwares advanced settings&lt;br /&gt;
** registry entry for this is: entry type &#039;&#039;&#039;&amp;quot;REG_DWORD&amp;quot;&#039;&#039;&#039;, name &#039;&#039;&#039;&amp;quot;http_enabled&amp;quot;&#039;&#039;&#039;, value &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
* restart the kuandoHUB®&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Configuration on the client, where myApps is installed&#039;&#039;&#039;&lt;br /&gt;
* open the &#039;&#039;&#039;CONNECTOR FOR KUANDO CONFIG&#039;&#039;&#039;-App&lt;br /&gt;
* set the &#039;&#039;&#039;HTTP Server URL:&#039;&#039;&#039; according to the clients IP address and port, where the busylight is physically connected to&lt;br /&gt;
** example: &#039;&#039;&#039;http://192.168.0.100:8989&#039;&#039;&#039;&lt;br /&gt;
* enter the &#039;&#039;&#039;HTTP Server access token:&#039;&#039;&#039;, which you can either copy from the kuandoHUB® (advanced settings), or the registry&lt;br /&gt;
** if no registry entry exist, you can create one: entry type &#039;&#039;&#039;&amp;quot;REG_SZ&amp;quot;&#039;&#039;&#039;, name it &#039;&#039;&#039;&amp;quot;http_token&amp;quot;&#039;&#039;&#039;, and set the value to whatever you want - a crypto entry is recommended&lt;br /&gt;
&lt;br /&gt;
Now the busylight can be used, even from an remote computer.&lt;br /&gt;
For more information, the kuandoHUB® manual can be found in the downloaded kuandoHUB® setup folder.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IMPORTANT:&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
You have to use the myApps Launcher for this special setup, since Web-Browsers doesn&#039;t allow mixed content, which is needed (kuandoHUB® use http, whereas myApps uses https).&lt;br /&gt;
&lt;br /&gt;
== Known Limitation ==&lt;br /&gt;
&lt;br /&gt;
=== myApps Office Integration won&#039;t work, if MS Teams plugin is used===&lt;br /&gt;
As mentioned [[#MS Teams|above]], the [[Reference13r3:Concept_myApps_Office_Integration | myApps Office Integration]] can&#039;t be used anymore, if you use the MS teams plugin for kuandoHUB®.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
Troubleshooting can be a bit tricky at this point. You should first think about which side the error is on, in order to be able to approach it accordingly.&lt;br /&gt;
&lt;br /&gt;
=== myApps site ===&lt;br /&gt;
&lt;br /&gt;
The configuration app will show some red warning banner:&lt;br /&gt;
* no license&lt;br /&gt;
* no kuandoHUB® detected&lt;br /&gt;
* to old kuandoHUB® version&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t see a red error message at the top of the app, you should go ahead to find your issue.&lt;br /&gt;
&lt;br /&gt;
==== Tracing ====&lt;br /&gt;
You will find trace output in the browser console, or in the myApps log if you have enabled before the trace flags &#039;&#039;browser console&#039;&#039; and &#039;&#039;app&#039;&#039; in the myApps launcher trace options.&lt;br /&gt;
&lt;br /&gt;
To better understand the logfile flow, you here will find a sample startup if the hidden service is closed (you have no calls before) and you get an incoming call.&lt;br /&gt;
 open kuando url=https://...&lt;br /&gt;
 started: kuando (hidden)&lt;br /&gt;
 ...&lt;br /&gt;
 send to kuando: {&amp;quot;mt&amp;quot;:&amp;quot;ApiUpdate&amp;quot;,&amp;quot;apis&amp;quot;:{&amp;quot;com.innovaphone.notificationhandler&amp;quot;:{...&lt;br /&gt;
 ...&lt;br /&gt;
 kuando-log: start.url=wss://... start.originalUrl=https://...&lt;br /&gt;
 kuando-log: debug - lamp_myapps_state: free&lt;br /&gt;
 kuando-log: debug - lamp_call_state: free&lt;br /&gt;
 kuando-log: debug - kuando_hub_installed: undefined&lt;br /&gt;
 kuando-log: debug - count_calls: 0&lt;br /&gt;
 ...&lt;br /&gt;
 kuando-log: app not initialized, sleep&lt;br /&gt;
 ...&lt;br /&gt;
 kuando-log: Instance Connected&lt;br /&gt;
 kuando-log: init http post request: http://localhost:8989/?http_token=&lt;br /&gt;
 kuando-log: init http get request: http://localhost:8989/?action=currentpresence&amp;amp;http_token=&lt;br /&gt;
 kuando-log: 3rd party state result: innovaphone myApps / Blink / Blink&lt;br /&gt;
&lt;br /&gt;
You see that there is a prefix in all needed logfiles.&lt;br /&gt;
&lt;br /&gt;
So it is a good thing to filter for:&lt;br /&gt;
* &amp;lt;code&amp;gt;kuando-log:&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;kuando-config-log:&amp;lt;/code&amp;gt; &lt;br /&gt;
* or use a regex to get all relevant logfiles &amp;lt;code&amp;gt;/(kuando-config-log|kuando-log)/&amp;lt;/code&amp;gt;&lt;br /&gt;
to see all the output from the specific app.&lt;br /&gt;
&lt;br /&gt;
==== Test the kuandoHUB® connection ====&lt;br /&gt;
* You can use the &#039;&#039;Connector for kuando® Config App&#039;&#039; to test the connection and test the UBS-Busylight&lt;br /&gt;
* You can test the functionality of your local &#039;&#039;kuandoHUB®&#039;&#039;, if you open the URL &amp;lt;code&amp;gt;http://localhost:8989/&amp;lt;/code&amp;gt;. If you get this JSON output &amp;lt;code&amp;gt;{&amp;quot;response&amp;quot;: &amp;quot;OK&amp;quot;}&amp;lt;/code&amp;gt; it works fine.&lt;br /&gt;
&lt;br /&gt;
==== Nothing happens / I do not see related logfiles in the console ====&lt;br /&gt;
* Make sure, that the user has a valid license. If not you will see a error message in the &#039;&#039;Connector for kuando® Config App&#039;&#039; or the following message in your myApps trace: &amp;lt;code&amp;gt;kuando-log: no app license, stop service&amp;lt;/code&amp;gt;&lt;br /&gt;
* Make sure, that the user has configured a &amp;quot;default telephony app&amp;quot; in his myApps or started the phone app. (If no phone app is opened a standard app has to be defined, that the PBX can wake up the associated phone app. Waking up the phone app implicitly wakes up the &#039;&#039;Connector for kuando® App&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
=== kuandoHUB® site ===&lt;br /&gt;
&lt;br /&gt;
==== kuandoHUB® traces ====&lt;br /&gt;
You don&#039;t have direct logfiles of the kuandoHUB®, but there is a solution from Microsoft called [https://docs.microsoft.com/en-us/sysinternals/downloads/debugview Debug view] which the kuandoHUB® uses for its debug output.&lt;br /&gt;
You only need to start the software &#039;&#039;Debug view&#039;&#039;. No further configuration is necessary.&lt;br /&gt;
All debug outputs of current processes that support the &#039;&#039;Debug View&#039;&#039; method are recorded directly. You can then save these log files.&lt;br /&gt;
&lt;br /&gt;
==== Support Case ====&lt;br /&gt;
If you have problems with the kuandoHUB® or a kuandoHUB®-Plugin for a third-party software, you can open a corresponding ticket with Plenom at [mailto:support@plenom.com support@plenom.com].&lt;br /&gt;
&lt;br /&gt;
==== Problem with Office 365 Cloud ====&lt;br /&gt;
For each mail Outlook show: &amp;quot;Ein Programm versucht, auf Ihre in Outlook gespeicherten Informationen zu E-Mail-Adressen zuzugreifen. ...&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Solution&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Configure and activate all Outlook functions in kuando hub. Send an E-Mail and now the light goes purple. Now deactivate the service and delete this service in &amp;quot;Plattformprioritäten&amp;quot;. Outlook will now automatically shut down. Now the service of kuando is deinstalled in outlook.&lt;/div&gt;</summary>
		<author><name>Lme</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:Wikitogo&amp;diff=69520</id>
		<title>Howto:Wikitogo</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:Wikitogo&amp;diff=69520"/>
		<updated>2023-11-09T07:49:46Z</updated>

		<summary type="html">&lt;p&gt;Lme: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wikitogo is an offline version of the innovaphone wiki that you can download and import into your own locally hosted media wiki.&lt;br /&gt;
&lt;br /&gt;
==Applies To==&lt;br /&gt;
This information applies to all V7 devices and later.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- wiki2go wiki togo 2go --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
innovaphone wiki is the source for the innovaphone on-line help. This is great as you always have access to the latest information on-line. &lt;br /&gt;
&lt;br /&gt;
However, once in a while you will need to go to a customer site where you don&#039;t have access to wiki.innovaphone.com. To help with this situation, you can use a locally hosted media wiki on your own device for all the needed information.&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
To import this wiki into your own, you need an .xml file with all the important data. You can get the file [https://wiki.innovaphone.com/index.php?title=Special:Export here] and choose to either download the whole wiki by selecting &amp;quot;Export all pages&amp;quot; or you can add all pages from a category or manually if you just want some pages from the wiki. &lt;br /&gt;
After downloading the .xml file, you can import the pages into your own wiki using the special import page. If you want to know how to do this, see the [https://www.mediawiki.org/wiki/Manual:Importing_XML_dumps#Using_Special:Import mediawiki website] for more information. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
The web interface of the V7 innovaphone devices is equipped with a Help button providing context sensitive online help for the current configuration page. In the default configuration it links to a corresponding wiki Reference page on the &amp;lt;code&amp;gt;http://wiki.innovaphone.com&amp;lt;/code&amp;gt;. To link to the wikitogo installation on your PC a configuration change on the device is required. Read  [[Reference:Configuration/General/Admin#Help_URL]] in order to understand how to change the default Help URL.&lt;br /&gt;
&lt;br /&gt;
===Known Problems===&lt;br /&gt;
You have to download it manually everytime pages you need getting updated.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
[[Reference:Configuration/General/Admin]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Lme</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto14r1:Firmware_Upgrade_V13r3_V14r1&amp;diff=69191</id>
		<title>Howto14r1:Firmware Upgrade V13r3 V14r1</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto14r1:Firmware_Upgrade_V13r3_V14r1&amp;diff=69191"/>
		<updated>2023-10-20T11:45:48Z</updated>

		<summary type="html">&lt;p&gt;Lme: /* Known Problems */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FIXME|reason=Preliminary working draft}}&lt;br /&gt;
== Applies To ==&lt;br /&gt;
This information applies to:&lt;br /&gt;
&lt;br /&gt;
* All 14r1 capable innovaphone devices&lt;br /&gt;
: For a general overview of the upgrade process and a list of supported devices with 14r1, see [[Howto:Firmware Upgrade]]&lt;br /&gt;
&lt;br /&gt;
== Changes visible to end customers ==&lt;br /&gt;
Listed here are changes that should be communicated by resellers to end users prior to a 14r1 upgrade, as the change will be visible/audible in the behaviour of the application/device.&lt;br /&gt;
=== Softphone/Phone App UI changes === &lt;br /&gt;
* Dial-pad is now a new tab in the navigation.&lt;br /&gt;
* On Smartphones, the Navigation is in the bottom.&lt;br /&gt;
* Call button is removed from the searchbar. Calling only via the search results.&lt;br /&gt;
&lt;br /&gt;
== Application Platform and its applications ==&lt;br /&gt;
===Apps new in 14r1===&lt;br /&gt;
New Apps will not be installed automatically by the 13r3 to 14r1 upgrade. The installation description of new 14r1 apps is usually in the concept article. New apps are:&lt;br /&gt;
;Search App&lt;br /&gt;
* The app is immediately available on the PBX (no configuration is needed). In a new V14r1 configuration the Install provides all Users with this Search App via the &amp;quot;Config User&amp;quot;-Template. If the same configuration is required on an upgraded config, the Search App (&amp;quot;search&amp;quot;) can be ticked in the &amp;quot;Config User&amp;quot; template.&lt;br /&gt;
;TechAssist &lt;br /&gt;
* Application for quality assurance and improvement of systems by collecting static and runtime information. For details refer to [[Reference14r1:Concept_App_Service_TechAssist | the concept article]].&lt;br /&gt;
&lt;br /&gt;
== Configuration Changes ==&lt;br /&gt;
&lt;br /&gt;
=== Fax Object ===&lt;br /&gt;
After updating from 13r3 or setting up your device with 14r1, the Fax object has 3 new checkboxes.&lt;br /&gt;
* Append user number: if checked, the user number will be appended to the object number.&lt;br /&gt;
* ECM: that allows the T.30 connection to use error correction.&lt;br /&gt;
*  Receiving with 400dpi allowed: which allows you to receive 400*400dpi documents.&lt;br /&gt;
&lt;br /&gt;
== Removed in 14r1 ==&lt;br /&gt;
The following software is no longer included in 14r1.&lt;br /&gt;
=== myPBX ===&lt;br /&gt;
This includes the following components&lt;br /&gt;
* myPBX webclient&lt;br /&gt;
* myPBX for Windows&lt;br /&gt;
* myPBX for iOS&lt;br /&gt;
* myPBX for Android&lt;br /&gt;
Please migrate to &#039;&#039;&#039;innovaphone myApps&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
The Widgets were based on the myPBX interfaces that have been removed. Please migrate to the &#039;&#039;&#039;Contacts Widget App&#039;&#039;&#039;.&lt;br /&gt;
===WebRTC toolkit===&lt;br /&gt;
The WebRTC toolkit was based on the myPBX interfaces that have been removed.&lt;br /&gt;
Please use the current interfaces and libraries described in the &#039;&#039;&#039;[https://sdk.innovaphone.com innovaphone SDK]&#039;&#039;&#039;.&lt;br /&gt;
=== Windows Softwarephone ===&lt;br /&gt;
Please migrate to &#039;&#039;&#039;innovaphone myApps for Windows&#039;&#039;&#039; and the &#039;&#039;&#039;Softphone App&#039;&#039;&#039;.&lt;br /&gt;
===PBX Object Settings ===&lt;br /&gt;
The object provided the PBX Settings App that was used to configure dynamic group memberships in myPBX.&lt;br /&gt;
Please use the &#039;&#039;&#039;Profile App&#039;&#039;&#039; instead.&lt;br /&gt;
&lt;br /&gt;
===PBX Object ICP ===&lt;br /&gt;
Please use the integrated presence features of the &#039;&#039;&#039;innovaphone PBX&#039;&#039;&#039; instead.&lt;br /&gt;
&lt;br /&gt;
===Service Call-Lists ===&lt;br /&gt;
This service implemented call lists for myPBX on the local CF card.&lt;br /&gt;
Please use the &#039;&#039;&#039;Reports App&#039;&#039;&#039; instead.&lt;br /&gt;
&lt;br /&gt;
== Deprecated in 14r1 ==&lt;br /&gt;
The following software is based on legacy technology with no further development and limited maintenance and support.&lt;br /&gt;
We strongly recommend migrating to our successor products that are fully compatible with 14r1 and myApps technology.&lt;br /&gt;
&lt;br /&gt;
=== Linux Application Platform (v10) ===&lt;br /&gt;
Please migrate to the &#039;&#039;&#039;innovaphone App Platform&#039;&#039;&#039; for 14r1 installations.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone Faxserver (v10) ===&lt;br /&gt;
Please migrate to the &#039;&#039;&#039;Fax App&#039;&#039;&#039; for 14r1 installations.&lt;br /&gt;
=== innovaphone Reporting (v10) ===&lt;br /&gt;
Please migrate to the &#039;&#039;&#039;Reports App&#039;&#039;&#039; for 14r1 installations.&lt;br /&gt;
=== innovaphone Exchange (v10) ===&lt;br /&gt;
Please migrate to the &#039;&#039;&#039;Calendar App&#039;&#039;&#039; for 14r1 installations.&lt;br /&gt;
=== Operator (v9) ===&lt;br /&gt;
Please migrate to the &#039;&#039;&#039;Switchboard App&#039;&#039;&#039; for 14r1 installations.&lt;br /&gt;
=== innovaphone Voice Recording 2014 ===&lt;br /&gt;
Please migrate to the &#039;&#039;&#039;Recordings App&#039;&#039;&#039; for 14r1 installations.&lt;br /&gt;
=== PBX Object External UC ===&lt;br /&gt;
Existing configurations still work. But new configurations can&#039;t be done using the advanced UI anymore.&lt;br /&gt;
&lt;br /&gt;
Please use the integrated &#039;&#039;&#039;UC&#039;&#039;&#039; and &#039;&#039;&#039;federation&#039;&#039;&#039; features of the &#039;&#039;&#039;innovaphone PBX&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
For presence synchronization with other systems we recommend using&lt;br /&gt;
* &#039;&#039;&#039;innovaphone myApps Connector for Microsoft 365&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Connector for kuando®&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Calendar App&#039;&#039;&#039;&lt;br /&gt;
=== PBX Object Session Border ===&lt;br /&gt;
Please migrate to &#039;&#039;&#039;Reverse Proxy&#039;&#039;&#039; and &#039;&#039;&#039;[[Reference13r3:Concept_Third_Party_Phones]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
===Long Update-duration===&lt;br /&gt;
When you update, it can be up to 10 minutes before you have access to your app platform again.&lt;br /&gt;
&lt;br /&gt;
== Resources Considerations ==&lt;br /&gt;
New firmware always has more features which in turn requires more resources. Growing firmware will thus consume both more flash and RAM for sure. A given system configuration will run flawlessly after a firmware largely only if there is still enough memory left after boot.&lt;br /&gt;
&lt;br /&gt;
Standard configurations which are according the specs will run on all supported hardware. However, unusual configurations may not. It is a good idea to examine both flash and RAM memory left on high load situations in your existing configuration to see if there is enough resources left for an upgrade. Please find details in Reference:Device Health Check.&lt;br /&gt;
&lt;br /&gt;
=== RAM ===&lt;br /&gt;
As a rough rule of thumb, a 14r1 release will consume the same amount of RAM compared to a v13r3 firmware.&lt;br /&gt;
&lt;br /&gt;
=== Flash Memory  ===&lt;br /&gt;
As a rough rule of thumb, a v14r1 release will consume ~ 1.8 MB more flash memory compared to a v13r3 firmware.&lt;br /&gt;
New firmware comes with new code for new features which consumes more flash memory for the firmware image. For this reason, devices may run out of flash memory during upgrade to v14r1.  Here is the recommended procedure for upgrade on such devices:&lt;br /&gt;
&lt;br /&gt;
* save entire configuration&lt;br /&gt;
* reset to factory defaults&lt;br /&gt;
* load saved configuration (this will reorganize the flash memory usage)&lt;br /&gt;
* upgrade to new firmware&lt;br /&gt;
&lt;br /&gt;
When there is still not enough flash memory available to store the new firmware (Web GUI ends up in a &#039;&#039;Firmwareupdate failed:no space&#039;&#039; / Update client end in a &#039;&#039;Error 0x00130001 Major FLASHMAN0 no space&#039;&#039; event) please open a support case with your current configuration file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Applies To ==&lt;br /&gt;
This information applies to:&lt;br /&gt;
&lt;br /&gt;
* All 13r3 capable innovaphone devices&lt;br /&gt;
: For a general overview of the upgrade process and a list of supported devices with 13r3, see [[Howto:Firmware Upgrade]]&lt;br /&gt;
&lt;br /&gt;
== Migration Policy ==&lt;br /&gt;
Here is how you upgrade a system to 13r3 from 13r2.  For hints on upgrading a system to 13r2 see [[Howto:V13_Firmware_Upgrade_V13r1_V13r2]].&lt;br /&gt;
&lt;br /&gt;
=== Single AP/Single PBX===&lt;br /&gt;
* Create a new update job in devices and select 13r3 as major version&lt;br /&gt;
&lt;br /&gt;
===Shared AP/Several PBX&#039;es===&lt;br /&gt;
We generally recommend to upgrade the entire system (endpoints, PBXs, AP) in &#039;&#039;one shot&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If this is not possible for any reason, the recommended sequence is:&lt;br /&gt;
# update the master PBX&lt;br /&gt;
# update the slave PBX and all its endpoints location by location&lt;br /&gt;
# update the App Platform to the latest build&lt;br /&gt;
# update all Apps&lt;br /&gt;
# perform the configuration changes described below&lt;br /&gt;
&lt;br /&gt;
Note that during the update time frame, some App data such as Reporting and Recording may be incomplete.&lt;br /&gt;
&lt;br /&gt;
We recommend to review all the configuration changes described below before you begin the update.&lt;br /&gt;
&lt;br /&gt;
== Configuration Changes ==&lt;br /&gt;
In 13r3 we have introduced some new features which are automatically configured if you use the installer to setup your new 13r3 from scratch. If you upgrade an existing installation, you have to configure the following settings manually.&lt;br /&gt;
&lt;br /&gt;
=== Default SRTP key exchange value in device configuration of Phones/Interfaces ===&lt;br /&gt;
Before v13r3, the default value for SRTP key exchange was SDES-DTLS - with v13r3 it changes to the more secure DTLS-SDES. Therefore innovaphone devices now use DTLS instead - if the called endpoint has this preference. To make sure the more secure key exchange is used, we recommend adjusting the &#039;&#039;SRTP key exchange setting&#039;&#039; in the Devices App, &#039;&#039;Device Configuration&#039;&#039; for &#039;&#039;[Phone]&#039;&#039; and &#039;&#039;[Analog phone/fax]&#039;&#039;. An exception to this recommendation is if you are using old phone models (IP110A, IP240A) or gateway models (IP24, IP22) in your setup - as these may have CPU performance issues in the connection setup phase. In that case, use &#039;&#039;&#039;SDES-DTLS&#039;&#039;&#039; as value for the &#039;&#039;SRTP key exchange&#039;&#039; for all devices, not only for the old phone models.&lt;br /&gt;
&lt;br /&gt;
===Group Fax===&lt;br /&gt;
The fax object has to be configured as external resource of a group fax object in 13r3. It is therefore &#039;&#039;&#039;mandatory&#039;&#039;&#039; to assign the fax object as an external resource to all group fax objects after the upgrade - via PBX Manager .&lt;br /&gt;
&lt;br /&gt;
In the Advanced UI, you have to enter the h323/sip name of the fax object in the field &#039;&#039;&#039;External Resource Destination&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Also, with 13r3, group faxes can have their own international fax number and company name, so you should fill in these fields, or else the fax header will be empty.&lt;br /&gt;
&lt;br /&gt;
===Contacts App | User drop-down menu for sharing address books===&lt;br /&gt;
With 13r3, personal address books can be created and shared with users/groups. To have a search and drop-down menu in the sharing step, you have to activate the &amp;quot;Admin&amp;quot; option at the &amp;quot;ContactsApi&amp;quot; app object (tab &amp;quot;App&amp;quot;) over the Advanced UI. Otherwise, no results will be shown, and you have to enter the correct h323 name of a user.&lt;br /&gt;
&lt;br /&gt;
===Improved Conference Rooms===&lt;br /&gt;
* The &#039;&#039;Web Access allowed&#039;&#039; checkbox in the conference app has to be set in order to access the Conference Web Access UI.&lt;br /&gt;
: To be able create HTTP links for external participants, the conferencing App is required.&lt;br /&gt;
* Update the [[Reference13r3:PBX/Objects/Conference/Announcement_types#Sample_Announcement_Files | announcements]] for your conference rooms, to include also the &#039;&#039;Web Access announcements&#039;&#039;. &lt;br /&gt;
* it is recommended to use a second Turn-Server listening on TCP port 443 as a fallback option for external conference participants, with local firewalls not allowing access to your standard Turn-server. Configure this second Turn-Server in [[Reference13r3:IP4/General/STUN#TURN_Extern | IP4/General/STUN -&amp;gt; Turn Extern]] [[User:Sga|Sga]] TBD: info zu inno Turn Fallback server&lt;br /&gt;
* 13r3 adds a search-API for the Conference Rooms, allowing users to search for Conference room names from their Phone, Softphone or RCC App. Each conference object provides its own search API which is named like &#039;&#039;&amp;lt;Name-of-conference-object&amp;gt;.search&#039;&#039; and access to it can be granted using the App-Section of a PBX-object. The PBX-Manager Plugin for Conferences offers also an option to add the rights for all conference rooms and their search-APIs to the Config-User and/or Config-Admin template.&lt;br /&gt;
&lt;br /&gt;
=== NTLM/OAuth===&lt;br /&gt;
13r3 introduces OAuth2 Windows Authentication for myApps. If your are currently using NTLM/Netlogon for authentication, you might want to consider upgrading it OAuth2, since this authentication mechanisms is more secure. See [[Reference13r3:Concept OAuth2 Windows Authentication]] for details. &lt;br /&gt;
In 13r3 only Microsoft AD FS is supported as OpenID Server.&lt;br /&gt;
&lt;br /&gt;
===HTTP-Proxy===&lt;br /&gt;
13r3 introduces [[Reference13r3:Concept_myApps_platform_services#HTTP_proxy_support | HTTP-Proxy]] support for myApps. Now, myApps follows by default the OS-settings regarding HTTP-Proxy. This might affect existing setups when updating from 13r2 to 13r3. We recommend to check before a 13r3 update if an HTTP-Proxy is used and if so, test before the update for interop problems between myApps and the used HTTP-Proxy.&lt;br /&gt;
&lt;br /&gt;
===Physical Location===&lt;br /&gt;
The Softphone App supports in 13r3 the determination of the Physical Location. Similar to an IP-Phone, this is determined automatically based on HTTP-Redirects of the myApps PBX-login process. If you use PBX-objects with activated &amp;quot;Local&amp;quot; option (often this is a Trunk Line object), the determined physical location might lead to a different behavior when calling these objects. If this leads to unwanted call flows, you can either adjust the initial myApps registration PBX or configure the Physical location manually at the Softphone.&lt;br /&gt;
&lt;br /&gt;
== Application Platform and its applications ==&lt;br /&gt;
===App Platform image===&lt;br /&gt;
&lt;br /&gt;
It is not mandatory but recommended to [[Reference13r3:Concept_App_Platform#Update_of_the_App_Platform_itself | update the App Platform image]] to the latest version to receive a newer kernel and updated Linux packages.&lt;br /&gt;
&lt;br /&gt;
===Recordings App===&lt;br /&gt;
Please follow the procedure described in the [[Reference13r3:Concept_App_Service_Recordings#Upgrade_from_V13r2_to_V13r3_Recordings_App | Recordings App concept article]].&lt;br /&gt;
&lt;br /&gt;
===Reports App===&lt;br /&gt;
The Reports App will improve missed calls queries by adding a new database index during the first start after an update. Depending on the size of the reporting database, this database adjustment can take some minutes and results also in high CPU-load and missed CDRs during that time.&lt;br /&gt;
&lt;br /&gt;
=== App Service Queues, Switchboard App ===&lt;br /&gt;
To allow monitoring of all queues by all switchboard users, configure a group (e.g. with the name &#039;&#039;queues&#039;&#039;) in the PBX and assign it as &#039;&#039;&#039;Static&#039;&#039;&#039; to all Waiting Queues used by the Switchboard App and assign it also as &#039;&#039;&#039;Static&#039;&#039;&#039; and &#039;&#039;&#039;Active&#039;&#039;&#039; to all Switchboard Users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Apps new in 13r3===&lt;br /&gt;
New Apps will not be installed automatically by the 13r2 to 13r3 upgrade. The installation description of new 13r3 apps is usually in the concept article. New apps are:&lt;br /&gt;
* [[Reference13r3:Concept_App_Service_Connector_for_kuando®#Configuration | Connector for kuando®]]&lt;br /&gt;
* [[Reference13r3:Concept_App_Service_Connector_for_Microsoft_365 | innovaphone myApps Connector for Microsoft 365]]&lt;br /&gt;
&lt;br /&gt;
== Changes visible to end customers ==&lt;br /&gt;
Listed here are changes that should be communicated by resellers to end users prior to a 13r3 upgrade, as the change will be visible/audible in the behaviour of the application/device.&lt;br /&gt;
===Rework of Phone &amp;amp; Softphone UI===&lt;br /&gt;
Several feature and UI improvements, see &#039;Features&#039; in [[Reference13r3:Concept_App_SoftphoneApp#Features | Reference13r3:Concept App SoftphoneApp ]] and [[Reference13r3:Concept Multi-Video-Conference]].&lt;br /&gt;
&lt;br /&gt;
===CallForwarding in Profile App===&lt;br /&gt;
Added configuration option on call diversions: call forwardings depending on &#039;&#039;myApps online&#039;&#039; and &#039;&#039;Presence&#039;&#039; state. This can be switched on or off by the user in the Profile App.&lt;br /&gt;
&lt;br /&gt;
===Focus App===&lt;br /&gt;
The &amp;quot;App focus&amp;quot; can be used to define a default app for the user. It is started and shown automatically when myApps is loaded. When closing other apps, the app is shown instead of the home screen. Users can activate (default) or deactivate the Focus function in their myApps Client settings (hamburger menu). See &#039;Features&#039; in [[Reference13r3:Concept_myApps#Features | Reference13r3:Concept myApps]]&lt;br /&gt;
&lt;br /&gt;
===Pin Apps===&lt;br /&gt;
Apps can be pinned to the main window. Pinned apps are always running and can&#039;t be closed. They are also started automatically when the myApps client is loaded. This setting is locally stored per-client. So you can pin different apps on your computer and your smartphone.  See &#039;Features&#039; in [[Reference13r3:Concept_myApps#Features | Reference13r3:Concept myApps]]&lt;br /&gt;
&lt;br /&gt;
=== Fax App ===&lt;br /&gt;
The [[Reference13r3:Concept_App_Service_Fax#Mail_Configuration | Mail Configuration]] section of the Fax App offers in 13r3 additional options:&lt;br /&gt;
* Transmission confirmations&lt;br /&gt;
* Transmission reports for outgoing fax jobs as PDF&lt;br /&gt;
* Error notifications for outgoing fax jobs&lt;br /&gt;
&lt;br /&gt;
==Hardware Restrictions==&lt;br /&gt;
For a list of devices with no/restricted support in 13r3, see the [[Howto:Firmware_Upgrade#Version_13r3 | Firmware Upgrade article]].&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
&lt;br /&gt;
===Boolean App===&lt;br /&gt;
Following the update to 13r3, it is not possible to edit Boolean Apps using the myApps client (except when using the myApps client in a web browser). To resolve this issue, you will need to delete the approxy folder for all users who use the boolean app. You can locate this folder in the following directory: %USERPROFILE%\AppData\Local\innovaphone\myApps.&lt;br /&gt;
Reload or restart myApps afterwards.&lt;br /&gt;
&lt;br /&gt;
This behavior can also occur under Mac OS. Here the problem can be solved by uninstalling the app and then reinstalling it again.&lt;br /&gt;
&lt;br /&gt;
===Current major issues that will be fixed with upcoming 13r3SR1 release===&lt;br /&gt;
* [[Support:PBX_13r3_final_trap_with_Unknown_Registrations | PBX 13r3 Final trap with Unknown Registrations]]&lt;br /&gt;
* [[Support:13r3final_App_Platform_-_SMTP_delivery_may_fail_due_to_IPv6_DNS_results | 13r3final App Platform - SMTP delivery may fail due to IPv6 DNS results]]&lt;br /&gt;
* [[Support:13r3final PBX randomly does not execute CFU | 13r3final PBX randomly does not execute CFU]]&lt;br /&gt;
&lt;br /&gt;
More info on other 13r3 SR1 changes can be found in the [[Reference13r3:Release_Notes_Firmware#13r3_Service_Release_1 | Release Notes]].&lt;br /&gt;
&lt;br /&gt;
===Regex Expression===&lt;br /&gt;
We updated the regular expression syntax which is used for the AD replication. A &#039;\&#039; followed by a non-special character is no longer allowed.&lt;br /&gt;
&lt;br /&gt;
== Resources Considerations ==&lt;br /&gt;
New firmware always has more features which in turn requires more resources. Growing firmware will thus consume both more flash and RAM for sure. A given system configuration will run flawlessly after a firmware largely only if there is still enough memory left after boot.&lt;br /&gt;
&lt;br /&gt;
Standard configurations which are according [[Howto:How_to_implement_large_PBXs#Technical_data_and_recommended_number_of_users_supported | the specs ]] will run on all supported hardware.  However, unusual configurations may not.  It is a good idea to examine both flash and RAM memory left on high load situations in your existing configuration to see if there is enough resources left for an upgrade.  Please find details in [[Reference:Device Health Check]].&lt;br /&gt;
&lt;br /&gt;
=== RAM ===&lt;br /&gt;
As a rough rule of thumb, a 13r3 release will consume the same amount of RAM compared to a v13r2 firmware.&lt;br /&gt;
&lt;br /&gt;
=== Flash Memory ===&lt;br /&gt;
As a rough rule of thumb, a v13r3 release will consume ~ 0.5 MB flash more compared to a v13r2 firmware.&lt;br /&gt;
&lt;br /&gt;
New firmware comes with new code for new features which consumes more flash memory for the firmware image. For this reason, devices may run out of flash memory during upgrade to v13r3.  Here is the recommended procedure for upgrade on such devices:&lt;br /&gt;
&lt;br /&gt;
* save entire configuration&lt;br /&gt;
* reset to factory defaults&lt;br /&gt;
* load saved configuration (this will reorganize the flash memory usage)&lt;br /&gt;
* upgrade to new firmware&lt;br /&gt;
&lt;br /&gt;
When there is still not enough flash memory available to store the new firmware (Web GUI ends up in a &#039;&#039;Firmwareupdate failed:no space&#039;&#039; / Update client end in a &#039;&#039;Error 0x00130001 Major FLASHMAN0 no space&#039;&#039; event) please open a support case with your current configuration file.&lt;br /&gt;
&lt;br /&gt;
=== Conferences ===&lt;br /&gt;
Since Conferences now use [[Reference13r3:Concept_Multi-Video-Conference | multiple video streams]] to display each conference participant (in 13r1 &amp;amp; 13r2 only the video stream of the speaker was shown), the number of concurrent video streams used in a single conference increased. Please review this [[Reference13r3:Concept_Multi-Video-Conference#Bandwidth_Consideration | bandwidth considerations]]. As a result, a device hosting a multivideo conference on its CONF or SCNF interface has a higher CPU load in 13r3 than in 13r2.&lt;br /&gt;
&lt;br /&gt;
[[Image:13r3_conference_bandwidth.png|700px|Estimated Conference bandwidth requirements]]&lt;br /&gt;
&lt;br /&gt;
The graph shows the bandwidth needed for a device running the CONF interface to participate in a conference. The values shown are for when all participants are in gallery mode (which is the worst case scenario) and in fullscreen presentation mode (which is the best case scenario). In general, the actual bandwidth needed will fall somewhere between these two extremes. &lt;br /&gt;
&lt;br /&gt;
To calculate the CPU requirements for the device, you can use the following formula: &amp;lt;code&amp;gt;CPU% = Bandwidth (in Mbps) / x&amp;lt;/code&amp;gt;, where x is&lt;br /&gt;
* 0.42 for a xx10 device &lt;br /&gt;
* 0.18 for IP311 and IP411 devices&lt;br /&gt;
* 0.56 for a xx11 device&lt;br /&gt;
* 3.6 for a xx13 device &lt;br /&gt;
&lt;br /&gt;
For example, if you are hosting a conference with 10 participants on a xx11 device in gallery mode, the upstream and downstream bandwidth would be 25 Mbps. Using the formula, you can calculate the CPU requirements as follows: CPU% = 25 Mbps / 0.56 = 44.64%. This means that the device should have at least 45% free CPU capacity to handle the conference.&lt;br /&gt;
&lt;br /&gt;
From the client&#039;s perspective, the worst case values for upstream bandwidth (when presenting) would be 1 Mbps, and for downstream bandwidth (when in a gallery mode conference with 20 participants) would be 5 Mbps.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
*[[Howto:Firmware_Upgrade]]&lt;br /&gt;
* [[Howto:Firmware Upgrade V11r2 V12r1]]&lt;br /&gt;
* [[Howto:Firmware Upgrade V12r1 V12r2]]&lt;br /&gt;
* [[Howto:Firmware Upgrade V12r2 V13r1]]&lt;br /&gt;
&lt;br /&gt;
*[[Support:PBX_V13r3_Final_trap_with_Unkown_Registrations]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lme</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto14r1:Firmware_Upgrade_V13r3_V14r1&amp;diff=69190</id>
		<title>Howto14r1:Firmware Upgrade V13r3 V14r1</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto14r1:Firmware_Upgrade_V13r3_V14r1&amp;diff=69190"/>
		<updated>2023-10-20T11:41:11Z</updated>

		<summary type="html">&lt;p&gt;Lme: /* Deprecated in 14r1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FIXME|reason=Preliminary working draft}}&lt;br /&gt;
== Applies To ==&lt;br /&gt;
This information applies to:&lt;br /&gt;
&lt;br /&gt;
* All 14r1 capable innovaphone devices&lt;br /&gt;
: For a general overview of the upgrade process and a list of supported devices with 14r1, see [[Howto:Firmware Upgrade]]&lt;br /&gt;
&lt;br /&gt;
== Changes visible to end customers ==&lt;br /&gt;
Listed here are changes that should be communicated by resellers to end users prior to a 14r1 upgrade, as the change will be visible/audible in the behaviour of the application/device.&lt;br /&gt;
=== Softphone/Phone App UI changes === &lt;br /&gt;
* Dial-pad is now a new tab in the navigation.&lt;br /&gt;
* On Smartphones, the Navigation is in the bottom.&lt;br /&gt;
* Call button is removed from the searchbar. Calling only via the search results.&lt;br /&gt;
&lt;br /&gt;
== Application Platform and its applications ==&lt;br /&gt;
===Apps new in 14r1===&lt;br /&gt;
New Apps will not be installed automatically by the 13r3 to 14r1 upgrade. The installation description of new 14r1 apps is usually in the concept article. New apps are:&lt;br /&gt;
;Search App&lt;br /&gt;
* The app is immediately available on the PBX (no configuration is needed). In a new V14r1 configuration the Install provides all Users with this Search App via the &amp;quot;Config User&amp;quot;-Template. If the same configuration is required on an upgraded config, the Search App (&amp;quot;search&amp;quot;) can be ticked in the &amp;quot;Config User&amp;quot; template.&lt;br /&gt;
;TechAssist &lt;br /&gt;
* Application for quality assurance and improvement of systems by collecting static and runtime information. For details refer to [[Reference14r1:Concept_App_Service_TechAssist | the concept article]].&lt;br /&gt;
&lt;br /&gt;
== Configuration Changes ==&lt;br /&gt;
&lt;br /&gt;
=== Fax Object ===&lt;br /&gt;
After updating from 13r3 or setting up your device with 14r1, the Fax object has 3 new checkboxes.&lt;br /&gt;
* Append user number: if checked, the user number will be appended to the object number.&lt;br /&gt;
* ECM: that allows the T.30 connection to use error correction.&lt;br /&gt;
*  Receiving with 400dpi allowed: which allows you to receive 400*400dpi documents.&lt;br /&gt;
&lt;br /&gt;
== Removed in 14r1 ==&lt;br /&gt;
The following software is no longer included in 14r1.&lt;br /&gt;
=== myPBX ===&lt;br /&gt;
This includes the following components&lt;br /&gt;
* myPBX webclient&lt;br /&gt;
* myPBX for Windows&lt;br /&gt;
* myPBX for iOS&lt;br /&gt;
* myPBX for Android&lt;br /&gt;
Please migrate to &#039;&#039;&#039;innovaphone myApps&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
The Widgets were based on the myPBX interfaces that have been removed. Please migrate to the &#039;&#039;&#039;Contacts Widget App&#039;&#039;&#039;.&lt;br /&gt;
===WebRTC toolkit===&lt;br /&gt;
The WebRTC toolkit was based on the myPBX interfaces that have been removed.&lt;br /&gt;
Please use the current interfaces and libraries described in the &#039;&#039;&#039;[https://sdk.innovaphone.com innovaphone SDK]&#039;&#039;&#039;.&lt;br /&gt;
=== Windows Softwarephone ===&lt;br /&gt;
Please migrate to &#039;&#039;&#039;innovaphone myApps for Windows&#039;&#039;&#039; and the &#039;&#039;&#039;Softphone App&#039;&#039;&#039;.&lt;br /&gt;
===PBX Object Settings ===&lt;br /&gt;
The object provided the PBX Settings App that was used to configure dynamic group memberships in myPBX.&lt;br /&gt;
Please use the &#039;&#039;&#039;Profile App&#039;&#039;&#039; instead.&lt;br /&gt;
&lt;br /&gt;
===PBX Object ICP ===&lt;br /&gt;
Please use the integrated presence features of the &#039;&#039;&#039;innovaphone PBX&#039;&#039;&#039; instead.&lt;br /&gt;
&lt;br /&gt;
===Service Call-Lists ===&lt;br /&gt;
This service implemented call lists for myPBX on the local CF card.&lt;br /&gt;
Please use the &#039;&#039;&#039;Reports App&#039;&#039;&#039; instead.&lt;br /&gt;
&lt;br /&gt;
== Deprecated in 14r1 ==&lt;br /&gt;
The following software is based on legacy technology with no further development and limited maintenance and support.&lt;br /&gt;
We strongly recommend migrating to our successor products that are fully compatible with 14r1 and myApps technology.&lt;br /&gt;
&lt;br /&gt;
=== Linux Application Platform (v10) ===&lt;br /&gt;
Please migrate to the &#039;&#039;&#039;innovaphone App Platform&#039;&#039;&#039; for 14r1 installations.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone Faxserver (v10) ===&lt;br /&gt;
Please migrate to the &#039;&#039;&#039;Fax App&#039;&#039;&#039; for 14r1 installations.&lt;br /&gt;
=== innovaphone Reporting (v10) ===&lt;br /&gt;
Please migrate to the &#039;&#039;&#039;Reports App&#039;&#039;&#039; for 14r1 installations.&lt;br /&gt;
=== innovaphone Exchange (v10) ===&lt;br /&gt;
Please migrate to the &#039;&#039;&#039;Calendar App&#039;&#039;&#039; for 14r1 installations.&lt;br /&gt;
=== Operator (v9) ===&lt;br /&gt;
Please migrate to the &#039;&#039;&#039;Switchboard App&#039;&#039;&#039; for 14r1 installations.&lt;br /&gt;
=== innovaphone Voice Recording 2014 ===&lt;br /&gt;
Please migrate to the &#039;&#039;&#039;Recordings App&#039;&#039;&#039; for 14r1 installations.&lt;br /&gt;
=== PBX Object External UC ===&lt;br /&gt;
Existing configurations still work. But new configurations can&#039;t be done using the advanced UI anymore.&lt;br /&gt;
&lt;br /&gt;
Please use the integrated &#039;&#039;&#039;UC&#039;&#039;&#039; and &#039;&#039;&#039;federation&#039;&#039;&#039; features of the &#039;&#039;&#039;innovaphone PBX&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
For presence synchronization with other systems we recommend using&lt;br /&gt;
* &#039;&#039;&#039;innovaphone myApps Connector for Microsoft 365&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Connector for kuando®&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Calendar App&#039;&#039;&#039;&lt;br /&gt;
=== PBX Object Session Border ===&lt;br /&gt;
Please migrate to &#039;&#039;&#039;Reverse Proxy&#039;&#039;&#039; and &#039;&#039;&#039;[[Reference13r3:Concept_Third_Party_Phones]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
&lt;br /&gt;
== Resources Considerations ==&lt;br /&gt;
New firmware always has more features which in turn requires more resources. Growing firmware will thus consume both more flash and RAM for sure. A given system configuration will run flawlessly after a firmware largely only if there is still enough memory left after boot.&lt;br /&gt;
&lt;br /&gt;
Standard configurations which are according the specs will run on all supported hardware. However, unusual configurations may not. It is a good idea to examine both flash and RAM memory left on high load situations in your existing configuration to see if there is enough resources left for an upgrade. Please find details in Reference:Device Health Check.&lt;br /&gt;
&lt;br /&gt;
=== RAM ===&lt;br /&gt;
As a rough rule of thumb, a 14r1 release will consume the same amount of RAM compared to a v13r3 firmware.&lt;br /&gt;
&lt;br /&gt;
=== Flash Memory  ===&lt;br /&gt;
As a rough rule of thumb, a v14r1 release will consume ~ 1.8 MB more flash memory compared to a v13r3 firmware.&lt;br /&gt;
New firmware comes with new code for new features which consumes more flash memory for the firmware image. For this reason, devices may run out of flash memory during upgrade to v14r1.  Here is the recommended procedure for upgrade on such devices:&lt;br /&gt;
&lt;br /&gt;
* save entire configuration&lt;br /&gt;
* reset to factory defaults&lt;br /&gt;
* load saved configuration (this will reorganize the flash memory usage)&lt;br /&gt;
* upgrade to new firmware&lt;br /&gt;
&lt;br /&gt;
When there is still not enough flash memory available to store the new firmware (Web GUI ends up in a &#039;&#039;Firmwareupdate failed:no space&#039;&#039; / Update client end in a &#039;&#039;Error 0x00130001 Major FLASHMAN0 no space&#039;&#039; event) please open a support case with your current configuration file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Applies To ==&lt;br /&gt;
This information applies to:&lt;br /&gt;
&lt;br /&gt;
* All 13r3 capable innovaphone devices&lt;br /&gt;
: For a general overview of the upgrade process and a list of supported devices with 13r3, see [[Howto:Firmware Upgrade]]&lt;br /&gt;
&lt;br /&gt;
== Migration Policy ==&lt;br /&gt;
Here is how you upgrade a system to 13r3 from 13r2.  For hints on upgrading a system to 13r2 see [[Howto:V13_Firmware_Upgrade_V13r1_V13r2]].&lt;br /&gt;
&lt;br /&gt;
=== Single AP/Single PBX===&lt;br /&gt;
* Create a new update job in devices and select 13r3 as major version&lt;br /&gt;
&lt;br /&gt;
===Shared AP/Several PBX&#039;es===&lt;br /&gt;
We generally recommend to upgrade the entire system (endpoints, PBXs, AP) in &#039;&#039;one shot&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If this is not possible for any reason, the recommended sequence is:&lt;br /&gt;
# update the master PBX&lt;br /&gt;
# update the slave PBX and all its endpoints location by location&lt;br /&gt;
# update the App Platform to the latest build&lt;br /&gt;
# update all Apps&lt;br /&gt;
# perform the configuration changes described below&lt;br /&gt;
&lt;br /&gt;
Note that during the update time frame, some App data such as Reporting and Recording may be incomplete.&lt;br /&gt;
&lt;br /&gt;
We recommend to review all the configuration changes described below before you begin the update.&lt;br /&gt;
&lt;br /&gt;
== Configuration Changes ==&lt;br /&gt;
In 13r3 we have introduced some new features which are automatically configured if you use the installer to setup your new 13r3 from scratch. If you upgrade an existing installation, you have to configure the following settings manually.&lt;br /&gt;
&lt;br /&gt;
=== Default SRTP key exchange value in device configuration of Phones/Interfaces ===&lt;br /&gt;
Before v13r3, the default value for SRTP key exchange was SDES-DTLS - with v13r3 it changes to the more secure DTLS-SDES. Therefore innovaphone devices now use DTLS instead - if the called endpoint has this preference. To make sure the more secure key exchange is used, we recommend adjusting the &#039;&#039;SRTP key exchange setting&#039;&#039; in the Devices App, &#039;&#039;Device Configuration&#039;&#039; for &#039;&#039;[Phone]&#039;&#039; and &#039;&#039;[Analog phone/fax]&#039;&#039;. An exception to this recommendation is if you are using old phone models (IP110A, IP240A) or gateway models (IP24, IP22) in your setup - as these may have CPU performance issues in the connection setup phase. In that case, use &#039;&#039;&#039;SDES-DTLS&#039;&#039;&#039; as value for the &#039;&#039;SRTP key exchange&#039;&#039; for all devices, not only for the old phone models.&lt;br /&gt;
&lt;br /&gt;
===Group Fax===&lt;br /&gt;
The fax object has to be configured as external resource of a group fax object in 13r3. It is therefore &#039;&#039;&#039;mandatory&#039;&#039;&#039; to assign the fax object as an external resource to all group fax objects after the upgrade - via PBX Manager .&lt;br /&gt;
&lt;br /&gt;
In the Advanced UI, you have to enter the h323/sip name of the fax object in the field &#039;&#039;&#039;External Resource Destination&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Also, with 13r3, group faxes can have their own international fax number and company name, so you should fill in these fields, or else the fax header will be empty.&lt;br /&gt;
&lt;br /&gt;
===Contacts App | User drop-down menu for sharing address books===&lt;br /&gt;
With 13r3, personal address books can be created and shared with users/groups. To have a search and drop-down menu in the sharing step, you have to activate the &amp;quot;Admin&amp;quot; option at the &amp;quot;ContactsApi&amp;quot; app object (tab &amp;quot;App&amp;quot;) over the Advanced UI. Otherwise, no results will be shown, and you have to enter the correct h323 name of a user.&lt;br /&gt;
&lt;br /&gt;
===Improved Conference Rooms===&lt;br /&gt;
* The &#039;&#039;Web Access allowed&#039;&#039; checkbox in the conference app has to be set in order to access the Conference Web Access UI.&lt;br /&gt;
: To be able create HTTP links for external participants, the conferencing App is required.&lt;br /&gt;
* Update the [[Reference13r3:PBX/Objects/Conference/Announcement_types#Sample_Announcement_Files | announcements]] for your conference rooms, to include also the &#039;&#039;Web Access announcements&#039;&#039;. &lt;br /&gt;
* it is recommended to use a second Turn-Server listening on TCP port 443 as a fallback option for external conference participants, with local firewalls not allowing access to your standard Turn-server. Configure this second Turn-Server in [[Reference13r3:IP4/General/STUN#TURN_Extern | IP4/General/STUN -&amp;gt; Turn Extern]] [[User:Sga|Sga]] TBD: info zu inno Turn Fallback server&lt;br /&gt;
* 13r3 adds a search-API for the Conference Rooms, allowing users to search for Conference room names from their Phone, Softphone or RCC App. Each conference object provides its own search API which is named like &#039;&#039;&amp;lt;Name-of-conference-object&amp;gt;.search&#039;&#039; and access to it can be granted using the App-Section of a PBX-object. The PBX-Manager Plugin for Conferences offers also an option to add the rights for all conference rooms and their search-APIs to the Config-User and/or Config-Admin template.&lt;br /&gt;
&lt;br /&gt;
=== NTLM/OAuth===&lt;br /&gt;
13r3 introduces OAuth2 Windows Authentication for myApps. If your are currently using NTLM/Netlogon for authentication, you might want to consider upgrading it OAuth2, since this authentication mechanisms is more secure. See [[Reference13r3:Concept OAuth2 Windows Authentication]] for details. &lt;br /&gt;
In 13r3 only Microsoft AD FS is supported as OpenID Server.&lt;br /&gt;
&lt;br /&gt;
===HTTP-Proxy===&lt;br /&gt;
13r3 introduces [[Reference13r3:Concept_myApps_platform_services#HTTP_proxy_support | HTTP-Proxy]] support for myApps. Now, myApps follows by default the OS-settings regarding HTTP-Proxy. This might affect existing setups when updating from 13r2 to 13r3. We recommend to check before a 13r3 update if an HTTP-Proxy is used and if so, test before the update for interop problems between myApps and the used HTTP-Proxy.&lt;br /&gt;
&lt;br /&gt;
===Physical Location===&lt;br /&gt;
The Softphone App supports in 13r3 the determination of the Physical Location. Similar to an IP-Phone, this is determined automatically based on HTTP-Redirects of the myApps PBX-login process. If you use PBX-objects with activated &amp;quot;Local&amp;quot; option (often this is a Trunk Line object), the determined physical location might lead to a different behavior when calling these objects. If this leads to unwanted call flows, you can either adjust the initial myApps registration PBX or configure the Physical location manually at the Softphone.&lt;br /&gt;
&lt;br /&gt;
== Application Platform and its applications ==&lt;br /&gt;
===App Platform image===&lt;br /&gt;
&lt;br /&gt;
It is not mandatory but recommended to [[Reference13r3:Concept_App_Platform#Update_of_the_App_Platform_itself | update the App Platform image]] to the latest version to receive a newer kernel and updated Linux packages.&lt;br /&gt;
&lt;br /&gt;
===Recordings App===&lt;br /&gt;
Please follow the procedure described in the [[Reference13r3:Concept_App_Service_Recordings#Upgrade_from_V13r2_to_V13r3_Recordings_App | Recordings App concept article]].&lt;br /&gt;
&lt;br /&gt;
===Reports App===&lt;br /&gt;
The Reports App will improve missed calls queries by adding a new database index during the first start after an update. Depending on the size of the reporting database, this database adjustment can take some minutes and results also in high CPU-load and missed CDRs during that time.&lt;br /&gt;
&lt;br /&gt;
=== App Service Queues, Switchboard App ===&lt;br /&gt;
To allow monitoring of all queues by all switchboard users, configure a group (e.g. with the name &#039;&#039;queues&#039;&#039;) in the PBX and assign it as &#039;&#039;&#039;Static&#039;&#039;&#039; to all Waiting Queues used by the Switchboard App and assign it also as &#039;&#039;&#039;Static&#039;&#039;&#039; and &#039;&#039;&#039;Active&#039;&#039;&#039; to all Switchboard Users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Apps new in 13r3===&lt;br /&gt;
New Apps will not be installed automatically by the 13r2 to 13r3 upgrade. The installation description of new 13r3 apps is usually in the concept article. New apps are:&lt;br /&gt;
* [[Reference13r3:Concept_App_Service_Connector_for_kuando®#Configuration | Connector for kuando®]]&lt;br /&gt;
* [[Reference13r3:Concept_App_Service_Connector_for_Microsoft_365 | innovaphone myApps Connector for Microsoft 365]]&lt;br /&gt;
&lt;br /&gt;
== Changes visible to end customers ==&lt;br /&gt;
Listed here are changes that should be communicated by resellers to end users prior to a 13r3 upgrade, as the change will be visible/audible in the behaviour of the application/device.&lt;br /&gt;
===Rework of Phone &amp;amp; Softphone UI===&lt;br /&gt;
Several feature and UI improvements, see &#039;Features&#039; in [[Reference13r3:Concept_App_SoftphoneApp#Features | Reference13r3:Concept App SoftphoneApp ]] and [[Reference13r3:Concept Multi-Video-Conference]].&lt;br /&gt;
&lt;br /&gt;
===CallForwarding in Profile App===&lt;br /&gt;
Added configuration option on call diversions: call forwardings depending on &#039;&#039;myApps online&#039;&#039; and &#039;&#039;Presence&#039;&#039; state. This can be switched on or off by the user in the Profile App.&lt;br /&gt;
&lt;br /&gt;
===Focus App===&lt;br /&gt;
The &amp;quot;App focus&amp;quot; can be used to define a default app for the user. It is started and shown automatically when myApps is loaded. When closing other apps, the app is shown instead of the home screen. Users can activate (default) or deactivate the Focus function in their myApps Client settings (hamburger menu). See &#039;Features&#039; in [[Reference13r3:Concept_myApps#Features | Reference13r3:Concept myApps]]&lt;br /&gt;
&lt;br /&gt;
===Pin Apps===&lt;br /&gt;
Apps can be pinned to the main window. Pinned apps are always running and can&#039;t be closed. They are also started automatically when the myApps client is loaded. This setting is locally stored per-client. So you can pin different apps on your computer and your smartphone.  See &#039;Features&#039; in [[Reference13r3:Concept_myApps#Features | Reference13r3:Concept myApps]]&lt;br /&gt;
&lt;br /&gt;
=== Fax App ===&lt;br /&gt;
The [[Reference13r3:Concept_App_Service_Fax#Mail_Configuration | Mail Configuration]] section of the Fax App offers in 13r3 additional options:&lt;br /&gt;
* Transmission confirmations&lt;br /&gt;
* Transmission reports for outgoing fax jobs as PDF&lt;br /&gt;
* Error notifications for outgoing fax jobs&lt;br /&gt;
&lt;br /&gt;
==Hardware Restrictions==&lt;br /&gt;
For a list of devices with no/restricted support in 13r3, see the [[Howto:Firmware_Upgrade#Version_13r3 | Firmware Upgrade article]].&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
&lt;br /&gt;
===Boolean App===&lt;br /&gt;
Following the update to 13r3, it is not possible to edit Boolean Apps using the myApps client (except when using the myApps client in a web browser). To resolve this issue, you will need to delete the approxy folder for all users who use the boolean app. You can locate this folder in the following directory: %USERPROFILE%\AppData\Local\innovaphone\myApps.&lt;br /&gt;
Reload or restart myApps afterwards.&lt;br /&gt;
&lt;br /&gt;
This behavior can also occur under Mac OS. Here the problem can be solved by uninstalling the app and then reinstalling it again.&lt;br /&gt;
&lt;br /&gt;
===Current major issues that will be fixed with upcoming 13r3SR1 release===&lt;br /&gt;
* [[Support:PBX_13r3_final_trap_with_Unknown_Registrations | PBX 13r3 Final trap with Unknown Registrations]]&lt;br /&gt;
* [[Support:13r3final_App_Platform_-_SMTP_delivery_may_fail_due_to_IPv6_DNS_results | 13r3final App Platform - SMTP delivery may fail due to IPv6 DNS results]]&lt;br /&gt;
* [[Support:13r3final PBX randomly does not execute CFU | 13r3final PBX randomly does not execute CFU]]&lt;br /&gt;
&lt;br /&gt;
More info on other 13r3 SR1 changes can be found in the [[Reference13r3:Release_Notes_Firmware#13r3_Service_Release_1 | Release Notes]].&lt;br /&gt;
&lt;br /&gt;
===Regex Expression===&lt;br /&gt;
We updated the regular expression syntax which is used for the AD replication. A &#039;\&#039; followed by a non-special character is no longer allowed.&lt;br /&gt;
&lt;br /&gt;
== Resources Considerations ==&lt;br /&gt;
New firmware always has more features which in turn requires more resources. Growing firmware will thus consume both more flash and RAM for sure. A given system configuration will run flawlessly after a firmware largely only if there is still enough memory left after boot.&lt;br /&gt;
&lt;br /&gt;
Standard configurations which are according [[Howto:How_to_implement_large_PBXs#Technical_data_and_recommended_number_of_users_supported | the specs ]] will run on all supported hardware.  However, unusual configurations may not.  It is a good idea to examine both flash and RAM memory left on high load situations in your existing configuration to see if there is enough resources left for an upgrade.  Please find details in [[Reference:Device Health Check]].&lt;br /&gt;
&lt;br /&gt;
=== RAM ===&lt;br /&gt;
As a rough rule of thumb, a 13r3 release will consume the same amount of RAM compared to a v13r2 firmware.&lt;br /&gt;
&lt;br /&gt;
=== Flash Memory ===&lt;br /&gt;
As a rough rule of thumb, a v13r3 release will consume ~ 0.5 MB flash more compared to a v13r2 firmware.&lt;br /&gt;
&lt;br /&gt;
New firmware comes with new code for new features which consumes more flash memory for the firmware image. For this reason, devices may run out of flash memory during upgrade to v13r3.  Here is the recommended procedure for upgrade on such devices:&lt;br /&gt;
&lt;br /&gt;
* save entire configuration&lt;br /&gt;
* reset to factory defaults&lt;br /&gt;
* load saved configuration (this will reorganize the flash memory usage)&lt;br /&gt;
* upgrade to new firmware&lt;br /&gt;
&lt;br /&gt;
When there is still not enough flash memory available to store the new firmware (Web GUI ends up in a &#039;&#039;Firmwareupdate failed:no space&#039;&#039; / Update client end in a &#039;&#039;Error 0x00130001 Major FLASHMAN0 no space&#039;&#039; event) please open a support case with your current configuration file.&lt;br /&gt;
&lt;br /&gt;
=== Conferences ===&lt;br /&gt;
Since Conferences now use [[Reference13r3:Concept_Multi-Video-Conference | multiple video streams]] to display each conference participant (in 13r1 &amp;amp; 13r2 only the video stream of the speaker was shown), the number of concurrent video streams used in a single conference increased. Please review this [[Reference13r3:Concept_Multi-Video-Conference#Bandwidth_Consideration | bandwidth considerations]]. As a result, a device hosting a multivideo conference on its CONF or SCNF interface has a higher CPU load in 13r3 than in 13r2.&lt;br /&gt;
&lt;br /&gt;
[[Image:13r3_conference_bandwidth.png|700px|Estimated Conference bandwidth requirements]]&lt;br /&gt;
&lt;br /&gt;
The graph shows the bandwidth needed for a device running the CONF interface to participate in a conference. The values shown are for when all participants are in gallery mode (which is the worst case scenario) and in fullscreen presentation mode (which is the best case scenario). In general, the actual bandwidth needed will fall somewhere between these two extremes. &lt;br /&gt;
&lt;br /&gt;
To calculate the CPU requirements for the device, you can use the following formula: &amp;lt;code&amp;gt;CPU% = Bandwidth (in Mbps) / x&amp;lt;/code&amp;gt;, where x is&lt;br /&gt;
* 0.42 for a xx10 device &lt;br /&gt;
* 0.18 for IP311 and IP411 devices&lt;br /&gt;
* 0.56 for a xx11 device&lt;br /&gt;
* 3.6 for a xx13 device &lt;br /&gt;
&lt;br /&gt;
For example, if you are hosting a conference with 10 participants on a xx11 device in gallery mode, the upstream and downstream bandwidth would be 25 Mbps. Using the formula, you can calculate the CPU requirements as follows: CPU% = 25 Mbps / 0.56 = 44.64%. This means that the device should have at least 45% free CPU capacity to handle the conference.&lt;br /&gt;
&lt;br /&gt;
From the client&#039;s perspective, the worst case values for upstream bandwidth (when presenting) would be 1 Mbps, and for downstream bandwidth (when in a gallery mode conference with 20 participants) would be 5 Mbps.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
*[[Howto:Firmware_Upgrade]]&lt;br /&gt;
* [[Howto:Firmware Upgrade V11r2 V12r1]]&lt;br /&gt;
* [[Howto:Firmware Upgrade V12r1 V12r2]]&lt;br /&gt;
* [[Howto:Firmware Upgrade V12r2 V13r1]]&lt;br /&gt;
&lt;br /&gt;
*[[Support:PBX_V13r3_Final_trap_with_Unkown_Registrations]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lme</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto14r1:Firmware_Upgrade_V13r3_V14r1&amp;diff=69167</id>
		<title>Howto14r1:Firmware Upgrade V13r3 V14r1</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto14r1:Firmware_Upgrade_V13r3_V14r1&amp;diff=69167"/>
		<updated>2023-10-19T14:49:34Z</updated>

		<summary type="html">&lt;p&gt;Lme: /* Configuration Changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FIXME|reason=Preliminary working draft}}&lt;br /&gt;
== Applies To ==&lt;br /&gt;
This information applies to:&lt;br /&gt;
&lt;br /&gt;
* All 14r1 capable innovaphone devices&lt;br /&gt;
: For a general overview of the upgrade process and a list of supported devices with 14r1, see [[Howto:Firmware Upgrade]]&lt;br /&gt;
&lt;br /&gt;
== Changes visible to end customers ==&lt;br /&gt;
Listed here are changes that should be communicated by resellers to end users prior to a 14r1 upgrade, as the change will be visible/audible in the behaviour of the application/device.&lt;br /&gt;
=== Softphone/Phone App UI changes === &lt;br /&gt;
* Dial-pad is now a new tab in the navigation.&lt;br /&gt;
* On Smartphones, the Navigation is in the bottom.&lt;br /&gt;
* Call button is removed from the searchbar. Calling only via the search results.&lt;br /&gt;
&lt;br /&gt;
== Application Platform and its applications ==&lt;br /&gt;
===Apps new in 14r1===&lt;br /&gt;
New Apps will not be installed automatically by the 13r3 to 14r1 upgrade. The installation description of new 14r1 apps is usually in the concept article. New apps are:&lt;br /&gt;
;Search App&lt;br /&gt;
* The app is immediately available on the PBX (no configuration is needed). In a new V14r1 configuration the Install provides all Users with this Search App via the &amp;quot;Config User&amp;quot;-Template. If the same configuration is required on an upgraded config, the Search App (&amp;quot;search&amp;quot;) can be ticked in the &amp;quot;Config User&amp;quot; template.&lt;br /&gt;
;TechAssist &lt;br /&gt;
* Application for quality assurance and improvement of systems by collecting static and runtime information. For details refer to [[Reference14r1:Concept_App_Service_TechAssist | the concept article]].&lt;br /&gt;
&lt;br /&gt;
== Configuration Changes ==&lt;br /&gt;
&lt;br /&gt;
=== Fax Object ===&lt;br /&gt;
After updating from 13r3 or setting up your device with 14r1, the Fax object has 3 new checkboxes.&lt;br /&gt;
* Append user number: if checked, the user number will be appended to the object number.&lt;br /&gt;
* ECM: that allows the T.30 connection to use error correction.&lt;br /&gt;
*  Receiving with 400dpi allowed: which allows you to receive 400*400dpi documents.&lt;br /&gt;
&lt;br /&gt;
== Removed in 14r1 ==&lt;br /&gt;
The following software is no longer included in 14r1.&lt;br /&gt;
=== myPBX ===&lt;br /&gt;
This includes the following components&lt;br /&gt;
* myPBX webclient&lt;br /&gt;
* myPBX for Windows&lt;br /&gt;
* myPBX for iOS&lt;br /&gt;
* myPBX for Android&lt;br /&gt;
Please migrate to &#039;&#039;&#039;innovaphone myApps&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
The Widgets were based on the myPBX interfaces that have been removed. Please migrate to the &#039;&#039;&#039;Contacts Widget App&#039;&#039;&#039;.&lt;br /&gt;
===WebRTC toolkit===&lt;br /&gt;
The WebRTC toolkit was based on the myPBX interfaces that have been removed.&lt;br /&gt;
Please use the current interfaces and libraries described in the &#039;&#039;&#039;[https://sdk.innovaphone.com innovaphone SDK]&#039;&#039;&#039;.&lt;br /&gt;
=== Windows Softwarephone ===&lt;br /&gt;
Please migrate to &#039;&#039;&#039;innovaphone myApps for Windows&#039;&#039;&#039; and the &#039;&#039;&#039;Softphone App&#039;&#039;&#039;.&lt;br /&gt;
===PBX Object Settings ===&lt;br /&gt;
The object provided the PBX Settings App that was used to configure dynamic group memberships in myPBX.&lt;br /&gt;
Please use the &#039;&#039;&#039;Profile App&#039;&#039;&#039; instead.&lt;br /&gt;
&lt;br /&gt;
===PBX Object ICP ===&lt;br /&gt;
Please use the integrated presence features of the &#039;&#039;&#039;innovaphone PBX&#039;&#039;&#039; instead.&lt;br /&gt;
&lt;br /&gt;
===Service Call-Lists ===&lt;br /&gt;
This service implemented call lists for myPBX on the local CF card.&lt;br /&gt;
Please use the &#039;&#039;&#039;Reports App&#039;&#039;&#039; instead.&lt;br /&gt;
&lt;br /&gt;
== Deprecated in 14r1 ==&lt;br /&gt;
The following software is based on legacy technology with no further development and limited maintenance and support.&lt;br /&gt;
We strongly recommend migrating to our successor products that are fully compatible with 14r1 and myApps technology.&lt;br /&gt;
&lt;br /&gt;
=== Linux Application Platform (v10) ===&lt;br /&gt;
Please migrate to the &#039;&#039;&#039;innovaphone App Platform&#039;&#039;&#039; for 14r1 installations.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone Faxserver (v10) ===&lt;br /&gt;
Please migrate to the &#039;&#039;&#039;Fax App&#039;&#039;&#039; for 14r1 installations.&lt;br /&gt;
=== innovaphone Reporting (v10) ===&lt;br /&gt;
Please migrate to the &#039;&#039;&#039;Reports App&#039;&#039;&#039; for 14r1 installations.&lt;br /&gt;
=== innovaphone Exchange (v10) ===&lt;br /&gt;
Please migrate to the &#039;&#039;&#039;Calendar App&#039;&#039;&#039; for 14r1 installations.&lt;br /&gt;
=== Operator (v9) ===&lt;br /&gt;
Please migrate to the &#039;&#039;&#039;Switchboard App&#039;&#039;&#039; for 14r1 installations.&lt;br /&gt;
=== innovaphone Voice Recording 2014 ===&lt;br /&gt;
Please migrate to the &#039;&#039;&#039;Recordings App&#039;&#039;&#039; for 14r1 installations.&lt;br /&gt;
=== PBX Object External UC ===&lt;br /&gt;
Existing configurations still work. But new configurations can&#039;t be done using the advanced UI anymore.&lt;br /&gt;
&lt;br /&gt;
Please use the integrated &#039;&#039;&#039;UC&#039;&#039;&#039; and &#039;&#039;&#039;federation&#039;&#039;&#039; features of the &#039;&#039;&#039;innovaphone PBX&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
For presence synchronization with other systems we recommend using&lt;br /&gt;
* &#039;&#039;&#039;innovaphone myApps Connector for Microsoft 365&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Connector for kuando®&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Calendar App&#039;&#039;&#039;&lt;br /&gt;
=== PBX Object Session Border ===&lt;br /&gt;
Please migrate to &#039;&#039;&#039;Reverse Proxy&#039;&#039;&#039; and &#039;&#039;&#039;[[Reference13r3:Concept_Third_Party_Phones]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Resources Considerations ==&lt;br /&gt;
New firmware always has more features which in turn requires more resources. Growing firmware will thus consume both more flash and RAM for sure. A given system configuration will run flawlessly after a firmware largely only if there is still enough memory left after boot.&lt;br /&gt;
&lt;br /&gt;
Standard configurations which are according the specs will run on all supported hardware. However, unusual configurations may not. It is a good idea to examine both flash and RAM memory left on high load situations in your existing configuration to see if there is enough resources left for an upgrade. Please find details in Reference:Device Health Check.&lt;br /&gt;
&lt;br /&gt;
=== RAM ===&lt;br /&gt;
As a rough rule of thumb, a 14r1 release will consume the same amount of RAM compared to a v13r3 firmware.&lt;br /&gt;
&lt;br /&gt;
=== Flash Memory  ===&lt;br /&gt;
As a rough rule of thumb, a v14r1 release will consume ~ 1.8 MB more flash memory compared to a v13r3 firmware.&lt;br /&gt;
New firmware comes with new code for new features which consumes more flash memory for the firmware image. For this reason, devices may run out of flash memory during upgrade to v14r1.  Here is the recommended procedure for upgrade on such devices:&lt;br /&gt;
&lt;br /&gt;
* save entire configuration&lt;br /&gt;
* reset to factory defaults&lt;br /&gt;
* load saved configuration (this will reorganize the flash memory usage)&lt;br /&gt;
* upgrade to new firmware&lt;br /&gt;
&lt;br /&gt;
When there is still not enough flash memory available to store the new firmware (Web GUI ends up in a &#039;&#039;Firmwareupdate failed:no space&#039;&#039; / Update client end in a &#039;&#039;Error 0x00130001 Major FLASHMAN0 no space&#039;&#039; event) please open a support case with your current configuration file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Applies To ==&lt;br /&gt;
This information applies to:&lt;br /&gt;
&lt;br /&gt;
* All 13r3 capable innovaphone devices&lt;br /&gt;
: For a general overview of the upgrade process and a list of supported devices with 13r3, see [[Howto:Firmware Upgrade]]&lt;br /&gt;
&lt;br /&gt;
== Migration Policy ==&lt;br /&gt;
Here is how you upgrade a system to 13r3 from 13r2.  For hints on upgrading a system to 13r2 see [[Howto:V13_Firmware_Upgrade_V13r1_V13r2]].&lt;br /&gt;
&lt;br /&gt;
=== Single AP/Single PBX===&lt;br /&gt;
* Create a new update job in devices and select 13r3 as major version&lt;br /&gt;
&lt;br /&gt;
===Shared AP/Several PBX&#039;es===&lt;br /&gt;
We generally recommend to upgrade the entire system (endpoints, PBXs, AP) in &#039;&#039;one shot&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If this is not possible for any reason, the recommended sequence is:&lt;br /&gt;
# update the master PBX&lt;br /&gt;
# update the slave PBX and all its endpoints location by location&lt;br /&gt;
# update the App Platform to the latest build&lt;br /&gt;
# update all Apps&lt;br /&gt;
# perform the configuration changes described below&lt;br /&gt;
&lt;br /&gt;
Note that during the update time frame, some App data such as Reporting and Recording may be incomplete.&lt;br /&gt;
&lt;br /&gt;
We recommend to review all the configuration changes described below before you begin the update.&lt;br /&gt;
&lt;br /&gt;
== Configuration Changes ==&lt;br /&gt;
In 13r3 we have introduced some new features which are automatically configured if you use the installer to setup your new 13r3 from scratch. If you upgrade an existing installation, you have to configure the following settings manually.&lt;br /&gt;
&lt;br /&gt;
=== Default SRTP key exchange value in device configuration of Phones/Interfaces ===&lt;br /&gt;
Before v13r3, the default value for SRTP key exchange was SDES-DTLS - with v13r3 it changes to the more secure DTLS-SDES. Therefore innovaphone devices now use DTLS instead - if the called endpoint has this preference. To make sure the more secure key exchange is used, we recommend adjusting the &#039;&#039;SRTP key exchange setting&#039;&#039; in the Devices App, &#039;&#039;Device Configuration&#039;&#039; for &#039;&#039;[Phone]&#039;&#039; and &#039;&#039;[Analog phone/fax]&#039;&#039;. An exception to this recommendation is if you are using old phone models (IP110A, IP240A) or gateway models (IP24, IP22) in your setup - as these may have CPU performance issues in the connection setup phase. In that case, use &#039;&#039;&#039;SDES-DTLS&#039;&#039;&#039; as value for the &#039;&#039;SRTP key exchange&#039;&#039; for all devices, not only for the old phone models.&lt;br /&gt;
&lt;br /&gt;
===Group Fax===&lt;br /&gt;
The fax object has to be configured as external resource of a group fax object in 13r3. It is therefore &#039;&#039;&#039;mandatory&#039;&#039;&#039; to assign the fax object as an external resource to all group fax objects after the upgrade - via PBX Manager .&lt;br /&gt;
&lt;br /&gt;
In the Advanced UI, you have to enter the h323/sip name of the fax object in the field &#039;&#039;&#039;External Resource Destination&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Also, with 13r3, group faxes can have their own international fax number and company name, so you should fill in these fields, or else the fax header will be empty.&lt;br /&gt;
&lt;br /&gt;
===Contacts App | User drop-down menu for sharing address books===&lt;br /&gt;
With 13r3, personal address books can be created and shared with users/groups. To have a search and drop-down menu in the sharing step, you have to activate the &amp;quot;Admin&amp;quot; option at the &amp;quot;ContactsApi&amp;quot; app object (tab &amp;quot;App&amp;quot;) over the Advanced UI. Otherwise, no results will be shown, and you have to enter the correct h323 name of a user.&lt;br /&gt;
&lt;br /&gt;
===Improved Conference Rooms===&lt;br /&gt;
* The &#039;&#039;Web Access allowed&#039;&#039; checkbox in the conference app has to be set in order to access the Conference Web Access UI.&lt;br /&gt;
: To be able create HTTP links for external participants, the conferencing App is required.&lt;br /&gt;
* Update the [[Reference13r3:PBX/Objects/Conference/Announcement_types#Sample_Announcement_Files | announcements]] for your conference rooms, to include also the &#039;&#039;Web Access announcements&#039;&#039;. &lt;br /&gt;
* it is recommended to use a second Turn-Server listening on TCP port 443 as a fallback option for external conference participants, with local firewalls not allowing access to your standard Turn-server. Configure this second Turn-Server in [[Reference13r3:IP4/General/STUN#TURN_Extern | IP4/General/STUN -&amp;gt; Turn Extern]] [[User:Sga|Sga]] TBD: info zu inno Turn Fallback server&lt;br /&gt;
* 13r3 adds a search-API for the Conference Rooms, allowing users to search for Conference room names from their Phone, Softphone or RCC App. Each conference object provides its own search API which is named like &#039;&#039;&amp;lt;Name-of-conference-object&amp;gt;.search&#039;&#039; and access to it can be granted using the App-Section of a PBX-object. The PBX-Manager Plugin for Conferences offers also an option to add the rights for all conference rooms and their search-APIs to the Config-User and/or Config-Admin template.&lt;br /&gt;
&lt;br /&gt;
=== NTLM/OAuth===&lt;br /&gt;
13r3 introduces OAuth2 Windows Authentication for myApps. If your are currently using NTLM/Netlogon for authentication, you might want to consider upgrading it OAuth2, since this authentication mechanisms is more secure. See [[Reference13r3:Concept OAuth2 Windows Authentication]] for details. &lt;br /&gt;
In 13r3 only Microsoft AD FS is supported as OpenID Server.&lt;br /&gt;
&lt;br /&gt;
===HTTP-Proxy===&lt;br /&gt;
13r3 introduces [[Reference13r3:Concept_myApps_platform_services#HTTP_proxy_support | HTTP-Proxy]] support for myApps. Now, myApps follows by default the OS-settings regarding HTTP-Proxy. This might affect existing setups when updating from 13r2 to 13r3. We recommend to check before a 13r3 update if an HTTP-Proxy is used and if so, test before the update for interop problems between myApps and the used HTTP-Proxy.&lt;br /&gt;
&lt;br /&gt;
===Physical Location===&lt;br /&gt;
The Softphone App supports in 13r3 the determination of the Physical Location. Similar to an IP-Phone, this is determined automatically based on HTTP-Redirects of the myApps PBX-login process. If you use PBX-objects with activated &amp;quot;Local&amp;quot; option (often this is a Trunk Line object), the determined physical location might lead to a different behavior when calling these objects. If this leads to unwanted call flows, you can either adjust the initial myApps registration PBX or configure the Physical location manually at the Softphone.&lt;br /&gt;
&lt;br /&gt;
== Application Platform and its applications ==&lt;br /&gt;
===App Platform image===&lt;br /&gt;
&lt;br /&gt;
It is not mandatory but recommended to [[Reference13r3:Concept_App_Platform#Update_of_the_App_Platform_itself | update the App Platform image]] to the latest version to receive a newer kernel and updated Linux packages.&lt;br /&gt;
&lt;br /&gt;
===Recordings App===&lt;br /&gt;
Please follow the procedure described in the [[Reference13r3:Concept_App_Service_Recordings#Upgrade_from_V13r2_to_V13r3_Recordings_App | Recordings App concept article]].&lt;br /&gt;
&lt;br /&gt;
===Reports App===&lt;br /&gt;
The Reports App will improve missed calls queries by adding a new database index during the first start after an update. Depending on the size of the reporting database, this database adjustment can take some minutes and results also in high CPU-load and missed CDRs during that time.&lt;br /&gt;
&lt;br /&gt;
=== App Service Queues, Switchboard App ===&lt;br /&gt;
To allow monitoring of all queues by all switchboard users, configure a group (e.g. with the name &#039;&#039;queues&#039;&#039;) in the PBX and assign it as &#039;&#039;&#039;Static&#039;&#039;&#039; to all Waiting Queues used by the Switchboard App and assign it also as &#039;&#039;&#039;Static&#039;&#039;&#039; and &#039;&#039;&#039;Active&#039;&#039;&#039; to all Switchboard Users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Apps new in 13r3===&lt;br /&gt;
New Apps will not be installed automatically by the 13r2 to 13r3 upgrade. The installation description of new 13r3 apps is usually in the concept article. New apps are:&lt;br /&gt;
* [[Reference13r3:Concept_App_Service_Connector_for_kuando®#Configuration | Connector for kuando®]]&lt;br /&gt;
* [[Reference13r3:Concept_App_Service_Connector_for_Microsoft_365 | innovaphone myApps Connector for Microsoft 365]]&lt;br /&gt;
&lt;br /&gt;
== Changes visible to end customers ==&lt;br /&gt;
Listed here are changes that should be communicated by resellers to end users prior to a 13r3 upgrade, as the change will be visible/audible in the behaviour of the application/device.&lt;br /&gt;
===Rework of Phone &amp;amp; Softphone UI===&lt;br /&gt;
Several feature and UI improvements, see &#039;Features&#039; in [[Reference13r3:Concept_App_SoftphoneApp#Features | Reference13r3:Concept App SoftphoneApp ]] and [[Reference13r3:Concept Multi-Video-Conference]].&lt;br /&gt;
&lt;br /&gt;
===CallForwarding in Profile App===&lt;br /&gt;
Added configuration option on call diversions: call forwardings depending on &#039;&#039;myApps online&#039;&#039; and &#039;&#039;Presence&#039;&#039; state. This can be switched on or off by the user in the Profile App.&lt;br /&gt;
&lt;br /&gt;
===Focus App===&lt;br /&gt;
The &amp;quot;App focus&amp;quot; can be used to define a default app for the user. It is started and shown automatically when myApps is loaded. When closing other apps, the app is shown instead of the home screen. Users can activate (default) or deactivate the Focus function in their myApps Client settings (hamburger menu). See &#039;Features&#039; in [[Reference13r3:Concept_myApps#Features | Reference13r3:Concept myApps]]&lt;br /&gt;
&lt;br /&gt;
===Pin Apps===&lt;br /&gt;
Apps can be pinned to the main window. Pinned apps are always running and can&#039;t be closed. They are also started automatically when the myApps client is loaded. This setting is locally stored per-client. So you can pin different apps on your computer and your smartphone.  See &#039;Features&#039; in [[Reference13r3:Concept_myApps#Features | Reference13r3:Concept myApps]]&lt;br /&gt;
&lt;br /&gt;
=== Fax App ===&lt;br /&gt;
The [[Reference13r3:Concept_App_Service_Fax#Mail_Configuration | Mail Configuration]] section of the Fax App offers in 13r3 additional options:&lt;br /&gt;
* Transmission confirmations&lt;br /&gt;
* Transmission reports for outgoing fax jobs as PDF&lt;br /&gt;
* Error notifications for outgoing fax jobs&lt;br /&gt;
&lt;br /&gt;
==Hardware Restrictions==&lt;br /&gt;
For a list of devices with no/restricted support in 13r3, see the [[Howto:Firmware_Upgrade#Version_13r3 | Firmware Upgrade article]].&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
&lt;br /&gt;
===Boolean App===&lt;br /&gt;
Following the update to 13r3, it is not possible to edit Boolean Apps using the myApps client (except when using the myApps client in a web browser). To resolve this issue, you will need to delete the approxy folder for all users who use the boolean app. You can locate this folder in the following directory: %USERPROFILE%\AppData\Local\innovaphone\myApps.&lt;br /&gt;
Reload or restart myApps afterwards.&lt;br /&gt;
&lt;br /&gt;
This behavior can also occur under Mac OS. Here the problem can be solved by uninstalling the app and then reinstalling it again.&lt;br /&gt;
&lt;br /&gt;
===Current major issues that will be fixed with upcoming 13r3SR1 release===&lt;br /&gt;
* [[Support:PBX_13r3_final_trap_with_Unknown_Registrations | PBX 13r3 Final trap with Unknown Registrations]]&lt;br /&gt;
* [[Support:13r3final_App_Platform_-_SMTP_delivery_may_fail_due_to_IPv6_DNS_results | 13r3final App Platform - SMTP delivery may fail due to IPv6 DNS results]]&lt;br /&gt;
* [[Support:13r3final PBX randomly does not execute CFU | 13r3final PBX randomly does not execute CFU]]&lt;br /&gt;
&lt;br /&gt;
More info on other 13r3 SR1 changes can be found in the [[Reference13r3:Release_Notes_Firmware#13r3_Service_Release_1 | Release Notes]].&lt;br /&gt;
&lt;br /&gt;
===Regex Expression===&lt;br /&gt;
We updated the regular expression syntax which is used for the AD replication. A &#039;\&#039; followed by a non-special character is no longer allowed.&lt;br /&gt;
&lt;br /&gt;
== Resources Considerations ==&lt;br /&gt;
New firmware always has more features which in turn requires more resources. Growing firmware will thus consume both more flash and RAM for sure. A given system configuration will run flawlessly after a firmware largely only if there is still enough memory left after boot.&lt;br /&gt;
&lt;br /&gt;
Standard configurations which are according [[Howto:How_to_implement_large_PBXs#Technical_data_and_recommended_number_of_users_supported | the specs ]] will run on all supported hardware.  However, unusual configurations may not.  It is a good idea to examine both flash and RAM memory left on high load situations in your existing configuration to see if there is enough resources left for an upgrade.  Please find details in [[Reference:Device Health Check]].&lt;br /&gt;
&lt;br /&gt;
=== RAM ===&lt;br /&gt;
As a rough rule of thumb, a 13r3 release will consume the same amount of RAM compared to a v13r2 firmware.&lt;br /&gt;
&lt;br /&gt;
=== Flash Memory ===&lt;br /&gt;
As a rough rule of thumb, a v13r3 release will consume ~ 0.5 MB flash more compared to a v13r2 firmware.&lt;br /&gt;
&lt;br /&gt;
New firmware comes with new code for new features which consumes more flash memory for the firmware image. For this reason, devices may run out of flash memory during upgrade to v13r3.  Here is the recommended procedure for upgrade on such devices:&lt;br /&gt;
&lt;br /&gt;
* save entire configuration&lt;br /&gt;
* reset to factory defaults&lt;br /&gt;
* load saved configuration (this will reorganize the flash memory usage)&lt;br /&gt;
* upgrade to new firmware&lt;br /&gt;
&lt;br /&gt;
When there is still not enough flash memory available to store the new firmware (Web GUI ends up in a &#039;&#039;Firmwareupdate failed:no space&#039;&#039; / Update client end in a &#039;&#039;Error 0x00130001 Major FLASHMAN0 no space&#039;&#039; event) please open a support case with your current configuration file.&lt;br /&gt;
&lt;br /&gt;
=== Conferences ===&lt;br /&gt;
Since Conferences now use [[Reference13r3:Concept_Multi-Video-Conference | multiple video streams]] to display each conference participant (in 13r1 &amp;amp; 13r2 only the video stream of the speaker was shown), the number of concurrent video streams used in a single conference increased. Please review this [[Reference13r3:Concept_Multi-Video-Conference#Bandwidth_Consideration | bandwidth considerations]]. As a result, a device hosting a multivideo conference on its CONF or SCNF interface has a higher CPU load in 13r3 than in 13r2.&lt;br /&gt;
&lt;br /&gt;
[[Image:13r3_conference_bandwidth.png|700px|Estimated Conference bandwidth requirements]]&lt;br /&gt;
&lt;br /&gt;
The graph shows the bandwidth needed for a device running the CONF interface to participate in a conference. The values shown are for when all participants are in gallery mode (which is the worst case scenario) and in fullscreen presentation mode (which is the best case scenario). In general, the actual bandwidth needed will fall somewhere between these two extremes. &lt;br /&gt;
&lt;br /&gt;
To calculate the CPU requirements for the device, you can use the following formula: &amp;lt;code&amp;gt;CPU% = Bandwidth (in Mbps) / x&amp;lt;/code&amp;gt;, where x is&lt;br /&gt;
* 0.42 for a xx10 device &lt;br /&gt;
* 0.18 for IP311 and IP411 devices&lt;br /&gt;
* 0.56 for a xx11 device&lt;br /&gt;
* 3.6 for a xx13 device &lt;br /&gt;
&lt;br /&gt;
For example, if you are hosting a conference with 10 participants on a xx11 device in gallery mode, the upstream and downstream bandwidth would be 25 Mbps. Using the formula, you can calculate the CPU requirements as follows: CPU% = 25 Mbps / 0.56 = 44.64%. This means that the device should have at least 45% free CPU capacity to handle the conference.&lt;br /&gt;
&lt;br /&gt;
From the client&#039;s perspective, the worst case values for upstream bandwidth (when presenting) would be 1 Mbps, and for downstream bandwidth (when in a gallery mode conference with 20 participants) would be 5 Mbps.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
*[[Howto:Firmware_Upgrade]]&lt;br /&gt;
* [[Howto:Firmware Upgrade V11r2 V12r1]]&lt;br /&gt;
* [[Howto:Firmware Upgrade V12r1 V12r2]]&lt;br /&gt;
* [[Howto:Firmware Upgrade V12r2 V13r1]]&lt;br /&gt;
&lt;br /&gt;
*[[Support:PBX_V13r3_Final_trap_with_Unkown_Registrations]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lme</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto14r1:Firmware_Upgrade_V13r3_V14r1&amp;diff=69166</id>
		<title>Howto14r1:Firmware Upgrade V13r3 V14r1</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto14r1:Firmware_Upgrade_V13r3_V14r1&amp;diff=69166"/>
		<updated>2023-10-19T14:42:32Z</updated>

		<summary type="html">&lt;p&gt;Lme: /* Application Platform and its applications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FIXME|reason=Preliminary working draft}}&lt;br /&gt;
== Applies To ==&lt;br /&gt;
This information applies to:&lt;br /&gt;
&lt;br /&gt;
* All 14r1 capable innovaphone devices&lt;br /&gt;
: For a general overview of the upgrade process and a list of supported devices with 14r1, see [[Howto:Firmware Upgrade]]&lt;br /&gt;
&lt;br /&gt;
== Changes visible to end customers ==&lt;br /&gt;
Listed here are changes that should be communicated by resellers to end users prior to a 14r1 upgrade, as the change will be visible/audible in the behaviour of the application/device.&lt;br /&gt;
=== Softphone/Phone App UI changes === &lt;br /&gt;
* Dial-pad is now a new tab in the navigation.&lt;br /&gt;
* On Smartphones, the Navigation is in the bottom.&lt;br /&gt;
* Call button is removed from the searchbar. Calling only via the search results.&lt;br /&gt;
&lt;br /&gt;
== Application Platform and its applications ==&lt;br /&gt;
===Apps new in 14r1===&lt;br /&gt;
New Apps will not be installed automatically by the 13r3 to 14r1 upgrade. The installation description of new 14r1 apps is usually in the concept article. New apps are:&lt;br /&gt;
;Search App&lt;br /&gt;
* The app is immediately available on the PBX (no configuration is needed). In a new V14r1 configuration the Install provides all Users with this Search App via the &amp;quot;Config User&amp;quot;-Template. If the same configuration is required on an upgraded config, the Search App (&amp;quot;search&amp;quot;) can be ticked in the &amp;quot;Config User&amp;quot; template.&lt;br /&gt;
;TechAssist &lt;br /&gt;
* Application for quality assurance and improvement of systems by collecting static and runtime information. For details refer to [[Reference14r1:Concept_App_Service_TechAssist | the concept article]].&lt;br /&gt;
&lt;br /&gt;
== Configuration Changes ==&lt;br /&gt;
&lt;br /&gt;
== Removed in 14r1 ==&lt;br /&gt;
The following software is no longer included in 14r1.&lt;br /&gt;
=== myPBX ===&lt;br /&gt;
This includes the following components&lt;br /&gt;
* myPBX webclient&lt;br /&gt;
* myPBX for Windows&lt;br /&gt;
* myPBX for iOS&lt;br /&gt;
* myPBX for Android&lt;br /&gt;
Please migrate to &#039;&#039;&#039;innovaphone myApps&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
The Widgets were based on the myPBX interfaces that have been removed. Please migrate to the &#039;&#039;&#039;Contacts Widget App&#039;&#039;&#039;.&lt;br /&gt;
===WebRTC toolkit===&lt;br /&gt;
The WebRTC toolkit was based on the myPBX interfaces that have been removed.&lt;br /&gt;
Please use the current interfaces and libraries described in the &#039;&#039;&#039;[https://sdk.innovaphone.com innovaphone SDK]&#039;&#039;&#039;.&lt;br /&gt;
=== Windows Softwarephone ===&lt;br /&gt;
Please migrate to &#039;&#039;&#039;innovaphone myApps for Windows&#039;&#039;&#039; and the &#039;&#039;&#039;Softphone App&#039;&#039;&#039;.&lt;br /&gt;
===PBX Object Settings ===&lt;br /&gt;
The object provided the PBX Settings App that was used to configure dynamic group memberships in myPBX.&lt;br /&gt;
Please use the &#039;&#039;&#039;Profile App&#039;&#039;&#039; instead.&lt;br /&gt;
&lt;br /&gt;
===PBX Object ICP ===&lt;br /&gt;
Please use the integrated presence features of the &#039;&#039;&#039;innovaphone PBX&#039;&#039;&#039; instead.&lt;br /&gt;
&lt;br /&gt;
===Service Call-Lists ===&lt;br /&gt;
This service implemented call lists for myPBX on the local CF card.&lt;br /&gt;
Please use the &#039;&#039;&#039;Reports App&#039;&#039;&#039; instead.&lt;br /&gt;
&lt;br /&gt;
== Deprecated in 14r1 ==&lt;br /&gt;
The following software is based on legacy technology with no further development and limited maintenance and support.&lt;br /&gt;
We strongly recommend migrating to our successor products that are fully compatible with 14r1 and myApps technology.&lt;br /&gt;
&lt;br /&gt;
=== Linux Application Platform (v10) ===&lt;br /&gt;
Please migrate to the &#039;&#039;&#039;innovaphone App Platform&#039;&#039;&#039; for 14r1 installations.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone Faxserver (v10) ===&lt;br /&gt;
Please migrate to the &#039;&#039;&#039;Fax App&#039;&#039;&#039; for 14r1 installations.&lt;br /&gt;
=== innovaphone Reporting (v10) ===&lt;br /&gt;
Please migrate to the &#039;&#039;&#039;Reports App&#039;&#039;&#039; for 14r1 installations.&lt;br /&gt;
=== innovaphone Exchange (v10) ===&lt;br /&gt;
Please migrate to the &#039;&#039;&#039;Calendar App&#039;&#039;&#039; for 14r1 installations.&lt;br /&gt;
=== Operator (v9) ===&lt;br /&gt;
Please migrate to the &#039;&#039;&#039;Switchboard App&#039;&#039;&#039; for 14r1 installations.&lt;br /&gt;
=== innovaphone Voice Recording 2014 ===&lt;br /&gt;
Please migrate to the &#039;&#039;&#039;Recordings App&#039;&#039;&#039; for 14r1 installations.&lt;br /&gt;
=== PBX Object External UC ===&lt;br /&gt;
Existing configurations still work. But new configurations can&#039;t be done using the advanced UI anymore.&lt;br /&gt;
&lt;br /&gt;
Please use the integrated &#039;&#039;&#039;UC&#039;&#039;&#039; and &#039;&#039;&#039;federation&#039;&#039;&#039; features of the &#039;&#039;&#039;innovaphone PBX&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
For presence synchronization with other systems we recommend using&lt;br /&gt;
* &#039;&#039;&#039;innovaphone myApps Connector for Microsoft 365&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Connector for kuando®&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Calendar App&#039;&#039;&#039;&lt;br /&gt;
=== PBX Object Session Border ===&lt;br /&gt;
Please migrate to &#039;&#039;&#039;Reverse Proxy&#039;&#039;&#039; and &#039;&#039;&#039;[[Reference13r3:Concept_Third_Party_Phones]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Resources Considerations ==&lt;br /&gt;
New firmware always has more features which in turn requires more resources. Growing firmware will thus consume both more flash and RAM for sure. A given system configuration will run flawlessly after a firmware largely only if there is still enough memory left after boot.&lt;br /&gt;
&lt;br /&gt;
Standard configurations which are according the specs will run on all supported hardware. However, unusual configurations may not. It is a good idea to examine both flash and RAM memory left on high load situations in your existing configuration to see if there is enough resources left for an upgrade. Please find details in Reference:Device Health Check.&lt;br /&gt;
&lt;br /&gt;
=== RAM ===&lt;br /&gt;
As a rough rule of thumb, a 14r1 release will consume the same amount of RAM compared to a v13r3 firmware.&lt;br /&gt;
&lt;br /&gt;
=== Flash Memory  ===&lt;br /&gt;
As a rough rule of thumb, a v14r1 release will consume ~ 1.8 MB more flash memory compared to a v13r3 firmware.&lt;br /&gt;
New firmware comes with new code for new features which consumes more flash memory for the firmware image. For this reason, devices may run out of flash memory during upgrade to v14r1.  Here is the recommended procedure for upgrade on such devices:&lt;br /&gt;
&lt;br /&gt;
* save entire configuration&lt;br /&gt;
* reset to factory defaults&lt;br /&gt;
* load saved configuration (this will reorganize the flash memory usage)&lt;br /&gt;
* upgrade to new firmware&lt;br /&gt;
&lt;br /&gt;
When there is still not enough flash memory available to store the new firmware (Web GUI ends up in a &#039;&#039;Firmwareupdate failed:no space&#039;&#039; / Update client end in a &#039;&#039;Error 0x00130001 Major FLASHMAN0 no space&#039;&#039; event) please open a support case with your current configuration file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Applies To ==&lt;br /&gt;
This information applies to:&lt;br /&gt;
&lt;br /&gt;
* All 13r3 capable innovaphone devices&lt;br /&gt;
: For a general overview of the upgrade process and a list of supported devices with 13r3, see [[Howto:Firmware Upgrade]]&lt;br /&gt;
&lt;br /&gt;
== Migration Policy ==&lt;br /&gt;
Here is how you upgrade a system to 13r3 from 13r2.  For hints on upgrading a system to 13r2 see [[Howto:V13_Firmware_Upgrade_V13r1_V13r2]].&lt;br /&gt;
&lt;br /&gt;
=== Single AP/Single PBX===&lt;br /&gt;
* Create a new update job in devices and select 13r3 as major version&lt;br /&gt;
&lt;br /&gt;
===Shared AP/Several PBX&#039;es===&lt;br /&gt;
We generally recommend to upgrade the entire system (endpoints, PBXs, AP) in &#039;&#039;one shot&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If this is not possible for any reason, the recommended sequence is:&lt;br /&gt;
# update the master PBX&lt;br /&gt;
# update the slave PBX and all its endpoints location by location&lt;br /&gt;
# update the App Platform to the latest build&lt;br /&gt;
# update all Apps&lt;br /&gt;
# perform the configuration changes described below&lt;br /&gt;
&lt;br /&gt;
Note that during the update time frame, some App data such as Reporting and Recording may be incomplete.&lt;br /&gt;
&lt;br /&gt;
We recommend to review all the configuration changes described below before you begin the update.&lt;br /&gt;
&lt;br /&gt;
== Configuration Changes ==&lt;br /&gt;
In 13r3 we have introduced some new features which are automatically configured if you use the installer to setup your new 13r3 from scratch. If you upgrade an existing installation, you have to configure the following settings manually.&lt;br /&gt;
&lt;br /&gt;
=== Default SRTP key exchange value in device configuration of Phones/Interfaces ===&lt;br /&gt;
Before v13r3, the default value for SRTP key exchange was SDES-DTLS - with v13r3 it changes to the more secure DTLS-SDES. Therefore innovaphone devices now use DTLS instead - if the called endpoint has this preference. To make sure the more secure key exchange is used, we recommend adjusting the &#039;&#039;SRTP key exchange setting&#039;&#039; in the Devices App, &#039;&#039;Device Configuration&#039;&#039; for &#039;&#039;[Phone]&#039;&#039; and &#039;&#039;[Analog phone/fax]&#039;&#039;. An exception to this recommendation is if you are using old phone models (IP110A, IP240A) or gateway models (IP24, IP22) in your setup - as these may have CPU performance issues in the connection setup phase. In that case, use &#039;&#039;&#039;SDES-DTLS&#039;&#039;&#039; as value for the &#039;&#039;SRTP key exchange&#039;&#039; for all devices, not only for the old phone models.&lt;br /&gt;
&lt;br /&gt;
===Group Fax===&lt;br /&gt;
The fax object has to be configured as external resource of a group fax object in 13r3. It is therefore &#039;&#039;&#039;mandatory&#039;&#039;&#039; to assign the fax object as an external resource to all group fax objects after the upgrade - via PBX Manager .&lt;br /&gt;
&lt;br /&gt;
In the Advanced UI, you have to enter the h323/sip name of the fax object in the field &#039;&#039;&#039;External Resource Destination&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Also, with 13r3, group faxes can have their own international fax number and company name, so you should fill in these fields, or else the fax header will be empty.&lt;br /&gt;
&lt;br /&gt;
===Contacts App | User drop-down menu for sharing address books===&lt;br /&gt;
With 13r3, personal address books can be created and shared with users/groups. To have a search and drop-down menu in the sharing step, you have to activate the &amp;quot;Admin&amp;quot; option at the &amp;quot;ContactsApi&amp;quot; app object (tab &amp;quot;App&amp;quot;) over the Advanced UI. Otherwise, no results will be shown, and you have to enter the correct h323 name of a user.&lt;br /&gt;
&lt;br /&gt;
===Improved Conference Rooms===&lt;br /&gt;
* The &#039;&#039;Web Access allowed&#039;&#039; checkbox in the conference app has to be set in order to access the Conference Web Access UI.&lt;br /&gt;
: To be able create HTTP links for external participants, the conferencing App is required.&lt;br /&gt;
* Update the [[Reference13r3:PBX/Objects/Conference/Announcement_types#Sample_Announcement_Files | announcements]] for your conference rooms, to include also the &#039;&#039;Web Access announcements&#039;&#039;. &lt;br /&gt;
* it is recommended to use a second Turn-Server listening on TCP port 443 as a fallback option for external conference participants, with local firewalls not allowing access to your standard Turn-server. Configure this second Turn-Server in [[Reference13r3:IP4/General/STUN#TURN_Extern | IP4/General/STUN -&amp;gt; Turn Extern]] [[User:Sga|Sga]] TBD: info zu inno Turn Fallback server&lt;br /&gt;
* 13r3 adds a search-API for the Conference Rooms, allowing users to search for Conference room names from their Phone, Softphone or RCC App. Each conference object provides its own search API which is named like &#039;&#039;&amp;lt;Name-of-conference-object&amp;gt;.search&#039;&#039; and access to it can be granted using the App-Section of a PBX-object. The PBX-Manager Plugin for Conferences offers also an option to add the rights for all conference rooms and their search-APIs to the Config-User and/or Config-Admin template.&lt;br /&gt;
&lt;br /&gt;
=== NTLM/OAuth===&lt;br /&gt;
13r3 introduces OAuth2 Windows Authentication for myApps. If your are currently using NTLM/Netlogon for authentication, you might want to consider upgrading it OAuth2, since this authentication mechanisms is more secure. See [[Reference13r3:Concept OAuth2 Windows Authentication]] for details. &lt;br /&gt;
In 13r3 only Microsoft AD FS is supported as OpenID Server.&lt;br /&gt;
&lt;br /&gt;
===HTTP-Proxy===&lt;br /&gt;
13r3 introduces [[Reference13r3:Concept_myApps_platform_services#HTTP_proxy_support | HTTP-Proxy]] support for myApps. Now, myApps follows by default the OS-settings regarding HTTP-Proxy. This might affect existing setups when updating from 13r2 to 13r3. We recommend to check before a 13r3 update if an HTTP-Proxy is used and if so, test before the update for interop problems between myApps and the used HTTP-Proxy.&lt;br /&gt;
&lt;br /&gt;
===Physical Location===&lt;br /&gt;
The Softphone App supports in 13r3 the determination of the Physical Location. Similar to an IP-Phone, this is determined automatically based on HTTP-Redirects of the myApps PBX-login process. If you use PBX-objects with activated &amp;quot;Local&amp;quot; option (often this is a Trunk Line object), the determined physical location might lead to a different behavior when calling these objects. If this leads to unwanted call flows, you can either adjust the initial myApps registration PBX or configure the Physical location manually at the Softphone.&lt;br /&gt;
&lt;br /&gt;
== Application Platform and its applications ==&lt;br /&gt;
===App Platform image===&lt;br /&gt;
&lt;br /&gt;
It is not mandatory but recommended to [[Reference13r3:Concept_App_Platform#Update_of_the_App_Platform_itself | update the App Platform image]] to the latest version to receive a newer kernel and updated Linux packages.&lt;br /&gt;
&lt;br /&gt;
===Recordings App===&lt;br /&gt;
Please follow the procedure described in the [[Reference13r3:Concept_App_Service_Recordings#Upgrade_from_V13r2_to_V13r3_Recordings_App | Recordings App concept article]].&lt;br /&gt;
&lt;br /&gt;
===Reports App===&lt;br /&gt;
The Reports App will improve missed calls queries by adding a new database index during the first start after an update. Depending on the size of the reporting database, this database adjustment can take some minutes and results also in high CPU-load and missed CDRs during that time.&lt;br /&gt;
&lt;br /&gt;
=== App Service Queues, Switchboard App ===&lt;br /&gt;
To allow monitoring of all queues by all switchboard users, configure a group (e.g. with the name &#039;&#039;queues&#039;&#039;) in the PBX and assign it as &#039;&#039;&#039;Static&#039;&#039;&#039; to all Waiting Queues used by the Switchboard App and assign it also as &#039;&#039;&#039;Static&#039;&#039;&#039; and &#039;&#039;&#039;Active&#039;&#039;&#039; to all Switchboard Users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Apps new in 13r3===&lt;br /&gt;
New Apps will not be installed automatically by the 13r2 to 13r3 upgrade. The installation description of new 13r3 apps is usually in the concept article. New apps are:&lt;br /&gt;
* [[Reference13r3:Concept_App_Service_Connector_for_kuando®#Configuration | Connector for kuando®]]&lt;br /&gt;
* [[Reference13r3:Concept_App_Service_Connector_for_Microsoft_365 | innovaphone myApps Connector for Microsoft 365]]&lt;br /&gt;
&lt;br /&gt;
== Changes visible to end customers ==&lt;br /&gt;
Listed here are changes that should be communicated by resellers to end users prior to a 13r3 upgrade, as the change will be visible/audible in the behaviour of the application/device.&lt;br /&gt;
===Rework of Phone &amp;amp; Softphone UI===&lt;br /&gt;
Several feature and UI improvements, see &#039;Features&#039; in [[Reference13r3:Concept_App_SoftphoneApp#Features | Reference13r3:Concept App SoftphoneApp ]] and [[Reference13r3:Concept Multi-Video-Conference]].&lt;br /&gt;
&lt;br /&gt;
===CallForwarding in Profile App===&lt;br /&gt;
Added configuration option on call diversions: call forwardings depending on &#039;&#039;myApps online&#039;&#039; and &#039;&#039;Presence&#039;&#039; state. This can be switched on or off by the user in the Profile App.&lt;br /&gt;
&lt;br /&gt;
===Focus App===&lt;br /&gt;
The &amp;quot;App focus&amp;quot; can be used to define a default app for the user. It is started and shown automatically when myApps is loaded. When closing other apps, the app is shown instead of the home screen. Users can activate (default) or deactivate the Focus function in their myApps Client settings (hamburger menu). See &#039;Features&#039; in [[Reference13r3:Concept_myApps#Features | Reference13r3:Concept myApps]]&lt;br /&gt;
&lt;br /&gt;
===Pin Apps===&lt;br /&gt;
Apps can be pinned to the main window. Pinned apps are always running and can&#039;t be closed. They are also started automatically when the myApps client is loaded. This setting is locally stored per-client. So you can pin different apps on your computer and your smartphone.  See &#039;Features&#039; in [[Reference13r3:Concept_myApps#Features | Reference13r3:Concept myApps]]&lt;br /&gt;
&lt;br /&gt;
=== Fax App ===&lt;br /&gt;
The [[Reference13r3:Concept_App_Service_Fax#Mail_Configuration | Mail Configuration]] section of the Fax App offers in 13r3 additional options:&lt;br /&gt;
* Transmission confirmations&lt;br /&gt;
* Transmission reports for outgoing fax jobs as PDF&lt;br /&gt;
* Error notifications for outgoing fax jobs&lt;br /&gt;
&lt;br /&gt;
==Hardware Restrictions==&lt;br /&gt;
For a list of devices with no/restricted support in 13r3, see the [[Howto:Firmware_Upgrade#Version_13r3 | Firmware Upgrade article]].&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
&lt;br /&gt;
===Boolean App===&lt;br /&gt;
Following the update to 13r3, it is not possible to edit Boolean Apps using the myApps client (except when using the myApps client in a web browser). To resolve this issue, you will need to delete the approxy folder for all users who use the boolean app. You can locate this folder in the following directory: %USERPROFILE%\AppData\Local\innovaphone\myApps.&lt;br /&gt;
Reload or restart myApps afterwards.&lt;br /&gt;
&lt;br /&gt;
This behavior can also occur under Mac OS. Here the problem can be solved by uninstalling the app and then reinstalling it again.&lt;br /&gt;
&lt;br /&gt;
===Current major issues that will be fixed with upcoming 13r3SR1 release===&lt;br /&gt;
* [[Support:PBX_13r3_final_trap_with_Unknown_Registrations | PBX 13r3 Final trap with Unknown Registrations]]&lt;br /&gt;
* [[Support:13r3final_App_Platform_-_SMTP_delivery_may_fail_due_to_IPv6_DNS_results | 13r3final App Platform - SMTP delivery may fail due to IPv6 DNS results]]&lt;br /&gt;
* [[Support:13r3final PBX randomly does not execute CFU | 13r3final PBX randomly does not execute CFU]]&lt;br /&gt;
&lt;br /&gt;
More info on other 13r3 SR1 changes can be found in the [[Reference13r3:Release_Notes_Firmware#13r3_Service_Release_1 | Release Notes]].&lt;br /&gt;
&lt;br /&gt;
===Regex Expression===&lt;br /&gt;
We updated the regular expression syntax which is used for the AD replication. A &#039;\&#039; followed by a non-special character is no longer allowed.&lt;br /&gt;
&lt;br /&gt;
== Resources Considerations ==&lt;br /&gt;
New firmware always has more features which in turn requires more resources. Growing firmware will thus consume both more flash and RAM for sure. A given system configuration will run flawlessly after a firmware largely only if there is still enough memory left after boot.&lt;br /&gt;
&lt;br /&gt;
Standard configurations which are according [[Howto:How_to_implement_large_PBXs#Technical_data_and_recommended_number_of_users_supported | the specs ]] will run on all supported hardware.  However, unusual configurations may not.  It is a good idea to examine both flash and RAM memory left on high load situations in your existing configuration to see if there is enough resources left for an upgrade.  Please find details in [[Reference:Device Health Check]].&lt;br /&gt;
&lt;br /&gt;
=== RAM ===&lt;br /&gt;
As a rough rule of thumb, a 13r3 release will consume the same amount of RAM compared to a v13r2 firmware.&lt;br /&gt;
&lt;br /&gt;
=== Flash Memory ===&lt;br /&gt;
As a rough rule of thumb, a v13r3 release will consume ~ 0.5 MB flash more compared to a v13r2 firmware.&lt;br /&gt;
&lt;br /&gt;
New firmware comes with new code for new features which consumes more flash memory for the firmware image. For this reason, devices may run out of flash memory during upgrade to v13r3.  Here is the recommended procedure for upgrade on such devices:&lt;br /&gt;
&lt;br /&gt;
* save entire configuration&lt;br /&gt;
* reset to factory defaults&lt;br /&gt;
* load saved configuration (this will reorganize the flash memory usage)&lt;br /&gt;
* upgrade to new firmware&lt;br /&gt;
&lt;br /&gt;
When there is still not enough flash memory available to store the new firmware (Web GUI ends up in a &#039;&#039;Firmwareupdate failed:no space&#039;&#039; / Update client end in a &#039;&#039;Error 0x00130001 Major FLASHMAN0 no space&#039;&#039; event) please open a support case with your current configuration file.&lt;br /&gt;
&lt;br /&gt;
=== Conferences ===&lt;br /&gt;
Since Conferences now use [[Reference13r3:Concept_Multi-Video-Conference | multiple video streams]] to display each conference participant (in 13r1 &amp;amp; 13r2 only the video stream of the speaker was shown), the number of concurrent video streams used in a single conference increased. Please review this [[Reference13r3:Concept_Multi-Video-Conference#Bandwidth_Consideration | bandwidth considerations]]. As a result, a device hosting a multivideo conference on its CONF or SCNF interface has a higher CPU load in 13r3 than in 13r2.&lt;br /&gt;
&lt;br /&gt;
[[Image:13r3_conference_bandwidth.png|700px|Estimated Conference bandwidth requirements]]&lt;br /&gt;
&lt;br /&gt;
The graph shows the bandwidth needed for a device running the CONF interface to participate in a conference. The values shown are for when all participants are in gallery mode (which is the worst case scenario) and in fullscreen presentation mode (which is the best case scenario). In general, the actual bandwidth needed will fall somewhere between these two extremes. &lt;br /&gt;
&lt;br /&gt;
To calculate the CPU requirements for the device, you can use the following formula: &amp;lt;code&amp;gt;CPU% = Bandwidth (in Mbps) / x&amp;lt;/code&amp;gt;, where x is&lt;br /&gt;
* 0.42 for a xx10 device &lt;br /&gt;
* 0.18 for IP311 and IP411 devices&lt;br /&gt;
* 0.56 for a xx11 device&lt;br /&gt;
* 3.6 for a xx13 device &lt;br /&gt;
&lt;br /&gt;
For example, if you are hosting a conference with 10 participants on a xx11 device in gallery mode, the upstream and downstream bandwidth would be 25 Mbps. Using the formula, you can calculate the CPU requirements as follows: CPU% = 25 Mbps / 0.56 = 44.64%. This means that the device should have at least 45% free CPU capacity to handle the conference.&lt;br /&gt;
&lt;br /&gt;
From the client&#039;s perspective, the worst case values for upstream bandwidth (when presenting) would be 1 Mbps, and for downstream bandwidth (when in a gallery mode conference with 20 participants) would be 5 Mbps.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
*[[Howto:Firmware_Upgrade]]&lt;br /&gt;
* [[Howto:Firmware Upgrade V11r2 V12r1]]&lt;br /&gt;
* [[Howto:Firmware Upgrade V12r1 V12r2]]&lt;br /&gt;
* [[Howto:Firmware Upgrade V12r2 V13r1]]&lt;br /&gt;
&lt;br /&gt;
*[[Support:PBX_V13r3_Final_trap_with_Unkown_Registrations]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lme</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference8:TAPI_Service_Provider&amp;diff=68401</id>
		<title>Reference8:TAPI Service Provider</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference8:TAPI_Service_Provider&amp;diff=68401"/>
		<updated>2023-08-11T12:57:18Z</updated>

		<summary type="html">&lt;p&gt;Lme: /* Download */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;innovaphone PBX V8.0 based TAPI Service Provider&#039;&#039; (TSP) is an enhanced version of the [[ Reference7:Unified Win32 and x64 TAPI Service Provider | previous TSP version ]] that takes advantage of the [[ Reference8:SOAP API | new SOAP features ]] provided with version 8 PBX firmware. It implements - like the previous versions - TAPI Version 3.0 without MSP (Media Service Provider).&lt;br /&gt;
&lt;br /&gt;
The [[Reference7:Unified Win32 and x64 TAPI Service Provider| previous TSP ]] still must be used for V7 PBX systems. &lt;br /&gt;
&lt;br /&gt;
This article describes how to install and use it as well how to configure the PBX in order for the TSP to work properly.&lt;br /&gt;
&lt;br /&gt;
==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
* innovaphone PBX V8.0 based TAPI Service Provider, Build 8001 and later&lt;br /&gt;
* innovaphone PBX V8 and later (that is, this Service Provider runs with PBX Firmware V8 and later)&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Enhancements ===&lt;br /&gt;
; Support for V8 firmware [[Reference8:Administration/PBX/Objects#Devices | devices]] : Each user object device is represented as a TAPI line (all sharing an identical address, the objects extension a.k.a. &#039;&#039;Number&#039;&#039; property).  This now allows to select individual registration devices when multiple devices are registered with the same PBX.  Please note that in V8, [[ Reference8:Administration/PBX/Objects/Edit_Forks | mobility devices ]] are not shown and thus not represented by  TAPI line device.  This was introduced in V9 only.&lt;br /&gt;
; Support for presence based lines :  These are TAPI lines shown which reflect the users presence state.  Presence state &#039;&#039;open&#039;&#039; is mapped to a TAPI device status &#039;&#039;in service&#039;&#039;.  Presence activity &#039;&#039;on-the-phone&#039;&#039; is mapped to a virtual call in state &#039;&#039;connected&#039;&#039;.&lt;br /&gt;
: &#039;&#039;&#039;NB&#039;&#039;&#039;: V8 PBX Firmware did set presence activity &#039;&#039;on-the-phone&#039;&#039; for each user object having a call.  Unfortunately, as this does create performance issues, this behaviour has been removed from V9 PBX Firmware.  The &#039;&#039;presence line&#039;&#039; feature may be useless with V9 PBX when the application did rely on this particular V8 PBX behaviour.&lt;br /&gt;
&lt;br /&gt;
===System Requirements===&lt;br /&gt;
The TSP will install on any Windows 32bit and x64 platform down to Windows XP/Server 2003.  For older systems, you must use a deprecated [[Reference7:TAPI_Service_Provider | previous TSP version]].  For systems running PBX firmware version 6 or earlier, you must use the even older [[Reference:TAPI_Service_Provider | version 5 based TSP]].  Note that there is no x64 version of the version 5 TSP!&lt;br /&gt;
&lt;br /&gt;
The TSP needs to maintain parallel connections to each individual PBX in the system.  For larger systems (i.e. systems with a huge number of PBXs), this may create substantial load to the underlying windows machine.  The number of parallel activities scheduled by the TSP is thus limited as a function of the available main memory and number of processors.  In particular, a maximum of 20 activities per available processor is allowed (up to build 8088, the limit is 60/processor for later builds).  If this limit is exceeded, the TSP will issue performance warnings of class WARNINGS in the TSP log file and system TAPI performance will be poor.  Use a more capable machine then.&lt;br /&gt;
&lt;br /&gt;
Microsoft Windows operating system version for desktop clients (as opposed to server systems) limit the number and performance of TCP/IP connections.  This may lead to bad performance or occasional request failures.  We generally recommend to use server operating systems for 3rd party TAPI installations thus.&lt;br /&gt;
&lt;br /&gt;
No special PBX licenses are required to use the innovaphone TSP.&lt;br /&gt;
&lt;br /&gt;
=== Download === &lt;br /&gt;
The TSP will be available on the tab &#039;&#039;Software&#039;&#039; in the [https://store.innovaphone.com/ Store].&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
Windows cannot run a Win32 TSP on an x64 platform (although it can run Win32 applications on such platforms).  This is why there are 2 versions of the setup, the x64 installer (&amp;lt;code&amp;gt;setup64-release.msi&amp;lt;/code&amp;gt;) and the Win32 installer (&amp;lt;code&amp;gt;setup32-release.msi&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;release&#039;&#039; setup packages provided will install the retail version.  This is recommended for production purposes but provides no debug options whatsoever.  To track down possible problems, support may instruct you to install the debug version.  &lt;br /&gt;
&lt;br /&gt;
The TSP may be installed on each machine where a desired TAPI based&lt;br /&gt;
application is to be run.  If for example, Outlook is to be used, then&lt;br /&gt;
each client PC running Outlook may have the TSP installed.  Although&lt;br /&gt;
this is typical for a 1st party configuration, all clients may have full&lt;br /&gt;
3rd party functionality, that is, they may control all existing lines.&lt;br /&gt;
&lt;br /&gt;
As an alternative, the TSP can be installed on a single machine and a&lt;br /&gt;
3rd party TAPI server product (such as the IXI-Call Server available as&lt;br /&gt;
a separate product) may be used to provide the network clients with a&lt;br /&gt;
TAPI interface.  Also, Microsoft’s Remote TAPI Server should work but is not being tested, so you use it on your own risk.&lt;br /&gt;
&lt;br /&gt;
To install, &lt;br /&gt;
* select and download the &amp;lt;code&amp;gt;setup32-release.msi&amp;lt;/code&amp;gt; install packages on 32bit platforms or the &amp;lt;code&amp;gt;setup64-release.msi&amp;lt;/code&amp;gt; install package on 64bit platforms.&lt;br /&gt;
* double-click the install package to launch the installer&lt;br /&gt;
[[Image:Unified Win32 and x64 TAPI Service Provider - zipcontent.png]]&lt;br /&gt;
* accept the license agreement&lt;br /&gt;
* select the target folder&lt;br /&gt;
* complete the installer&lt;br /&gt;
&lt;br /&gt;
When the installer has copied all files to the target machine, you need to add the TSP to the machine&#039;s TAPI system&lt;br /&gt;
* open the &#039;&#039;Telephone and Modem&#039;&#039; control panel&lt;br /&gt;
* Switch to the rightmost tab (&#039;&#039;Extras&#039;&#039;)&lt;br /&gt;
* Click on the &#039;&#039;Add...&#039;&#039; button&lt;br /&gt;
[[Image:Unified Win32 and x64 TAPI Service Provider - Control Panel Add.png]]&lt;br /&gt;
* Select the innovaphone TAPI provider driver&lt;br /&gt;
* Fill out the configuration dialogue&lt;br /&gt;
* Install the provider by clicking &#039;&#039;OK&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== File Organization ====&lt;br /&gt;
Windows forces all TAPI service provider files to reside in Windows&#039; &#039;&#039;System Folder&#039;&#039;.  This is the &amp;lt;code&amp;gt;system32&amp;lt;/code&amp;gt; folder in your windows install directory (usually &amp;lt;code&amp;gt;C:\windows\system32&amp;lt;/code&amp;gt;), even if you are running an x64 platform!  The installer will thus copy these files (&amp;lt;code&amp;gt;tsp8.tsp&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;tsp8UI.dll&amp;lt;/code&amp;gt;) in to this directory.  All other files however will be copied to the &amp;lt;code&amp;gt;innovaphone AG\innovaphone® PBX V8 TAPI Service Provider&amp;lt;/code&amp;gt; folder underneath your systems &#039;&#039;Program Files Folder&#039;&#039;.  &lt;br /&gt;
&lt;br /&gt;
The subdirectories &amp;lt;code&amp;gt;Debug&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Logs&amp;lt;/code&amp;gt; are created.  &amp;lt;code&amp;gt;Debug&amp;lt;/code&amp;gt; contains the driver&#039;s debug version, &amp;lt;code&amp;gt;Logs&amp;lt;/code&amp;gt; will receive the log files when a debug version is used.&lt;br /&gt;
&lt;br /&gt;
On x64 platform systems, the Win32 version of the configuration DLL (&amp;lt;code&amp;gt;tsp8UI.dll&amp;lt;/code&amp;gt;) will be installed to the windows &#039;&#039;Windows on Windows64 System Folder&#039;&#039; (&amp;lt;code&amp;gt;SysWOW64&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
====Upgrading to a newer Version====&lt;br /&gt;
When you attempt to upgrade the TSP from a previous version, the Windows&lt;br /&gt;
installer will first remove any previous installation.  When the new&lt;br /&gt;
software is installed then, the TSP will be installed again into the&lt;br /&gt;
TAPI system.  &lt;br /&gt;
&lt;br /&gt;
There is no need to remove the driver from the &#039;&#039;Telephone and Modem Control Panel&#039;&#039;, as this would make you loose your driver configuration.&lt;br /&gt;
&lt;br /&gt;
====Upgrading from the old Win32-only Version====&lt;br /&gt;
If you upgrade from the older Win32-only versions of the TSP (soap-appl/tapi/7.00 or soap-appl/tapi/5.00), you must first remove the old TSP from &#039;&#039;telephone and modem&#039;&#039; control panel and uninstall the old product from the &#039;&#039;Software&#039;&#039; (or &#039;&#039;Programs and Functions&#039;&#039;) control panel.&lt;br /&gt;
&lt;br /&gt;
When you upgrade from the old V7 64-bit TSP (soap-appl/tapi/7.00-64), you should first update this older version to the latest build available.&lt;br /&gt;
&lt;br /&gt;
This procedure ensures that during the upgrade your TAPI lines retain their internal identifiers and thus their meaning in your TAPI application&#039;s configuration.&lt;br /&gt;
&lt;br /&gt;
==== Uninstalling the TSP ====&lt;br /&gt;
To uninstall the TSP proceed as follows&lt;br /&gt;
* Remove the TAPI driver from the TAPI system using &#039;&#039;Telephony and Modem Control Panel&#039;&#039;&lt;br /&gt;
* close &#039;&#039;Telephony and Modem Control Panel&#039;&#039;&lt;br /&gt;
* shut down windows telephony service. This can be done from the Windows &#039;&#039;Service Control Panel&#039;&#039; or by invoking &amp;lt;code&amp;gt;net stop tapisrv&amp;lt;/code&amp;gt; from a command prompt&lt;br /&gt;
* remove the installation using windows &#039;&#039;Programs Control Panel&#039;&#039; or by invoking the original .msi again&lt;br /&gt;
&lt;br /&gt;
You will notice that Windows may fail to remove the driver files from the &#039;&#039;Windows System Directory&#039;&#039;.  To clean up remove &amp;lt;code&amp;gt;tsp8.tsp&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;tsp8UI.dll&amp;lt;/code&amp;gt; from the &amp;lt;code&amp;gt;system32&amp;lt;/code&amp;gt; folder as well as - on x64 systems - from the &amp;lt;code&amp;gt;SysWOW64&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
Also, if you did file tracing, any remaining debug files in the &amp;lt;code&amp;gt;Logs&amp;lt;/code&amp;gt; folder are left over and need to be removed manually.&lt;br /&gt;
&lt;br /&gt;
The TSP will create some entries in the windows registry which will not be removed on uninstall.  It is recommended to leave these entries as is.  Only if you are sure you will never install the TSP again on this system or you are sure you will never use it with the PBX installation you used so far, you may want to delete them from the registry.&lt;br /&gt;
&lt;br /&gt;
==== Rolling out First Party TSPs to multiple PCs ====&lt;br /&gt;
Normally, when multiple users require CTI and hence TAPI functionality, the best way is to use a server based, multi-client 3rd party CTI application.  This will share all functions among all client PCs.  If this is not an option, e.g. because the TAPI application in use does not support it, you may want to consider using Microsoft&#039;s TAPI Server and remote TSP.  See Microsoft&#039;s [http://technet.microsoft.com/en-us/library/cc786297%28v=ws.10%29.aspx Telephony service providers overview] and [http://technet.microsoft.com/en-us/library/cc770373.aspx Manage Telephony Servers] documents.  &lt;br /&gt;
&lt;br /&gt;
If you still want to use the native innovaphone TSP on a number of PCs (instead of once on a server), you can roll out the TSP using some of the [http://support.microsoft.com/kb/816102/EN-US software deployment schemes Microsoft Server provide].  In such a case, you will likely want to deploy identical configurations to all these PCs. While this theoretically can be done by distributing registry settings, there will be a problem with the PBX access credentials.  These are stored in encrypted format in the registry and can only be decrypted on the PC on which they have been set.  That is, deploying such registry settings to other PCs will result in a non-functional setup.&lt;br /&gt;
&lt;br /&gt;
To work around this problem, you may store the credentials in clear text in the registry.  To do so, you would put the &#039;&#039;Password&#039;&#039; in a REG_SZ value named &amp;lt;code&amp;gt;admin1-free&amp;lt;/code&amp;gt; and the &#039;&#039;Account&#039;&#039; into a REG_SZ value named &amp;lt;code&amp;gt;admin2-free&amp;lt;/code&amp;gt;.  If such a value is found in the proper place in the registry, the values configured using the telephony control panel are ignored.  &lt;br /&gt;
&lt;br /&gt;
[[Image:TAPI Service Provider-tsp8-nocrypt.png]]&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Keep in mind that having credentials in clear in the registry presents a security risk!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This feature is available in build 8079 and later.&lt;br /&gt;
&lt;br /&gt;
=== Upgrade from Build 8164 or earlier ===&lt;br /&gt;
From build 8165, the TAPI configuration has been moved to a different registry location.  This has been done because latest windows versions (namely, Windows 10) do not allow the TSP to access registry information in the location used so far (&amp;lt;code&amp;gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Telephony\innovaphone® PBX V8 TAPI Service Provider&amp;lt;/code&amp;gt;).   To work around this issue, it is now stored in &amp;lt;code&amp;gt;HKEY_LOCAL_MACHINE\SOFTWARE\innovaphone\innovaphone® PBX V8 TAPI Service Provider&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The TSP configuration dialogue however runs with user privileges (as opposed to the TSP which runs with limited service privileges). It can therefore read the old configuration information and copy it to the new location.  From build 8165, the configuration dialogue will thus copy any old configuration information to the new location when it is opened.  When you upgrade an existing installation and open the configuration dialogue, you will see no change.  However, when the configuration is saved, it is then present in the new location.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;To upgrade an installation from build 8164 or earlier (that is TAPI &#039;V8 TAPI Service Provider (32 and 64bit) - hotfix14&#039;&#039; available in the &#039;&#039;V8 applications hotfix20&#039;&#039; package or earlier), proceed as follows:&#039;&#039;&#039;&lt;br /&gt;
* stop the telephony service (e.g. &amp;lt;code&amp;gt;net stop tapisrv&amp;lt;/code&amp;gt;)&lt;br /&gt;
* install the new TSP&lt;br /&gt;
* open the TSP configuration dialogue&lt;br /&gt;
* verify the configuration data&lt;br /&gt;
* save the configuration&lt;br /&gt;
* (re) start your TAPI application&lt;br /&gt;
&lt;br /&gt;
If you fail to migrate the configuration as described, the TSP will start, but not work!&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
The TSP configuration dialogue looks like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Unified Win32 and x64 TAPI Service Provider - Config UI.png]]&lt;br /&gt;
&lt;br /&gt;
* The &#039;&#039;VERIFY&#039;&#039; button will verify the configuration.  Note that the &#039;&#039;Username&#039;&#039; drop down list will only be populated after a successful verify. &lt;br /&gt;
* The &#039;&#039;OK&#039;&#039; button will save the configuration.&lt;br /&gt;
* The &#039;&#039;CANCEL&#039;&#039; button will quit the configuration without saving any changes.  If it is the initial configuration while you add the TSP via the telephone and modem control panel, the TSP will not be added &lt;br /&gt;
&lt;br /&gt;
TAPI talks to the PBX using [[Reference7:SOAP_API | SOAP ]] which in turn uses HTTP for communication.  Both secure (https) and non-secure (http) communication is supported.  In any case, HTTP basic authentication is used.  &lt;br /&gt;
To be able to connect to the PBX, the TSP needs to know proper credentials to use during HTTP authentication. These are referred to as &#039;&#039;PBX Account&#039;&#039; and &#039;&#039;PBX Password&#039;&#039;.  Also, a suitable &#039;&#039;TAPI User&#039;&#039; must be selected.&lt;br /&gt;
&lt;br /&gt;
==== Controlling the Line Devices handled by TAPI ====&lt;br /&gt;
&lt;br /&gt;
TAPI connects to your PBX as a PBX user referred to as &#039;&#039;TAPI User&#039;&#039;.  It will see all PBX objects that are members of groups in which the &#039;&#039;TAPI User&#039;&#039; is an active member.  If the &#039;&#039;TAPI User&#039;&#039; is not an active member in any group, TAPI will see the &#039;&#039;TAPI User&#039;&#039; object only. This may be useful in a [http://en.wikipedia.org/wiki/Telephony_Application_Programming_Interface 1st party TAPI scenario].  PBX objects are represented as TAPI lines.  &lt;br /&gt;
&lt;br /&gt;
The PBX object you use as &#039;&#039;TAPI User&#039;&#039; needs to have at least &#039;&#039;Viewing only&#039;&#039; [[Reference:Administration/PBX/Objects/Edit Rights | PBX user rights]].  Its &#039;&#039;Long Name&#039;&#039; property is used as &#039;&#039;TAPI User Username&#039;&#039;, its &#039;&#039;Name&#039;&#039; property as &#039;&#039;PBX Account&#039;&#039; and the password as &#039;&#039;PBX Password&#039;&#039;.  This is why the PBX object used as &#039;&#039;TAPI User&#039;&#039; must have a password configured. &lt;br /&gt;
&lt;br /&gt;
===== 1st Party Configuration =====&lt;br /&gt;
In a 1st party scenario, the TSP will only work on a single PBX object.  This will typically be a user&#039;s phone and thus the user itself will be used as the &#039;&#039;TAPI User&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
[[Image:Unified Win32 and x64 TAPI Service Provider - FirstParty.png ]]&lt;br /&gt;
&lt;br /&gt;
In such a configuration the TSP is typically installed on the users PC and the CTI software is accessing TAPI directly (such as e.g. Microsoft Outlook does).   &lt;br /&gt;
&lt;br /&gt;
The TSP configuration dialogue will check for the number of lines seen.  If it is only one, then it will issue a warning message:&lt;br /&gt;
&lt;br /&gt;
[[Image:Unified Win32 and x64 TAPI Service Provider - OnlyOne.png]]&lt;br /&gt;
&lt;br /&gt;
This is because 3rd party configurations are much more common and this situation often indicates a configuration problem.  In a first party configuration, you can safely ignore this message. &lt;br /&gt;
&lt;br /&gt;
===== 3rd Party Configuration =====&lt;br /&gt;
In a 3rd party configuration, the TSP will work with multiple PBX objects.  &lt;br /&gt;
&lt;br /&gt;
[[Image:Unified Win32 and x64 TAPI Service Provider - ThirdParty.png]]&lt;br /&gt;
&lt;br /&gt;
Typically, you will share a single TSP instance on a server system for use by several users on their desktop PCs.  This is done by virtue of a &#039;&#039;TAPI Server&#039;&#039;.  There are various TAPI server products available on the market, including but not limit to the Estos ProCall product and the remote TAPI server included in Microsoft Windows server operating systems.  &lt;br /&gt;
&lt;br /&gt;
In this scenario, it is recommended to create a pseudo PBX user object for use as the &#039;&#039;TAPI User&#039;&#039;.  This pseudo user is often called &amp;lt;code&amp;gt;_TAPI_&amp;lt;/code&amp;gt;.  You would create a dedicated group to control the list of PBX objects the TSP creates a line device for.  This group is often called &amp;lt;code&amp;gt;tapi&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Selective Call Forwards ====&lt;br /&gt;
Many CTI applications support distinct call forwards for internal and/or external calls.  The TSP will translate such requests to a call forward on the PBX which has the [[Reference7:Administration/PBX/Objects/Edit_CFs | &#039;&#039;Only&#039;&#039; or &#039;&#039;Only not&#039;&#039; property]] set to the number of the trunk line.  For this to work, it needs to know this number.  To know the number, the trunk line PBX object must be seen by the TSP (see above).  If this is not the case, the TSP configuration dialogue will issue a warning:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Unified Win32 and x64 TAPI Service Provider - NoTrunk.png]]&lt;br /&gt;
&lt;br /&gt;
In a vanilla first party scenario, this is obviously not the case.  If you don&#039;t care, you can safely ignore this issue.  Attempts to set such call forward will be rejected then as &#039;&#039;operation unavailable&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
In a Master/Slave PBX scenario where there is no Trunk Line object on the Master PBX, but only on the Slave PBXs, a workaround is required to suppress the warning and enable selective call forwarding on the Slave PBXs. In this case, create a dummy &amp;quot;Trunk Line&amp;quot; object on the Master PBX with the same extension number used by the &amp;quot;Trunk Line&amp;quot; objects on the Slave PBXs (usually 0).&lt;br /&gt;
&lt;br /&gt;
==== Multi Site Configuration ====&lt;br /&gt;
In a system with multiple PBXs, the TSP needs to connect to each of the individual PBXs.  &lt;br /&gt;
&lt;br /&gt;
[[Image:Unified Win32 and x64 TAPI Service Provider - MultiSite.png]]&lt;br /&gt;
&lt;br /&gt;
In this case, you would specify your master PBX as &#039;&#039;PBX Master&#039;&#039;.  There is no need to configure the complete PBX tree to the TSP as it is determined dynamically on runtime by analysing the PBX/Node objects in the master PBX and their registration status.  If a registered PBX is found, this PBX is added to the list of active PBXs and a new connection is established.  The PBX tree is built and maintained dynamically.  A reconfiguration or restart of the TSP is not required on changes thus.&lt;br /&gt;
For this to work&lt;br /&gt;
&lt;br /&gt;
* the PBX object used as &#039;&#039;TAPI User&#039;&#039; must exist in each PBX with same properties (including name and the password). You may want to use &amp;lt;code&amp;gt;_TAPI_&amp;lt;/code&amp;gt; as &#039;&#039;Name&#039;&#039;/&#039;&#039;Long Name&#039;&#039;.  This object must be &#039;&#039;active&#039;&#039; member in a group (which you may want to call &amp;lt;code&amp;gt;tapi&amp;lt;/code&amp;gt;).  A password must be set.  The object must have at least &#039;&#039;Viewing only&#039;&#039; rights&lt;br /&gt;
* the slave PBX-objects (or in older firmware versions the slave PBX Node-objects)  must be visible to the TSP (that is, must be non-active member of the group the &#039;&#039;TAPI User&#039;&#039; object is an active member of, e.g. &amp;lt;code&amp;gt;tapi&amp;lt;/code&amp;gt;) so that the slaves are made known to the TSP.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In a replicated scenario, you would create a &#039;&#039;TAPI user&#039;&#039; as recommended above and [[Reference8:Administration/PBX/Objects#Objects_with_empty_node_or_PBX | leave the &#039;&#039;PBX&#039;&#039; and &#039;&#039;Node&#039;&#039; properties empty ]].  This user should then be used as both &#039;&#039;PBX Account&#039;&#039; and &#039;&#039;TAPI User Username&#039;&#039; in the TAPI configuration dialog.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Further relevant settings&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
You can disable slave detection by checking &#039;&#039;Do not monitor slaves&#039;&#039; property in the TSP configuration dialogue. &lt;br /&gt;
&lt;br /&gt;
TAPI maintains an &#039;&#039;address&#039;&#039; property per line device.  This usually is the lines extension.  In a multi site configuration, the address property will be set to the &#039;&#039;Number&#039;&#039; property of the node the respective PBX object is configured in, plus the &#039;&#039;Number&#039;&#039; property of the object itself.  So if an object has &#039;&#039;Number&#039;&#039; &amp;lt;code&amp;gt;42&amp;lt;/code&amp;gt; and lives in node &amp;lt;code&amp;gt;801&amp;lt;/code&amp;gt;, then its correspondence line device will have address &amp;lt;code&amp;gt;80142&amp;lt;/code&amp;gt;.  By checking the &#039;&#039;Use pure node extensions&#039;&#039; property in the TSP configuration dialogue, you change the algorithm so that only the objects own &#039;&#039;Number&#039;&#039; is used (&amp;lt;code&amp;gt;42&amp;lt;/code&amp;gt; in our example).&lt;br /&gt;
&lt;br /&gt;
==== Standby Configurations ====&lt;br /&gt;
In a system with standby PBX for the master PBX, you need to specify the &#039;&#039;PBX Standby&#039;&#039; IP address.  This will be connected if the master is unavailable.  Note that there is no need to explicitly configure slave-standby PBXs.&lt;br /&gt;
&lt;br /&gt;
==== Working with multiple, unrelated PBXs ====&lt;br /&gt;
When working with multiple, unrelated PBXs (that is, PBXs that do &#039;&#039;not&#039;&#039; form a PBX tree as slaves and masters do), the TSP cannot derive the list of PBXs to track from the registration status.  To support such a configuration, you will need to configure the extraneous master PBXs manually using regedit.  Please note that using regedit may harm your system and may even cause inability to boot!&lt;br /&gt;
&lt;br /&gt;
To find and edit the right registry entries, proceed as follows:&lt;br /&gt;
&lt;br /&gt;
* open the key &amp;lt;code&amp;gt;HKEY_LOCAL_MACHINE\SOFTWARE\innovaphone\innovaphone® PBX V8 TAPI Service Provider&amp;lt;/code&amp;gt;&amp;lt;ref name=&amp;quot;regkey&amp;quot;/&amp;gt;&lt;br /&gt;
* open its subkey &amp;lt;code&amp;gt;Device&amp;lt;/code&amp;gt;&#039;&#039;n&#039;&#039; where &#039;&#039;n&#039;&#039; is the provider id of the installed innovaphone TSP (for builds before 8164 only)&lt;br /&gt;
* Open the &amp;lt;code&amp;gt;FQDN&amp;lt;/code&amp;gt; key and add all extra PBXs&lt;br /&gt;
* For those PBXs that have a standby PBX, add a value to the &amp;lt;code&amp;gt;StandbyFQDN&amp;lt;/code&amp;gt; key (please note: these are parallel lists.  So master and standby need to have the same respective index in the &amp;lt;code&amp;gt;FQDN&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;StandbyFQDN&amp;lt;/code&amp;gt; value lists)&lt;br /&gt;
&lt;br /&gt;
The standard configuration UI will not show these extra values.  However, it will also not touch them.  So even if you use the standard UI to edit, only the first value in the lists will be changed and the remainder left unchanged. You can thus safely use the standard UI to edit all other values.   As with multi site configurations, all PBXs need to be accessible using the same &#039;&#039;TAPI User&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Please note that this method is deprecated and will likely be removed from future versions of the TSP.  &lt;br /&gt;
&lt;br /&gt;
==== Setting the Line Device Name ====&lt;br /&gt;
The TSP will derive the line device&#039;s name from the properties of the respective PBX object.  By default the name will be the objects &#039;&#039;Long Name&#039;&#039; followed by the name of the PBX the user ought to register with in parentheses.  So if the users &#039;&#039;Long Name&#039;&#039; is &amp;lt;code&amp;gt;Foo Bar&amp;lt;/code&amp;gt; and the registration PBX is &amp;lt;code&amp;gt;branch1&amp;lt;/code&amp;gt;, the line device will be called &amp;lt;code&amp;gt;Foo Bar [branch1]&amp;lt;/code&amp;gt;.  You can specify a different pattern by changing the &#039;&#039;TAPI Line Names&#039;&#039; property of the TSP configuration dialogue.  The following replacement characters are available:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|+&lt;br /&gt;
| Meta || Replacement&lt;br /&gt;
|+&lt;br /&gt;
| %c || The objects &#039;&#039;Long Name&#039;&#039; (cn)&lt;br /&gt;
|+&lt;br /&gt;
| %C || The objects &#039;&#039;Long Name&#039;&#039; (cn) followed by the &#039;&#039;Name&#039;&#039; of the &#039;&#039;Device&#039;&#039; the line represents in braces &amp;lt;code&amp;gt;[name]&amp;lt;/code&amp;gt; if it differs from the &#039;&#039;Long Name&#039;&#039;&lt;br /&gt;
|+&lt;br /&gt;
| %d || The objects &#039;&#039;Display Name&#039;&#039; (dn)&lt;br /&gt;
|+&lt;br /&gt;
| %D || The objects &#039;&#039;Display Name&#039;&#039; (dn) followed by the &#039;&#039;Name&#039;&#039; of the &#039;&#039;Device&#039;&#039; the line represents in braces &amp;lt;code&amp;gt;[name]&amp;lt;/code&amp;gt; if it differs from the &#039;&#039;Display Name&#039;&#039;&lt;br /&gt;
|+&lt;br /&gt;
| %h || The objects &#039;&#039;Name&#039;&#039; (h323 alias)&lt;br /&gt;
|+&lt;br /&gt;
| %H || The objects &#039;&#039;Name&#039;&#039; (h323 alias) followed by the &#039;&#039;Name&#039;&#039; of the &#039;&#039;Device&#039;&#039; the line represents in braces &amp;lt;code&amp;gt;[name]&amp;lt;/code&amp;gt; if it differs from the &#039;&#039;Name&#039;&#039;&lt;br /&gt;
|+&lt;br /&gt;
| %t || The &#039;&#039;Name&#039;&#039; of the &#039;&#039;Device&#039;&#039; the line represents&lt;br /&gt;
|+&lt;br /&gt;
| %T || The &#039;&#039;Hardware Id&#039;&#039; of the &#039;&#039;Device&#039;&#039; the line represents (from build 8181)&lt;br /&gt;
|+&lt;br /&gt;
| %e || The objects extension (e164)&lt;br /&gt;
|+&lt;br /&gt;
| %E || The objects extension (e164) prefixed with the objects node number&lt;br /&gt;
|+&lt;br /&gt;
| %N || The line address as reported to TAPI&lt;br /&gt;
|+&lt;br /&gt;
| %n || host name (of master pbx)&lt;br /&gt;
|+&lt;br /&gt;
| %p || &#039;&#039;&#039;:&#039;&#039;&#039;&#039;&#039;port-number&#039;&#039; (of master pbx&#039;s http access, empty if 80)&lt;br /&gt;
|+&lt;br /&gt;
| %P || raw port number of master pbx&lt;br /&gt;
|+&lt;br /&gt;
| %u || url-like user name (&#039;&#039;&#039;&#039;&#039;user&#039;&#039;@&#039;&#039;host&#039;&#039;&#039;&#039;&#039;)&lt;br /&gt;
|+&lt;br /&gt;
| %U || user url as per draft-levin-iptel-h323-url-scheme-04 (&#039;&#039;&#039;h323:://&#039;&#039;user&#039;&#039;@&#039;&#039;host&#039;&#039;:&#039;&#039;port&#039;&#039;&#039;&#039;&#039;)&lt;br /&gt;
|+&lt;br /&gt;
| %X || the PBX name the user is registered with (note that using this pattern may result in a change of the name when a standby situation occurs)&lt;br /&gt;
|+&lt;br /&gt;
| %x || the PBX name the user is reported by (note that using this pattern may result in a change of the name when the users &#039;&#039;PBX&#039;&#039; attribute changes)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The default pattern is &amp;lt;code&amp;gt;%C (%x)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- rufumleitung, extern, intern, amtsleitung, vom amt, zum amt --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Miscellaneous Flags ====&lt;br /&gt;
; Show full E164 Numbers : when set, the TSP will announce the full calling number from the root when indicated by the PBX in the TAPI &#039;&#039;calling party name&#039;&#039; attribute.  The number will be appended to the calling name with a &amp;lt;code&amp;gt;@&amp;lt;/code&amp;gt;.&lt;br /&gt;
; Do not show parked Calls : will hide parked calls from the TAPI application (as some get confused and don&#039;t know how to handle them)&lt;br /&gt;
; Map PBX Devices to Lines : if set, the TSP will create one TAPI line for each individual [[Reference9:PBX/Objects#Devices|PBX device]] configured in a user object.  See [[#Enhancements]] above.  If you do not set this flag, see [[Support:How should TAPI line device be registered?]]&lt;br /&gt;
; Map Presence Status to TAPI Lines : if set, the TSP will create one extra TAPI line for each PBX device object.  See [[#Enhancements]] above.&lt;br /&gt;
; No special Disconnect Behaviour : normally, lines monitored by TAPI will behave slightly different when a call is terminated.  With no TAPI on the line, the call will be disconnected immediately (from a PBX point of view).  In cases where the phone would play some tones after termination of the call (e.g. a busy tone when the call has never been connected to the far end), this state is simulated by the phone and not visible to TAPI.  Therefore, it is not possible to use TAPI functions on this call any more (as it in reality does not exist any more).  When this flag is set, monitored lines will not be treated specially.  Available from hotfix 6. To prevent the IP-Phone to play any tones after the call is disconnected, the phone preferences option &#039;&#039;&#039;Go onhook if final call is released by remote side even if handset is lifted&#039;&#039;&#039; can be activated. This is the feature of the IP-Phone is useful in a e.g. call center at agent phones and can be configured here [[Reference11r1:Phone/Preferences]].&lt;br /&gt;
: To prevent an innovaphone IP-Phone from playing any tones after a call is disconnected, the phone preferences option &#039;&#039;&#039;Go onhook if final call is released by remote side even if handset is lifted&#039;&#039;&#039; can be activated. This feature is useful for agent phones in a call center for example and can be configured in [[Reference11r1:Phone/Preferences]]&lt;br /&gt;
&lt;br /&gt;
===Trouble Shooting===&lt;br /&gt;
The TSP will (from build 8095) write messages of type INFO (&#039;&#039;informational messages&#039;&#039;) or WARNING (&#039;&#039;Warnings/Errors&#039;&#039;) to the windows event log. Such events are always logged to the application log and event source is the provider name (&#039;&#039;innovaphone® PBX V8 TAPI Service Provider&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
==== Turning on Debugging ====&lt;br /&gt;
There are 2 versions of the TSP, debug and retail, which are both copied to the machine during setup.  The retail version is installed into the system directories, whereas the debug version is stored in a separate directory.  This is available through a short cut in the Start menu.&lt;br /&gt;
&lt;br /&gt;
The TSP can produce a number of debugging messages which can be helpful to debug issues (in both &#039;&#039;retail&#039;&#039; and &#039;&#039;debug&#039;&#039; builds).  By default, debug messages are written to the systems debug buffer mechanism (using OutputDebugString()).  Such messages can be examined using standard debugging tools, such as for example &amp;lt;code&amp;gt;dbgview&amp;lt;/code&amp;gt; which is [http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx available from Microsoft]. &lt;br /&gt;
&lt;br /&gt;
Debug messages have a class associated with it and the amount of messages written can be controlled by enabling or disabling specific classes.  This is done by setting a bitmask in the registry value &amp;lt;code&amp;gt;TraceLevel&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;HKEY_LOCAL_MACHINE\SOFTWARE\innovaphone\innovaphone® PBX V8 TAPI Service Provider&amp;lt;/code&amp;gt;&amp;lt;ref name=&amp;quot;regkey&amp;quot;/&amp;gt; key. &lt;br /&gt;
&lt;br /&gt;
The easiest way to set the TSP&#039;s debug level is with the &#039;&#039;TSP Control&#039;&#039; utility (&#039;&#039;tsptray.exe&#039;&#039;) which is installed with the TSP.&lt;br /&gt;
&lt;br /&gt;
The available classes include&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Bit in &amp;lt;code&amp;gt;TraceLevel&amp;lt;/code&amp;gt; || Class &lt;br /&gt;
|-&lt;br /&gt;
| 0x00000001 || Minimum tracing &lt;br /&gt;
|-&lt;br /&gt;
| 0x00000002 || TAPI api traces &lt;br /&gt;
|-&lt;br /&gt;
| 0x00000020 || Basic telephony object creation/destruction  &lt;br /&gt;
|-&lt;br /&gt;
| 0x00000040 || Thread creation/destruction &lt;br /&gt;
|-&lt;br /&gt;
| 0x00000080 || Request creation/destruction &lt;br /&gt;
|-&lt;br /&gt;
| 0x00000100 || call related messages &lt;br /&gt;
|-&lt;br /&gt;
| 0x00000200 || Call id map &lt;br /&gt;
|-&lt;br /&gt;
| 0x00000400 || Warnings/Errors &lt;br /&gt;
|-&lt;br /&gt;
| 0x00000800 || Worker thread execution &lt;br /&gt;
|-&lt;br /&gt;
| 0x00001000 || Full lock/unlock notifications &lt;br /&gt;
|-&lt;br /&gt;
| 0x00002000 || Win32 Critical section create/destroy &lt;br /&gt;
|-&lt;br /&gt;
| 0x00004000 || Agent proxy support &lt;br /&gt;
|-&lt;br /&gt;
| 0x00008000 || constructor/destructor debug &lt;br /&gt;
|-&lt;br /&gt;
| 0x00010000 || development debugs &lt;br /&gt;
|-&lt;br /&gt;
| 0x00100000 || verbose debugging  &lt;br /&gt;
|-&lt;br /&gt;
| 0x00200000 || SOAP trace &lt;br /&gt;
|-&lt;br /&gt;
| 0x00400000 || SOAP message dumps &lt;br /&gt;
|-&lt;br /&gt;
| 0x01000000 || ATL debug &lt;br /&gt;
|-&lt;br /&gt;
| 0x02000000 || line related messages &lt;br /&gt;
|-&lt;br /&gt;
| 0x04000000 || informational messages &lt;br /&gt;
|-&lt;br /&gt;
| 0x10000000 || dump call infos &lt;br /&gt;
|-&lt;br /&gt;
| 0x20000000 || dump PBX infos &lt;br /&gt;
|-&lt;br /&gt;
| 0x80000000 || output log messages to file &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If &amp;lt;code&amp;gt;TraceLevel&amp;lt;/code&amp;gt; is not set, it defaults to (hex) &amp;lt;code&amp;gt;04000400&amp;lt;/code&amp;gt; in retail builds and to (hex) FFFFFFFF in debug builds.  A nice value to use is (hex) &amp;lt;code&amp;gt;92200580&amp;lt;/code&amp;gt;.  The &amp;lt;code&amp;gt;TraceLevel&amp;lt;/code&amp;gt; can be changed during runtime of the provider (it may take up to 10 seconds though for the setting to take effect).  In normal scenarios there is no need to install the debug version.&lt;br /&gt;
&lt;br /&gt;
Both &#039;&#039;informational messages&#039;&#039; and &#039;&#039;Warnings/Errors&#039;&#039; are always turned on (from build 8095).&lt;br /&gt;
&lt;br /&gt;
: A problem has been reported on Server 2008 x64 systems which may also apply to others.  On such systems, the value of &amp;lt;code&amp;gt;TraceLevel&amp;lt;/code&amp;gt; may be reset to its default every 10 seconds.  A workaround is to change the account the Telephony service is running in from its default (usually &#039;&#039;Network Service&#039;&#039;) to e.g. &#039;&#039;Local System&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===== Crash Dumps =====&lt;br /&gt;
From build 8063 the TSP will write crash dumps to the log directory (usually something like &amp;lt;code&amp;gt;C:\Program Files\innovaphone AG\innovaphone® PBX V8 TSP\Logs&amp;lt;/code&amp;gt;) in case of a trap.  In release installs, these are not very useful. For debug builds though, they include helfpul information.  Please provide these files (the can be zipped to a great extent) to support if requested. A crash dump file will be called something like &amp;lt;code&amp;gt;TSP8&amp;lt;i&amp;gt;build&amp;lt;/i&amp;gt;-&amp;lt;i&amp;gt;hour&amp;lt;/i&amp;gt;#&amp;lt;i&amp;gt;minute&amp;lt;/i&amp;gt;-&amp;lt;i&amp;gt;day&amp;lt;/i&amp;gt;.&amp;lt;i&amp;gt;month&amp;lt;/i&amp;gt;#&amp;lt;i&amp;gt;seqnr&amp;lt;/i&amp;gt;.dmp&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===== Forcing a Crash Dump =====&lt;br /&gt;
In rare cases, it may be useful to force a TAPI crash for debug reasons.  This can be done by issueing a &amp;lt;code&amp;gt;lineMakeCall&amp;lt;/code&amp;gt; with called number &amp;lt;code&amp;gt;0815&amp;lt;/code&amp;gt;, called-subaddress &amp;lt;code&amp;gt;4711&amp;lt;/code&amp;gt; and called-name &amp;lt;code&amp;gt;!crash!&amp;lt;/code&amp;gt; or simply calling &amp;lt;code&amp;gt;0815|4711^!crash!&amp;lt;/code&amp;gt; from phone.exe.&lt;br /&gt;
&lt;br /&gt;
==== Saving Log Messages to a File ====&lt;br /&gt;
The &amp;lt;code&amp;gt;0x80000000&amp;lt;/code&amp;gt; value is special, as it does not denote a message class.  Instead, it turns on log file writing, both in retail and debug versions.  For this to work, the registry value &amp;lt;code&amp;gt;DoTraceFile&amp;lt;/code&amp;gt; must be set to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;HKEY_LOCAL_MACHINE\SOFTWARE\innovaphone\innovaphone® PBX V8 TAPI Service Provider&amp;lt;/code&amp;gt;&amp;lt;ref name=&amp;quot;regkey&amp;quot;/&amp;gt; when the TSP starts.  If this value is not present, it defaults to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; in both retail and debug builds.  Setting it to 0 disables log file writing regardless of any other setting.  This may save some CPU cycles for installations with a real large number of lines.&lt;br /&gt;
&lt;br /&gt;
The TSP will keep 24 log files (a days worth) by default.   This value can be changed using the &amp;lt;code&amp;gt;NumLogFiles&amp;lt;/code&amp;gt; value in &amp;lt;code&amp;gt;HKEY_LOCAL_MACHINE\SOFTWARE\innovaphone\innovaphone® PBX V8 TAPI Service Provider&amp;lt;/code&amp;gt;&amp;lt;ref name=&amp;quot;regkey&amp;quot;/&amp;gt;.  Older log files will be removed.  Also, when the TSP shuts down, it by default will remove all log files it created so far.  However, any TSP will only remove log files created by itself.  This ensures that if the TSP or the system terminates prematurely, the log files will be kept even if a new instance is started and terminated later on.  Form TSP V8 hotfix 8 on, this behaviour can be tweaked by setting the DWORD registry value &amp;lt;code&amp;gt;KeepLogFiles&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;HKEY_LOCAL_MACHINE\SOFTWARE\innovaphone\innovaphone® PBX V8 TAPI Service Provider&amp;lt;/code&amp;gt;&amp;lt;ref name=&amp;quot;regkey&amp;quot;/&amp;gt;:&lt;br /&gt;
{|&lt;br /&gt;
| 0 || default || remove all log files on termination&lt;br /&gt;
|-&lt;br /&gt;
| 1 || || keep the last &#039;&#039;n&#039;&#039; log files (depending on &amp;lt;code&amp;gt;NumLogFiles&amp;lt;/code&amp;gt;) on termination&lt;br /&gt;
|-&lt;br /&gt;
| 2 || || keep all log files&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Larger systems (500 monitored lines and more) can slow down considerably when using the debug drivers.&lt;br /&gt;
&lt;br /&gt;
==== Installing the Debug Version ====&lt;br /&gt;
To install the debug version, you first install the retail version as outlined above.  You then copy the debug driver files from the &amp;lt;code&amp;gt;Debug&amp;lt;/code&amp;gt; directory to your windows system directory &amp;lt;code&amp;gt;system32&amp;lt;/code&amp;gt;.  You may want to use the shortcut to the &amp;lt;code&amp;gt;Debug&amp;lt;/code&amp;gt; folder which has been installed to the start menu for convenience.  &lt;br /&gt;
&lt;br /&gt;
For the copy to work, proceed as follows&lt;br /&gt;
* close &#039;&#039;Telephony and Modem Control Panel&#039;&#039; if you have it open&lt;br /&gt;
* shut down windows telephony service. This can be done from the Windows &#039;&#039;Service Control Panel&#039;&#039; or by invoking &amp;lt;code&amp;gt;net stop tapisrv&amp;lt;/code&amp;gt; from a command prompt&lt;br /&gt;
* copy the debug driver files to your system directory.  On x64 systems, be sure to use a 64bit application such as &#039;&#039;Windows File Explorer for&#039;&#039; (&amp;lt;code&amp;gt;explorer.exe&amp;lt;/code&amp;gt;) for this.  Windows will silently redirect any 32bit application to the &amp;lt;code&amp;gt;SysWOW64&amp;lt;/code&amp;gt; directory when accessing &amp;lt;code&amp;gt;system32&amp;lt;/code&amp;gt;.(if the copying fails, we recommend to deactivate the telephony service. But don’t forget to reset it to automatically if you are done copying). Overwrite the existing files: &amp;lt;code&amp;gt;installer.dll, installer.pdb, TSP8.pdb, TSP8.tsp&amp;lt;/code&amp;gt;&lt;br /&gt;
* if the copy does not succeed or the debug driver is not shown n the modem control panel after, it might be that a TAPI application re-starts the windows telephony before you actually to the copy.  If so, you can set the &#039;&#039;Startup type&#039;&#039; of the Windows &#039;&#039;Telephony&#039;&#039; service to &amp;lt;code&amp;gt;Disabled&amp;lt;/code&amp;gt; instead of &#039;&#039;Manual&#039;&#039; in the services control panel (&#039;&#039;services.msc&#039;&#039;). You can then &#039;&#039;Stop&#039;&#039; the services, copy the file and finally set the services mode back to &amp;lt;code&amp;gt;Manual&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you open &#039;&#039;Telephony and Modem Control Panel&#039;&#039; again, you should notice that the TSP driver name has changed to the debug version.&lt;br /&gt;
&lt;br /&gt;
==== Switching back to the Retail Version ====&lt;br /&gt;
To go back from the debug to the release version, proceed as follows:&lt;br /&gt;
* close &#039;&#039;Telephony and Modem Control Panel&#039;&#039; if you have it open&lt;br /&gt;
* shut down windows telephony service. This can be done from the Windows &#039;&#039;Service Control Panel&#039;&#039; or by invoking &amp;lt;code&amp;gt;net stop tapisrv&amp;lt;/code&amp;gt; from a command prompt&lt;br /&gt;
* delete the debug driver files from your system directory.  On x64 systems, be sure to use a 64bit application such as &#039;&#039;Windows File Explorer for&#039;&#039; (&amp;lt;code&amp;gt;explorer.exe&amp;lt;/code&amp;gt;) for this.  Windows will silently redirect any 32bit application to the &amp;lt;code&amp;gt;SysWOW64&amp;lt;/code&amp;gt; directory when accessing &amp;lt;code&amp;gt;system32&amp;lt;/code&amp;gt;&lt;br /&gt;
* repair the installation using windows &#039;&#039;Programs Control Panel&#039;&#039; or by invoking the original .msi again&lt;br /&gt;
&lt;br /&gt;
There is no need to remove the driver from the &#039;&#039;Telephone and Modem Control Panel&#039;&#039;, as this would make you loose your driver configuration.&lt;br /&gt;
&lt;br /&gt;
Please note that simply re-installing the driver from the original .msi without removing it from the system directory will not work.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
The test applications provided with this setup comes from [http://www.julmar.com Julmar Technology Inc].&lt;br /&gt;
&lt;br /&gt;
=== Limitations ===&lt;br /&gt;
&lt;br /&gt;
Please note that there currently is a limitation to 2000 users being in&lt;br /&gt;
all active groups of a particular user.  Thus, you cannot configure more&lt;br /&gt;
than 2000 users to be handled by TAPI on a single PBX.  This is a PBX&lt;br /&gt;
limitation (and applies for all PBX groups).&lt;br /&gt;
&lt;br /&gt;
TAPI has a flat line model.  That is, all line numbers (aka&lt;br /&gt;
&#039;&#039;extensions&#039;&#039;) are considered to live in a single name space.  As a&lt;br /&gt;
result, lines with identical numbers cannot be distinguished in TAPI&lt;br /&gt;
(although they can exist).   All extensions in all nodes of a PBX&lt;br /&gt;
numbering tree are represented as TAPI lines.  When the TSP works with a&lt;br /&gt;
PBX that implements a hierarchical numbering tree, then some lines may&lt;br /&gt;
receive identical numbers (their node-local extension which may overlap&lt;br /&gt;
between nodes depending on the setting of the &#039;&#039;Use pure node extensions&#039;&#039; property).  When a TAPI application uses these numbers to initiate&lt;br /&gt;
calls to such lines, the call will work or not work depending on the&lt;br /&gt;
calling lines position in the numbering tree (that is, lines within the&lt;br /&gt;
same node as the called line will be fine, others may fail).&lt;br /&gt;
&lt;br /&gt;
The PBX&#039;s SOAP interface (on top of which the TSP is built) has no primitives to initiate a directed call pick-up based on a target number.  The TSP will reject such requests with &#039;&#039;Operation not available&#039;&#039;.  Pickup by name (which is understood as a group name) or unspecific is supported though.&lt;br /&gt;
&lt;br /&gt;
==== Citrix Environments ====&lt;br /&gt;
What happens is that all Citrix sessions share the same TAPI driver. This allows all users in the Citrix sessions to select &amp;quot;their&amp;quot; line from the set of all TAPI lines. Then everything works as desired. It is important to note that theoretically one user can select the line of another user.&lt;br /&gt;
You can use the &amp;quot;Microsoft Remote TAPI Server&amp;quot;, to implement access rights for lines for separate Citrix sessions.&lt;br /&gt;
&lt;br /&gt;
===Known Problems===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* The TSP is not tested with Microsoft’s Remote Tapi Server.  While some installation have reported this to work fine, others have encountered problems.  This scenario is not supported by innovaphone&lt;br /&gt;
* The TSP will read its configuration when it is loaded by the system.  Thus, configuration changes require a re-load of the TSP.  Unfortunately, there is no reliable way to force the system to unload the TSP, so you may have to reboot the system for changes to take effect.  See the [[ Howto:Troubleshooting_the_TAPI_service_provider | TAPI trouble shooting article ]] for details&lt;br /&gt;
* The TSP will use HTTP basic authentication to talk the PBX.  So if you disable basic authentication in the PBX&#039;s configuration, the TSP will not work.  It is recommended to use HTTPS&lt;br /&gt;
* TAPI requires the TSP to assign a unique id to each line device.  This ID must not change between re-boots of the system or between upgrades of the TSP.  This is done by keeping a persistent table in the windows registry (in the &amp;lt;code&amp;gt;leineeGUIDs&amp;lt;/code&amp;gt; subkey of &amp;lt;code&amp;gt;HKEY_LOCAL_MACHINE\SOFTWARE\innovaphone\innovaphone® PBX V8 TAPI Service Provider&amp;lt;/code&amp;gt;&amp;lt;ref name=&amp;quot;regkey&amp;quot;/&amp;gt;) that maps the PBX&#039;s line GUID to a fixed integer value (known as &#039;&#039;permanent line id&#039;&#039; in TAPI speak).  This key is retained even on uninstall.  To get rid of it, you must remove it manually&lt;br /&gt;
* Microsoft installer fails to remove driver files installed to the windows system folder.  This is why the TSP driver files are still present after an uninstall of the software.  To get rid of them, remove &amp;lt;code&amp;gt;TSP8.tsp&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;TSP8UI.dll&amp;lt;/code&amp;gt; from both &#039;&#039;%windir%&#039;&#039;&amp;lt;code&amp;gt;\system32&amp;lt;/code&amp;gt; and &#039;&#039;%windir%&#039;&#039;&amp;lt;code&amp;gt;\sysWOW64&amp;lt;/code&amp;gt;&lt;br /&gt;
* From Version 9, hotfix 1, the PBX firmware will not list objects tagged as [[Reference9:PBX/Objects#General_Object_Properties | &#039;&#039;hide from LDAP&#039;&#039; ]] in the result of a [[Reference9:Concept_SOAP_API#UserInfo.5B.5D_FindUser.28string_v501.2C_string_v700.2C_string_v800.2C_string_cn.2C_string_h323.2C_string_e164.2C_integer_count.2C_integer_next.29 | FindUser() ]] call.  As a result, such objects will not be shown in the TAPI configuration dialogue &#039;&#039;Username&#039;&#039; drop-down.  If you want to use such an object as &#039;&#039;TAPI User&#039;&#039; you can simply type in the name without selecting it from the drop down.&lt;br /&gt;
* Sometimes, setting configuration with &#039;&#039;TSP Control&#039;&#039; (not the telephone control panel dialogue) does not work due to windows&#039; &#039;&#039;User Access Control (UAC)&#039;&#039;, see [[Howto:TAPI_TSP_Control_Windows7]] for Details&lt;br /&gt;
* Various users have reported that first party TSP installations do not work reliably with Microsoft Outlook.  Symptoms reported are spurious error pop-ups from Outlook although there was no real problem.  We do not recommend first party installations anyway (see [[#Rolling_out_First_Party_TSPs_to_multiple_PCs]] for a reasoning), but these issues are related to Microsoft Outlook only.  No such problems have been reported with other first party TAPI applications. Consider using solutions like Estos ProCall instead.&lt;br /&gt;
* The number of parallel threads used within the TSP is limited to max. 60 per CPU.  As each connected PBX (amongst other things) is handled by a separate thread, if you have a large number of PBXs connected and only have a single CPU, you may run out of threads, resulting in a WARNING messages &#039;&#039;about to spawn new workerthread (n requests, m threads) -- but limit l exceeded&#039;&#039;.  This usually happens when you run the TSP on a virtualized platform such as vmWare and only dedicate a single CPU.  Ignoring this warning results in sluggish behaviour.  &lt;br /&gt;
* The TSP can work with dynamic PBXs too.  However, the TSP needs to determine the slave PBXs IP addresses from the master. If the slave is a dynamic PBX and it is hosted on the same device as the master and it is registered to the master using 127.0.0.1, the TSP will only learn the 127.0.0.1 as the slave&#039;s IP address.  Of course, connection to the slave PBX will fail then. &lt;br /&gt;
&lt;br /&gt;
==== TAPI Operation with 3rd party Phones or innovaphone Phones registered with SIP ====&lt;br /&gt;
Various TAPI functions rely on use of the [[Reference:Remote Control Facility|Remote Control Facility]] message.  This message is not supported in 3rd party phones and also not fully supported in innovaphone Phones when they are registered to the PBX using SIP.  Full TAPI functionality is thus only available for innovaphone phones registered to the PBX using H.323.&lt;br /&gt;
&lt;br /&gt;
Known Limitations:&lt;br /&gt;
* Accepting an incoming call (lineAnswer)&lt;br /&gt;
* Automatic initiation of an outgoing call in handsfree mode (instead, the calling phone first rings and starts the outgoing call upon of-hook)&lt;br /&gt;
* toggle between 2 calls active on a phone (lineSwapHold)&lt;br /&gt;
* initiation and termination of a 3PTY (lineCompleteTransfer with mode LINETRANSFERMODE_CONFERENCE, lineDrop on a conference call)&lt;br /&gt;
&lt;br /&gt;
==== TAPI on Windows8 / Server 2012 ====&lt;br /&gt;
&lt;br /&gt;
Windows8 doesn&#039;t let you disable &#039;&#039;User Access Control&#039;&#039; (UAC) completely.  This has the disadvantage that &#039;&#039;TSP Control&#039;&#039; (tsptray.exe) cannot change system registry entries, which it needs to do to e.g. change debug settings for the TSP.&lt;br /&gt;
&lt;br /&gt;
There are 2 ways around it: &lt;br /&gt;
# use the hidden &#039;&#039;Administrator&#039;&#039; account on Windows 8&lt;br /&gt;
# elevate the tsptray.exe application&lt;br /&gt;
&lt;br /&gt;
To use the elevated &#039;&#039;Administrator&#039;&#039; account on Windows 8 you first need to un-hide it:&lt;br /&gt;
* log in to an account with administrator rights  &lt;br /&gt;
* use the &#039;&#039;Windows-Key+X&#039;&#039; shortcut and select &#039;&#039;Command Prompt (Administrator)&#039;&#039; (&#039;&#039;Eingabeaufforderung (Administrator)&#039;&#039;). An elevated cmd prompt appears&lt;br /&gt;
* type &amp;lt;code&amp;gt;net user administrator /active:yes&amp;lt;/code&amp;gt;&lt;br /&gt;
* the fully elevated &#039;&#039;Administrator&#039;&#039; account is now available and you can log-in to this account as usual&lt;br /&gt;
* &#039;&#039;&#039;Please make sure the account has a password set - by default, it does not!!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To elevate the tsptray.exe application;&lt;br /&gt;
* log in to an account with administrator rights  &lt;br /&gt;
* start a windows explorer&lt;br /&gt;
* change directory to &amp;lt;code&amp;gt;C:\Program Files\innovaphone AG\innovaphone® PBX V8-x64 TSP&amp;lt;/code&amp;gt;&lt;br /&gt;
* right click on &amp;lt;code&amp;gt;tsptray.exe&amp;lt;/code&amp;gt; and open the &#039;&#039;properties&#039;&#039; (&#039;&#039;Eigenschaften&#039;&#039;) menu&lt;br /&gt;
* switch to the &#039;&#039;Compatibility&#039;&#039; (&#039;&#039;Kompatibilität&#039;&#039;) tab&lt;br /&gt;
* tick the &#039;&#039;Run as administrator&#039;&#039; (&#039;&#039;Program als Administrator ausführen&#039;&#039;) check mark&lt;br /&gt;
* save the settings&lt;br /&gt;
&lt;br /&gt;
Please note that Windows 8 will not let you run any &amp;quot;Metro App&amp;quot; in elevated mode!&lt;br /&gt;
&lt;br /&gt;
===== HTTPS ===== &lt;br /&gt;
The TSP will not be able to talk to the PBX using HTTPS with Windows8 or Server2012.  This [[Reference8:Release_Notes_TAPI_V8#3722_-_HTTPS_SOAP_connections_did_not_work_on_Windows8_.2F_Server_2012|has been fixed]] with V8 TAPI Service Provider (32 and 64bit) - hotfix10.&lt;br /&gt;
===== .Net 3.5 missing on Server 2012 =====&lt;br /&gt;
Server 2012 has no support for .Net 3.5 by default.  Even more, it cannot be installed just by downloading it.  Instead, the &#039;&#039;NetFX3 Feature&#039;&#039; needs to be enabled.  Here is how:&lt;br /&gt;
&lt;br /&gt;
 Microsoft Windows [Version 6.2.9200]&lt;br /&gt;
 (c) 2012 Microsoft Corporation. Alle Rechte vorbehalten.&lt;br /&gt;
 &lt;br /&gt;
 C:\Users\Administrator&amp;gt;dism /online /enable-feature /featurename:NetFX3 /all /Source:&#039;&#039;&amp;lt;path to windows setup, e.g. d:&amp;gt;&#039;&#039;\sources\sxs /LimitAccess&lt;br /&gt;
&lt;br /&gt;
See also&lt;br /&gt;
* [http://blogs.technet.com/b/aviraj/archive/2012/08/04/windows-8-enable-net-framework-3-5-includes-net-2-0-and-3-0-i-e-netfx3-feature-in-online-amp-offline-mode.aspx?PageIndex=2 Windows 8: Enable .NET Framework 3.5]&lt;br /&gt;
* [http://msdn.microsoft.com/en-us/library/hh506443.aspx Installing the .NET Framework 3.5 on Windows 8]&lt;br /&gt;
&lt;br /&gt;
==== TAPI dialer fails from Outlook when Lync client was/is installed ====&lt;br /&gt;
We have received reports that 1st-party TAPI dial-out from Outlook does not work anymore when a Lync client was installed.  Some users report that this phenomenon occurred only after an upgrade to Windows 8.  Reportedly, this can be [http://support.microsoft.com/kb/959625/en-us fixed by setting a registry key as outlined in Microsoft&#039;s knowledge-base].  You may want to give this a try.  However, we have not seen this issue ourselves and thus can&#039;t comment on it further.&lt;br /&gt;
&lt;br /&gt;
==== Slow Network Performance ====&lt;br /&gt;
TAPI is pretty sensitive to slow network performance.  While the TSP is multi-threaded, some internal locking must be done so that slow requests to a PBX my block other pending requests, resulting in unpleasant performance.  The TSP will create &#039;&#039;Windows Event Log&#039;&#039; entries of type &#039;&#039;slow SOAP call performance&#039;&#039; if this is detected.  You should inspect your event log regularly and resolve the reason for such network performance.&lt;br /&gt;
&lt;br /&gt;
Long PBX request round-trips may have a number of reasons:&lt;br /&gt;
&lt;br /&gt;
; slow WAN performance : of course, if the WAN is slow or unstable, bad performance is the result&lt;br /&gt;
; inappropriate QoS : SOAP is using HTTP/HTTPS.  In a QoS enabled network, call signalling and RTP may work fine, whereas HTTP/HTTPS is considered to be of no importance.  You need to keep in mind that such QoS policy may lead to bad TAPI performance, as the SOAP traffic used by the TSP (being based on HTTP/HTTPS) may be delayed.  You should assign SOAP traffic a similar priority as you do for VoIP signalling&lt;br /&gt;
; overloaded PBX : HTTP traffic is treated on a low priority level in the PBX.  If the PBX runs near to 100% CPU load, while all RTP and VoIP signalling will work well still, HTTP traffic may get severely delayed.  You should make sure your PBX runs well under 100% CPU load to get good TAPI performance.  See [[Reference:Device Health Check]] for more details&lt;br /&gt;
&lt;br /&gt;
==== TAPI on Windows 10 ====&lt;br /&gt;
In Windows 10, the TSP is not allowed any longer to read/write its own registry tree.  For this reason, it is not possible to store or read the configuration.  As a result, the TSP will not work.  To fix this, you need to modify the registry access rights so that the TSP has read/write access to &amp;lt;code&amp;gt;HKEY_LOCAL_MACHINE\SOFTWARE\innovaphone\innovaphone® PBX V8 TAPI Service Provider&amp;lt;/code&amp;gt;&amp;lt;ref name=&amp;quot;regkey&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note on windows registry paths&amp;lt;ref name=&amp;quot;regkey&amp;quot;&amp;gt;&lt;br /&gt;
Due to a change in &#039;&#039;Windows Registry Access Rights&#039;&#039; in Windows 10, from Build 8165, the configuration is stored in &lt;br /&gt;
: &amp;lt;code&amp;gt;HKEY_LOCAL_MACHINE\SOFTWARE\innovaphone\innovaphone® PBX V8 TAPI Service Provider&amp;lt;/code&amp;gt;&lt;br /&gt;
(a place that is suitable for Windows 10 too). Before, the configuration was stored in &lt;br /&gt;
: &amp;lt;code&amp;gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Telephony\innovaphone® PBX V8 TAPI Service Provider&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See [[#Upgrade_from_Build_8164_or_earlier| Upgrade from Build 8164 or_earlier ]] above for more details.&lt;br /&gt;
&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tweaks ===&lt;br /&gt;
There are a few configuration options which should be used rarely.  They can be enabled by setting an appropriate registry key.&lt;br /&gt;
&lt;br /&gt;
Since Hotfix 15 the location to set the interop tweaks has been changed to &amp;lt;code&amp;gt;HKEY_LOCAL_MACHINE\SOFTWARE\innovaphone\innovaphone® PBX V8 TAPI Service Provider&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
; ProcessorMask : REG_DWORD. If set, the TSP will use &amp;lt;code&amp;gt;SetProcessAffinityMask(GetCurrentProcess(), set)&amp;lt;/code&amp;gt; to limit TSP execution to one or more of the existing processors.  Set to &amp;lt;code&amp;gt;0xff&amp;lt;/code&amp;gt; by default.&lt;br /&gt;
&lt;br /&gt;
; LineTimeOut : REG_DWORD. Can be set to a number of seconds the TSP should wait for the determination of lines to finish (default 90). On a large PBX, or a PBX with slow slaves, the determination might not finish in the default time frame.  If this happens, TAPI applications may show &#039;&#039;Line unnamed&#039;&#039; line entries in their line list.  If this is a problem, set it to a larger value (e.g. &amp;lt;code&amp;gt;120&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
; IgnoreDevStatus : REG_DWORD. Some applications get confused if TAPI reports line to be disconnected or out-of-service dynamically.  Setting this to a non-zero value will disable any such notification.&lt;br /&gt;
&lt;br /&gt;
; ClearFwdOnSet : REG_DWORD.  If set to a non-zero value, the TSP will clear all current call forward settings before a lineForward request is executed.  This implies that all call forward settings are &#039;&#039;replaced&#039;&#039; by the new settings.  Standard behaviour is to only modify the settings, that is, replace all current settings of the same type with the settings found in the lineForward request (for example, if there is only one setting in the request that defines a CFU, then the current CFU settings are replaced by the new one provided. All others, such as e.g. CFNR settings, are left untouched).&lt;br /&gt;
&lt;br /&gt;
: Tapi spec is pretty clear on how this should work: &#039;&#039;The provider should &amp;quot;unforward everything&amp;quot; prior to setting the new forwarding instructions&#039;&#039;.  Even though, for historical reasons, ClearFwdOnSet=0 has been the default in all TAPI versions prior to V8 hotfix 6, from hotfix 6 on, the default changes to 1, as this has turned out to be the widely accepted interpretation.&lt;br /&gt;
&lt;br /&gt;
; No3PTY : REG_DWORD. See [[Reference8:TAPI_Service_Provider#Notes_on_3PTY_Conferences | Notes_on_3PTY_Conferences]] below.&lt;br /&gt;
&lt;br /&gt;
; HiddenRecordingNumber: REG_SZ. Active recording in an innovaphone PBX is implemented as an implicit 3PTY conference with the recording sink as one of the parties.  These will be shown as usual in the TAPI callstate.  However, some applications get confused as this results in a situation, where a normal endpoint (read: phone) has more than one active (i.e. &#039;&#039;not on hold&#039;&#039;) call.  To suppress such calls in the TAPI call states, you can set this tweak to the number of the recording sink as configured in the phone&#039;s recording configuration tab.  If so, any outgoing call from an endpoint that is registered with a PBX user object with a called number that equals the setting of this tweak, will be suppressed.  So if your recording sink has the number &amp;lt;code&amp;gt;44&amp;lt;/code&amp;gt;, you would set this registry value to &amp;lt;code&amp;gt;44&amp;lt;/code&amp;gt; (this is available from TAPI V8 hotfix 8). Please note that this feature actually suppresses any call info for such calls, however, it does not revert previously announced call infos.  So if the call is initiated using &#039;&#039;overlapped dialling&#039;&#039;, all call states will be shown until the called number matches the value of &amp;lt;code&amp;gt;HiddenRecordingNumber&amp;lt;/code&amp;gt; and all subsequent call states will be suppressed.  This will probably leave the call shown in &#039;&#039;dialling&#039;&#039; state.  The feature should be used for destinations which are called using &#039;&#039;block dialling&#039;&#039; only thus.  &lt;br /&gt;
&lt;br /&gt;
; SilentHold : REG_DWORD. When a call is put on hold using &amp;lt;code&amp;gt;lineHold&amp;lt;/code&amp;gt;, the held party will hear &#039;&#039;music on hold&#039;&#039; emitted by the PBX. The hold-initiator will hear a dialling tone (PBX firmware v11r2 and up, with older versions the initiator would hear &#039;&#039;music on hold&#039;&#039;).  When &amp;lt;code&amp;gt;SilentHold&amp;lt;/code&amp;gt; is set to a non-zero value, the initiating party will hear silence - i.e. no dialling tone (this is available from TAPI V8 hotfix 8).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- There are some more values in a key underneath &amp;lt;code&amp;gt;HKEY_LOCAL_MACHINE\SOFTWARE\innovaphone\innovaphone® PBX V8 TAPI Service Provider&amp;lt;/code&amp;gt;&amp;lt;ref name=&amp;quot;regkey&amp;quot;/&amp;gt; called &amp;lt;code&amp;gt;Device&amp;lt;/code&amp;gt;&#039;&#039;XX&#039;&#039;: --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; NoDuplicateConnectedCalls : REG_DWORD. If set to 1, the TSP will never show more than one call per line to be active.  Extra active calls will be shown as &#039;&#039;on-hold&#039;&#039;. The situation occurs e.g. when a user initiates a 3PTY conference on the phone.  This essentially is a bug fix for Microsoft&#039;s OCS client which forces any extra active call on-hold, thereby disturbing the 3PTY function.  If your are using [http://www.estos.de/download/software/eccg.htm ESTOS&#039; Call Control Gateway]: from version &#039;&#039;2.0.1.1474 - 05.11.2008&#039;&#039; there is a fix for this same problem available.  This option thus is deprecated.&lt;br /&gt;
&lt;br /&gt;
; UseFirstLeg2 : REG_DWORD. TAPI allows only for a single leg-2 info (redirection information in case of a call forward).  If a call is forwarded mutliple times, by default the last redirection is shown in TAPI. If &amp;lt;code&amp;gt;UseFirstLeg2&amp;lt;/code&amp;gt; is set to 1 however, the first redirection is shown.&lt;br /&gt;
&lt;br /&gt;
; UseNameForDeviceGuid : REG_DWORD. The TSP will create a TAPI line for each &#039;&#039;Device&#039;&#039; of each PBX object (if &#039;&#039;MapDevices&#039;&#039; is set).  The internal unique identifier includes the &#039;&#039;Hardware Id&#039;&#039; found in the &#039;&#039;Device&#039;&#039;.  If this changes, the TAPI line representing the &#039;&#039;Device&#039;&#039; is considered new and a new TAPI &#039;&#039;permanent line id&#039;&#039; is allocated.  This may be annoying cause when a device serial number (e.g. for a telephone) is used as &#039;&#039;Hardware Id&#039;&#039;, replacing the device creates a new TAPI line.  If &#039;&#039;UseNameForDeviceGuid&#039;&#039; is set to 1, the TSP will use the &#039;&#039;Device&#039;&#039;s &#039;&#039;Name&#039;&#039; instead (which usually not changes).  While this might be more convenient, be aware that you &#039;&#039;must&#039;&#039; make sure that no PBX object has duplicate &#039;&#039;Name&#039;&#039;s!  Otherwise, TAPI will get confused.   Available from build 8178&lt;br /&gt;
&lt;br /&gt;
; ShowConfGUID : REG_DWORD.  If set and not 0, the TSP will implicitly set each call&#039;s CallData to a string such as &amp;quot;&amp;lt;code&amp;gt;conf-guid:&amp;lt;/code&amp;gt;&#039;&#039;call-guid&#039;&#039;&amp;quot;.   &#039;&#039;call-guid&#039;&#039; is a 66-byte Unicode16 string (32 hex characters plus terminating 0). Note that this will interfere with an application&#039;s use of the lineSetCallData function (tapi.h) and is therefore disabled by default. Available from build 8190&lt;br /&gt;
&lt;br /&gt;
===List of supported TSPI functions===&lt;br /&gt;
&lt;br /&gt;
The TSP supports the following TAPI Service Provider Interface Functions.  Note that these do not map one to one with TAPI user functions. For more information, see the Microsoft TAPI documentation.&lt;br /&gt;
&lt;br /&gt;
*TSPI_lineAnswer&lt;br /&gt;
*TSPI_lineBlindTransfer&lt;br /&gt;
*TSPI_lineClose                      &lt;br /&gt;
*TSPI_lineCloseCall                  &lt;br /&gt;
*TSPI_lineCompleteTransfer&lt;br /&gt;
*TSPI_lineDevSpecific&lt;br /&gt;
*TSPI_lineDevSpecificFeature&lt;br /&gt;
*TSPI_lineDial&lt;br /&gt;
*TSPI_lineDrop  &lt;br /&gt;
*TSPI_lineForward&lt;br /&gt;
*TSPI_lineGenerateDigits                     &lt;br /&gt;
*TSPI_lineGetAddressCaps             &lt;br /&gt;
*TSPI_lineGetAddressID               &lt;br /&gt;
*TSPI_lineGetAddressStatus           &lt;br /&gt;
*TSPI_lineGetCallAddressID           &lt;br /&gt;
*TSPI_lineGetCallHubTracking&lt;br /&gt;
*TSPI_lineGetCallIDs&lt;br /&gt;
*TSPI_lineGetCallInfo                &lt;br /&gt;
*TSPI_lineGetCallStatus              &lt;br /&gt;
*TSPI_lineGetDevCaps                 &lt;br /&gt;
*TSPI_lineGetExtensionID&lt;br /&gt;
*TSPI_lineGetID                      &lt;br /&gt;
*TSPI_lineGetLineDevStatus           &lt;br /&gt;
*TSPI_lineGetNumAddressIDs&lt;br /&gt;
*TSPI_lineHold&lt;br /&gt;
*TSPI_lineMakeCall      &lt;br /&gt;
*TSPI_lineNegotiateExtVersion&lt;br /&gt;
*TSPI_lineNegotiateTSPIVersion       &lt;br /&gt;
*TSPI_lineOpen    &lt;br /&gt;
*TSPI_linePark&lt;br /&gt;
*TSPI_linePickup&lt;br /&gt;
*TSPI_lineRedirect&lt;br /&gt;
*TSPI_lineSelectExtVersion&lt;br /&gt;
*TSPI_lineSendUserUserInfo&lt;br /&gt;
*TSPI_lineSetAppSpecific             &lt;br /&gt;
*TSPI_lineSetCallData&lt;br /&gt;
*TSPI_lineSetCallHubTracking&lt;br /&gt;
*TSPI_lineSetCallParams                 &lt;br /&gt;
*TSPI_lineSetCurrentLocation         &lt;br /&gt;
*TSPI_lineSetDefaultMediaDetection   &lt;br /&gt;
*TSPI_lineSetMediaMode               &lt;br /&gt;
*TSPI_lineSetStatusMessages          &lt;br /&gt;
*TSPI_lineSetupTransfer&lt;br /&gt;
*TSPI_lineSwapHold&lt;br /&gt;
*TSPI_lineUnhold&lt;br /&gt;
*TSPI_lineUnpark&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*TSPI_providerConfig                 &lt;br /&gt;
*TSPI_providerCreateLineDevice&lt;br /&gt;
*TSPI_providerEnumDevices            &lt;br /&gt;
*TSPI_providerGenericDialogData&lt;br /&gt;
*TSPI_providerInit                   &lt;br /&gt;
*TSPI_providerInstall                &lt;br /&gt;
*TSPI_providerRemove                 &lt;br /&gt;
*TSPI_providerShutdown               &lt;br /&gt;
*TSPI_providerUIIdentify     &lt;br /&gt;
=====Notes on Consultation Calls=====        &lt;br /&gt;
This TSP supports the &amp;lt;code&amp;gt;lineSetupTransfer&amp;lt;/code&amp;gt; function.  However, strictly speaking, this function is not needed and should not be used.  It is merely intended for applications which do not offer a consultation call interface to the user when this function is not available.  Instead, &amp;lt;code&amp;gt;TSPI_lineMakeCall&amp;lt;/code&amp;gt; can be used where &amp;lt;code&amp;gt;lineSetupTransfer&amp;lt;/code&amp;gt; would be otherwise.  The notion of a special &#039;&#039;consultation call&#039;&#039; is an idiosyncrasy forced by legacy PBX technologies which were not able to transfer two arbitrary calls.   In these scenarios, a potentially to-be-transferred call needed to be linked to the primary call.  The PBX can transfer two arbitrary calls and thus there is no need for &amp;lt;code&amp;gt;lineSetupTransfer&amp;lt;/code&amp;gt;.  This ability is indicated by the &amp;lt;code&amp;gt;LINEADDRCAPFLAGS_TRANSFERMAKE&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;LINEADDRCAPFLAGS_CONFERENCEMAKE &amp;lt;/code&amp;gt; flags.   The transfer is then requested by using &amp;lt;code&amp;gt;TSPI_lineCompleteTransfer&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=====Notes on 3PTY Conferences=====&lt;br /&gt;
The TSP supports the management of 3PTY conferences.  These can be initiated by using &amp;lt;code&amp;gt;TSPI_lineCompleteTransfer&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;LINETRANSFERMODE_CONFERENCE&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;LINETRANSFERMODE_TRANSFER&amp;lt;/code&amp;gt;.  This is indicated by the flags &amp;lt;code&amp;gt;LINEADDRCAPFLAGS_CONFERENCEHELD&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;LINEADDRCAPFLAGS_CONFERENCEMAKE&amp;lt;/code&amp;gt;.  The 3PTY function is actually implemented by the innovaphone IP phones (such as IP2xx).  Therefore, these capabilities are only advertised if the line is based on a PBX user object.  Still, some lines where the capabilities are advertised cannot do 3PTY (such as e.g. DECT lines, analogue lines, 3rd party devices, ...). So the call to &amp;lt;code&amp;gt;TSPI_lineCompleteTransfer&amp;lt;/code&amp;gt; will succeed but the conference will not be initiated and the subsequent call states will not indicate a conference (as there is no).  &lt;br /&gt;
&lt;br /&gt;
Also, if non-telephone devices are registered with a PBX user object and these device have multiple concurrent calls (e.g. a call center connected with a multi-channel XCapi), these will be viewed as 3PTY calls (as this is the way such calls appear to the TAPI: a line with more than one non-held call).  If these calls are in fact no 3PTY, this may lead to confusing call indications from TAPI.  It is better to register such objects as a PBX gateway object.  Special treatment of 3PTY calls can be disabled by setting the registry flag &amp;lt;code&amp;gt;No3PTY&amp;lt;/code&amp;gt; (from build 8087 onwards).&lt;br /&gt;
&lt;br /&gt;
A 3PTY conference will create a new call handle for the conference.  The only operation available for such a handle is &amp;lt;code&amp;gt;TSPI_lineDrop&amp;lt;/code&amp;gt;. This will terminate the conference and restore the state active before the conference was initiated (that is, the phone that implemented the conference will now have 2 calls, one active and one on hold).  This is indicated by not setting &amp;lt;code&amp;gt;LINEADDRCAPFLAGS_CONFDROP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
A &amp;lt;code&amp;gt;lineDrop()&amp;lt;/code&amp;gt; on one of the 2 &#039;&#039;real&#039;&#039; calls involved will of course cancel this call and thus remove the 3PTY.&lt;br /&gt;
&lt;br /&gt;
======Notes on Intrusion Calls======&lt;br /&gt;
A special case of 3PTY is an intrusion call initiated by a [[Reference9:Phone/User/Function-Keys/Partner | partner function key]].  To TAPI, this looks like a 3PTY (which it in fact is).  However, phones before firmware version 9 hotfix 19 will not be able to release this 3PTY upon request.  Thus, you will see a 3PTY in TAPI which cannot be dropped.  From phone firmware 9 hotfix 19 on, the request to drop this 3PTY will cancel the intrusion call.  Note that TAPI will nevertheless &#039;&#039;not&#039;&#039; set &amp;lt;code&amp;gt;LINEADDRCAPFLAGS_CONFDROP&amp;lt;/code&amp;gt; on such conferences (as TAPI does not know that this is an intrusion call).&lt;br /&gt;
&lt;br /&gt;
======Notes on Recording Calls======&lt;br /&gt;
A special case of 3PTY is a recording call.  This effectively creates an user-invisible 3PTY on the phone.  To TAPI, this looks like a 3PTY (which it in fact is).  However, phones before firmware version 9 hotfix 19 will not be able to release this 3PTY upon request.  Thus, you will see a 3PTY in TAPI which cannot be dropped.  From phone firmware 9 hotfix 19 on, the request to drop this 3PTY will cancel the recording call.   Note that TAPI will nevertheless &#039;&#039;not&#039;&#039; set &amp;lt;code&amp;gt;LINEADDRCAPFLAGS_CONFDROP&amp;lt;/code&amp;gt; on such conferences (as TAPI does not know that this is a recording call).&lt;br /&gt;
&lt;br /&gt;
Recording calls are shown as normal conferences (unless &amp;lt;code&amp;gt;No3PTY&amp;lt;/code&amp;gt; is set).  This might be confusing to applications and/or users.  See the &amp;lt;code&amp;gt;HiddenRecordingNumber&amp;lt;/code&amp;gt; tweak above for a method to hide such calls.&lt;br /&gt;
&lt;br /&gt;
=====Notes on parked Calls=====&lt;br /&gt;
The PBX can park calls from and to any existing PBX object, e.g. by virtue of [[Reference8:Configuration/Registration/Function-Keys/Park | specific feature keys]].  They are parked to/from a numeric &#039;&#039;park position&#039;&#039;.  In SOAP however, calls are parked to an object by providing the objects &#039;&#039;&#039;UserInitialize()&#039;&#039;&#039; handle and a park position.  Parked calls are then reported as straight calls with a distinct signalling state (8).  The park position is not conveyed as part of the &#039;&#039;&#039;CallInfo&#039;&#039;&#039; record.  To unpark, &#039;&#039;&#039;[[Reference8:SOAP_API#integer_UserPickup.28int_user.2C_string_cn.2C_integer_call.2C_string_group.2C_int_reg.2C_InfoArray_info.29 | UserPickup]]&#039;&#039;&#039; can be used providing the parked calls call handle as &#039;&#039;&#039;call&#039;&#039;&#039; argument.  &lt;br /&gt;
&lt;br /&gt;
The TAPI specification is unclear on how the address information required to &#039;&#039;&#039;lineUnpark()&#039;&#039;&#039; a call can be obtained by an application (except that it is returned from &#039;&#039;&#039;linePark()&#039;&#039;&#039; if the call was parked using TAPI).    The TSP thus indicates parked calls on a line with a call reason &amp;lt;code&amp;gt;LINECALLREASON_PARKED&amp;lt;/code&amp;gt;.  The caller id information is set to the parked calls call handle.  This way, the application can take the caller id information and provide it to &#039;&#039;&#039;lineUnpark()&#039;&#039;&#039; to unpark a call.  If the appication does not support this mode of operation but supports &#039;&#039;&#039;lineUnpark()&#039;&#039;&#039; and lets the user input the park identifier, the user can just provide the caller id information.&lt;br /&gt;
&lt;br /&gt;
Some applications do not care for parked calls (by examining the call reason) and just blindly report these calls like ordinary connected calls (thereby confusing the user).  To work around this problem, reporting parked calls can be turned off in the TSP configuration dialogue.&lt;br /&gt;
&lt;br /&gt;
=====Notes on sending User to User Information =====&lt;br /&gt;
The TAPI specification for sending UserUserInfo closely resembles the way ISDN defines this service.  Although the innovaphone PBX supports this service both with H.323 and SIP, it is &#039;&#039;not&#039;&#039; supported in this TSP.  Instead, sending user to user information is implemented using H.323/SIP messaging.  However, there are some important deviations and limitations caused hereby:&lt;br /&gt;
* data is &#039;&#039;not transparent&#039;&#039;.  That is, the TSP only allows for null-terminated unicode to be sent.  The data must be of even length and the last two bytes must be null. &lt;br /&gt;
* data is &#039;&#039;not sent within the call&#039;&#039;, but by initiating a separate call.  This implies that the target number used to send the message carrying the data to is &#039;guessed&#039; from the available call data.  For example, if the call is in a connected state and a connected number is known, the message is sent to the connected number.  If the call is in the ringback state, then either the called number or - if available - the redirection number is used and so forth.&lt;br /&gt;
* message calls are not indicated by the SOAP CallInfo records.  As a result, messages (that is, user to user information) cannot be received with TAPI and &#039;&#039;lineReleaseUserUserInfo is not supported&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=====Notes on sending proprietary innovaphone Remote Control Facilities  =====&lt;br /&gt;
The SOAP  [[Reference8:SOAP_API#UserRc.28integer_call.2C_integer_rc.29|UserRc]] function allows to send various [[Reference:Remote Control Facility|facility messages]] to an innovaphone phone device.  In some cases, it is useful to be able to invoke this function through a standard TAPI mechanism.  This can be achieved by using the TAPI &#039;&#039;&#039;lineBlindTransfer&#039;&#039;&#039; function.  If the &#039;&#039;called party name&#039;&#039; provided as destination for the &#039;&#039;lineBlindTransfer&#039;&#039; (in &#039;&#039;lpszDestAddress&#039;&#039;) has the magic value &amp;lt;code&amp;gt;USERRC&amp;lt;/code&amp;gt;, then the &#039;&#039;called subaddress&#039;&#039; is converted to an integer and the result is sent as remote control facility to the call the blind transfer is applied for.  For details on how to code the &#039;&#039;called party name&#039;&#039; and the &#039;&#039;called subaddress&#039;&#039; into &#039;&#039;lpszDestAddress&#039;&#039; see [http://msdn.microsoft.com/en-us/library/windows/desktop/ms726017%28v=vs.85%29.aspx Microsoft&#039;s &#039;&#039;Canonical Address&#039;&#039; specification].     This works from TAPI8 hotfix 4.&lt;br /&gt;
&lt;br /&gt;
For example, initiating a blind transfer to &amp;lt;code&amp;gt;|16^USERRC&amp;lt;/code&amp;gt; (empty address, subaddress 16 (that is, [[Reference:Remote Control Facility|&#039;&#039;change to handset mode&#039;&#039;]]), called name &amp;lt;code&amp;gt;USERRC&amp;lt;/code&amp;gt;) will switch the phone having the call to be transferred into handset mode (and &amp;lt;code&amp;gt;|18^USERRC&amp;lt;/code&amp;gt; will switch it back to handsfree mode).  Of course, no actual transfer will happen in these cases (&#039;&#039;lineBlindTransfer&#039;&#039; is merely used as a vehicle to send the facility to the proper call).&lt;br /&gt;
&lt;br /&gt;
Such proprietary facility message can also be sent with &#039;&#039;lineMakeCall&#039;&#039; (that is, in SOAP&#039;s [[Reference8:SOAP_API#integer_UserCall.28integer_user.2C_string_cn.2C_string_e164.2C_string_h323.2C_int_reg.2C_InfoArray_info.2C_int_rc.2C_string_srce164.29|UserCall]] function).  For example, setting up a call to &amp;lt;code&amp;gt;123|21^USERRC&amp;lt;/code&amp;gt; will send an intrusion call to extension 123 and intrude any call that might be active there. This works from TAPI8 hotfix 6. Please note that the innovaphone TAPI service provider does not support TAPI&#039;s &#039;&#039;lineCompleteCall&#039;&#039; function with &amp;lt;code&amp;gt;LINECALLCOMPLMODE_INTRUDE&amp;lt;/code&amp;gt; though (as TAPI&#039;s call model here does not fit with the PBX&#039;s call model).  Please also note that intrusion calls look like 3PTY calls to TAPI (see [[#Notes_on_Intrusion_Calls|notes on intrusion calls]] above).&lt;br /&gt;
&lt;br /&gt;
Remote control facilities are implemented by the telephone devices, so these functions are subject to the phone firmware in use.&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Concept|{{PAGENAME}}]]&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
* [[Howto:Troubleshooting the TAPI service provider]]&lt;br /&gt;
* [[Reference8:Release Notes TAPI]]&lt;/div&gt;</summary>
		<author><name>Lme</name></author>
	</entry>
</feed>