<?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=Msm</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=Msm"/>
	<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Special:Contributions/Msm"/>
	<updated>2026-09-18T14:31:47Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference17:Concept_App_Service_Conference_Invitations&amp;diff=80410</id>
		<title>Reference17:Concept App Service Conference Invitations</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference17:Concept_App_Service_Conference_Invitations&amp;diff=80410"/>
		<updated>2026-08-28T12:41:46Z</updated>

		<summary type="html">&lt;p&gt;Msm: /* PBX Settings Plugin */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The App Service conference-invitations is an App Service which can be installed on an innovaphone App Platforms. It offers the possibility to create and organize video conferences. Attandends can enter ot the meeting via myApps, a web converence or just dial in.&lt;br /&gt;
== Applies To ==&lt;br /&gt;
innovaphone PBX from version 17&lt;br /&gt;
&lt;br /&gt;
== Concepts ==&lt;br /&gt;
The conference-invitations servicve manages conferences cereated by outlook. After installation and setup (see the related Pbx Manager article below for details), a user can create a myApps meeting using MS Outlook. That work&#039;s with the Outlook clients as well as the Outlook web interface. The use creates a normal meeting (a single meeting or a series) in outlook and presses the myApps meeting button in the view where a meeting will be created. The button is available after installing the manifest.xml (see below).&lt;br /&gt;
&lt;br /&gt;
A click on the button triggers the conference-invitations plugin to add additional information to the meeting, including links for  myApps, Web Conference as well as the phone number with a pin number to participate the meeting. Everyone who was added to the meeting in Outlook, will receive a meeting email (as always) with the information added by the plugin.&lt;br /&gt;
&lt;br /&gt;
An additional participant will be conference-invitations. So the app will receive the email, too, and keeps track of changes (like moved to an other day or time, cancleled meetings or canceled recurrenced of a series, etc.). When users entering the conference, the PBX will check with the conference-invitations, if the meeting the user whant to participate, is happening and let the user enter to the meeting room. If there is no meeting happening, the user can&#039;t enter to the conference since the conference does not exist.&lt;br /&gt;
&lt;br /&gt;
The conference-invitations service will send a response email after receiving a correct myApps meeting, to inform the organizer that everything is ok so far. Only after receiving that confirmation, the meeting is available in the system and will be managed and also be accessable (when the meeting happens) from now on. Old meetings will be deleted from the database after 24 hours. &lt;br /&gt;
&lt;br /&gt;
== Outlook plugin / manifest.xml ==&lt;br /&gt;
To be able to make a myApps meeting out of an Outlook meeting, the user needs the converence-invitations plugin for outlook. For this, a user must install the manifest.xml in his user account or the Exchange admin will do it for the users. For more information, please ask your Exchange admin or check the Exchange or Outlook documentation.&lt;br /&gt;
&lt;br /&gt;
== Exchange config ==&lt;br /&gt;
Conference-invitations must receive the email from Outlook to manage the meeting. For this, conference-invitations also acts as SMTP server. The credentials for the server will be configured in the Settings plugin. For this to work you first need to create an email address in Exchange so that it can be added to the meeting. However, Exchange than needs to redeirect the emil to the conference-invitations app by sending it to the AppPlatform, using the credentials configured in the Settings. For more information please check your Exchange documentation or ask your Exchange admin.&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [[{{NAMESPACE}}:Apps/PbxManager/App_Conference_Invitations]]&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference17:Concept_App_Service_Conference_Invitations&amp;diff=80409</id>
		<title>Reference17:Concept App Service Conference Invitations</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference17:Concept_App_Service_Conference_Invitations&amp;diff=80409"/>
		<updated>2026-08-28T12:41:03Z</updated>

		<summary type="html">&lt;p&gt;Msm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The App Service conference-invitations is an App Service which can be installed on an innovaphone App Platforms. It offers the possibility to create and organize video conferences. Attandends can enter ot the meeting via myApps, a web converence or just dial in.&lt;br /&gt;
== Applies To ==&lt;br /&gt;
innovaphone PBX from version 17&lt;br /&gt;
&lt;br /&gt;
== PBX Settings Plugin ==&lt;br /&gt;
The conbfiguration will be done via the settings plugin. There the following things can be configure there:&lt;br /&gt;
&lt;br /&gt;
* Receiving email configuration: the settings Email, Emai user, EMail pwd, Email domain and SMTP port need to be configured for conference-invitations to be able to receive emails.&lt;br /&gt;
* Sending email configuration: the settings EMail host (sending), Email server (sending), Email User (sending), Email Password (sending) and the OAtuh2 settings are needed for conference-invitations to be able to send emails. Note that for now only Exchange Online and Microsoft 356 are supported for OAuth2.&lt;br /&gt;
* Test Email address and the button Send test email can be used to check, if the settings for sending emails work correctly. Test email address is the address the test email should be sent to.&lt;br /&gt;
* Conference object: a list to select the conference object that should be used for a video conference&lt;br /&gt;
* Conference tel. nr.: If no phone number is assigned to the selected conference object, it can be defined here. This is necessary for attantedees to be able to join via dial in. If the selected conference object has a phone number configured, it will be set to the input field.&lt;br /&gt;
* Download manifest: the button to download the manfiest file (see below)&lt;br /&gt;
&lt;br /&gt;
== Concepts ==&lt;br /&gt;
The conference-invitations servicve manages conferences cereated by outlook. After installation and setup, a user can create a myApps meeting using MS Outlook. That work&#039;s with the Outlook clients as well as the Outlook web interface. The use creates a normal meeting (a single meeting or a series) in outlook and presses the myApps meeting button in the view where a meeting will be created. The button is available after installing the manifest.xml (see below).&lt;br /&gt;
&lt;br /&gt;
A click on the button triggers the conference-invitations plugin to add additional information to the meeting, including links for  myApps, Web Conference as well as the phone number with a pin number to participate the meeting. Everyone who was added to the meeting in Outlook, will receive a meeting email (as always) with the information added by the plugin.&lt;br /&gt;
&lt;br /&gt;
An additional participant will be conference-invitations. So the app will receive the email, too, and keeps track of changes (like moved to an other day or time, cancleled meetings or canceled recurrenced of a series, etc.). When users entering the conference, the PBX will check with the conference-invitations, if the meeting the user whant to participate, is happening and let the user enter to the meeting room. If there is no meeting happening, the user can&#039;t enter to the conference since the conference does not exist.&lt;br /&gt;
&lt;br /&gt;
The conference-invitations service will send a response email after receiving a correct myApps meeting, to inform the organizer that everything is ok so far. Only after receiving that confirmation, the meeting is available in the system and will be managed and also be accessable (when the meeting happens) from now on. Old meetings will be deleted from the database after 24 hours. &lt;br /&gt;
&lt;br /&gt;
== Outlook plugin / manifest.xml ==&lt;br /&gt;
To be able to make a myApps meeting out of an Outlook meeting, the user needs the converence-invitations plugin for outlook. For this, a user must install the manifest.xml in his user account or the Exchange admin will do it for the users. For more information, please ask your Exchange admin or check the Exchange or Outlook documentation.&lt;br /&gt;
&lt;br /&gt;
== Exchange config ==&lt;br /&gt;
Conference-invitations must receive the email from Outlook to manage the meeting. For this, conference-invitations also acts as SMTP server. The credentials for the server will be configured in the Settings plugin. For this to work you first need to create an email address in Exchange so that it can be added to the meeting. However, Exchange than needs to redeirect the emil to the conference-invitations app by sending it to the AppPlatform, using the credentials configured in the Settings. For more information please check your Exchange documentation or ask your Exchange admin.&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [[{{NAMESPACE}}:Apps/PbxManager/App_Conference_Invitations]]&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Conference_Invitations&amp;diff=80408</id>
		<title>Reference17:Apps/PbxManager/App Conference Invitations</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Conference_Invitations&amp;diff=80408"/>
		<updated>2026-08-28T12:40:36Z</updated>

		<summary type="html">&lt;p&gt;Msm: /* Download manifest… (button) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article describes the configuration of conference-invitations. Note that changes you made are not only safed when clicking on OK. They will automatically be saved before sending a test email. The following settings can be configured:&lt;br /&gt;
&lt;br /&gt;
== Email (receiving) ==&lt;br /&gt;
The app runs its own built-in mail receiver. The address of that server is the one of the AP the conference-invitatiosn service is running on. You need to create an email address in Exchange and let Exchange redirect the mail to conference-invitation, so that conference-invitations will be one of the attantends for meetings created in Outlook as myApps Meeting. This is necessary to let conference-invitations know about the meeting. This are the settings to receive emails:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Email:&#039;&#039;&#039; The email address of the app itself.&lt;br /&gt;
* &#039;&#039;&#039;Email user:&#039;&#039;&#039; User name that the delivering mail server (or relay) may use to authenticate against the app’s built-in mail receiver.&lt;br /&gt;
* &#039;&#039;&#039;Email password:&#039;&#039;&#039; Password belonging to &#039;&#039;email&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Email domain:&#039;&#039;&#039; The domain name with which the app’s mail receiver identifies itself towards the delivering mail server, e.g. &amp;amp;lt;code&amp;amp;gt;example.com&amp;amp;lt;/code&amp;amp;gt;. Some mail servers and relays refuse delivery if the receiving side announces an unexpected or empty name, and the value is also used when the app challenges the delivering server for authentication. Use the domain that matches the &#039;&#039;E-mail&#039;&#039; address above.&lt;br /&gt;
* &#039;&#039;&#039;SMTP port:&#039;&#039;&#039; TCP port on which the app listens for incoming invitation mails (default 54242).The app platform normally does not let an app occupy the well-known port 25, therefore a high port is used by default. Your mail system must be configured to deliver mail for the &#039;&#039;E-mail&#039;&#039; address to the app’s host on exactly this port (transport rule / forwarding / relay entry, depending on your mail product).&lt;br /&gt;
&lt;br /&gt;
== Email (sending) ==&lt;br /&gt;
When the app has successfully processed an invitation, it can answer the organizer with an acceptance mail (an iCalendar reply) so that the organizer sees the conference as &amp;quot;accepted&amp;quot; in their calendar. The app also uses this configuration to send the test mail. The reply is only sent if &#039;&#039;&#039;all four&#039;&#039;&#039; of the following fields are filled. If any of them is empty, invitations are still processed and stored normally, but no acceptance mail is sent, and a corresponding warning is written to the app log.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Email host (sending):&#039;&#039;&#039; The host name with which the app identifies itself towards your outgoing mail server (e.g. pbx.example.com). Many mail servers reject mail from a client that announces an unknown or empty name.&lt;br /&gt;
* &#039;&#039;&#039;Email server (sending):&#039;&#039;&#039; The outgoing mail server the app connects to, in the form host or host:port (e.g. mail.example.com:587). If no port is given, the standard SMTP port 25 is used. The field may be left empty when a hosted OAuth2 mode is selected (see below) — in that case the provider’s default server is used.&lt;br /&gt;
* &#039;&#039;&#039;Email user (seding):&#039;&#039;&#039; User name of the mailbox that is used to send the acceptance mails.&lt;br /&gt;
* &#039;&#039;&#039;Email password (sending):&#039;&#039;&#039; Password of that mailbox. Not needed with OAuth2 authentication — there the token obtained from the OAuth2 fields is used instead of a password.&lt;br /&gt;
&lt;br /&gt;
== OAuth2 (authentication against Microsoft mail servers) ==&lt;br /&gt;
If your outgoing mail server no longer accepts a plain user name and password — which is the case for Microsoft 365 / Exchange Online — the app can obtain an access token instead. The following OAuth2 modes can be configured:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Mode&lt;br /&gt;
!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Off&#039;&#039;&#039;&lt;br /&gt;
|No OAuth2. The app authenticates with &#039;&#039;E-mail user (sending)&#039;&#039; and &#039;&#039;E-mail password (sending)&#039;&#039;. Use this for on-premises mail servers and for any provider that still accepts passwords.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Exchange (smtp.office365.com:587)&#039;&#039;&#039;&lt;br /&gt;
|Delegated access to Exchange Online. The app acts on behalf of a mailbox owner whose consent was granted once via the app registration.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Microsoft 365 (smtp.office365.com:587)&#039;&#039;&#039;&lt;br /&gt;
|Access to a Microsoft 365 mailbox using the mailbox owner’s credentials in combination with the registered application.&lt;br /&gt;
|}&lt;br /&gt;
Selecting &#039;&#039;Exchange&#039;&#039; or &#039;&#039;Microsoft 365&#039;&#039; also fills the placeholder of &#039;&#039;E-mail server (sending)&#039;&#039; with &amp;amp;lt;code&amp;amp;gt;smtp.office365.com:587&amp;amp;lt;/code&amp;amp;gt;, which is used when you leave that field empty. &#039;&#039;&#039;&#039;&#039;&amp;lt;u&amp;gt;NOTE:&amp;lt;/u&amp;gt;&#039;&#039;&#039;&#039;&#039; All values below come from the application you register in the Microsoft Entra ID (Azure AD) portal for this purpose. The registered application needs permission to send mail via SMTP for the mailbox in question.&lt;br /&gt;
&lt;br /&gt;
The fields shown below the &#039;&#039;&#039;OAuth2&#039;&#039;&#039; selector change depending on the selected mode; fields that are not needed are hidden&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;OAuth2:&#039;&#039;&#039; The OAuth2 mode to use.&lt;br /&gt;
* &#039;&#039;&#039;Client ID:&#039;&#039;&#039; &#039;&#039;(shown for Exchange and Microsoft 365)&#039;&#039; The application (client) ID of the registered application.&lt;br /&gt;
* &#039;&#039;&#039;Client Secret:&#039;&#039;&#039; &#039;&#039;(shown for Exchange and Microsoft 365)&#039;&#039; The client secret created for that registered application. Note that secrets have an expiry date in Entra ID — when the secret expires, sending stops working and the value must be renewed here.&lt;br /&gt;
* &#039;&#039;&#039;Owner Username:&#039;&#039;&#039; &#039;&#039;(shown for Exchange and Microsoft 365)&#039;&#039; The mailbox that is used for sending, i.e. the account the token is issued for — typically identical to &#039;&#039;E-mail user (sending)&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Owner Password:&#039;&#039;&#039; &#039;&#039;(shown for Microsoft 365 only)&#039;&#039; The password of that mailbox account. Only required for the Microsoft 365 mode, where the token is requested with the owner’s credentials. Stored encrypted; the field shows a masked dummy value.&lt;br /&gt;
* &#039;&#039;&#039;Tenant:&#039;&#039;&#039; &#039;&#039;(shown for Exchange and Microsoft 365)&#039;&#039; Your Microsoft tenant — either the tenant ID (GUID) or the tenant domain, e.g. &amp;amp;lt;code&amp;amp;gt;example.onmicrosoft.com&amp;amp;lt;/code&amp;amp;gt;. It determines against which directory the token is requested.&lt;br /&gt;
&lt;br /&gt;
== Testing the email configuration (sending) ==&lt;br /&gt;
To test if your configration is correct, you can send a test email.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Clicking the test email button will save the configuration!&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Test e-mail address:&#039;&#039;&#039; A recipient address to which a test mail is sent, e.g. your own address. The value is not stored in the configuration; it is only used for the test.&lt;br /&gt;
* &#039;&#039;&#039;Send test e-mail (button):&#039;&#039;&#039; Saves the current configuration first (so the test really uses what you see on screen) and then sends a short test mail from the configured &#039;&#039;E-mail&#039;&#039; address to the address entered above, using the sending configuration and, if selected, OAuth2. The subject and body of the test mail are in the language of your Settings app. The result appears next to the button:&lt;br /&gt;
** success message — the mail was handed over to the mail server successfully. Check the recipient’s inbox to confirm the delivery path as well.&lt;br /&gt;
** error message — sending failed, together with the reason reported by the mail server. Details are in the app log.&lt;br /&gt;
** If the entered address is not a valid e-mail address, the test is not performed and the field is highlighted for correction.&lt;br /&gt;
&lt;br /&gt;
A successful test proves the &#039;&#039;&#039;sending&#039;&#039;&#039; direction only. The receiving direction is verified by creating a meeting with the Outlook add-in and checking that the invitation appears in the app.&lt;br /&gt;
&lt;br /&gt;
== PBX conference ==&lt;br /&gt;
Selection list of all conference objects that exist in your PBX. Choosing an entry does two things:&lt;br /&gt;
&lt;br /&gt;
* The app is registered on the selected conference object, i.e. the conference object is linked with this app instance. If the app was previously assigned to another conference, that assignment is removed automatically, so exactly one conference belongs to the app instance.&lt;br /&gt;
* The name of the conference object is stored and inserted into the join links that the Outlook add-in writes into the meeting body — both the link that starts a call in the innovaphone client and the link that opens the conference in the browser.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the list is empty, no conference object exists yet in the PBX. Create one first; without a selected conference the configuration cannot be saved. The settings need to cofigure are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Conference object:&#039;&#039;&#039; The conference object to use for the meetings.&lt;br /&gt;
* &#039;&#039;&#039;Conference phone no.:&#039;&#039;&#039; The phone number that participants dial to join the conference. It is printed into the meeting invitation text, so that attendees without an innovaphone client (e.g. mobile or external participants) can dial in. When you pick a conference in the list, the field is filled automatically from the number of the selected conference object. If the object has no usable number, the field stays empty and shows a hint to enter the number manually — enter the number in the form external participants must dial, including any prefixes needed from the outside. The field must not be empty!&lt;br /&gt;
&lt;br /&gt;
== Outlook add-in ==&lt;br /&gt;
&#039;&#039;&#039;Download manifest… (button)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Downloads the &amp;amp;lt;code&amp;amp;gt;manifest.xml&amp;amp;lt;/code&amp;amp;gt; of the Outlook add-in. The file is generated for the current app instance and for the language currently selected in your Settings app, i.e. it already contains the correct URLs of this installation and the localized button label and tooltip. Deploy this file to your users with the mechanism provided by Microsoft (centralized deployment in the Microsoft 365 admin center, or sideloading for a single user). After deployment, organizers get an additional button in the Outlook meeting compose window that creates the conference data for the meeting. The language used for in the XML for the button will be defined by the languge your myApps client has when downlaoding the file.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
[[{{NAMESPACE}}:Concept App Service Conference Invitations]]&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Conference_Invitations&amp;diff=80407</id>
		<title>Reference17:Apps/PbxManager/App Conference Invitations</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Conference_Invitations&amp;diff=80407"/>
		<updated>2026-08-28T12:40:08Z</updated>

		<summary type="html">&lt;p&gt;Msm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article describes the configuration of conference-invitations. Note that changes you made are not only safed when clicking on OK. They will automatically be saved before sending a test email. The following settings can be configured:&lt;br /&gt;
&lt;br /&gt;
== Email (receiving) ==&lt;br /&gt;
The app runs its own built-in mail receiver. The address of that server is the one of the AP the conference-invitatiosn service is running on. You need to create an email address in Exchange and let Exchange redirect the mail to conference-invitation, so that conference-invitations will be one of the attantends for meetings created in Outlook as myApps Meeting. This is necessary to let conference-invitations know about the meeting. This are the settings to receive emails:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Email:&#039;&#039;&#039; The email address of the app itself.&lt;br /&gt;
* &#039;&#039;&#039;Email user:&#039;&#039;&#039; User name that the delivering mail server (or relay) may use to authenticate against the app’s built-in mail receiver.&lt;br /&gt;
* &#039;&#039;&#039;Email password:&#039;&#039;&#039; Password belonging to &#039;&#039;email&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Email domain:&#039;&#039;&#039; The domain name with which the app’s mail receiver identifies itself towards the delivering mail server, e.g. &amp;amp;lt;code&amp;amp;gt;example.com&amp;amp;lt;/code&amp;amp;gt;. Some mail servers and relays refuse delivery if the receiving side announces an unexpected or empty name, and the value is also used when the app challenges the delivering server for authentication. Use the domain that matches the &#039;&#039;E-mail&#039;&#039; address above.&lt;br /&gt;
* &#039;&#039;&#039;SMTP port:&#039;&#039;&#039; TCP port on which the app listens for incoming invitation mails (default 54242).The app platform normally does not let an app occupy the well-known port 25, therefore a high port is used by default. Your mail system must be configured to deliver mail for the &#039;&#039;E-mail&#039;&#039; address to the app’s host on exactly this port (transport rule / forwarding / relay entry, depending on your mail product).&lt;br /&gt;
&lt;br /&gt;
== Email (sending) ==&lt;br /&gt;
When the app has successfully processed an invitation, it can answer the organizer with an acceptance mail (an iCalendar reply) so that the organizer sees the conference as &amp;quot;accepted&amp;quot; in their calendar. The app also uses this configuration to send the test mail. The reply is only sent if &#039;&#039;&#039;all four&#039;&#039;&#039; of the following fields are filled. If any of them is empty, invitations are still processed and stored normally, but no acceptance mail is sent, and a corresponding warning is written to the app log.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Email host (sending):&#039;&#039;&#039; The host name with which the app identifies itself towards your outgoing mail server (e.g. pbx.example.com). Many mail servers reject mail from a client that announces an unknown or empty name.&lt;br /&gt;
* &#039;&#039;&#039;Email server (sending):&#039;&#039;&#039; The outgoing mail server the app connects to, in the form host or host:port (e.g. mail.example.com:587). If no port is given, the standard SMTP port 25 is used. The field may be left empty when a hosted OAuth2 mode is selected (see below) — in that case the provider’s default server is used.&lt;br /&gt;
* &#039;&#039;&#039;Email user (seding):&#039;&#039;&#039; User name of the mailbox that is used to send the acceptance mails.&lt;br /&gt;
* &#039;&#039;&#039;Email password (sending):&#039;&#039;&#039; Password of that mailbox. Not needed with OAuth2 authentication — there the token obtained from the OAuth2 fields is used instead of a password.&lt;br /&gt;
&lt;br /&gt;
== OAuth2 (authentication against Microsoft mail servers) ==&lt;br /&gt;
If your outgoing mail server no longer accepts a plain user name and password — which is the case for Microsoft 365 / Exchange Online — the app can obtain an access token instead. The following OAuth2 modes can be configured:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Mode&lt;br /&gt;
!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Off&#039;&#039;&#039;&lt;br /&gt;
|No OAuth2. The app authenticates with &#039;&#039;E-mail user (sending)&#039;&#039; and &#039;&#039;E-mail password (sending)&#039;&#039;. Use this for on-premises mail servers and for any provider that still accepts passwords.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Exchange (smtp.office365.com:587)&#039;&#039;&#039;&lt;br /&gt;
|Delegated access to Exchange Online. The app acts on behalf of a mailbox owner whose consent was granted once via the app registration.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Microsoft 365 (smtp.office365.com:587)&#039;&#039;&#039;&lt;br /&gt;
|Access to a Microsoft 365 mailbox using the mailbox owner’s credentials in combination with the registered application.&lt;br /&gt;
|}&lt;br /&gt;
Selecting &#039;&#039;Exchange&#039;&#039; or &#039;&#039;Microsoft 365&#039;&#039; also fills the placeholder of &#039;&#039;E-mail server (sending)&#039;&#039; with &amp;amp;lt;code&amp;amp;gt;smtp.office365.com:587&amp;amp;lt;/code&amp;amp;gt;, which is used when you leave that field empty. &#039;&#039;&#039;&#039;&#039;&amp;lt;u&amp;gt;NOTE:&amp;lt;/u&amp;gt;&#039;&#039;&#039;&#039;&#039; All values below come from the application you register in the Microsoft Entra ID (Azure AD) portal for this purpose. The registered application needs permission to send mail via SMTP for the mailbox in question.&lt;br /&gt;
&lt;br /&gt;
The fields shown below the &#039;&#039;&#039;OAuth2&#039;&#039;&#039; selector change depending on the selected mode; fields that are not needed are hidden&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;OAuth2:&#039;&#039;&#039; The OAuth2 mode to use.&lt;br /&gt;
* &#039;&#039;&#039;Client ID:&#039;&#039;&#039; &#039;&#039;(shown for Exchange and Microsoft 365)&#039;&#039; The application (client) ID of the registered application.&lt;br /&gt;
* &#039;&#039;&#039;Client Secret:&#039;&#039;&#039; &#039;&#039;(shown for Exchange and Microsoft 365)&#039;&#039; The client secret created for that registered application. Note that secrets have an expiry date in Entra ID — when the secret expires, sending stops working and the value must be renewed here.&lt;br /&gt;
* &#039;&#039;&#039;Owner Username:&#039;&#039;&#039; &#039;&#039;(shown for Exchange and Microsoft 365)&#039;&#039; The mailbox that is used for sending, i.e. the account the token is issued for — typically identical to &#039;&#039;E-mail user (sending)&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Owner Password:&#039;&#039;&#039; &#039;&#039;(shown for Microsoft 365 only)&#039;&#039; The password of that mailbox account. Only required for the Microsoft 365 mode, where the token is requested with the owner’s credentials. Stored encrypted; the field shows a masked dummy value.&lt;br /&gt;
* &#039;&#039;&#039;Tenant:&#039;&#039;&#039; &#039;&#039;(shown for Exchange and Microsoft 365)&#039;&#039; Your Microsoft tenant — either the tenant ID (GUID) or the tenant domain, e.g. &amp;amp;lt;code&amp;amp;gt;example.onmicrosoft.com&amp;amp;lt;/code&amp;amp;gt;. It determines against which directory the token is requested.&lt;br /&gt;
&lt;br /&gt;
== Testing the email configuration (sending) ==&lt;br /&gt;
To test if your configration is correct, you can send a test email.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Clicking the test email button will save the configuration!&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Test e-mail address:&#039;&#039;&#039; A recipient address to which a test mail is sent, e.g. your own address. The value is not stored in the configuration; it is only used for the test.&lt;br /&gt;
* &#039;&#039;&#039;Send test e-mail (button):&#039;&#039;&#039; Saves the current configuration first (so the test really uses what you see on screen) and then sends a short test mail from the configured &#039;&#039;E-mail&#039;&#039; address to the address entered above, using the sending configuration and, if selected, OAuth2. The subject and body of the test mail are in the language of your Settings app. The result appears next to the button:&lt;br /&gt;
** success message — the mail was handed over to the mail server successfully. Check the recipient’s inbox to confirm the delivery path as well.&lt;br /&gt;
** error message — sending failed, together with the reason reported by the mail server. Details are in the app log.&lt;br /&gt;
** If the entered address is not a valid e-mail address, the test is not performed and the field is highlighted for correction.&lt;br /&gt;
&lt;br /&gt;
A successful test proves the &#039;&#039;&#039;sending&#039;&#039;&#039; direction only. The receiving direction is verified by creating a meeting with the Outlook add-in and checking that the invitation appears in the app.&lt;br /&gt;
&lt;br /&gt;
== PBX conference ==&lt;br /&gt;
Selection list of all conference objects that exist in your PBX. Choosing an entry does two things:&lt;br /&gt;
&lt;br /&gt;
* The app is registered on the selected conference object, i.e. the conference object is linked with this app instance. If the app was previously assigned to another conference, that assignment is removed automatically, so exactly one conference belongs to the app instance.&lt;br /&gt;
* The name of the conference object is stored and inserted into the join links that the Outlook add-in writes into the meeting body — both the link that starts a call in the innovaphone client and the link that opens the conference in the browser.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the list is empty, no conference object exists yet in the PBX. Create one first; without a selected conference the configuration cannot be saved. The settings need to cofigure are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Conference object:&#039;&#039;&#039; The conference object to use for the meetings.&lt;br /&gt;
* &#039;&#039;&#039;Conference phone no.:&#039;&#039;&#039; The phone number that participants dial to join the conference. It is printed into the meeting invitation text, so that attendees without an innovaphone client (e.g. mobile or external participants) can dial in. When you pick a conference in the list, the field is filled automatically from the number of the selected conference object. If the object has no usable number, the field stays empty and shows a hint to enter the number manually — enter the number in the form external participants must dial, including any prefixes needed from the outside. The field must not be empty!&lt;br /&gt;
&lt;br /&gt;
== Outlook add-in ==&lt;br /&gt;
&lt;br /&gt;
=== Download manifest… (button) ===&lt;br /&gt;
Downloads the &amp;amp;lt;code&amp;amp;gt;manifest.xml&amp;amp;lt;/code&amp;amp;gt; of the Outlook add-in. The file is generated for the current app instance and for the language currently selected in your Settings app, i.e. it already contains the correct URLs of this installation and the localized button label and tooltip. Deploy this file to your users with the mechanism provided by Microsoft (centralized deployment in the Microsoft 365 admin center, or sideloading for a single user). After deployment, organizers get an additional button in the Outlook meeting compose window that creates the conference data for the meeting. The language used for in the XML for the button will be defined by the languge your myApps client has when downlaoding the file.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
[[{{NAMESPACE}}:Concept App Service Conference Invitations]]&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Conference_Invitations&amp;diff=80406</id>
		<title>Reference17:Apps/PbxManager/App Conference Invitations</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Conference_Invitations&amp;diff=80406"/>
		<updated>2026-08-28T12:39:23Z</updated>

		<summary type="html">&lt;p&gt;Msm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article describes the configuration of conference-invitations. Note that changes you made are not only safed when clicking on OK. They will automatically be saved before sending a test email. The following settings can be configured:&lt;br /&gt;
&lt;br /&gt;
== Email (receiving) ==&lt;br /&gt;
The app runs its own built-in mail receiver. The address of that server is the one of the AP the conference-invitatiosn service is running on. You need to create an email address in Exchange and let Exchange redirect the mail to conference-invitation, so that conference-invitations will be one of the attantends for meetings created in Outlook as myApps Meeting. This is necessary to let conference-invitations know about the meeting. This are the settings to receive emails:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Email:&#039;&#039;&#039; The email address of the app itself.&lt;br /&gt;
* &#039;&#039;&#039;Email user:&#039;&#039;&#039; User name that the delivering mail server (or relay) may use to authenticate against the app’s built-in mail receiver.&lt;br /&gt;
* &#039;&#039;&#039;Email password:&#039;&#039;&#039; Password belonging to &#039;&#039;email&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Email domain:&#039;&#039;&#039; The domain name with which the app’s mail receiver identifies itself towards the delivering mail server, e.g. &amp;amp;lt;code&amp;amp;gt;example.com&amp;amp;lt;/code&amp;amp;gt;. Some mail servers and relays refuse delivery if the receiving side announces an unexpected or empty name, and the value is also used when the app challenges the delivering server for authentication. Use the domain that matches the &#039;&#039;E-mail&#039;&#039; address above.&lt;br /&gt;
* &#039;&#039;&#039;SMTP port:&#039;&#039;&#039; TCP port on which the app listens for incoming invitation mails (default 54242).The app platform normally does not let an app occupy the well-known port 25, therefore a high port is used by default. Your mail system must be configured to deliver mail for the &#039;&#039;E-mail&#039;&#039; address to the app’s host on exactly this port (transport rule / forwarding / relay entry, depending on your mail product).&lt;br /&gt;
&lt;br /&gt;
== Email (sending) ==&lt;br /&gt;
When the app has successfully processed an invitation, it can answer the organizer with an acceptance mail (an iCalendar reply) so that the organizer sees the conference as &amp;quot;accepted&amp;quot; in their calendar. The app also uses this configuration to send the test mail. The reply is only sent if &#039;&#039;&#039;all four&#039;&#039;&#039; of the following fields are filled. If any of them is empty, invitations are still processed and stored normally, but no acceptance mail is sent, and a corresponding warning is written to the app log.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Email host (sending):&#039;&#039;&#039; The host name with which the app identifies itself towards your outgoing mail server (e.g. pbx.example.com). Many mail servers reject mail from a client that announces an unknown or empty name.&lt;br /&gt;
* &#039;&#039;&#039;Email server (sending):&#039;&#039;&#039; The outgoing mail server the app connects to, in the form host or host:port (e.g. mail.example.com:587). If no port is given, the standard SMTP port 25 is used. The field may be left empty when a hosted OAuth2 mode is selected (see below) — in that case the provider’s default server is used.&lt;br /&gt;
* &#039;&#039;&#039;Email user (seding):&#039;&#039;&#039; User name of the mailbox that is used to send the acceptance mails.&lt;br /&gt;
* &#039;&#039;&#039;Email password (sending):&#039;&#039;&#039; Password of that mailbox. Not needed with OAuth2 authentication — there the token obtained from the OAuth2 fields is used instead of a password.&lt;br /&gt;
&lt;br /&gt;
== OAuth2 (authentication against Microsoft mail servers) ==&lt;br /&gt;
If your outgoing mail server no longer accepts a plain user name and password — which is the case for Microsoft 365 / Exchange Online — the app can obtain an access token instead. The following OAuth2 modes can be configured:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Mode&lt;br /&gt;
!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Off&#039;&#039;&#039;&lt;br /&gt;
|No OAuth2. The app authenticates with &#039;&#039;E-mail user (sending)&#039;&#039; and &#039;&#039;E-mail password (sending)&#039;&#039;. Use this for on-premises mail servers and for any provider that still accepts passwords.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Exchange (smtp.office365.com:587)&#039;&#039;&#039;&lt;br /&gt;
|Delegated access to Exchange Online. The app acts on behalf of a mailbox owner whose consent was granted once via the app registration.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Microsoft 365 (smtp.office365.com:587)&#039;&#039;&#039;&lt;br /&gt;
|Access to a Microsoft 365 mailbox using the mailbox owner’s credentials in combination with the registered application.&lt;br /&gt;
|}&lt;br /&gt;
Selecting &#039;&#039;Exchange&#039;&#039; or &#039;&#039;Microsoft 365&#039;&#039; also fills the placeholder of &#039;&#039;E-mail server (sending)&#039;&#039; with &amp;amp;lt;code&amp;amp;gt;smtp.office365.com:587&amp;amp;lt;/code&amp;amp;gt;, which is used when you leave that field empty. &#039;&#039;&#039;&#039;&#039;&amp;lt;u&amp;gt;NOTE:&amp;lt;/u&amp;gt;&#039;&#039;&#039;&#039;&#039; All values below come from the application you register in the Microsoft Entra ID (Azure AD) portal for this purpose. The registered application needs permission to send mail via SMTP for the mailbox in question.&lt;br /&gt;
&lt;br /&gt;
The fields shown below the &#039;&#039;&#039;OAuth2&#039;&#039;&#039; selector change depending on the selected mode; fields that are not needed are hidden&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;OAuth2:&#039;&#039;&#039; The OAuth2 mode to use.&lt;br /&gt;
* &#039;&#039;&#039;Client ID:&#039;&#039;&#039; &#039;&#039;(shown for Exchange and Microsoft 365)&#039;&#039; The application (client) ID of the registered application.&lt;br /&gt;
* &#039;&#039;&#039;Client Secret:&#039;&#039;&#039; &#039;&#039;(shown for Exchange and Microsoft 365)&#039;&#039; The client secret created for that registered application. Note that secrets have an expiry date in Entra ID — when the secret expires, sending stops working and the value must be renewed here.&lt;br /&gt;
* &#039;&#039;&#039;Owner Username:&#039;&#039;&#039; &#039;&#039;(shown for Exchange and Microsoft 365)&#039;&#039; The mailbox that is used for sending, i.e. the account the token is issued for — typically identical to &#039;&#039;E-mail user (sending)&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Owner Password:&#039;&#039;&#039; &#039;&#039;(shown for Microsoft 365 only)&#039;&#039; The password of that mailbox account. Only required for the Microsoft 365 mode, where the token is requested with the owner’s credentials. Stored encrypted; the field shows a masked dummy value.&lt;br /&gt;
* &#039;&#039;&#039;Tenant:&#039;&#039;&#039; &#039;&#039;(shown for Exchange and Microsoft 365)&#039;&#039; Your Microsoft tenant — either the tenant ID (GUID) or the tenant domain, e.g. &amp;amp;lt;code&amp;amp;gt;example.onmicrosoft.com&amp;amp;lt;/code&amp;amp;gt;. It determines against which directory the token is requested.&lt;br /&gt;
&lt;br /&gt;
== Testing the email configuration (sending) ==&lt;br /&gt;
To test if your configration is correct, you can send a test email.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Clicking the test email button will save the configuration!&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Test e-mail address:&#039;&#039;&#039; A recipient address to which a test mail is sent, e.g. your own address. The value is not stored in the configuration; it is only used for the test.&lt;br /&gt;
* &#039;&#039;&#039;Send test e-mail (button):&#039;&#039;&#039; Saves the current configuration first (so the test really uses what you see on screen) and then sends a short test mail from the configured &#039;&#039;E-mail&#039;&#039; address to the address entered above, using the sending configuration and, if selected, OAuth2. The subject and body of the test mail are in the language of your Settings app. The result appears next to the button:&lt;br /&gt;
** success message — the mail was handed over to the mail server successfully. Check the recipient’s inbox to confirm the delivery path as well.&lt;br /&gt;
** error message — sending failed, together with the reason reported by the mail server. Details are in the app log.&lt;br /&gt;
** If the entered address is not a valid e-mail address, the test is not performed and the field is highlighted for correction.&lt;br /&gt;
&lt;br /&gt;
A successful test proves the &#039;&#039;&#039;sending&#039;&#039;&#039; direction only. The receiving direction is verified by creating a meeting with the Outlook add-in and checking that the invitation appears in the app.&lt;br /&gt;
&lt;br /&gt;
== PBX conference ==&lt;br /&gt;
Selection list of all conference objects that exist in your PBX. Choosing an entry does two things:&lt;br /&gt;
&lt;br /&gt;
* The app is registered on the selected conference object, i.e. the conference object is linked with this app instance. If the app was previously assigned to another conference, that assignment is removed automatically, so exactly one conference belongs to the app instance.&lt;br /&gt;
* The name of the conference object is stored and inserted into the join links that the Outlook add-in writes into the meeting body — both the link that starts a call in the innovaphone client and the link that opens the conference in the browser.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the list is empty, no conference object exists yet in the PBX. Create one first; without a selected conference the configuration cannot be saved. The settings need to cofigure are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Conference object:&#039;&#039;&#039; The conference object to use for the meetings.&lt;br /&gt;
* &#039;&#039;&#039;Conference phone no.:&#039;&#039;&#039; The phone number that participants dial to join the conference. It is printed into the meeting invitation text, so that attendees without an innovaphone client (e.g. mobile or external participants) can dial in. When you pick a conference in the list, the field is filled automatically from the number of the selected conference object. If the object has no usable number, the field stays empty and shows a hint to enter the number manually — enter the number in the form external participants must dial, including any prefixes needed from the outside. The field must not be empty!&lt;br /&gt;
&lt;br /&gt;
== Outlook add-in ==&lt;br /&gt;
&lt;br /&gt;
=== Download manifest… (button) ===&lt;br /&gt;
Downloads the &amp;amp;lt;code&amp;amp;gt;manifest.xml&amp;amp;lt;/code&amp;amp;gt; of the Outlook add-in. The file is generated for the current app instance and for the language currently selected in your Settings app, i.e. it already contains the correct URLs of this installation and the localized button label and tooltip. Deploy this file to your users with the mechanism provided by Microsoft (centralized deployment in the Microsoft 365 admin center, or sideloading for a single user). After deployment, organizers get an additional button in the Outlook meeting compose window that creates the conference data for the meeting. The language used for in the XML for the button will be defined by the languge your myApps client has when downlaoding the file.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
[[Reference17:Concept App Service Conference Invitations]]&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference17:Concept_App_Service_Conference_Invitations&amp;diff=80405</id>
		<title>Reference17:Concept App Service Conference Invitations</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference17:Concept_App_Service_Conference_Invitations&amp;diff=80405"/>
		<updated>2026-08-28T12:38:25Z</updated>

		<summary type="html">&lt;p&gt;Msm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The App Service conference-invitations is an App Service which can be installed on an innovaphone App Platforms. It offers the possibility to create and organize video conferences. Attandends can enter ot the meeting via myApps, a web converence or just dial in.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Applies To ==&lt;br /&gt;
innovaphone PBX from version 17&lt;br /&gt;
&lt;br /&gt;
== PBX Settings Plugin ==&lt;br /&gt;
The conbfiguration will be done via the settings plugin. There the following things can be configure there:&lt;br /&gt;
&lt;br /&gt;
* Receiving email configuration: the settings Email, Emai user, EMail pwd, Email domain and SMTP port need to be configured for conference-invitations to be able to receive emails.&lt;br /&gt;
* Sending email configuration: the settings EMail host (sending), Email server (sending), Email User (sending), Email Password (sending) and the OAtuh2 settings are needed for conference-invitations to be able to send emails. Note that for now only Exchange Online and Microsoft 356 are supported for OAuth2.&lt;br /&gt;
* Test Email address and the button Send test email can be used to check, if the settings for sending emails work correctly. Test email address is the address the test email should be sent to.&lt;br /&gt;
* Conference object: a list to select the conference object that should be used for a video conference&lt;br /&gt;
* Conference tel. nr.: If no phone number is assigned to the selected conference object, it can be defined here. This is necessary for attantedees to be able to join via dial in. If the selected conference object has a phone number configured, it will be set to the input field.&lt;br /&gt;
* Download manifest: the button to download the manfiest file (see below)&lt;br /&gt;
&lt;br /&gt;
== Concepts ==&lt;br /&gt;
The conference-invitations servicve manages conferences cereated by outlook. After installation and setup, a user can create a myApps meeting using MS Outlook. That work&#039;s with the Outlook clients as well as the Outlook web interface. The use creates a normal meeting (a single meeting or a series) in outlook and presses the myApps meeting button in the view where a meeting will be created. The button is available after installing the manifest.xml (see below).&lt;br /&gt;
&lt;br /&gt;
A click on the button triggers the conference-invitations plugin to add additional information to the meeting, including links for  myApps, Web Conference as well as the phone number with a pin number to participate the meeting. Everyone who was added to the meeting in Outlook, will receive a meeting email (as always) with the information added by the plugin.&lt;br /&gt;
&lt;br /&gt;
An additional participant will be conference-invitations. So the app will receive the email, too, and keeps track of changes (like moved to an other day or time, cancleled meetings or canceled recurrenced of a series, etc.). When users entering the conference, the PBX will check with the conference-invitations, if the meeting the user whant to participate, is happening and let the user enter to the meeting room. If there is no meeting happening, the user can&#039;t enter to the conference since the conference does not exist.&lt;br /&gt;
&lt;br /&gt;
The conference-invitations service will send a response email after receiving a correct myApps meeting, to inform the organizer that everything is ok so far. Only after receiving that confirmation, the meeting is available in the system and will be managed and also be accessable (when the meeting happens) from now on. Old meetings will be deleted from the database after 24 hours. &lt;br /&gt;
&lt;br /&gt;
== Outlook plugin / manifest.xml ==&lt;br /&gt;
To be able to make a myApps meeting out of an Outlook meeting, the user needs the converence-invitations plugin for outlook. For this, a user must install the manifest.xml in his user account or the Exchange admin will do it for the users. For more information, please ask your Exchange admin or check the Exchange or Outlook documentation.&lt;br /&gt;
&lt;br /&gt;
== Exchange config ==&lt;br /&gt;
Conference-invitations must receive the email from Outlook to manage the meeting. For this, conference-invitations also acts as SMTP server. The credentials for the server will be configured in the Settings plugin. For this to work you first need to create an email address in Exchange so that it can be added to the meeting. However, Exchange than needs to redeirect the emil to the conference-invitations app by sending it to the AppPlatform, using the credentials configured in the Settings. For more information please check your Exchange documentation or ask your Exchange admin.&lt;br /&gt;
&lt;br /&gt;
==Related Articles==&lt;br /&gt;
* [[{{NAMESPACE}}:Apps/PbxManager/App_Conference_Invitations]]&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Conference_Invitations&amp;diff=80404</id>
		<title>Reference17:Apps/PbxManager/App Conference Invitations</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Conference_Invitations&amp;diff=80404"/>
		<updated>2026-08-28T12:35:01Z</updated>

		<summary type="html">&lt;p&gt;Msm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article describes the configuration of conference-invitations. Note that changes you made are not only safed when clicking on OK. They will automatically be saved before sending a test email. The following settings can be configured:&lt;br /&gt;
&lt;br /&gt;
== Email (receiving) ==&lt;br /&gt;
The app runs its own built-in mail receiver. The address of that server is the one of the AP the conference-invitatiosn service is running on. You need to create an email address in Exchange and let Exchange redirect the mail to conference-invitation, so that conference-invitations will be one of the attantends for meetings created in Outlook as myApps Meeting. This is necessary to let conference-invitations know about the meeting. This are the settings to receive emails:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Email:&#039;&#039;&#039; The email address of the app itself.&lt;br /&gt;
* &#039;&#039;&#039;Email user:&#039;&#039;&#039; User name that the delivering mail server (or relay) may use to authenticate against the app’s built-in mail receiver.&lt;br /&gt;
* &#039;&#039;&#039;Email password:&#039;&#039;&#039; Password belonging to &#039;&#039;email&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Email domain:&#039;&#039;&#039; The domain name with which the app’s mail receiver identifies itself towards the delivering mail server, e.g. &amp;amp;lt;code&amp;amp;gt;example.com&amp;amp;lt;/code&amp;amp;gt;. Some mail servers and relays refuse delivery if the receiving side announces an unexpected or empty name, and the value is also used when the app challenges the delivering server for authentication. Use the domain that matches the &#039;&#039;E-mail&#039;&#039; address above.&lt;br /&gt;
* &#039;&#039;&#039;SMTP port:&#039;&#039;&#039; TCP port on which the app listens for incoming invitation mails (default 54242).The app platform normally does not let an app occupy the well-known port 25, therefore a high port is used by default. Your mail system must be configured to deliver mail for the &#039;&#039;E-mail&#039;&#039; address to the app’s host on exactly this port (transport rule / forwarding / relay entry, depending on your mail product).&lt;br /&gt;
&lt;br /&gt;
== Email (sending) ==&lt;br /&gt;
When the app has successfully processed an invitation, it can answer the organizer with an acceptance mail (an iCalendar reply) so that the organizer sees the conference as &amp;quot;accepted&amp;quot; in their calendar. The app also uses this configuration to send the test mail. The reply is only sent if &#039;&#039;&#039;all four&#039;&#039;&#039; of the following fields are filled. If any of them is empty, invitations are still processed and stored normally, but no acceptance mail is sent, and a corresponding warning is written to the app log.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Email host (sending):&#039;&#039;&#039; The host name with which the app identifies itself towards your outgoing mail server (e.g. pbx.example.com). Many mail servers reject mail from a client that announces an unknown or empty name.&lt;br /&gt;
* &#039;&#039;&#039;Email server (sending):&#039;&#039;&#039; The outgoing mail server the app connects to, in the form host or host:port (e.g. mail.example.com:587). If no port is given, the standard SMTP port 25 is used. The field may be left empty when a hosted OAuth2 mode is selected (see below) — in that case the provider’s default server is used.&lt;br /&gt;
* &#039;&#039;&#039;Email user (seding):&#039;&#039;&#039; User name of the mailbox that is used to send the acceptance mails.&lt;br /&gt;
* &#039;&#039;&#039;Email password (sending):&#039;&#039;&#039; Password of that mailbox. Not needed with OAuth2 authentication — there the token obtained from the OAuth2 fields is used instead of a password.&lt;br /&gt;
&lt;br /&gt;
== OAuth2 (authentication against Microsoft mail servers) ==&lt;br /&gt;
If your outgoing mail server no longer accepts a plain user name and password — which is the case for Microsoft 365 / Exchange Online — the app can obtain an access token instead. The following OAuth2 modes can be configured:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Mode&lt;br /&gt;
!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Off&#039;&#039;&#039;&lt;br /&gt;
|No OAuth2. The app authenticates with &#039;&#039;E-mail user (sending)&#039;&#039; and &#039;&#039;E-mail password (sending)&#039;&#039;. Use this for on-premises mail servers and for any provider that still accepts passwords.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Exchange (smtp.office365.com:587)&#039;&#039;&#039;&lt;br /&gt;
|Delegated access to Exchange Online. The app acts on behalf of a mailbox owner whose consent was granted once via the app registration.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Microsoft 365 (smtp.office365.com:587)&#039;&#039;&#039;&lt;br /&gt;
|Access to a Microsoft 365 mailbox using the mailbox owner’s credentials in combination with the registered application.&lt;br /&gt;
|}&lt;br /&gt;
Selecting &#039;&#039;Exchange&#039;&#039; or &#039;&#039;Microsoft 365&#039;&#039; also fills the placeholder of &#039;&#039;E-mail server (sending)&#039;&#039; with &amp;amp;lt;code&amp;amp;gt;smtp.office365.com:587&amp;amp;lt;/code&amp;amp;gt;, which is used when you leave that field empty. &#039;&#039;&#039;&#039;&#039;&amp;lt;u&amp;gt;NOTE:&amp;lt;/u&amp;gt;&#039;&#039;&#039;&#039;&#039; All values below come from the application you register in the Microsoft Entra ID (Azure AD) portal for this purpose. The registered application needs permission to send mail via SMTP for the mailbox in question.&lt;br /&gt;
&lt;br /&gt;
The fields shown below the &#039;&#039;&#039;OAuth2&#039;&#039;&#039; selector change depending on the selected mode; fields that are not needed are hidden&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;OAuth2:&#039;&#039;&#039; The OAuth2 mode to use.&lt;br /&gt;
* &#039;&#039;&#039;Client ID:&#039;&#039;&#039; &#039;&#039;(shown for Exchange and Microsoft 365)&#039;&#039; The application (client) ID of the registered application.&lt;br /&gt;
* &#039;&#039;&#039;Client Secret:&#039;&#039;&#039; &#039;&#039;(shown for Exchange and Microsoft 365)&#039;&#039; The client secret created for that registered application. Note that secrets have an expiry date in Entra ID — when the secret expires, sending stops working and the value must be renewed here.&lt;br /&gt;
* &#039;&#039;&#039;Owner Username:&#039;&#039;&#039; &#039;&#039;(shown for Exchange and Microsoft 365)&#039;&#039; The mailbox that is used for sending, i.e. the account the token is issued for — typically identical to &#039;&#039;E-mail user (sending)&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Owner Password:&#039;&#039;&#039; &#039;&#039;(shown for Microsoft 365 only)&#039;&#039; The password of that mailbox account. Only required for the Microsoft 365 mode, where the token is requested with the owner’s credentials. Stored encrypted; the field shows a masked dummy value.&lt;br /&gt;
* &#039;&#039;&#039;Tenant:&#039;&#039;&#039; &#039;&#039;(shown for Exchange and Microsoft 365)&#039;&#039; Your Microsoft tenant — either the tenant ID (GUID) or the tenant domain, e.g. &amp;amp;lt;code&amp;amp;gt;example.onmicrosoft.com&amp;amp;lt;/code&amp;amp;gt;. It determines against which directory the token is requested.&lt;br /&gt;
&lt;br /&gt;
== Testing the email configuration (sending) ==&lt;br /&gt;
To test if your configration is correct, you can send a test email.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Clicking the test email button will save the configuration!&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Test e-mail address:&#039;&#039;&#039; A recipient address to which a test mail is sent, e.g. your own address. The value is not stored in the configuration; it is only used for the test.&lt;br /&gt;
* &#039;&#039;&#039;Send test e-mail (button):&#039;&#039;&#039; Saves the current configuration first (so the test really uses what you see on screen) and then sends a short test mail from the configured &#039;&#039;E-mail&#039;&#039; address to the address entered above, using the sending configuration and, if selected, OAuth2. The subject and body of the test mail are in the language of your Settings app. The result appears next to the button:&lt;br /&gt;
** success message — the mail was handed over to the mail server successfully. Check the recipient’s inbox to confirm the delivery path as well.&lt;br /&gt;
** error message — sending failed, together with the reason reported by the mail server. Details are in the app log.&lt;br /&gt;
** If the entered address is not a valid e-mail address, the test is not performed and the field is highlighted for correction.&lt;br /&gt;
&lt;br /&gt;
A successful test proves the &#039;&#039;&#039;sending&#039;&#039;&#039; direction only. The receiving direction is verified by creating a meeting with the Outlook add-in and checking that the invitation appears in the app.&lt;br /&gt;
&lt;br /&gt;
== PBX conference ==&lt;br /&gt;
Selection list of all conference objects that exist in your PBX. Choosing an entry does two things:&lt;br /&gt;
&lt;br /&gt;
* The app is registered on the selected conference object, i.e. the conference object is linked with this app instance. If the app was previously assigned to another conference, that assignment is removed automatically, so exactly one conference belongs to the app instance.&lt;br /&gt;
* The name of the conference object is stored and inserted into the join links that the Outlook add-in writes into the meeting body — both the link that starts a call in the innovaphone client and the link that opens the conference in the browser.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the list is empty, no conference object exists yet in the PBX. Create one first; without a selected conference the configuration cannot be saved. The settings need to cofigure are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Conference object:&#039;&#039;&#039; The conference object to use for the meetings.&lt;br /&gt;
* &#039;&#039;&#039;Conference phone no.:&#039;&#039;&#039; The phone number that participants dial to join the conference. It is printed into the meeting invitation text, so that attendees without an innovaphone client (e.g. mobile or external participants) can dial in. When you pick a conference in the list, the field is filled automatically from the number of the selected conference object. If the object has no usable number, the field stays empty and shows a hint to enter the number manually — enter the number in the form external participants must dial, including any prefixes needed from the outside. The field must not be empty!&lt;br /&gt;
&lt;br /&gt;
== Outlook add-in ==&lt;br /&gt;
&lt;br /&gt;
=== Download manifest… (button) ===&lt;br /&gt;
Downloads the &amp;amp;lt;code&amp;amp;gt;manifest.xml&amp;amp;lt;/code&amp;amp;gt; of the Outlook add-in. The file is generated for the current app instance and for the language currently selected in your Settings app, i.e. it already contains the correct URLs of this installation and the localized button label and tooltip. Deploy this file to your users with the mechanism provided by Microsoft (centralized deployment in the Microsoft 365 admin center, or sideloading for a single user). After deployment, organizers get an additional button in the Outlook meeting compose window that creates the conference data for the meeting. The language used for in the XML for the button will be defined by the languge your myApps client has when downlaoding the file.&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Conference_Invitations&amp;diff=80403</id>
		<title>Reference17:Apps/PbxManager/App Conference Invitations</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Conference_Invitations&amp;diff=80403"/>
		<updated>2026-08-28T12:34:26Z</updated>

		<summary type="html">&lt;p&gt;Msm: Little fixes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article describes the configuration of conference-invitations. Note that changes you made are not only safed when clicking on OK. They will automatically be saved before sending a test email. The following settings can be configured:&lt;br /&gt;
&lt;br /&gt;
== Email (receiving) ==&lt;br /&gt;
The app runs its own built-in mail receiver. The address of that server is the one of the AP the conference-invitatiosn service is running on. You need to create an email address in Exchange and let Exchange redirect the mail to conference-invitation, so that conference-invitations will be one of the attantends for meetings created in Outlook as myApps Meeting. This is necessary to let conference-invitations know about the meeting. This are the settings to receive emails:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Email:&#039;&#039;&#039; The email address of the app itself.&lt;br /&gt;
* &#039;&#039;&#039;Email user:&#039;&#039;&#039; User name that the delivering mail server (or relay) may use to authenticate against the app’s built-in mail receiver.&lt;br /&gt;
* &#039;&#039;&#039;Email password:&#039;&#039;&#039; Password belonging to &#039;&#039;email&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Email domain:&#039;&#039;&#039; The domain name with which the app’s mail receiver identifies itself towards the delivering mail server, e.g. &amp;amp;lt;code&amp;amp;gt;example.com&amp;amp;lt;/code&amp;amp;gt;. Some mail servers and relays refuse delivery if the receiving side announces an unexpected or empty name, and the value is also used when the app challenges the delivering server for authentication. Use the domain that matches the &#039;&#039;E-mail&#039;&#039; address above.&lt;br /&gt;
* &#039;&#039;&#039;SMTP port:&#039;&#039;&#039; TCP port on which the app listens for incoming invitation mails (default 54242).The app platform normally does not let an app occupy the well-known port 25, therefore a high port is used by default. Your mail system must be configured to deliver mail for the &#039;&#039;E-mail&#039;&#039; address to the app’s host on exactly this port (transport rule / forwarding / relay entry, depending on your mail product).&lt;br /&gt;
&lt;br /&gt;
== Email (sending) ==&lt;br /&gt;
When the app has successfully processed an invitation, it can answer the organizer with an acceptance mail (an iCalendar reply) so that the organizer sees the conference as &amp;quot;accepted&amp;quot; in their calendar. The app also uses this configuration to send the test mail. The reply is only sent if &#039;&#039;&#039;all four&#039;&#039;&#039; of the following fields are filled. If any of them is empty, invitations are still processed and stored normally, but no acceptance mail is sent, and a corresponding warning is written to the app log.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Email host (sending):&#039;&#039;&#039; The host name with which the app identifies itself towards your outgoing mail server (e.g. pbx.example.com). Many mail servers reject mail from a client that announces an unknown or empty name.&lt;br /&gt;
* &#039;&#039;&#039;Email server (sending):&#039;&#039;&#039; The outgoing mail server the app connects to, in the form host or host:port (e.g. mail.example.com:587). If no port is given, the standard SMTP port 25 is used. The field may be left empty when a hosted OAuth2 mode is selected (see below) — in that case the provider’s default server is used, and this default is shown as a grey placeholder text in the field as soon as you pick the mode.&lt;br /&gt;
* &#039;&#039;&#039;Email user (seding):&#039;&#039;&#039; User name of the mailbox that is used to send the acceptance mails.&lt;br /&gt;
* &#039;&#039;&#039;Email password (sending):&#039;&#039;&#039; Password of that mailbox. Not needed with OAuth2 authentication — there the token obtained from the OAuth2 fields is used instead of a password.&lt;br /&gt;
&lt;br /&gt;
== OAuth2 (authentication against Microsoft mail servers) ==&lt;br /&gt;
If your outgoing mail server no longer accepts a plain user name and password — which is the case for Microsoft 365 / Exchange Online — the app can obtain an access token instead. The following OAuth2 modes can be configured:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Mode&lt;br /&gt;
!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Off&#039;&#039;&#039;&lt;br /&gt;
|No OAuth2. The app authenticates with &#039;&#039;E-mail user (sending)&#039;&#039; and &#039;&#039;E-mail password (sending)&#039;&#039;. Use this for on-premises mail servers and for any provider that still accepts passwords.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Exchange (smtp.office365.com:587)&#039;&#039;&#039;&lt;br /&gt;
|Delegated access to Exchange Online. The app acts on behalf of a mailbox owner whose consent was granted once via the app registration.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Microsoft 365 (smtp.office365.com:587)&#039;&#039;&#039;&lt;br /&gt;
|Access to a Microsoft 365 mailbox using the mailbox owner’s credentials in combination with the registered application.&lt;br /&gt;
|}&lt;br /&gt;
Selecting &#039;&#039;Exchange&#039;&#039; or &#039;&#039;Microsoft 365&#039;&#039; also fills the placeholder of &#039;&#039;E-mail server (sending)&#039;&#039; with &amp;amp;lt;code&amp;amp;gt;smtp.office365.com:587&amp;amp;lt;/code&amp;amp;gt;, which is used when you leave that field empty. &#039;&#039;&#039;&#039;&#039;&amp;lt;u&amp;gt;NOTE:&amp;lt;/u&amp;gt;&#039;&#039;&#039;&#039;&#039; All values below come from the application you register in the Microsoft Entra ID (Azure AD) portal for this purpose. The registered application needs permission to send mail via SMTP for the mailbox in question.&lt;br /&gt;
&lt;br /&gt;
The fields shown below the &#039;&#039;&#039;OAuth2&#039;&#039;&#039; selector change depending on the selected mode; fields that are not needed are hidden&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;OAuth2:&#039;&#039;&#039; The OAuth2 mode to use.&lt;br /&gt;
* &#039;&#039;&#039;Client ID:&#039;&#039;&#039; &#039;&#039;(shown for Exchange and Microsoft 365)&#039;&#039; The application (client) ID of the registered application.&lt;br /&gt;
* &#039;&#039;&#039;Client Secret:&#039;&#039;&#039; &#039;&#039;(shown for Exchange and Microsoft 365)&#039;&#039; The client secret created for that registered application. Note that secrets have an expiry date in Entra ID — when the secret expires, sending stops working and the value must be renewed here.&lt;br /&gt;
* &#039;&#039;&#039;Owner Username:&#039;&#039;&#039; &#039;&#039;(shown for Exchange and Microsoft 365)&#039;&#039; The mailbox that is used for sending, i.e. the account the token is issued for — typically identical to &#039;&#039;E-mail user (sending)&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Owner Password:&#039;&#039;&#039; &#039;&#039;(shown for Microsoft 365 only)&#039;&#039; The password of that mailbox account. Only required for the Microsoft 365 mode, where the token is requested with the owner’s credentials. Stored encrypted; the field shows a masked dummy value.&lt;br /&gt;
* &#039;&#039;&#039;Tenant:&#039;&#039;&#039; &#039;&#039;(shown for Exchange and Microsoft 365)&#039;&#039; Your Microsoft tenant — either the tenant ID (GUID) or the tenant domain, e.g. &amp;amp;lt;code&amp;amp;gt;example.onmicrosoft.com&amp;amp;lt;/code&amp;amp;gt;. It determines against which directory the token is requested.&lt;br /&gt;
&lt;br /&gt;
== Testing the email configuration (sending) ==&lt;br /&gt;
To test if your configration is correct, you can send a test email.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Clicking the test email button will save the configuration!&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Test e-mail address:&#039;&#039;&#039; A recipient address to which a test mail is sent, e.g. your own address. The value is not stored in the configuration; it is only used for the test.&lt;br /&gt;
* &#039;&#039;&#039;Send test e-mail (button):&#039;&#039;&#039; Saves the current configuration first (so the test really uses what you see on screen) and then sends a short test mail from the configured &#039;&#039;E-mail&#039;&#039; address to the address entered above, using the sending configuration and, if selected, OAuth2. The subject and body of the test mail are in the language of your Settings app. The result appears next to the button:&lt;br /&gt;
** success message — the mail was handed over to the mail server successfully. Check the recipient’s inbox to confirm the delivery path as well.&lt;br /&gt;
** error message — sending failed, together with the reason reported by the mail server. Details are in the app log.&lt;br /&gt;
** If the entered address is not a valid e-mail address, the test is not performed and the field is highlighted for correction.&lt;br /&gt;
&lt;br /&gt;
A successful test proves the &#039;&#039;&#039;sending&#039;&#039;&#039; direction only. The receiving direction is verified by creating a meeting with the Outlook add-in and checking that the invitation appears in the app.&lt;br /&gt;
&lt;br /&gt;
== PBX conference ==&lt;br /&gt;
Selection list of all conference objects that exist in your PBX. Choosing an entry does two things:&lt;br /&gt;
&lt;br /&gt;
* The app is registered on the selected conference object, i.e. the conference object is linked with this app instance. If the app was previously assigned to another conference, that assignment is removed automatically, so exactly one conference belongs to the app instance.&lt;br /&gt;
* The name of the conference object is stored and inserted into the join links that the Outlook add-in writes into the meeting body — both the link that starts a call in the innovaphone client and the link that opens the conference in the browser.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the list is empty, no conference object exists yet in the PBX. Create one first; without a selected conference the configuration cannot be saved. The settings need to cofigure are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Conference object:&#039;&#039;&#039; The conference object to use for the meetings.&lt;br /&gt;
* &#039;&#039;&#039;Conference phone no.:&#039;&#039;&#039; The phone number that participants dial to join the conference. It is printed into the meeting invitation text, so that attendees without an innovaphone client (e.g. mobile or external participants) can dial in. When you pick a conference in the list, the field is filled automatically from the number of the selected conference object. If the object has no usable number, the field stays empty and shows a hint to enter the number manually — enter the number in the form external participants must dial, including any prefixes needed from the outside. The field must not be empty!&lt;br /&gt;
&lt;br /&gt;
== Outlook add-in ==&lt;br /&gt;
&lt;br /&gt;
=== Download manifest… (button) ===&lt;br /&gt;
Downloads the &amp;amp;lt;code&amp;amp;gt;manifest.xml&amp;amp;lt;/code&amp;amp;gt; of the Outlook add-in. The file is generated for the current app instance and for the language currently selected in your Settings app, i.e. it already contains the correct URLs of this installation and the localized button label and tooltip. Deploy this file to your users with the mechanism provided by Microsoft (centralized deployment in the Microsoft 365 admin center, or sideloading for a single user). After deployment, organizers get an additional button in the Outlook meeting compose window that creates the conference data for the meeting. The language used for in the XML for the button will be defined by the languge your myApps client has when downlaoding the file.&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Conference_Invitations&amp;diff=80402</id>
		<title>Reference17:Apps/PbxManager/App Conference Invitations</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Conference_Invitations&amp;diff=80402"/>
		<updated>2026-08-28T12:32:32Z</updated>

		<summary type="html">&lt;p&gt;Msm: Added the missing parts&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article describes the configuration of conference-invitations. Note that changes you made are not only safed when clicking on OK. They will automatically be saved before sending a test email. The following settings can be configured:&lt;br /&gt;
&lt;br /&gt;
== Email (receiving) ==&lt;br /&gt;
The app runs its own built-in mail receiver. The address of that server is the one of the AP the conference-invitatiosn service is running on. You need to create an email address in Exchange and let Exchange redirect the mail to conference-invitation, so that conference-invitations will be one of the attantends for meetings created in Outlook as myApps Meeting. This is necessary to let conference-invitations know about the meeting. This are the settings to receive emails:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Email:&#039;&#039;&#039; The email address of the app itself.&lt;br /&gt;
* &#039;&#039;&#039;Email user:&#039;&#039;&#039; User name that the delivering mail server (or relay) may use to authenticate against the app’s built-in mail receiver.&lt;br /&gt;
* &#039;&#039;&#039;Email password:&#039;&#039;&#039; Password belonging to &#039;&#039;email&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Email domain:&#039;&#039;&#039; The domain name with which the app’s mail receiver identifies itself towards the delivering mail server, e.g. &amp;amp;lt;code&amp;amp;gt;example.com&amp;amp;lt;/code&amp;amp;gt;. Some mail servers and relays refuse delivery if the receiving side announces an unexpected or empty name, and the value is also used when the app challenges the delivering server for authentication. Use the domain that matches the &#039;&#039;E-mail&#039;&#039; address above.&lt;br /&gt;
* &#039;&#039;&#039;SMTP port:&#039;&#039;&#039; TCP port on which the app listens for incoming invitation mails (default 54242).The app platform normally does not let an app occupy the well-known port 25, therefore a high port is used by default. Your mail system must be configured to deliver mail for the &#039;&#039;E-mail&#039;&#039; address to the app’s host on exactly this port (transport rule / forwarding / relay entry, depending on your mail product).&lt;br /&gt;
&lt;br /&gt;
== Email (sending) ==&lt;br /&gt;
When the app has successfully processed an invitation, it can answer the organizer with an acceptance mail (an iCalendar reply) so that the organizer sees the conference as &amp;quot;accepted&amp;quot; in their calendar. The app also uses this configuration to send the test mail. The reply is only sent if &#039;&#039;&#039;all four&#039;&#039;&#039; of the following fields are filled. If any of them is empty, invitations are still processed and stored normally, but no acceptance mail is sent, and a corresponding warning is written to the app log.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Email host (sending):&#039;&#039;&#039; The host name with which the app identifies itself towards your outgoing mail server (e.g. pbx.example.com). Many mail servers reject mail from a client that announces an unknown or empty name.&lt;br /&gt;
* &#039;&#039;&#039;Email server (sending):&#039;&#039;&#039; The outgoing mail server the app connects to, in the form host or host:port (e.g. mail.example.com:587). If no port is given, the standard SMTP port 25 is used. The field may be left empty when a hosted OAuth2 mode is selected (see below) — in that case the provider’s default server is used, and this default is shown as a grey placeholder text in the field as soon as you pick the mode.&lt;br /&gt;
* &#039;&#039;&#039;Email user (seding):&#039;&#039;&#039; User name of the mailbox that is used to send the acceptance mails.&lt;br /&gt;
* &#039;&#039;&#039;EMail password (sending):&#039;&#039;&#039; Password of that mailbox. As with all password fields, the field shows a masked dummy value and is only overwritten when you type something new; the value is stored encrypted. Not needed with OAuth2 authentication — there the token obtained from the OAuth2 fields is used instead of a password.&lt;br /&gt;
&lt;br /&gt;
== OAuth2 (authentication against Microsoft mail servers) ==&lt;br /&gt;
If your outgoing mail server no longer accepts a plain user name and password — which is the case for Microsoft 365 / Exchange Online — the app can obtain an access token instead. The following OAuth2 modes can be configured:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Mode&lt;br /&gt;
!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Off&#039;&#039;&#039;&lt;br /&gt;
|No OAuth2. The app authenticates with &#039;&#039;E-mail user (sending)&#039;&#039; and &#039;&#039;E-mail password (sending)&#039;&#039;. Use this for on-premises mail servers and for any provider that still accepts passwords.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Exchange (smtp.office365.com:587)&#039;&#039;&#039;&lt;br /&gt;
|Delegated access to Exchange Online. The app acts on behalf of a mailbox owner whose consent was granted once via the app registration.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Microsoft 365 (smtp.office365.com:587)&#039;&#039;&#039;&lt;br /&gt;
|Access to a Microsoft 365 mailbox using the mailbox owner’s credentials in combination with the registered application.&lt;br /&gt;
|}&lt;br /&gt;
Selecting &#039;&#039;Exchange&#039;&#039; or &#039;&#039;Microsoft 365&#039;&#039; also fills the placeholder of &#039;&#039;E-mail server (sending)&#039;&#039; with &amp;amp;lt;code&amp;amp;gt;smtp.office365.com:587&amp;amp;lt;/code&amp;amp;gt;, which is used when you leave that field empty. &#039;&#039;&#039;&#039;&#039;&amp;lt;u&amp;gt;NOTE:&amp;lt;/u&amp;gt;&#039;&#039;&#039;&#039;&#039; All values below come from the application you register in the Microsoft Entra ID (Azure AD) portal for this purpose. The registered application needs permission to send mail via SMTP for the mailbox in question.&lt;br /&gt;
&lt;br /&gt;
The fields shown below the &#039;&#039;&#039;OAuth2&#039;&#039;&#039; selector change depending on the selected mode; fields that are not needed are hidden&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;OAuth2:&#039;&#039;&#039; The OAuth2 mode to use.&lt;br /&gt;
* &#039;&#039;&#039;Client ID:&#039;&#039;&#039; &#039;&#039;(shown for Exchange and Microsoft 365)&#039;&#039; The application (client) ID of the registered application.&lt;br /&gt;
* &#039;&#039;&#039;Client Secret:&#039;&#039;&#039; &#039;&#039;(shown for Exchange and Microsoft 365)&#039;&#039; The client secret created for that registered application. Note that secrets have an expiry date in Entra ID — when the secret expires, sending stops working and the value must be renewed here.&lt;br /&gt;
* &#039;&#039;&#039;Owner Username:&#039;&#039;&#039; &#039;&#039;(shown for Exchange and Microsoft 365)&#039;&#039; The mailbox that is used for sending, i.e. the account the token is issued for — typically identical to &#039;&#039;E-mail user (sending)&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Owner Password:&#039;&#039;&#039; &#039;&#039;(shown for Microsoft 365 only)&#039;&#039; The password of that mailbox account. Only required for the Microsoft 365 mode, where the token is requested with the owner’s credentials. Stored encrypted; the field shows a masked dummy value.&lt;br /&gt;
* &#039;&#039;&#039;Tenant:&#039;&#039;&#039; &#039;&#039;(shown for Exchange and Microsoft 365)&#039;&#039; Your Microsoft tenant — either the tenant ID (GUID) or the tenant domain, e.g. &amp;amp;lt;code&amp;amp;gt;example.onmicrosoft.com&amp;amp;lt;/code&amp;amp;gt;. It determines against which directory the token is requested.&lt;br /&gt;
&lt;br /&gt;
== Testing the email configuration (sending) ==&lt;br /&gt;
To test if your configration is correct, you can send a test email.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Clicking the test email button will save the configuration!&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Test e-mail address:&#039;&#039;&#039; A recipient address to which a test mail is sent, e.g. your own address. The value is not stored in the configuration; it is only used for the test.&lt;br /&gt;
* &#039;&#039;&#039;Send test e-mail (button):&#039;&#039;&#039; Saves the current configuration first (so the test really uses what you see on screen) and then sends a short test mail from the configured &#039;&#039;E-mail&#039;&#039; address to the address entered above, using the sending configuration and, if selected, OAuth2. The subject and body of the test mail are in the language of your Settings app. The result appears next to the button:&lt;br /&gt;
** success message — the mail was handed over to the mail server successfully. Check the recipient’s inbox to confirm the delivery path as well.&lt;br /&gt;
** error message — sending failed, together with the reason reported by the mail server. Details are in the app log.&lt;br /&gt;
** If the entered address is not a valid e-mail address, the test is not performed and the field is highlighted for correction.&lt;br /&gt;
&lt;br /&gt;
A successful test proves the &#039;&#039;&#039;sending&#039;&#039;&#039; direction only. The receiving direction is verified by creating a meeting with the Outlook add-in and checking that the invitation appears in the app.&lt;br /&gt;
&lt;br /&gt;
== PBX conference ==&lt;br /&gt;
Selection list of all conference objects that exist in your PBX. Choosing an entry does two things:&lt;br /&gt;
&lt;br /&gt;
* The app is registered on the selected conference object, i.e. the conference object is linked with this app instance. If the app was previously assigned to another conference, that assignment is removed automatically, so exactly one conference belongs to the app instance.&lt;br /&gt;
* The name of the conference object is stored and inserted into the join links that the Outlook add-in writes into the meeting body — both the link that starts a call in the innovaphone client and the link that opens the conference in the browser.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the list is empty, no conference object exists yet in the PBX. Create one first; without a selected conference the configuration cannot be saved. The settings need to cofigure are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Conference object:&#039;&#039;&#039; The conference object to use for the meetings.&lt;br /&gt;
* &#039;&#039;&#039;Conference phone no.:&#039;&#039;&#039; The phone number that participants dial to join the conference. It is printed into the meeting invitation text, so that attendees without an innovaphone client (e.g. mobile or external participants) can dial in. When you pick a conference in the list, the field is filled automatically from the number of the selected conference object. If the object has no usable number, the field stays empty and shows a hint to enter the number manually — enter the number in the form external participants must dial, including any prefixes needed from the outside. The field must not be empty!&lt;br /&gt;
&lt;br /&gt;
== Outlook add-in ==&lt;br /&gt;
&lt;br /&gt;
=== Download manifest… (button) ===&lt;br /&gt;
Downloads the &amp;amp;lt;code&amp;amp;gt;manifest.xml&amp;amp;lt;/code&amp;amp;gt; of the Outlook add-in. The file is generated for the current app instance and for the language currently selected in your Settings app, i.e. it already contains the correct URLs of this installation and the localized button label and tooltip. Deploy this file to your users with the mechanism provided by Microsoft (centralized deployment in the Microsoft 365 admin center, or sideloading for a single user). After deployment, organizers get an additional button in the Outlook meeting compose window that creates the conference data for the meeting. The language used for in the XML for the button will be defined by the languge your myApps client has when downlaoding the file.&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Conference_Invitations&amp;diff=80401</id>
		<title>Reference17:Apps/PbxManager/App Conference Invitations</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference17:Apps/PbxManager/App_Conference_Invitations&amp;diff=80401"/>
		<updated>2026-08-28T12:09:18Z</updated>

		<summary type="html">&lt;p&gt;Msm: Creation of the article&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article describes the configuration of conference-invitations. Note that changes you made are not only safed when clicking on OK. They will automatically be saved before sending a test email. The following settings can be configured:&lt;br /&gt;
&lt;br /&gt;
== Email (receiving) ==&lt;br /&gt;
The app runs its own built-in mail receiver. The address of that server is the one of the AP the conference-invitatiosn service is running on. You need to create an email address in Exchange and let Exchange redirect the mail to conference-invitation, so that conference-invitations will be one of the attantends for meetings created in Outlook as myApps Meeting. This is necessary to let conference-invitations know about the meeting. This are the settings to receive emails:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Email:&#039;&#039;&#039; The email address of the app itself.&lt;br /&gt;
* &#039;&#039;&#039;Email user:&#039;&#039;&#039; User name that the delivering mail server (or relay) may use to authenticate against the app’s built-in mail receiver.&lt;br /&gt;
* &#039;&#039;&#039;Email password:&#039;&#039;&#039; Password belonging to &#039;&#039;email&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Email domain:&#039;&#039;&#039; The domain name with which the app’s mail receiver identifies itself towards the delivering mail server, e.g. &amp;amp;lt;code&amp;amp;gt;example.com&amp;amp;lt;/code&amp;amp;gt;. Some mail servers and relays refuse delivery if the receiving side announces an unexpected or empty name, and the value is also used when the app challenges the delivering server for authentication. Use the domain that matches the &#039;&#039;E-mail&#039;&#039; address above.&lt;br /&gt;
* &#039;&#039;&#039;SMTP port:&#039;&#039;&#039; TCP port on which the app listens for incoming invitation mails (default 54242).The app platform normally does not let an app occupy the well-known port 25, therefore a high port is used by default. Your mail system must be configured to deliver mail for the &#039;&#039;E-mail&#039;&#039; address to the app’s host on exactly this port (transport rule / forwarding / relay entry, depending on your mail product).&lt;br /&gt;
&lt;br /&gt;
== Email (sending) ==&lt;br /&gt;
When the app has successfully processed an invitation, it can answer the organizer with an acceptance mail (an iCalendar reply) so that the organizer sees the conference as &amp;quot;accepted&amp;quot; in their calendar. The app also uses this configuration to send the test mail. The reply is only sent if &#039;&#039;&#039;all four&#039;&#039;&#039; of the following fields are filled. If any of them is empty, invitations are still processed and stored normally, but no acceptance mail is sent, and a corresponding warning is written to the app log.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Email host (sending):&#039;&#039;&#039; The host name with which the app identifies itself towards your outgoing mail server (e.g. pbx.example.com). Many mail servers reject mail from a client that announces an unknown or empty name.&lt;br /&gt;
* &#039;&#039;&#039;Email server (sending):&#039;&#039;&#039; The outgoing mail server the app connects to, in the form host or host:port (e.g. mail.example.com:587). If no port is given, the standard SMTP port 25 is used. The field may be left empty when a hosted OAuth2 mode is selected (see below) — in that case the provider’s default server is used, and this default is shown as a grey placeholder text in the field as soon as you pick the mode.&lt;br /&gt;
* &#039;&#039;&#039;Email user (seding):&#039;&#039;&#039; User name of the mailbox that is used to send the acceptance mails.&lt;br /&gt;
* &#039;&#039;&#039;EMail password (sending):&#039;&#039;&#039; Password of that mailbox. As with all password fields, the field shows a masked dummy value and is only overwritten when you type something new; the value is stored encrypted. Not needed with OAuth2 authentication — there the token obtained from the OAuth2 fields is used instead of a password.&lt;br /&gt;
&lt;br /&gt;
== OAuth2 (authentication against Microsoft mail servers) ==&lt;br /&gt;
If your outgoing mail server no longer accepts a plain user name and password — which is the case for Microsoft 365 / Exchange Online — the app can obtain an access token instead. The following OAuth2 modes can be configured:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Mode&lt;br /&gt;
!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Off&#039;&#039;&#039;&lt;br /&gt;
|No OAuth2. The app authenticates with &#039;&#039;E-mail user (sending)&#039;&#039; and &#039;&#039;E-mail password (sending)&#039;&#039;. Use this for on-premises mail servers and for any provider that still accepts passwords.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Exchange (smtp.office365.com:587)&#039;&#039;&#039;&lt;br /&gt;
|Delegated access to Exchange Online. The app acts on behalf of a mailbox owner whose consent was granted once via the app registration.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Microsoft 365 (smtp.office365.com:587)&#039;&#039;&#039;&lt;br /&gt;
|Access to a Microsoft 365 mailbox using the mailbox owner’s credentials in combination with the registered application.&lt;br /&gt;
|}&lt;br /&gt;
Selecting &#039;&#039;Exchange&#039;&#039; or &#039;&#039;Microsoft 365&#039;&#039; also fills the placeholder of &#039;&#039;E-mail server (sending)&#039;&#039; with &amp;amp;lt;code&amp;amp;gt;smtp.office365.com:587&amp;amp;lt;/code&amp;amp;gt;, which is used when you leave that field empty. &#039;&#039;&#039;&#039;&#039;&amp;lt;u&amp;gt;NOTE:&amp;lt;/u&amp;gt;&#039;&#039;&#039;&#039;&#039; All values below come from the application you register in the Microsoft Entra ID (Azure AD) portal for this purpose. The registered application needs permission to send mail via SMTP for the mailbox in question.&lt;br /&gt;
&lt;br /&gt;
The fields shown below the &#039;&#039;&#039;OAuth2&#039;&#039;&#039; selector change depending on the selected mode; fields that are not needed are hidden&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;OAuth2:&#039;&#039;&#039; The OAuth2 mode to use.&lt;br /&gt;
* &#039;&#039;&#039;Client ID:&#039;&#039;&#039; &#039;&#039;(shown for Exchange and Microsoft 365)&#039;&#039; The application (client) ID of the registered application.&lt;br /&gt;
* &#039;&#039;&#039;Client Secret:&#039;&#039;&#039; &#039;&#039;(shown for Exchange and Microsoft 365)&#039;&#039; The client secret created for that registered application. Note that secrets have an expiry date in Entra ID — when the secret expires, sending stops working and the value must be renewed here.&lt;br /&gt;
* &#039;&#039;&#039;Owner Username:&#039;&#039;&#039; &#039;&#039;(shown for Exchange and Microsoft 365)&#039;&#039; The mailbox that is used for sending, i.e. the account the token is issued for — typically identical to &#039;&#039;E-mail user (sending)&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Owner Password:&#039;&#039;&#039; &#039;&#039;(shown for Microsoft 365 only)&#039;&#039; The password of that mailbox account. Only required for the Microsoft 365 mode, where the token is requested with the owner’s credentials. Stored encrypted; the field shows a masked dummy value.&lt;br /&gt;
* &#039;&#039;&#039;Tenant:&#039;&#039;&#039; &#039;&#039;(shown for Exchange and Microsoft 365)&#039;&#039; Your Microsoft tenant — either the tenant ID (GUID) or the tenant domain, e.g. &amp;amp;lt;code&amp;amp;gt;example.onmicrosoft.com&amp;amp;lt;/code&amp;amp;gt;. It determines against which directory the token is requested.&lt;br /&gt;
&lt;br /&gt;
== Testing the email configuration (sending) ==&lt;br /&gt;
To test if your configration is correct, you can send a test email.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Clicking the test email button will save the configuration!&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Test e-mail address:&#039;&#039;&#039; A recipient address to which a test mail is sent, e.g. your own address. The value is not stored in the configuration; it is only used for the test.&lt;br /&gt;
* &#039;&#039;&#039;Send test e-mail (button):&#039;&#039;&#039; Saves the current configuration first (so the test really uses what you see on screen) and then sends a short test mail from the configured &#039;&#039;E-mail&#039;&#039; address to the address entered above, using the sending configuration and, if selected, OAuth2. The subject and body of the test mail are in the language of your Settings app. The result appears next to the button:&lt;br /&gt;
** success message — the mail was handed over to the mail server successfully. Check the recipient’s inbox to confirm the delivery path as well.&lt;br /&gt;
** error message — sending failed, together with the reason reported by the mail server. Details are in the app log.&lt;br /&gt;
** If the entered address is not a valid e-mail address, the test is not performed and the field is highlighted for correction.&lt;br /&gt;
&lt;br /&gt;
A successful test proves the &#039;&#039;&#039;sending&#039;&#039;&#039; direction only. The receiving direction is verified by creating a meeting with the Outlook add-in and checking that the invitation appears in the app.&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference17:Concept_App_Service_Conference_Invitations&amp;diff=80395</id>
		<title>Reference17:Concept App Service Conference Invitations</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference17:Concept_App_Service_Conference_Invitations&amp;diff=80395"/>
		<updated>2026-08-28T09:03:17Z</updated>

		<summary type="html">&lt;p&gt;Msm: Created page with &amp;quot;The App Service conference-invitations is an App Service which can be installed on an innovaphone App Platforms. It offers the possibility to create and organize video conferences. Attandends can enter ot the meeting via myApps, a web converence or just dial in.   == Applies To == innovaphone PBX from version 17  == PBX Settings Plugin == The conbfiguration will be done via the settings plugin. There the following things can be configure there:  * Receiving email configu...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The App Service conference-invitations is an App Service which can be installed on an innovaphone App Platforms. It offers the possibility to create and organize video conferences. Attandends can enter ot the meeting via myApps, a web converence or just dial in.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Applies To ==&lt;br /&gt;
innovaphone PBX from version 17&lt;br /&gt;
&lt;br /&gt;
== PBX Settings Plugin ==&lt;br /&gt;
The conbfiguration will be done via the settings plugin. There the following things can be configure there:&lt;br /&gt;
&lt;br /&gt;
* Receiving email configuration: the settings Email, Emai user, EMail pwd, Email domain and SMTP port need to be configured for conference-invitations to be able to receive emails.&lt;br /&gt;
* Sending email configuration: the settings EMail host (sending), Email server (sending), Email User (sending), Email Password (sending) and the OAtuh2 settings are needed for conference-invitations to be able to send emails. Note that for now only Exchange Online and Microsoft 356 are supported for OAuth2.&lt;br /&gt;
* Test Email address and the button Send test email can be used to check, if the settings for sending emails work correctly. Test email address is the address the test email should be sent to.&lt;br /&gt;
* Conference object: a list to select the conference object that should be used for a video conference&lt;br /&gt;
* Conference tel. nr.: If no phone number is assigned to the selected conference object, it can be defined here. This is necessary for attantedees to be able to join via dial in. If the selected conference object has a phone number configured, it will be set to the input field.&lt;br /&gt;
* Download manifest: the button to download the manfiest file (see below)&lt;br /&gt;
&lt;br /&gt;
== Concepts ==&lt;br /&gt;
The conference-invitations servicve manages conferences cereated by outlook. After installation and setup, a user can create a myApps meeting using MS Outlook. That work&#039;s with the Outlook clients as well as the Outlook web interface. The use creates a normal meeting (a single meeting or a series) in outlook and presses the myApps meeting button in the view where a meeting will be created. The button is available after installing the manifest.xml (see below).&lt;br /&gt;
&lt;br /&gt;
A click on the button triggers the conference-invitations plugin to add additional information to the meeting, including links for  myApps, Web Conference as well as the phone number with a pin number to participate the meeting. Everyone who was added to the meeting in Outlook, will receive a meeting email (as always) with the information added by the plugin.&lt;br /&gt;
&lt;br /&gt;
An additional participant will be conference-invitations. So the app will receive the email, too, and keeps track of changes (like moved to an other day or time, cancleled meetings or canceled recurrenced of a series, etc.). When users entering the conference, the PBX will check with the conference-invitations, if the meeting the user whant to participate, is happening and let the user enter to the meeting room. If there is no meeting happening, the user can&#039;t enter to the conference since the conference does not exist.&lt;br /&gt;
&lt;br /&gt;
The conference-invitations service will send a response email after receiving a correct myApps meeting, to inform the organizer that everything is ok so far. Only after receiving that confirmation, the meeting is available in the system and will be managed and also be accessable (when the meeting happens) from now on. Old meetings will be deleted from the database after 24 hours. &lt;br /&gt;
&lt;br /&gt;
== Outlook plugin / manifest.xml ==&lt;br /&gt;
To be able to make a myApps meeting out of an Outlook meeting, the user needs the converence-invitations plugin for outlook. For this, a user must install the manifest.xml in his user account or the Exchange admin will do it for the users. For more information, please ask your Exchange admin or check the Exchange or Outlook documentation.&lt;br /&gt;
&lt;br /&gt;
== Exchange config ==&lt;br /&gt;
Conference-invitations must receive the email from Outlook to manage the meeting. For this, conference-invitations also acts as SMTP server. The credentials for the server will be configured in the Settings plugin. For this to work you first need to create an email address in Exchange so that it can be added to the meeting. However, Exchange than needs to redeirect the emil to the conference-invitations app by sending it to the AppPlatform, using the credentials configured in the Settings. For more information please check your Exchange documentation or ask your Exchange admin.&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto13r3:Setting_up_the_Calendar_App_with_OAuth2_and_app-only_authentication&amp;diff=72610</id>
		<title>Howto13r3:Setting up the Calendar App with OAuth2 and app-only authentication</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto13r3:Setting_up_the_Calendar_App_with_OAuth2_and_app-only_authentication&amp;diff=72610"/>
		<updated>2024-07-15T14:04:23Z</updated>

		<summary type="html">&lt;p&gt;Msm: /* Configure the permissions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= How-to setup the Calendar for OAuth2 with app only authentication =&lt;br /&gt;
Starting with 13r3 sr17 and 14r1 sr3, the Calendar can be setup to use app only authentication in Exchange Online. So no user with application impersonation is used anymore. This guide shows you how to set it up inside the Azure portal as well as howto configure the calendar. Please note, that this is not a complete administration guide. Instead, it is a simply step-by-step tutorial which should work but maybe not the most accurate administration of your Azure AD – it’s just the way how we managed to use it. It is highly recommended to ask your Azure Administrator for details and / or read the Microsoft documentation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Note:&#039;&#039;&#039;&#039;&#039; The screenshot and labels may change because of updates done by Microsoft. The following steps had been made with the version with the Azure portal from June 2024. Note also that the images are scaled. If you need a sharper image, just click on it to see it in full size&lt;br /&gt;
&lt;br /&gt;
= Registering the Calendar app for the Azure Microsoft Entra ID =&lt;br /&gt;
== Open the Azure Microsoft Entra ID ==&lt;br /&gt;
* Go to the [https://portal.azure.com Azure Portal homepage] and sign in with your admin user&lt;br /&gt;
** At &amp;quot;Azure services&amp;quot; click on &amp;quot;Microsoft Entra ID&amp;quot;&lt;br /&gt;
[[File:Cal app auth ccreen-001.png|Azure - Microsoft Entra ID]]&lt;br /&gt;
&lt;br /&gt;
== Create a new App registration ==&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-002.png|Azure - Add App Registration]]&lt;br /&gt;
* Click on &amp;quot;+ Add&amp;quot; and select &amp;quot;App registration&amp;quot;&lt;br /&gt;
[[File:CalOauth2AppAuthScreen-003.png|Azure - App Registration]]&lt;br /&gt;
&lt;br /&gt;
* Insert a name for the app and define whether you need single- or multi-tenant access.&lt;br /&gt;
* For the Redirect URI select &amp;quot;Public client/native (mobile &amp;amp; desktop)&amp;quot; and use the predefined URL &amp;quot;https://login.microsoftonline.com/common/oauth2/nativeclient&amp;quot;&lt;br /&gt;
* Finalize this step by clicking on &amp;quot;Register&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[File:CalOauth2AppAuthScreen-004.png|Azure - App Overview]]&lt;br /&gt;
&lt;br /&gt;
* When the overview page is shown (if not, click on Overview on the sidebar), copy the following IDs and temporarily put them into a document (the need to be added to the Calendar config later):&lt;br /&gt;
** Application (client) ID&lt;br /&gt;
** Directory (tenant) ID&lt;br /&gt;
&lt;br /&gt;
* After that, open the section &amp;quot;Overview - Manage&amp;quot; and click on &amp;quot;Manifest&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Configure the permissions ==&lt;br /&gt;
* Add the following json part to the manifest after &amp;quot;requiredREsourceAccess&amp;quot; (see highlighted passage in the screenshot):&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;resourceAppId&amp;quot;: &amp;quot;00000002-0000-0ff1-ce00-000000000000&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceAccess&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;id&amp;quot;: &amp;quot;dc890d15-9560-4a4c-9b7f-a736ec74ec40&amp;quot;,&lt;br /&gt;
                &amp;quot;type&amp;quot;: &amp;quot;Role&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    },&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-005.png|Arzure - App Manifest]]&lt;br /&gt;
&lt;br /&gt;
* Save the changes (if you can&#039;t click save, you probably have an error in the json syntax)&lt;br /&gt;
* When done, click on &amp;quot;API permissions&amp;quot; on the sidebar (still inside the &amp;quot;Overview - Manage&amp;quot; menu of your registered app).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-006.png|Azure - App API permissions]]&lt;br /&gt;
* Under &amp;quot;Configured permissions - API / Permissions name&amp;quot; you should find the entry &amp;quot;Office 365 Exchange Online - full_access_as_app&amp;quot;. You now need to grant admin consent for that permission by just clicking on &amp;quot;Grant admin consent...&amp;quot;.&lt;br /&gt;
* Make sure that every permission has the green mark and &amp;quot;Granted for...&amp;quot; entry as status (see screenshot).&lt;br /&gt;
&lt;br /&gt;
== Create a Client Secret ==&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-007.png|Azure - App Certificates &amp;amp; secrets]]&lt;br /&gt;
* Under &amp;quot;Overview - Manage&amp;quot; click on &amp;quot;Certificates &amp;amp; secrets&amp;quot;&lt;br /&gt;
* Create a new secret by clicking on &amp;quot;+ New client secret&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-008.png|Azure - Add a client secret]]&lt;br /&gt;
* Set whatever description you like to use for the new client secret&lt;br /&gt;
* Define when the client secret will expire as defined by the policy of your company. Note that after the secret expires, the Calendar can&#039;t sync with Exchange anymore until you create a new secret and set the value (see below) in the Calendar configuration.&lt;br /&gt;
* Click &amp;quot;Add&amp;quot; to create the client secret&lt;br /&gt;
&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-009.png|Azure - Client secret value]]&lt;br /&gt;
* Copy the value of the added client secret (see screenshot). Note that later you may not have access to the value since it will be obfuscated / hidden by Azure. This value must be given to the Calendar configuration.&lt;br /&gt;
&lt;br /&gt;
= Setting up the Calendar configuration on the App Platform =&lt;br /&gt;
* Open the PBX Manager in myApps, click on Calendar and then on &amp;quot;Configure&amp;quot;. (NOTE: If you have an already existing Exchange sync configuration, you must first set the Type of sync to disabled and save the change. Open the configuration again to continue.)&lt;br /&gt;
** Set the fields like shown in the table below&lt;br /&gt;
** Click on &amp;quot;Ok&amp;quot; to save the configuration.&lt;br /&gt;
** The Calendar is now communicating with Exchange Online using App Only Authentication.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
{| cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Field&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Value&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|Sync-Type:&lt;br /&gt;
|Cloud (Exchange Online, App-Only Authentication)&lt;br /&gt;
|-&lt;br /&gt;
|User:&lt;br /&gt;
|Any email address that exists. This user doesn&#039;t need to have special rights. The address will just be used to get the configuration of Exchange and to start the communication with the server. However, it must be a valid email address with a configured mailbox.&lt;br /&gt;
|-&lt;br /&gt;
|Autodiscover URL:&lt;br /&gt;
|Leave it empty, use https://autodiscover-s.outlook.com or the address of your autodiscover server.&lt;br /&gt;
|-&lt;br /&gt;
|Exchange server to be used: &lt;br /&gt;
|Either external or internal, depending on your configuration. However, external should be fine for most Exchange 365 installations.&lt;br /&gt;
|-&lt;br /&gt;
|Client ID:&lt;br /&gt;
|The Application (client) ID from your Entra ID app registration from the configuration step above.&lt;br /&gt;
|-&lt;br /&gt;
|Tenant ID:&lt;br /&gt;
|The Directory (tenant) ID from your Entra ID app registration from the configuration step above.&lt;br /&gt;
|-&lt;br /&gt;
|Supported account:&lt;br /&gt;
|“My organization only” (if you configured single tenant) or “Multiple organization” (if you configured multi tenant).&lt;br /&gt;
|-&lt;br /&gt;
|Client Secret:&lt;br /&gt;
|The value of the client secret you from your application registration (see above).&lt;br /&gt;
|-&lt;br /&gt;
|Max subscriptions per connection:&lt;br /&gt;
|As long as there is no need leave it to the default of 200.&lt;br /&gt;
|-&lt;br /&gt;
|EWS protocol debugging&lt;br /&gt;
|Only enable it for trouble shooting.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
== Authenticating error with Autodiscover ==&lt;br /&gt;
If you run into authentication problems with the Autodiscover server, it can be that the default security settings are enabled for your Active Directory (which probably will be the case for new Exchange Online Setups). In that case, configure the security settings to allow access to the Autodiscover server or disable the default security settings, like described here:&lt;br /&gt;
&lt;br /&gt;
https://docs.microsoft.com/en-us/azure/active-directory/fundamentals/concept-fundamentals-security-defaults&lt;br /&gt;
&lt;br /&gt;
== Finding an alternative Autodiscover server ==&lt;br /&gt;
You can also try to find an alternative Autodiscover server by using the Microsoft Autodiscover V2 API. To do so, just enter the following URL to your browser (replacing the email address placeholder first): https://outlook.office365.com/autodiscover/autodiscover.json/v1.0/&amp;lt;Email-Address-Of-An-Exchange-User&amp;gt;?Protocol=AutodiscoverV1&lt;br /&gt;
&lt;br /&gt;
If the user has the email address myuser@mycompany.com, the URL will be: https://outlook.office365.com/autodiscover/autodiscover.json/v1.0/myuser@mycompany.com?Protocol=AutodiscoverV1&lt;br /&gt;
&lt;br /&gt;
You should receive a simple text message that may be similar to the following:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;Protocol&amp;quot;:&amp;quot;AutodiscoverV1&amp;quot;,&amp;quot;Url&amp;quot;:&amp;quot;https://outlook.office365.com/autodiscover/autodiscover.xml&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
Your Autodiscover server will be the part from https to the first /autodiscover part (in this example https://outlook.office365.com)&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Main_Page&amp;diff=72524</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Main_Page&amp;diff=72524"/>
		<updated>2024-07-09T09:25:16Z</updated>

		<summary type="html">&lt;p&gt;Msm: /* Latest News */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;!-- Message of the day --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0em 1em;&amp;quot;&amp;gt;&lt;br /&gt;
== Remote Support ==&lt;br /&gt;
innovaphone only carries out scheduled remote maintenance via our ticket system by prior consultation.&amp;lt;br&amp;gt;&lt;br /&gt;
Please do not accept AnyDesk requests without prior appointment via ticket.&lt;br /&gt;
&lt;br /&gt;
Please ensure that you download the [https://anydesk.com/en/downloads/windows latest AnyDesk version].&lt;br /&gt;
&lt;br /&gt;
Please note: We cannot accept any liability for the external content of AnyDesk. AnyDesk is responsible for the content of its own software.&lt;br /&gt;
We are not liable for any damages resulting from the use of a non-updated or non-conforming version of AnyDesk.&lt;br /&gt;
&lt;br /&gt;
== Searching ==&lt;br /&gt;
Searching in wiki works, but is sometimes cumbersome.  However, you can have Google do the job for you.  Try [https://www.google.de/search?q=site%3Ainnovaphone.com+xml+documentation &amp;lt;code&amp;gt;site:innovaphone.com your search terms&amp;lt;/code&amp;gt;] to search the innovaphone sites for matches!&lt;br /&gt;
&lt;br /&gt;
If you still don&#039;t find what you are looking for, [mailto:presales@innovaphone.com drop us a message]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- latest news commented out, may be reactivated once there are new really --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; margin-top:15px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0.5em 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- please insert new message ON TOP and remove extraneous (more than 5) old messages --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;nowiki&amp;gt; ~~~~ is replaced by your name and date automatically &amp;lt;/nowiki&amp;gt; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Latest News ==&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Msm|Msm]] ([[User talk:Msm|talk]]) 11:25, 9 July 2024 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V14r1 product/14r1/firmware 1410534 (sr 5) available | Version 14r1 Service Release 5]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Msm|Msm]] ([[User talk:Msm|talk]]) 11:25, 9 July 2024 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V13r3 product/13r3/firmware 137969 (sr 17) available | Version 13r3 Service Release 17]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Msc|Msc]] ([[User talk:Msc|talk]]) 11:16, 28 June 2024 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V14r2 product/14r2/firmware 1420276 (beta3) available | Version 14r2 Beta3]] is now available from the [http://store.innovaphone.com/beta/download.htm Beta Store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Aer|Aer]] ([[User talk:Aer|talk]]) 16:30, 24 May 2024 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V12r2 product/12r2/firmware 125882 (sr 67) available | Version 12r2 Service Release 67]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Cam|Cam]] 16:22, 18 September 2023 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[App Calculator beta1 available]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Sga|Sga]] ([[User talk:Sga|talk]]) 17:43, 15 September 2023 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless Handset Firmware IP73 1011 (5.0.1) released | Wireless Handset Firmware IP73 1011 (5.0.1)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Gal|Gal]] ([[User talk:Gal|talk]]) 13:39, 31 July 2023 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless Handset Firmware IP64 10314 (3.0.13)/IP65 10119 (3.0.13) released | Wireless Handset Firmware IP64 10314 (3.0.13)/IP65 10119 (3.0.13)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Cam|Cam]] 12:03, 31 July 2023 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[App Working final available]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 15:38, 6 February 2023 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless_Handset_Firmware_IP62_3040621_(6.2.7)_released | Wireless Handset Firmware IP62 3040621 (6.2.7)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 13:13, 6 February 2023 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:WinPDM_Software_3130113_%284.1.8%29_released | WinPDM Software 3130113 (4.1.8)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Inno-mst|Inno-mst]] 11:22, 14 April 2022 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Operator9 90246 (hotfix24) available | Operator9 hotfix24]] is now available from [https://store.innovaphone.com/release/download.htm the Software download area].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 15:05, 11 February 2022 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless_Handset_Firmware_IP64_10313_(2.12.10)/IP65_10118_(2.12.10)_released | Wireless Handset Firmware IP64 10313 (2.12.10)/IP65 10118 (2.12.10)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:kwa|kwa]] 14:00, 16 June 2021 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:iQM_Build_8029100_available | IQM Build 8029100 Hotfix34]] is now available from the [https://store.innovaphone.com/release/download.htm the Software download area].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 12:46, 16 June 2021 (CEST))&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:TAPI Service Provider 8188 (hotfix21) available|TAPI Service Provider 8188 (hotfix21)]] is now available from [https://store.innovaphone.com/release/download.htm the Software download area].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 13:17, 2 November 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Linux_Application_Platform_100271_(sr64)_available | Linux Application Platform V10 100271 sr64]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 13:17, 2 November 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Innovaphone_Reporting_100271_(sr64)_available | innovaphone Reporting V10 100271 sr64]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 13:17, 2 November 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Innovaphone_Fax_100271_(sr64)_available | innovaphone Fax V10 100271 sr64]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 13:17, 2 November 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Innovaphone_Exchange_Calendar_Connector_100271_(sr64)_available | innovaphone Exchange Calendar Connector V10 100271 sr64]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 18:21, 12 October 2020 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless_Handset_Firmware_IP61_3022811_(4.7.8)/IP63_3022912_(4.7.8)_released | Wireless Handset Firmware IP61 3022811 (4.7.8)/IP63 3022912 (4.7.8)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 21:30, 27 March 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless_Handset_Firmware_and_Management_Software_product/9.00/wireless_100037_%28hotfix19%29_available | Wireless Package hotfix 19]] is now available from the [http://download.innovaphone.com/ice/9.00#wireless V9 download area].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 07:56, 9 March 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:App_Platform_build_90007_available | App Platform build 90007]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:kwa|kwa]] 14:00, 02 March 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Recording_Build_121100_available | innovaphone Recording SR29 build 121100]] is now available from the [http://download.innovaphone.com/ice/10.00/#recording V10 download area].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; margin-top:15px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0.5em 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== New Articles ==&lt;br /&gt;
&amp;lt;!-- https://www.mediawiki.org/wiki/Extension:Newest_Pages --&amp;gt;&lt;br /&gt;
{{Special:Newestpages/all/20}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; margin-top:15px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0.5em 1em; font-size:1&amp;quot;&amp;gt;&lt;br /&gt;
== More innovaphone Ressources ==&lt;br /&gt;
* [http://www.innovaphone.com Home Page]&lt;br /&gt;
* [http://download.innovaphone.com Download Site ]&lt;br /&gt;
* [http://my.innovaphone.com my.innovaphone ]&lt;br /&gt;
* [http://mantis.innovaphone.com/ Ticketing System ]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Main_Page&amp;diff=72520</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Main_Page&amp;diff=72520"/>
		<updated>2024-07-09T09:20:12Z</updated>

		<summary type="html">&lt;p&gt;Msm: /* Latest News */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;!-- Message of the day --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0em 1em;&amp;quot;&amp;gt;&lt;br /&gt;
== Remote Support ==&lt;br /&gt;
innovaphone only carries out scheduled remote maintenance via our ticket system by prior consultation.&amp;lt;br&amp;gt;&lt;br /&gt;
Please do not accept AnyDesk requests without prior appointment via ticket.&lt;br /&gt;
&lt;br /&gt;
Please ensure that you download the [https://anydesk.com/en/downloads/windows latest AnyDesk version].&lt;br /&gt;
&lt;br /&gt;
Please note: We cannot accept any liability for the external content of AnyDesk. AnyDesk is responsible for the content of its own software.&lt;br /&gt;
We are not liable for any damages resulting from the use of a non-updated or non-conforming version of AnyDesk.&lt;br /&gt;
&lt;br /&gt;
== Searching ==&lt;br /&gt;
Searching in wiki works, but is sometimes cumbersome.  However, you can have Google do the job for you.  Try [https://www.google.de/search?q=site%3Ainnovaphone.com+xml+documentation &amp;lt;code&amp;gt;site:innovaphone.com your search terms&amp;lt;/code&amp;gt;] to search the innovaphone sites for matches!&lt;br /&gt;
&lt;br /&gt;
If you still don&#039;t find what you are looking for, [mailto:presales@innovaphone.com drop us a message]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- latest news commented out, may be reactivated once there are new really --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; margin-top:15px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0.5em 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- please insert new message ON TOP and remove extraneous (more than 5) old messages --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;nowiki&amp;gt; ~~~~ is replaced by your name and date automatically &amp;lt;/nowiki&amp;gt; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Latest News ==&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Aer|Aer]] ([[User talk:Aer|talk]]) 16:30, 24 May 2024 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V14r1 product/14r1/firmware 1410534 (sr 5) available | Version 14r1 Service Release 5]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Aer|Aer]] ([[User talk:Aer|talk]]) 16:30, 24 May 2024 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V13r3 product/13r3/firmware 137969 (sr 17) available | Version 13r3 Service Release 17]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Msc|Msc]] ([[User talk:Msc|talk]]) 11:16, 28 June 2024 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V14r2 product/14r2/firmware 1420276 (beta3) available | Version 14r2 Beta3]] is now available from the [http://store.innovaphone.com/beta/download.htm Beta Store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Aer|Aer]] ([[User talk:Aer|talk]]) 16:30, 24 May 2024 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V14r1 product/14r1/firmware 1410520 (sr 4) available | Version 14r1 Service Release 4]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Aer|Aer]] ([[User talk:Aer|talk]]) 16:30, 24 May 2024 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V13r3 product/13r3/firmware 137962 (sr 16) available | Version 13r3 Service Release 16]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Aer|Aer]] ([[User talk:Aer|talk]]) 16:30, 24 May 2024 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V12r2 product/12r2/firmware 125882 (sr 67) available | Version 12r2 Service Release 67]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Cam|Cam]] 16:22, 18 September 2023 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[App Calculator beta1 available]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Sga|Sga]] ([[User talk:Sga|talk]]) 17:43, 15 September 2023 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless Handset Firmware IP73 1011 (5.0.1) released | Wireless Handset Firmware IP73 1011 (5.0.1)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Gal|Gal]] ([[User talk:Gal|talk]]) 13:39, 31 July 2023 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless Handset Firmware IP64 10314 (3.0.13)/IP65 10119 (3.0.13) released | Wireless Handset Firmware IP64 10314 (3.0.13)/IP65 10119 (3.0.13)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Cam|Cam]] 12:03, 31 July 2023 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[App Working final available]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 15:38, 6 February 2023 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless_Handset_Firmware_IP62_3040621_(6.2.7)_released | Wireless Handset Firmware IP62 3040621 (6.2.7)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 13:13, 6 February 2023 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:WinPDM_Software_3130113_%284.1.8%29_released | WinPDM Software 3130113 (4.1.8)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Inno-mst|Inno-mst]] 11:22, 14 April 2022 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Operator9 90246 (hotfix24) available | Operator9 hotfix24]] is now available from [https://store.innovaphone.com/release/download.htm the Software download area].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 15:05, 11 February 2022 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless_Handset_Firmware_IP64_10313_(2.12.10)/IP65_10118_(2.12.10)_released | Wireless Handset Firmware IP64 10313 (2.12.10)/IP65 10118 (2.12.10)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:kwa|kwa]] 14:00, 16 June 2021 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:iQM_Build_8029100_available | IQM Build 8029100 Hotfix34]] is now available from the [https://store.innovaphone.com/release/download.htm the Software download area].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 12:46, 16 June 2021 (CEST))&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:TAPI Service Provider 8188 (hotfix21) available|TAPI Service Provider 8188 (hotfix21)]] is now available from [https://store.innovaphone.com/release/download.htm the Software download area].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 13:17, 2 November 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Linux_Application_Platform_100271_(sr64)_available | Linux Application Platform V10 100271 sr64]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 13:17, 2 November 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Innovaphone_Reporting_100271_(sr64)_available | innovaphone Reporting V10 100271 sr64]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 13:17, 2 November 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Innovaphone_Fax_100271_(sr64)_available | innovaphone Fax V10 100271 sr64]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 13:17, 2 November 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Innovaphone_Exchange_Calendar_Connector_100271_(sr64)_available | innovaphone Exchange Calendar Connector V10 100271 sr64]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 18:21, 12 October 2020 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless_Handset_Firmware_IP61_3022811_(4.7.8)/IP63_3022912_(4.7.8)_released | Wireless Handset Firmware IP61 3022811 (4.7.8)/IP63 3022912 (4.7.8)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 21:30, 27 March 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless_Handset_Firmware_and_Management_Software_product/9.00/wireless_100037_%28hotfix19%29_available | Wireless Package hotfix 19]] is now available from the [http://download.innovaphone.com/ice/9.00#wireless V9 download area].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 07:56, 9 March 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:App_Platform_build_90007_available | App Platform build 90007]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:kwa|kwa]] 14:00, 02 March 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Recording_Build_121100_available | innovaphone Recording SR29 build 121100]] is now available from the [http://download.innovaphone.com/ice/10.00/#recording V10 download area].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; margin-top:15px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0.5em 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== New Articles ==&lt;br /&gt;
&amp;lt;!-- https://www.mediawiki.org/wiki/Extension:Newest_Pages --&amp;gt;&lt;br /&gt;
{{Special:Newestpages/all/20}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; margin-top:15px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0.5em 1em; font-size:1&amp;quot;&amp;gt;&lt;br /&gt;
== More innovaphone Ressources ==&lt;br /&gt;
* [http://www.innovaphone.com Home Page]&lt;br /&gt;
* [http://download.innovaphone.com Download Site ]&lt;br /&gt;
* [http://my.innovaphone.com my.innovaphone ]&lt;br /&gt;
* [http://mantis.innovaphone.com/ Ticketing System ]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:CalOauth2AppAuthScreen-003.png&amp;diff=72164</id>
		<title>File:CalOauth2AppAuthScreen-003.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:CalOauth2AppAuthScreen-003.png&amp;diff=72164"/>
		<updated>2024-06-19T06:23:54Z</updated>

		<summary type="html">&lt;p&gt;Msm: Msm uploaded a new version of File:CalOauth2AppAuthScreen-003.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto13r3:Setting_up_the_Calendar_App_with_OAuth2_and_app-only_authentication&amp;diff=72141</id>
		<title>Howto13r3:Setting up the Calendar App with OAuth2 and app-only authentication</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto13r3:Setting_up_the_Calendar_App_with_OAuth2_and_app-only_authentication&amp;diff=72141"/>
		<updated>2024-06-18T14:30:36Z</updated>

		<summary type="html">&lt;p&gt;Msm: /* How-to setup the Calendar for OAuth2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= How-to setup the Calendar for OAuth2 with app only authentication =&lt;br /&gt;
Starting with 13r3 sr17 and 14r1 sr3, the Calendar can be setup to use app only authentication in Exchange Online. So no user with application impersonation is used anymore. This guide shows you how to set it up inside the Azure portal as well as howto configure the calendar. Please note, that this is not a complete administration guide. Instead, it is a simply step-by-step tutorial which should work but maybe not the most accurate administration of your Azure AD – it’s just the way how we managed to use it. It is highly recommended to ask your Azure Administrator for details and / or read the Microsoft documentation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Note:&#039;&#039;&#039;&#039;&#039; The screenshot and labels may change because of updates done by Microsoft. The following steps had been made with the version with the Azure portal from June 2024. Note also that the images are scaled. If you need a sharper image, just click on it to see it in full size&lt;br /&gt;
&lt;br /&gt;
= Registering the Calendar app for the Azure Microsoft Entra ID =&lt;br /&gt;
== Open the Azure Microsoft Entra ID ==&lt;br /&gt;
* Go to the [https://portal.azure.com Azure Portal homepage] and sign in with your admin user&lt;br /&gt;
** At &amp;quot;Azure services&amp;quot; click on &amp;quot;Microsoft Entra ID&amp;quot;&lt;br /&gt;
[[File:Cal app auth ccreen-001.png|thumb|Azure - Microsoft Entra ID]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Create a new App registration ==&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-002.png|thumb|Azure - Add App Registration]]&lt;br /&gt;
* Click on &amp;quot;+ Add&amp;quot; and select &amp;quot;App registration&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:CalOauth2AppAuthScreen-003.png|thumb|Azure - App Registration]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Insert a name for the app and define whether you need single- or multi-tenant access.&lt;br /&gt;
* For the Redirect URI select &amp;quot;Public client/native (mobile &amp;amp; desktop)&amp;quot; and use the predefined URL &amp;quot;https://login.microsoftonline.com/common/oauth2/nativeclient&amp;quot;&lt;br /&gt;
* Finalize this step by clicking on &amp;quot;Register&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:CalOauth2AppAuthScreen-004.png|thumb|Azure - App Overview]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* When the overview page is shown (if not, click on Overview on the sidebar), copy the following IDs and temporarily put them into a document (the need to be added to the Calendar config later):&lt;br /&gt;
** Application (client) ID&lt;br /&gt;
** Directory (tenant) ID&lt;br /&gt;
&lt;br /&gt;
* After that, open the section &amp;quot;Overview - Manage&amp;quot; and click on &amp;quot;Manifest&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Configure the permissions ==&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-005.png|thumb|Arzure - App Manifest]]&lt;br /&gt;
* Add the following json part to the manifest after &amp;quot;requiredREsourceAccess&amp;quot; (see highlighted passage in the screenshot):&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;resourceAppId&amp;quot;: &amp;quot;00000002-0000-0ff1-ce00-000000000000&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceAccess&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;id&amp;quot;: &amp;quot;dc890d15-9560-4a4c-9b7f-a736ec74ec40&amp;quot;,&lt;br /&gt;
                &amp;quot;type&amp;quot;: &amp;quot;Role&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
* Save the changes (if you can&#039;t click save, you probably have an error in the json syntax)&lt;br /&gt;
* When done, click on &amp;quot;API permissions&amp;quot; on the sidebar (still inside the &amp;quot;Overview - Manage&amp;quot; menu of your registered app).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-006.png|thumb|Azure - App API permissions]]&lt;br /&gt;
* Under &amp;quot;Configured permissions - API / Permissions name&amp;quot; you should find the entry &amp;quot;Office 265 Exchange Online - full_access_as_app&amp;quot;. You now need to grant admin consent for that permission by just clicking on &amp;quot;Grant admin consent...&amp;quot;.&lt;br /&gt;
* Make sure that every permission has the green mark and &amp;quot;Granted for...&amp;quot; entry as status (see screenshot).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Create a Client Secret ==&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-007.png|thumb|Azure - App Certificates &amp;amp; secrets]]&lt;br /&gt;
* Under &amp;quot;Overview - Manage&amp;quot; click on &amp;quot;Certificates &amp;amp; secrets&amp;quot;&lt;br /&gt;
* Create a new secret by clicking on &amp;quot;+ New client secret&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-008.png|thumb|Azure - Add a client secret]]&lt;br /&gt;
* Set whatever description you like to use for the new client secret&lt;br /&gt;
* Define when the client secret will expire as defined by the policy of your company. Note that after the secret expires, the Calendar can&#039;t sync with Exchange anymore until you create a new secret and set the value (see below) in the Calendar configuration.&lt;br /&gt;
* Click &amp;quot;Add&amp;quot; to create the client secret&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-009.png|thumb|Azure - Client secret value]]&lt;br /&gt;
* Copy the value of the added client secret (see screenshot). Note that later you may not have access to the value since it will be obfuscated / hidden by Azure. This value must be given to the Calendar configuration.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Setting up the Calendar configuration on the App Platform =&lt;br /&gt;
* Open the PBX Manager in myApps, click on Calendar and then on &amp;quot;Configure&amp;quot;. (NOTE: If you have an already existing Exchange sync configuration, you must first set the Type of sync to disabled and save the change. Open the configuration again to continue.)&lt;br /&gt;
** Set the fields like shown in the table below&lt;br /&gt;
** Click on &amp;quot;Ok&amp;quot; to save the configuration.&lt;br /&gt;
** The Calendar is now communicating with Exchange Online using App Only Authentication.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
{| cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Field&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Value&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|Sync-Type:&lt;br /&gt;
|Cloud (Exchange Online, App-Only Authentication)&lt;br /&gt;
|-&lt;br /&gt;
|User:&lt;br /&gt;
|Any email address that exists. This user doesn&#039;t need to have special rights. The address will just be used to get the configuration of Exchange and to start the communication with the server. However, it must be a valid email address with a configured mailbox.&lt;br /&gt;
|-&lt;br /&gt;
|Autodiscover URL:&lt;br /&gt;
|Leave it empty, use https://autodiscover-s.outlook.com or the address of your autodiscover server.&lt;br /&gt;
|-&lt;br /&gt;
|Exchange server to be used: &lt;br /&gt;
|Either external or internal, depending on your configuration. However, external should be fine for most Exchange 365 installations.&lt;br /&gt;
|-&lt;br /&gt;
|Client ID:&lt;br /&gt;
|The Application (client) ID from your Entra ID app registration from the configuration step above.&lt;br /&gt;
|-&lt;br /&gt;
|Tenant ID:&lt;br /&gt;
|The Directory (tenant) ID from your Entra ID app registration from the configuration step above.&lt;br /&gt;
|-&lt;br /&gt;
|Supported account:&lt;br /&gt;
|“My organization only” (if you configured single tenant) or “Multiple organization” (if you configured multi tenant).&lt;br /&gt;
|-&lt;br /&gt;
|Client Secret:&lt;br /&gt;
|The value of the client secret you from your application registration (see above).&lt;br /&gt;
|-&lt;br /&gt;
|Max subscriptions per connection:&lt;br /&gt;
|As long as there is no need leave it to the default of 200.&lt;br /&gt;
|-&lt;br /&gt;
|EWS protocol debugging&lt;br /&gt;
|Only enable it for trouble shooting.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
== Authenticating error with Autodiscover ==&lt;br /&gt;
If you run into authentication problems with the Autodiscover server, it can be that the default security settings are enabled for your Active Directory (which probably will be the case for new Exchange Online Setups). In that case, configure the security settings to allow access to the Autodiscover server or disable the default security settings, like described here:&lt;br /&gt;
&lt;br /&gt;
https://docs.microsoft.com/en-us/azure/active-directory/fundamentals/concept-fundamentals-security-defaults&lt;br /&gt;
&lt;br /&gt;
== Finding an alternative Autodiscover server ==&lt;br /&gt;
You can also try to find an alternative Autodiscover server by using the Microsoft Autodiscover V2 API. To do so, just enter the following URL to your browser (replacing the email address placeholder first): https://outlook.office365.com/autodiscover/autodiscover.json/v1.0/&amp;lt;Email-Address-Of-An-Exchange-User&amp;gt;?Protocol=AutodiscoverV1&lt;br /&gt;
&lt;br /&gt;
If the user has the email address myuser@mycompany.com, the URL will be: https://outlook.office365.com/autodiscover/autodiscover.json/v1.0/myuser@mycompany.com?Protocol=AutodiscoverV1&lt;br /&gt;
&lt;br /&gt;
You should receive a simple text message that may be similar to the following:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;Protocol&amp;quot;:&amp;quot;AutodiscoverV1&amp;quot;,&amp;quot;Url&amp;quot;:&amp;quot;https://outlook.office365.com/autodiscover/autodiscover.xml&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
Your Autodiscover server will be the part from https to the first /autodiscover part (in this example https://outlook.office365.com)&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto13r3:Setting_up_the_Calendar_App_with_OAuth2_and_app-only_authentication&amp;diff=72140</id>
		<title>Howto13r3:Setting up the Calendar App with OAuth2 and app-only authentication</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto13r3:Setting_up_the_Calendar_App_with_OAuth2_and_app-only_authentication&amp;diff=72140"/>
		<updated>2024-06-18T14:26:16Z</updated>

		<summary type="html">&lt;p&gt;Msm: /* Setting up the Calendar configuration on the App Platform */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= How-to setup the Calendar for OAuth2 =&lt;br /&gt;
Starting with 13r3 sr12, the Calendar can be setup to use app only authentication in Exchange Online. So no user with application impersonation is used anymore. This guide shows you how to set it up inside the Azure portal as well as howto configure the calendar. Please note, that this is not a complete administration guide. Instead, it is a simply step-by-step tutorial which should work but maybe not the most accurate administration of your Azure AD – it’s just the way how we managed to use it. It is highly recommended to ask your Azure Administrator for details and / or read the Microsoft documentation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Note:&#039;&#039;&#039;&#039;&#039; The screenshot and labels may change because of updates done by Microsoft. The following steps had been made with the version with the Azure portal from June 2024. Note also that the images are scaled. If you need a sharper image, just click on it to see it in full size&lt;br /&gt;
&lt;br /&gt;
= Registering the Calendar app for the Azure Microsoft Entra ID =&lt;br /&gt;
== Open the Azure Microsoft Entra ID ==&lt;br /&gt;
* Go to the [https://portal.azure.com Azure Portal homepage] and sign in with your admin user&lt;br /&gt;
** At &amp;quot;Azure services&amp;quot; click on &amp;quot;Microsoft Entra ID&amp;quot;&lt;br /&gt;
[[File:Cal app auth ccreen-001.png|thumb|Azure - Microsoft Entra ID]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Create a new App registration ==&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-002.png|thumb|Azure - Add App Registration]]&lt;br /&gt;
* Click on &amp;quot;+ Add&amp;quot; and select &amp;quot;App registration&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:CalOauth2AppAuthScreen-003.png|thumb|Azure - App Registration]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Insert a name for the app and define whether you need single- or multi-tenant access.&lt;br /&gt;
* For the Redirect URI select &amp;quot;Public client/native (mobile &amp;amp; desktop)&amp;quot; and use the predefined URL &amp;quot;https://login.microsoftonline.com/common/oauth2/nativeclient&amp;quot;&lt;br /&gt;
* Finalize this step by clicking on &amp;quot;Register&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:CalOauth2AppAuthScreen-004.png|thumb|Azure - App Overview]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* When the overview page is shown (if not, click on Overview on the sidebar), copy the following IDs and temporarily put them into a document (the need to be added to the Calendar config later):&lt;br /&gt;
** Application (client) ID&lt;br /&gt;
** Directory (tenant) ID&lt;br /&gt;
&lt;br /&gt;
* After that, open the section &amp;quot;Overview - Manage&amp;quot; and click on &amp;quot;Manifest&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Configure the permissions ==&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-005.png|thumb|Arzure - App Manifest]]&lt;br /&gt;
* Add the following json part to the manifest after &amp;quot;requiredREsourceAccess&amp;quot; (see highlighted passage in the screenshot):&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;resourceAppId&amp;quot;: &amp;quot;00000002-0000-0ff1-ce00-000000000000&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceAccess&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;id&amp;quot;: &amp;quot;dc890d15-9560-4a4c-9b7f-a736ec74ec40&amp;quot;,&lt;br /&gt;
                &amp;quot;type&amp;quot;: &amp;quot;Role&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
* Save the changes (if you can&#039;t click save, you probably have an error in the json syntax)&lt;br /&gt;
* When done, click on &amp;quot;API permissions&amp;quot; on the sidebar (still inside the &amp;quot;Overview - Manage&amp;quot; menu of your registered app).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-006.png|thumb|Azure - App API permissions]]&lt;br /&gt;
* Under &amp;quot;Configured permissions - API / Permissions name&amp;quot; you should find the entry &amp;quot;Office 265 Exchange Online - full_access_as_app&amp;quot;. You now need to grant admin consent for that permission by just clicking on &amp;quot;Grant admin consent...&amp;quot;.&lt;br /&gt;
* Make sure that every permission has the green mark and &amp;quot;Granted for...&amp;quot; entry as status (see screenshot).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Create a Client Secret ==&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-007.png|thumb|Azure - App Certificates &amp;amp; secrets]]&lt;br /&gt;
* Under &amp;quot;Overview - Manage&amp;quot; click on &amp;quot;Certificates &amp;amp; secrets&amp;quot;&lt;br /&gt;
* Create a new secret by clicking on &amp;quot;+ New client secret&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-008.png|thumb|Azure - Add a client secret]]&lt;br /&gt;
* Set whatever description you like to use for the new client secret&lt;br /&gt;
* Define when the client secret will expire as defined by the policy of your company. Note that after the secret expires, the Calendar can&#039;t sync with Exchange anymore until you create a new secret and set the value (see below) in the Calendar configuration.&lt;br /&gt;
* Click &amp;quot;Add&amp;quot; to create the client secret&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-009.png|thumb|Azure - Client secret value]]&lt;br /&gt;
* Copy the value of the added client secret (see screenshot). Note that later you may not have access to the value since it will be obfuscated / hidden by Azure. This value must be given to the Calendar configuration.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Setting up the Calendar configuration on the App Platform =&lt;br /&gt;
* Open the PBX Manager in myApps, click on Calendar and then on &amp;quot;Configure&amp;quot;. (NOTE: If you have an already existing Exchange sync configuration, you must first set the Type of sync to disabled and save the change. Open the configuration again to continue.)&lt;br /&gt;
** Set the fields like shown in the table below&lt;br /&gt;
** Click on &amp;quot;Ok&amp;quot; to save the configuration.&lt;br /&gt;
** The Calendar is now communicating with Exchange Online using App Only Authentication.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
{| cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Field&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Value&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|Sync-Type:&lt;br /&gt;
|Cloud (Exchange Online, App-Only Authentication)&lt;br /&gt;
|-&lt;br /&gt;
|User:&lt;br /&gt;
|Any email address that exists. This user doesn&#039;t need to have special rights. The address will just be used to get the configuration of Exchange and to start the communication with the server. However, it must be a valid email address with a configured mailbox.&lt;br /&gt;
|-&lt;br /&gt;
|Autodiscover URL:&lt;br /&gt;
|Leave it empty, use https://autodiscover-s.outlook.com or the address of your autodiscover server.&lt;br /&gt;
|-&lt;br /&gt;
|Exchange server to be used: &lt;br /&gt;
|Either external or internal, depending on your configuration. However, external should be fine for most Exchange 365 installations.&lt;br /&gt;
|-&lt;br /&gt;
|Client ID:&lt;br /&gt;
|The Application (client) ID from your Entra ID app registration from the configuration step above.&lt;br /&gt;
|-&lt;br /&gt;
|Tenant ID:&lt;br /&gt;
|The Directory (tenant) ID from your Entra ID app registration from the configuration step above.&lt;br /&gt;
|-&lt;br /&gt;
|Supported account:&lt;br /&gt;
|“My organization only” (if you configured single tenant) or “Multiple organization” (if you configured multi tenant).&lt;br /&gt;
|-&lt;br /&gt;
|Client Secret:&lt;br /&gt;
|The value of the client secret you from your application registration (see above).&lt;br /&gt;
|-&lt;br /&gt;
|Max subscriptions per connection:&lt;br /&gt;
|As long as there is no need leave it to the default of 200.&lt;br /&gt;
|-&lt;br /&gt;
|EWS protocol debugging&lt;br /&gt;
|Only enable it for trouble shooting.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
== Authenticating error with Autodiscover ==&lt;br /&gt;
If you run into authentication problems with the Autodiscover server, it can be that the default security settings are enabled for your Active Directory (which probably will be the case for new Exchange Online Setups). In that case, configure the security settings to allow access to the Autodiscover server or disable the default security settings, like described here:&lt;br /&gt;
&lt;br /&gt;
https://docs.microsoft.com/en-us/azure/active-directory/fundamentals/concept-fundamentals-security-defaults&lt;br /&gt;
&lt;br /&gt;
== Finding an alternative Autodiscover server ==&lt;br /&gt;
You can also try to find an alternative Autodiscover server by using the Microsoft Autodiscover V2 API. To do so, just enter the following URL to your browser (replacing the email address placeholder first): https://outlook.office365.com/autodiscover/autodiscover.json/v1.0/&amp;lt;Email-Address-Of-An-Exchange-User&amp;gt;?Protocol=AutodiscoverV1&lt;br /&gt;
&lt;br /&gt;
If the user has the email address myuser@mycompany.com, the URL will be: https://outlook.office365.com/autodiscover/autodiscover.json/v1.0/myuser@mycompany.com?Protocol=AutodiscoverV1&lt;br /&gt;
&lt;br /&gt;
You should receive a simple text message that may be similar to the following:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;Protocol&amp;quot;:&amp;quot;AutodiscoverV1&amp;quot;,&amp;quot;Url&amp;quot;:&amp;quot;https://outlook.office365.com/autodiscover/autodiscover.xml&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
Your Autodiscover server will be the part from https to the first /autodiscover part (in this example https://outlook.office365.com)&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto13r3:Setting_up_the_Calendar_App_with_OAuth2_and_app-only_authentication&amp;diff=72139</id>
		<title>Howto13r3:Setting up the Calendar App with OAuth2 and app-only authentication</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto13r3:Setting_up_the_Calendar_App_with_OAuth2_and_app-only_authentication&amp;diff=72139"/>
		<updated>2024-06-18T14:25:47Z</updated>

		<summary type="html">&lt;p&gt;Msm: /* Configure the Calendar App */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= How-to setup the Calendar for OAuth2 =&lt;br /&gt;
Starting with 13r3 sr12, the Calendar can be setup to use app only authentication in Exchange Online. So no user with application impersonation is used anymore. This guide shows you how to set it up inside the Azure portal as well as howto configure the calendar. Please note, that this is not a complete administration guide. Instead, it is a simply step-by-step tutorial which should work but maybe not the most accurate administration of your Azure AD – it’s just the way how we managed to use it. It is highly recommended to ask your Azure Administrator for details and / or read the Microsoft documentation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Note:&#039;&#039;&#039;&#039;&#039; The screenshot and labels may change because of updates done by Microsoft. The following steps had been made with the version with the Azure portal from June 2024. Note also that the images are scaled. If you need a sharper image, just click on it to see it in full size&lt;br /&gt;
&lt;br /&gt;
= Registering the Calendar app for the Azure Microsoft Entra ID =&lt;br /&gt;
== Open the Azure Microsoft Entra ID ==&lt;br /&gt;
* Go to the [https://portal.azure.com Azure Portal homepage] and sign in with your admin user&lt;br /&gt;
** At &amp;quot;Azure services&amp;quot; click on &amp;quot;Microsoft Entra ID&amp;quot;&lt;br /&gt;
[[File:Cal app auth ccreen-001.png|thumb|Azure - Microsoft Entra ID]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Create a new App registration ==&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-002.png|thumb|Azure - Add App Registration]]&lt;br /&gt;
* Click on &amp;quot;+ Add&amp;quot; and select &amp;quot;App registration&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:CalOauth2AppAuthScreen-003.png|thumb|Azure - App Registration]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Insert a name for the app and define whether you need single- or multi-tenant access.&lt;br /&gt;
* For the Redirect URI select &amp;quot;Public client/native (mobile &amp;amp; desktop)&amp;quot; and use the predefined URL &amp;quot;https://login.microsoftonline.com/common/oauth2/nativeclient&amp;quot;&lt;br /&gt;
* Finalize this step by clicking on &amp;quot;Register&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:CalOauth2AppAuthScreen-004.png|thumb|Azure - App Overview]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* When the overview page is shown (if not, click on Overview on the sidebar), copy the following IDs and temporarily put them into a document (the need to be added to the Calendar config later):&lt;br /&gt;
** Application (client) ID&lt;br /&gt;
** Directory (tenant) ID&lt;br /&gt;
&lt;br /&gt;
* After that, open the section &amp;quot;Overview - Manage&amp;quot; and click on &amp;quot;Manifest&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Configure the permissions ==&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-005.png|thumb|Arzure - App Manifest]]&lt;br /&gt;
* Add the following json part to the manifest after &amp;quot;requiredREsourceAccess&amp;quot; (see highlighted passage in the screenshot):&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;resourceAppId&amp;quot;: &amp;quot;00000002-0000-0ff1-ce00-000000000000&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceAccess&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;id&amp;quot;: &amp;quot;dc890d15-9560-4a4c-9b7f-a736ec74ec40&amp;quot;,&lt;br /&gt;
                &amp;quot;type&amp;quot;: &amp;quot;Role&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
* Save the changes (if you can&#039;t click save, you probably have an error in the json syntax)&lt;br /&gt;
* When done, click on &amp;quot;API permissions&amp;quot; on the sidebar (still inside the &amp;quot;Overview - Manage&amp;quot; menu of your registered app).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-006.png|thumb|Azure - App API permissions]]&lt;br /&gt;
* Under &amp;quot;Configured permissions - API / Permissions name&amp;quot; you should find the entry &amp;quot;Office 265 Exchange Online - full_access_as_app&amp;quot;. You now need to grant admin consent for that permission by just clicking on &amp;quot;Grant admin consent...&amp;quot;.&lt;br /&gt;
* Make sure that every permission has the green mark and &amp;quot;Granted for...&amp;quot; entry as status (see screenshot).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Create a Client Secret ==&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-007.png|thumb|Azure - App Certificates &amp;amp; secrets]]&lt;br /&gt;
* Under &amp;quot;Overview - Manage&amp;quot; click on &amp;quot;Certificates &amp;amp; secrets&amp;quot;&lt;br /&gt;
* Create a new secret by clicking on &amp;quot;+ New client secret&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-008.png|thumb|Azure - Add a client secret]]&lt;br /&gt;
* Set whatever description you like to use for the new client secret&lt;br /&gt;
* Define when the client secret will expire as defined by the policy of your company. Note that after the secret expires, the Calendar can&#039;t sync with Exchange anymore until you create a new secret and set the value (see below) in the Calendar configuration.&lt;br /&gt;
* Click &amp;quot;Add&amp;quot; to create the client secret&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-009.png|thumb|Azure - Client secret value]]&lt;br /&gt;
* Copy the value of the added client secret (see screenshot). Note that later you may not have access to the value since it will be obfuscated / hidden by Azure. This value must be given to the Calendar configuration.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Setting up the Calendar configuration on the App Platform =&lt;br /&gt;
* Open the PBX Manager in myApps, click on Calendar and then on &amp;quot;Configure&amp;quot;. (NOTE: If you have an already existing Exchange sync configuration, you must first set the Type of sync to disabled and save the change. Open the configuration again to continue.)&lt;br /&gt;
** Set the fields like shown in the table below&lt;br /&gt;
** Click on &amp;quot;Ok&amp;quot; to save the configuration.&lt;br /&gt;
** The Calendar is now communicating with Exchange Online using App Only Authentication.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
{| cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Field&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Value&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|Sync-Type:&lt;br /&gt;
|Cloud (Exchange Online, App-Only Authentication)&lt;br /&gt;
|-&lt;br /&gt;
|User:&lt;br /&gt;
|Any email address that exists. This user doesn&#039;t need to have special rights. The address will just be used to get the configuration of Exchange and to start the communication with the server. However, it must be a valid email address with a configured mailbox.&lt;br /&gt;
|-&lt;br /&gt;
|Autodiscover URL:&lt;br /&gt;
|Leave it empty, use https://autodiscover-s.outlook.com or the address of your autodiscover server.&lt;br /&gt;
|-&lt;br /&gt;
|Exchange server to use: &lt;br /&gt;
|Either external or internal, depending on your configuration. However, external should be fine for most Exchange 365 installations.&lt;br /&gt;
|-&lt;br /&gt;
|Client ID:&lt;br /&gt;
|The Application (client) ID from your Entra ID app registration from the configuration step above.&lt;br /&gt;
|-&lt;br /&gt;
|Tenant ID:&lt;br /&gt;
|The Directory (tenant) ID from your Entra ID app registration from the configuration step above.&lt;br /&gt;
|-&lt;br /&gt;
|Supported account:&lt;br /&gt;
|“My organization only” (if you configured single tenant) or “Multiple organization” (if you configured multi tenant).&lt;br /&gt;
|-&lt;br /&gt;
|Client Secret:&lt;br /&gt;
|The value of the client secret you from your application registration (see above).&lt;br /&gt;
|-&lt;br /&gt;
|Max subscriptions per connection:&lt;br /&gt;
|As long as there is no need leave it to the default of 200.&lt;br /&gt;
|-&lt;br /&gt;
|EWS protocol debugging&lt;br /&gt;
|Only enable it for trouble shooting.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
== Authenticating error with Autodiscover ==&lt;br /&gt;
If you run into authentication problems with the Autodiscover server, it can be that the default security settings are enabled for your Active Directory (which probably will be the case for new Exchange Online Setups). In that case, configure the security settings to allow access to the Autodiscover server or disable the default security settings, like described here:&lt;br /&gt;
&lt;br /&gt;
https://docs.microsoft.com/en-us/azure/active-directory/fundamentals/concept-fundamentals-security-defaults&lt;br /&gt;
&lt;br /&gt;
== Finding an alternative Autodiscover server ==&lt;br /&gt;
You can also try to find an alternative Autodiscover server by using the Microsoft Autodiscover V2 API. To do so, just enter the following URL to your browser (replacing the email address placeholder first): https://outlook.office365.com/autodiscover/autodiscover.json/v1.0/&amp;lt;Email-Address-Of-An-Exchange-User&amp;gt;?Protocol=AutodiscoverV1&lt;br /&gt;
&lt;br /&gt;
If the user has the email address myuser@mycompany.com, the URL will be: https://outlook.office365.com/autodiscover/autodiscover.json/v1.0/myuser@mycompany.com?Protocol=AutodiscoverV1&lt;br /&gt;
&lt;br /&gt;
You should receive a simple text message that may be similar to the following:&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;Protocol&amp;quot;:&amp;quot;AutodiscoverV1&amp;quot;,&amp;quot;Url&amp;quot;:&amp;quot;https://outlook.office365.com/autodiscover/autodiscover.xml&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
Your Autodiscover server will be the part from https to the first /autodiscover part (in this example https://outlook.office365.com)&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto13r3:Setting_up_the_Calendar_App_with_OAuth2_and_app-only_authentication&amp;diff=72138</id>
		<title>Howto13r3:Setting up the Calendar App with OAuth2 and app-only authentication</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto13r3:Setting_up_the_Calendar_App_with_OAuth2_and_app-only_authentication&amp;diff=72138"/>
		<updated>2024-06-18T14:14:48Z</updated>

		<summary type="html">&lt;p&gt;Msm: /* Configure the Calendar App */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= How-to setup the Calendar for OAuth2 =&lt;br /&gt;
Starting with 13r3 sr12, the Calendar can be setup to use app only authentication in Exchange Online. So no user with application impersonation is used anymore. This guide shows you how to set it up inside the Azure portal as well as howto configure the calendar. Please note, that this is not a complete administration guide. Instead, it is a simply step-by-step tutorial which should work but maybe not the most accurate administration of your Azure AD – it’s just the way how we managed to use it. It is highly recommended to ask your Azure Administrator for details and / or read the Microsoft documentation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Note:&#039;&#039;&#039;&#039;&#039; The screenshot and labels may change because of updates done by Microsoft. The following steps had been made with the version with the Azure portal from June 2024. Note also that the images are scaled. If you need a sharper image, just click on it to see it in full size&lt;br /&gt;
&lt;br /&gt;
= Registering the Calendar app for the Azure Microsoft Entra ID =&lt;br /&gt;
== Open the Azure Microsoft Entra ID ==&lt;br /&gt;
* Go to the [https://portal.azure.com Azure Portal homepage] and sign in with your admin user&lt;br /&gt;
** At &amp;quot;Azure services&amp;quot; click on &amp;quot;Microsoft Entra ID&amp;quot;&lt;br /&gt;
[[File:Cal app auth ccreen-001.png|thumb|Azure - Microsoft Entra ID]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Create a new App registration ==&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-002.png|thumb|Azure - Add App Registration]]&lt;br /&gt;
* Click on &amp;quot;+ Add&amp;quot; and select &amp;quot;App registration&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:CalOauth2AppAuthScreen-003.png|thumb|Azure - App Registration]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Insert a name for the app and define whether you need single- or multi-tenant access.&lt;br /&gt;
* For the Redirect URI select &amp;quot;Public client/native (mobile &amp;amp; desktop)&amp;quot; and use the predefined URL &amp;quot;https://login.microsoftonline.com/common/oauth2/nativeclient&amp;quot;&lt;br /&gt;
* Finalize this step by clicking on &amp;quot;Register&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:CalOauth2AppAuthScreen-004.png|thumb|Azure - App Overview]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* When the overview page is shown (if not, click on Overview on the sidebar), copy the following IDs and temporarily put them into a document (the need to be added to the Calendar config later):&lt;br /&gt;
** Application (client) ID&lt;br /&gt;
** Directory (tenant) ID&lt;br /&gt;
&lt;br /&gt;
* After that, open the section &amp;quot;Overview - Manage&amp;quot; and click on &amp;quot;Manifest&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Configure the permissions ==&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-005.png|thumb|Arzure - App Manifest]]&lt;br /&gt;
* Add the following json part to the manifest after &amp;quot;requiredREsourceAccess&amp;quot; (see highlighted passage in the screenshot):&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;resourceAppId&amp;quot;: &amp;quot;00000002-0000-0ff1-ce00-000000000000&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceAccess&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;id&amp;quot;: &amp;quot;dc890d15-9560-4a4c-9b7f-a736ec74ec40&amp;quot;,&lt;br /&gt;
                &amp;quot;type&amp;quot;: &amp;quot;Role&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
* Save the changes (if you can&#039;t click save, you probably have an error in the json syntax)&lt;br /&gt;
* When done, click on &amp;quot;API permissions&amp;quot; on the sidebar (still inside the &amp;quot;Overview - Manage&amp;quot; menu of your registered app).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-006.png|thumb|Azure - App API permissions]]&lt;br /&gt;
* Under &amp;quot;Configured permissions - API / Permissions name&amp;quot; you should find the entry &amp;quot;Office 265 Exchange Online - full_access_as_app&amp;quot;. You now need to grant admin consent for that permission by just clicking on &amp;quot;Grant admin consent...&amp;quot;.&lt;br /&gt;
* Make sure that every permission has the green mark and &amp;quot;Granted for...&amp;quot; entry as status (see screenshot).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Create a Client Secret ==&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-007.png|thumb|Azure - App Certificates &amp;amp; secrets]]&lt;br /&gt;
* Under &amp;quot;Overview - Manage&amp;quot; click on &amp;quot;Certificates &amp;amp; secrets&amp;quot;&lt;br /&gt;
* Create a new secret by clicking on &amp;quot;+ New client secret&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-008.png|thumb|Azure - Add a client secret]]&lt;br /&gt;
* Set whatever description you like to use for the new client secret&lt;br /&gt;
* Define when the client secret will expire as defined by the policy of your company. Note that after the secret expires, the Calendar can&#039;t sync with Exchange anymore until you create a new secret and set the value (see below) in the Calendar configuration.&lt;br /&gt;
* Click &amp;quot;Add&amp;quot; to create the client secret&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-009.png|thumb|Azure - Client secret value]]&lt;br /&gt;
* Copy the value of the added client secret (see screenshot). Note that later you may not have access to the value since it will be obfuscated / hidden by Azure. This value must be given to the Calendar configuration.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Configure the Calendar App =&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto13r3:Setting_up_the_Calendar_App_with_OAuth2_and_app-only_authentication&amp;diff=72137</id>
		<title>Howto13r3:Setting up the Calendar App with OAuth2 and app-only authentication</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto13r3:Setting_up_the_Calendar_App_with_OAuth2_and_app-only_authentication&amp;diff=72137"/>
		<updated>2024-06-18T14:14:23Z</updated>

		<summary type="html">&lt;p&gt;Msm: /* Create a Client Secret */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= How-to setup the Calendar for OAuth2 =&lt;br /&gt;
Starting with 13r3 sr12, the Calendar can be setup to use app only authentication in Exchange Online. So no user with application impersonation is used anymore. This guide shows you how to set it up inside the Azure portal as well as howto configure the calendar. Please note, that this is not a complete administration guide. Instead, it is a simply step-by-step tutorial which should work but maybe not the most accurate administration of your Azure AD – it’s just the way how we managed to use it. It is highly recommended to ask your Azure Administrator for details and / or read the Microsoft documentation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Note:&#039;&#039;&#039;&#039;&#039; The screenshot and labels may change because of updates done by Microsoft. The following steps had been made with the version with the Azure portal from June 2024. Note also that the images are scaled. If you need a sharper image, just click on it to see it in full size&lt;br /&gt;
&lt;br /&gt;
= Registering the Calendar app for the Azure Microsoft Entra ID =&lt;br /&gt;
== Open the Azure Microsoft Entra ID ==&lt;br /&gt;
* Go to the [https://portal.azure.com Azure Portal homepage] and sign in with your admin user&lt;br /&gt;
** At &amp;quot;Azure services&amp;quot; click on &amp;quot;Microsoft Entra ID&amp;quot;&lt;br /&gt;
[[File:Cal app auth ccreen-001.png|thumb|Azure - Microsoft Entra ID]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Create a new App registration ==&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-002.png|thumb|Azure - Add App Registration]]&lt;br /&gt;
* Click on &amp;quot;+ Add&amp;quot; and select &amp;quot;App registration&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:CalOauth2AppAuthScreen-003.png|thumb|Azure - App Registration]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Insert a name for the app and define whether you need single- or multi-tenant access.&lt;br /&gt;
* For the Redirect URI select &amp;quot;Public client/native (mobile &amp;amp; desktop)&amp;quot; and use the predefined URL &amp;quot;https://login.microsoftonline.com/common/oauth2/nativeclient&amp;quot;&lt;br /&gt;
* Finalize this step by clicking on &amp;quot;Register&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:CalOauth2AppAuthScreen-004.png|thumb|Azure - App Overview]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* When the overview page is shown (if not, click on Overview on the sidebar), copy the following IDs and temporarily put them into a document (the need to be added to the Calendar config later):&lt;br /&gt;
** Application (client) ID&lt;br /&gt;
** Directory (tenant) ID&lt;br /&gt;
&lt;br /&gt;
* After that, open the section &amp;quot;Overview - Manage&amp;quot; and click on &amp;quot;Manifest&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Configure the permissions ==&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-005.png|thumb|Arzure - App Manifest]]&lt;br /&gt;
* Add the following json part to the manifest after &amp;quot;requiredREsourceAccess&amp;quot; (see highlighted passage in the screenshot):&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;resourceAppId&amp;quot;: &amp;quot;00000002-0000-0ff1-ce00-000000000000&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceAccess&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;id&amp;quot;: &amp;quot;dc890d15-9560-4a4c-9b7f-a736ec74ec40&amp;quot;,&lt;br /&gt;
                &amp;quot;type&amp;quot;: &amp;quot;Role&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
* Save the changes (if you can&#039;t click save, you probably have an error in the json syntax)&lt;br /&gt;
* When done, click on &amp;quot;API permissions&amp;quot; on the sidebar (still inside the &amp;quot;Overview - Manage&amp;quot; menu of your registered app).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-006.png|thumb|Azure - App API permissions]]&lt;br /&gt;
* Under &amp;quot;Configured permissions - API / Permissions name&amp;quot; you should find the entry &amp;quot;Office 265 Exchange Online - full_access_as_app&amp;quot;. You now need to grant admin consent for that permission by just clicking on &amp;quot;Grant admin consent...&amp;quot;.&lt;br /&gt;
* Make sure that every permission has the green mark and &amp;quot;Granted for...&amp;quot; entry as status (see screenshot).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Create a Client Secret ==&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-007.png|thumb|Azure - App Certificates &amp;amp; secrets]]&lt;br /&gt;
* Under &amp;quot;Overview - Manage&amp;quot; click on &amp;quot;Certificates &amp;amp; secrets&amp;quot;&lt;br /&gt;
* Create a new secret by clicking on &amp;quot;+ New client secret&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-008.png|thumb|Azure - Add a client secret]]&lt;br /&gt;
* Set whatever description you like to use for the new client secret&lt;br /&gt;
* Define when the client secret will expire as defined by the policy of your company. Note that after the secret expires, the Calendar can&#039;t sync with Exchange anymore until you create a new secret and set the value (see below) in the Calendar configuration.&lt;br /&gt;
* Click &amp;quot;Add&amp;quot; to create the client secret&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-009.png|thumb|Azure - Client secret value]]&lt;br /&gt;
* Copy the value of the added client secret (see screenshot). Note that later you may not have access to the value since it will be obfuscated / hidden by Azure. This value must be given to the Calendar configuration.&lt;br /&gt;
= Configure the Calendar App =&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto13r3:Setting_up_the_Calendar_App_with_OAuth2_and_app-only_authentication&amp;diff=72136</id>
		<title>Howto13r3:Setting up the Calendar App with OAuth2 and app-only authentication</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto13r3:Setting_up_the_Calendar_App_with_OAuth2_and_app-only_authentication&amp;diff=72136"/>
		<updated>2024-06-18T14:12:03Z</updated>

		<summary type="html">&lt;p&gt;Msm: /* Configure the permissions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= How-to setup the Calendar for OAuth2 =&lt;br /&gt;
Starting with 13r3 sr12, the Calendar can be setup to use app only authentication in Exchange Online. So no user with application impersonation is used anymore. This guide shows you how to set it up inside the Azure portal as well as howto configure the calendar. Please note, that this is not a complete administration guide. Instead, it is a simply step-by-step tutorial which should work but maybe not the most accurate administration of your Azure AD – it’s just the way how we managed to use it. It is highly recommended to ask your Azure Administrator for details and / or read the Microsoft documentation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Note:&#039;&#039;&#039;&#039;&#039; The screenshot and labels may change because of updates done by Microsoft. The following steps had been made with the version with the Azure portal from June 2024. Note also that the images are scaled. If you need a sharper image, just click on it to see it in full size&lt;br /&gt;
&lt;br /&gt;
= Registering the Calendar app for the Azure Microsoft Entra ID =&lt;br /&gt;
== Open the Azure Microsoft Entra ID ==&lt;br /&gt;
* Go to the [https://portal.azure.com Azure Portal homepage] and sign in with your admin user&lt;br /&gt;
** At &amp;quot;Azure services&amp;quot; click on &amp;quot;Microsoft Entra ID&amp;quot;&lt;br /&gt;
[[File:Cal app auth ccreen-001.png|thumb|Azure - Microsoft Entra ID]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Create a new App registration ==&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-002.png|thumb|Azure - Add App Registration]]&lt;br /&gt;
* Click on &amp;quot;+ Add&amp;quot; and select &amp;quot;App registration&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:CalOauth2AppAuthScreen-003.png|thumb|Azure - App Registration]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Insert a name for the app and define whether you need single- or multi-tenant access.&lt;br /&gt;
* For the Redirect URI select &amp;quot;Public client/native (mobile &amp;amp; desktop)&amp;quot; and use the predefined URL &amp;quot;https://login.microsoftonline.com/common/oauth2/nativeclient&amp;quot;&lt;br /&gt;
* Finalize this step by clicking on &amp;quot;Register&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:CalOauth2AppAuthScreen-004.png|thumb|Azure - App Overview]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* When the overview page is shown (if not, click on Overview on the sidebar), copy the following IDs and temporarily put them into a document (the need to be added to the Calendar config later):&lt;br /&gt;
** Application (client) ID&lt;br /&gt;
** Directory (tenant) ID&lt;br /&gt;
&lt;br /&gt;
* After that, open the section &amp;quot;Overview - Manage&amp;quot; and click on &amp;quot;Manifest&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Configure the permissions ==&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-005.png|thumb|Arzure - App Manifest]]&lt;br /&gt;
* Add the following json part to the manifest after &amp;quot;requiredREsourceAccess&amp;quot; (see highlighted passage in the screenshot):&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;resourceAppId&amp;quot;: &amp;quot;00000002-0000-0ff1-ce00-000000000000&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceAccess&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;id&amp;quot;: &amp;quot;dc890d15-9560-4a4c-9b7f-a736ec74ec40&amp;quot;,&lt;br /&gt;
                &amp;quot;type&amp;quot;: &amp;quot;Role&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
* Save the changes (if you can&#039;t click save, you probably have an error in the json syntax)&lt;br /&gt;
* When done, click on &amp;quot;API permissions&amp;quot; on the sidebar (still inside the &amp;quot;Overview - Manage&amp;quot; menu of your registered app).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-006.png|thumb|Azure - App API permissions]]&lt;br /&gt;
* Under &amp;quot;Configured permissions - API / Permissions name&amp;quot; you should find the entry &amp;quot;Office 265 Exchange Online - full_access_as_app&amp;quot;. You now need to grant admin consent for that permission by just clicking on &amp;quot;Grant admin consent...&amp;quot;.&lt;br /&gt;
* Make sure that every permission has the green mark and &amp;quot;Granted for...&amp;quot; entry as status (see screenshot).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Create a Client Secret ==&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-007.png|thumb|Azure - App Certificates &amp;amp; secrets]]&lt;br /&gt;
* Under &amp;quot;Overview - Manage&amp;quot; click on &amp;quot;Certificates &amp;amp; secrets&amp;quot;&lt;br /&gt;
* Create a new secret by clicking on &amp;quot;+ New client secret&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-008.png|thumb|Azure - Add a client secret]]&lt;br /&gt;
* Set whatever description you like to use for the new client secret&lt;br /&gt;
* Define when the client secret will expire as defined by the policy of your company. Note that after the secret expires, the Calendar can&#039;t sync with Exchange anymore until you create a new secret and set the value (see below) in the Calendar configuration.&lt;br /&gt;
* Click &amp;quot;Add&amp;quot; to create the client secret&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-009.png|thumb|Azure - Client secret value]]&lt;br /&gt;
* Copy the value of the added client secret (see screenshot). Note that later you may not have access to the value since it will be obfuscated / hidden by Azure. This value must be given to the Calendar configuration.&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:CalOAuth2AppAuthScreen-009.png&amp;diff=72135</id>
		<title>File:CalOAuth2AppAuthScreen-009.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:CalOAuth2AppAuthScreen-009.png&amp;diff=72135"/>
		<updated>2024-06-18T14:07:12Z</updated>

		<summary type="html">&lt;p&gt;Msm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:CalOAuth2AppAuthScreen-008.png&amp;diff=72134</id>
		<title>File:CalOAuth2AppAuthScreen-008.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:CalOAuth2AppAuthScreen-008.png&amp;diff=72134"/>
		<updated>2024-06-18T14:00:29Z</updated>

		<summary type="html">&lt;p&gt;Msm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:CalOAuth2AppAuthScreen-007.png&amp;diff=72132</id>
		<title>File:CalOAuth2AppAuthScreen-007.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:CalOAuth2AppAuthScreen-007.png&amp;diff=72132"/>
		<updated>2024-06-18T13:56:24Z</updated>

		<summary type="html">&lt;p&gt;Msm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto13r3:Setting_up_the_Calendar_App_with_OAuth2_and_app-only_authentication&amp;diff=72130</id>
		<title>Howto13r3:Setting up the Calendar App with OAuth2 and app-only authentication</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto13r3:Setting_up_the_Calendar_App_with_OAuth2_and_app-only_authentication&amp;diff=72130"/>
		<updated>2024-06-18T13:49:14Z</updated>

		<summary type="html">&lt;p&gt;Msm: /* Registering the Calendar app for the Azure Microsoft Entra ID */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= How-to setup the Calendar for OAuth2 =&lt;br /&gt;
Starting with 13r3 sr12, the Calendar can be setup to use app only authentication in Exchange Online. So no user with application impersonation is used anymore. This guide shows you how to set it up inside the Azure portal as well as howto configure the calendar. Please note, that this is not a complete administration guide. Instead, it is a simply step-by-step tutorial which should work but maybe not the most accurate administration of your Azure AD – it’s just the way how we managed to use it. It is highly recommended to ask your Azure Administrator for details and / or read the Microsoft documentation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Note:&#039;&#039;&#039;&#039;&#039; The screenshot and labels may change because of updates done by Microsoft. The following steps had been made with the version with the Azure portal from June 2024. Note also that the images are scaled. If you need a sharper image, just click on it to see it in full size&lt;br /&gt;
&lt;br /&gt;
= Registering the Calendar app for the Azure Microsoft Entra ID =&lt;br /&gt;
== Open the Azure Microsoft Entra ID ==&lt;br /&gt;
* Go to the [https://portal.azure.com Azure Portal homepage] and sign in with your admin user&lt;br /&gt;
** At &amp;quot;Azure services&amp;quot; click on &amp;quot;Microsoft Entra ID&amp;quot;&lt;br /&gt;
[[File:Cal app auth ccreen-001.png|thumb|Azure - Microsoft Entra ID]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Create a new App registration ==&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-002.png|thumb|Azure - Add App Registration]]&lt;br /&gt;
* Click on &amp;quot;+ Add&amp;quot; and select &amp;quot;App registration&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:CalOauth2AppAuthScreen-003.png|thumb|Azure - App Registration]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Insert a name for the app and define whether you need single- or multi-tenant access.&lt;br /&gt;
* For the Redirect URI select &amp;quot;Public client/native (mobile &amp;amp; desktop)&amp;quot; and use the predefined URL &amp;quot;https://login.microsoftonline.com/common/oauth2/nativeclient&amp;quot;&lt;br /&gt;
* Finalize this step by clicking on &amp;quot;Register&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:CalOauth2AppAuthScreen-004.png|thumb|Azure - App Overview]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* When the overview page is shown (if not, click on Overview on the sidebar), copy the following IDs and temporarily put them into a document (the need to be added to the Calendar config later):&lt;br /&gt;
** Application (client) ID&lt;br /&gt;
** Directory (tenant) ID&lt;br /&gt;
&lt;br /&gt;
* After that, open the section &amp;quot;Overview - Manage&amp;quot; and click on &amp;quot;Manifest&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Configure the permissions ==&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-005.png|thumb|Arzure - App Manifest]]&lt;br /&gt;
* Add the following json part to the manifest after &amp;quot;requiredREsourceAccess&amp;quot; (see highlighted passage in the screenshot):&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;resourceAppId&amp;quot;: &amp;quot;00000002-0000-0ff1-ce00-000000000000&amp;quot;,&lt;br /&gt;
        &amp;quot;resourceAccess&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;id&amp;quot;: &amp;quot;dc890d15-9560-4a4c-9b7f-a736ec74ec40&amp;quot;,&lt;br /&gt;
                &amp;quot;type&amp;quot;: &amp;quot;Role&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
* Save the changes (if you can&#039;t click save, you probably have an error in the json syntax)&lt;br /&gt;
* When done, click on &amp;quot;API permissions&amp;quot; on the sidebar (still inside the &amp;quot;Overview - Manage&amp;quot; menu of your registered app).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-006.png|thumb|Azure - App API permissions]]&lt;br /&gt;
* Under &amp;quot;Configured permissions - API / Permissions name&amp;quot; you should find the entry &amp;quot;Office 265 Exchange Online - full_access_as_app&amp;quot;. You now need to grant admin consent for that permission by just clicking on &amp;quot;Grant admin consent...&amp;quot;.&lt;br /&gt;
* Make sure that every permission has the green mark and &amp;quot;Granted for...&amp;quot; entry as status (see screenshot).&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:CalOAuth2AppAuthScreen-006.png&amp;diff=72129</id>
		<title>File:CalOAuth2AppAuthScreen-006.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:CalOAuth2AppAuthScreen-006.png&amp;diff=72129"/>
		<updated>2024-06-18T13:45:00Z</updated>

		<summary type="html">&lt;p&gt;Msm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:CalOAuth2AppAuthScreen-005.png&amp;diff=72123</id>
		<title>File:CalOAuth2AppAuthScreen-005.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:CalOAuth2AppAuthScreen-005.png&amp;diff=72123"/>
		<updated>2024-06-18T13:23:17Z</updated>

		<summary type="html">&lt;p&gt;Msm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:CalOauth2AppAuthScreen-004.png&amp;diff=72122</id>
		<title>File:CalOauth2AppAuthScreen-004.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:CalOauth2AppAuthScreen-004.png&amp;diff=72122"/>
		<updated>2024-06-18T13:18:06Z</updated>

		<summary type="html">&lt;p&gt;Msm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto13r3:Setting_up_the_Calendar_App_with_OAuth2_and_app-only_authentication&amp;diff=72121</id>
		<title>Howto13r3:Setting up the Calendar App with OAuth2 and app-only authentication</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto13r3:Setting_up_the_Calendar_App_with_OAuth2_and_app-only_authentication&amp;diff=72121"/>
		<updated>2024-06-18T13:15:44Z</updated>

		<summary type="html">&lt;p&gt;Msm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= How-to setup the Calendar for OAuth2 =&lt;br /&gt;
Starting with 13r3 sr12, the Calendar can be setup to use app only authentication in Exchange Online. So no user with application impersonation is used anymore. This guide shows you how to set it up inside the Azure portal as well as howto configure the calendar. Please note, that this is not a complete administration guide. Instead, it is a simply step-by-step tutorial which should work but maybe not the most accurate administration of your Azure AD – it’s just the way how we managed to use it. It is highly recommended to ask your Azure Administrator for details and / or read the Microsoft documentation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Note:&#039;&#039;&#039;&#039;&#039; The screenshot and labels may change because of updates done by Microsoft. The following steps had been made with the version with the Azure portal from June 2024. Note also that the images are scaled. If you need a sharper image, just click on it to see it in full size&lt;br /&gt;
&lt;br /&gt;
= Registering the Calendar app for the Azure Microsoft Entra ID =&lt;br /&gt;
== Open the Azure Microsoft Entra ID ==&lt;br /&gt;
* Go to the [https://portal.azure.com Azure Portal homepage] and sign in with your admin user&lt;br /&gt;
** At &amp;quot;Azure services&amp;quot; click on &amp;quot;Microsoft Entra ID&amp;quot;&lt;br /&gt;
[[File:Cal app auth ccreen-001.png|thumb|Azure - Microsoft Entra ID]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Create a new App registration ==&lt;br /&gt;
* Click on &amp;quot;+ Add&amp;quot; and select &amp;quot;App registration&amp;quot;&lt;br /&gt;
[[File:CalOAuth2AppAuthScreen-002.png|thumb|Azure - Add App Registration]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:CalOauth2AppAuthScreen-003.png|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Insert a name for the app and define whether you need single- or multi-tenant access.&lt;br /&gt;
* For the Redirect URI select &amp;quot;Public client/native (mobile &amp;amp; desktop)&amp;quot; and use the predefined URL &amp;quot;https://login.microsoftonline.com/common/oauth2/nativeclient&amp;quot;&lt;br /&gt;
* Finalize this step by clicking on &amp;quot;Register&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:CalOauth2AppAuthScreen-003.png&amp;diff=72120</id>
		<title>File:CalOauth2AppAuthScreen-003.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:CalOauth2AppAuthScreen-003.png&amp;diff=72120"/>
		<updated>2024-06-18T13:13:21Z</updated>

		<summary type="html">&lt;p&gt;Msm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:CalOAuth2AppAuthScreen-002.png&amp;diff=72119</id>
		<title>File:CalOAuth2AppAuthScreen-002.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:CalOAuth2AppAuthScreen-002.png&amp;diff=72119"/>
		<updated>2024-06-18T13:09:05Z</updated>

		<summary type="html">&lt;p&gt;Msm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto13r3:Setting_up_the_Calendar_App_with_OAuth2_and_app-only_authentication&amp;diff=72118</id>
		<title>Howto13r3:Setting up the Calendar App with OAuth2 and app-only authentication</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto13r3:Setting_up_the_Calendar_App_with_OAuth2_and_app-only_authentication&amp;diff=72118"/>
		<updated>2024-06-18T12:40:53Z</updated>

		<summary type="html">&lt;p&gt;Msm: Created page with &amp;quot;= How-to setup the Calendar for OAuth2 = Starting with 13r3 sr12, the Calendar can be setup to use app only authentication in Exchange Online. So no user with application impersonation is used anymore. This guide shows you how to set it up inside the Azure portal as well as howto configure the calendar. Please note, that this is not a complete administration guide. Instead, it is a simply step-by-step tutorial which should work but maybe not the most accurate administrat...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= How-to setup the Calendar for OAuth2 =&lt;br /&gt;
Starting with 13r3 sr12, the Calendar can be setup to use app only authentication in Exchange Online. So no user with application impersonation is used anymore. This guide shows you how to set it up inside the Azure portal as well as howto configure the calendar. Please note, that this is not a complete administration guide. Instead, it is a simply step-by-step tutorial which should work but maybe not the most accurate administration of your Azure AD – it’s just the way how we managed to use it. It is highly recommended to ask your Azure Administrator for details and / or read the Microsoft documentation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Note:&#039;&#039;&#039;&#039;&#039; The screenshot and labels may change because of updates done by Microsoft. The following steps had been made with the version with the Azure portal from June 2024. Note also that the images are scaled. If you need a sharper image, just click on it to see it in full size&lt;br /&gt;
&lt;br /&gt;
= Registering the Calendar app for the Azure Microsoft Entra ID =&lt;br /&gt;
== Open the Azure Microsoft Entra ID ==&lt;br /&gt;
* Go to the [https://portal.azure.com Azure Portal homepage] and sign in with your admin user&lt;br /&gt;
** At &amp;quot;Azure services&amp;quot; click on &amp;quot;Microsoft Entra ID&amp;quot;&lt;br /&gt;
[[File:Cal app auth ccreen-001.png|thumb|Azure - Microsoft Entra ID]]&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:Cal_app_auth_ccreen-001.png&amp;diff=72117</id>
		<title>File:Cal app auth ccreen-001.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:Cal_app_auth_ccreen-001.png&amp;diff=72117"/>
		<updated>2024-06-18T12:40:24Z</updated>

		<summary type="html">&lt;p&gt;Msm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference13r3:Concept_App_Service_Calendar&amp;diff=70986</id>
		<title>Reference13r3:Concept App Service Calendar</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference13r3:Concept_App_Service_Calendar&amp;diff=70986"/>
		<updated>2024-02-27T09:24:26Z</updated>

		<summary type="html">&lt;p&gt;Msm: /* Synchronization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
&lt;br /&gt;
The App Service Calendar is an App Service which can be installed on an innovaphone App Platform. It is used to synchronize the exchange calendar of the users that have been added to the PBX. For now, the synchronized appointments will be used to update the presence of the users. Doing this, the calendar replaces the previous exchange connector.&lt;br /&gt;
&lt;br /&gt;
== Applies To == &lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX from version 13r1&lt;br /&gt;
&lt;br /&gt;
== Apps ==&lt;br /&gt;
&lt;br /&gt;
=== Calendar Admin App (innovaphone-calendar-admin) ===&lt;br /&gt;
(Still experimental) Gives some administrative options and can be used to get the current status.&lt;br /&gt;
&lt;br /&gt;
== PBX Manager Plugins ==&lt;br /&gt;
With the calendar plugin, apps can be created and deleted. Also the calendar can be configured.&lt;br /&gt;
&lt;br /&gt;
== Concepts ==&lt;br /&gt;
The calendar will get a list of all users available in the PBX. This list will be used to figure out the users available in Exchange (which means, that a user, that isn&#039;t available in PBX won&#039;t be synchronized by the calendar). Finally, all appointments of the users Exchange calendar will be synchronized to the calendars database and used to update the users presence. The calendar also registeres himself to Exchange to get notified about changes in a users calendar.&lt;br /&gt;
&lt;br /&gt;
=== Synchronization ===&lt;br /&gt;
The way how the calendar receives the data from Exchange in 13r1 had been changed compared to the Exchange Sync Connector of previous version. The calendar now synchronizes all appointments for all users with its own database. To activate the synchronization, use the PBX manager to edit the settings for the calendar. There, only the email address and the password for the impersonation user must be given. Exchange 2013 or newer is supported. This includes Exchange 365. Please note that not all Office 365 plans offers access to an Exchange 365 server - but an Exchange server is obligatory. An Office 365 plan without Exchange 365 won&#039;t work. More information can be found at [http://www.office.com Microsoft Office365 homepage].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Calendar entries are synced in the following scenarios&lt;br /&gt;
* The calendar app starts the first time. Then the entries for the next 48 hours are fetched from all users&lt;br /&gt;
* If the Exchange signals a change in the appointments for a user, only the users affected by the changes are reread or their appointments are reread&lt;br /&gt;
* At midnight, all appointments for all users for the next 48 hours are read in again.&lt;br /&gt;
&lt;br /&gt;
=== Communication with Exchange ===&lt;br /&gt;
The calendar uses a standard HTTP or HTTPS connection to communicate with Exchange. There is no additional port setup necessary like it was with the old Exchange Sync Connector. Two HTTP(S) connections will be used to communicate with the Exchange. The first is for requesting appointment data and only will be active during data exchange. The other will be used to have some kind of open streaming connection to get informed about changes on Exchange side. This is a non-stop connection (well, actually it will be reestablished each 30 minutes). If HTTP or HTTPS will be used depends on the Exchange configuration. However, HTTPS is highly recommended.&lt;br /&gt;
&lt;br /&gt;
=== Exchange - PBX presence mapping ===&lt;br /&gt;
Starting from 13r1 beta 1, the presence received from exchange can be mapped to a precense type available for the PBX. Instead of previous version, the mapping isn&#039;t static anymore and can be adjusted via PBX manager plugin of the calendar. More details can be found at [[Reference13r3:Apps/PbxManager/App Calendar]]&lt;br /&gt;
&lt;br /&gt;
=== PBX Settings ===&lt;br /&gt;
The calender will replicate the users of the PBX to check if they can be synchronized with Exchange. Because there can be multiple PBX available, the calendar will only accept one. This one must be set in the calendar settings of the PBX manger by giving the name of the master PBX (Only the PBX Name, not the full DNS Name). Note that &amp;quot;master&amp;quot; don&#039;t mean that only a master PBX will be accepted. Also the name of a slave PBX can be entered. Master in that case means, that this will be the master for the calendar, the only PBX the calendar accepts a connection from.&lt;br /&gt;
&lt;br /&gt;
=== Impersonation user ===&lt;br /&gt;
To synchronize all appointments from all users with Exchange, an Exchange user must exist with the Application Impersonation right. Impersonation means, that this user communicates with Exchange in the name of another user. So the calendar uses that user to synchronize every other user reported from the PBX and with an available mailbox in Exchange. Be aware of who has access to the impersonation users mail address and password, because that user has all rights to read, modify and add appointments, emails, tasks, etc. in Exchange for every other user. The calendar itself must save the password, but it will be stored in encrypted form to the database. For more information about impersonation user, ask your Exchange administrator. An example how to add this right to an existing user can be found here: [https://www.techieshelp.com/exchange-2013-configuring-impersonation-applications/ Exchange 2013 and 2016 Configuring Impersonation For Applications]. For other version of Exchange, please look to the proper documentation offered by Microsoft (or ask google).&lt;br /&gt;
&lt;br /&gt;
=== Autodiscover ===&lt;br /&gt;
The calendar uses autodiscover to get the Exchange Server version used as well as the address to use for synchronizing (which is done using the Exchange Web Services). Because of this, the impersonation user must have a valid mailbox, or autodiscover for that user will fail and the calendar won&#039;t be able to get the required information. It could be that Autodiscover it must be activated first. The Calendar searches for the server by taking the domain name of the given user (because of this, the complete email adress of the user must be given) and combinig it with autodiscover related URIs. The calendar then will test it at first with HTTPS and after that with HTTP. For example, if the email adress of the impersonation user is &amp;quot;myuser@example.com&amp;quot;, the calendar will look for the autodiscover server at &amp;quot;https://autodiscover.example.com&amp;quot;, &amp;quot;https://example.com&amp;quot;, &amp;quot;http://autodiscover.example.com&amp;quot; and finally &amp;quot;http://example.com&amp;quot;. Generally, one of the points will send a redirect request which will lead to the correct autodiscover URL, which will be used by the calendar. If there is no redirect and none of the URLs tested will work, autodiscover failed. You can get more information about autodiscover from the [https://docs.microsoft.com/en-us/exchange/architecture/client-access/autodiscover?view=exchserver-2019 Microsoft homepage] (even if it is for the latestes Exchange version, it is nearly the same for older ones), or your Exchange Administrator.&lt;br /&gt;
&lt;br /&gt;
You can test your autodiscover [https://testconnectivity.microsoft.com here].&lt;br /&gt;
&lt;br /&gt;
=== Users and primary SMTP address ===&lt;br /&gt;
The calendar will get a list of users available in the PBX. After that, he tries to resolve the primary SMTP address for each user. This must be done to be able to synchronize the user. So make sure that the email information given to the users object in the PBX contains at least one address that also exists in Exchange, or the resolving will fail. Note that multiple addresses can given to the users object seperated by semicolon.&lt;br /&gt;
&lt;br /&gt;
== Presence ==&lt;br /&gt;
The calendar will create a presence string for the appointments and send it to the PBX. The language and timezone of that presence can be defined in the calendar settings. However, the string also contains some information seperated by hashtags a client can use to rebuild the presence string for its own language and timezone settings (like it will be done by the innovaphone devices). Note that the appointment title itself won&#039;t be translated!&lt;br /&gt;
&lt;br /&gt;
=== Presence string format ===&lt;br /&gt;
The format of the presence string created by the calendar. This description is for developer that whant to implement the display of the current presence in an own client and maybe adjust the values for a special timezone or date-time format. The format string the calendar will send canot be changed (except for language releated values that will depend on the &amp;quot;default presence language&amp;quot; and &amp;quot;default presence timezone&amp;quot; settings):&lt;br /&gt;
&lt;br /&gt;
 Presence         = &amp;quot;Free&amp;quot; / &amp;quot;Free until &amp;quot; Date-Time Next-Appointment / Appointment-Info &amp;quot;until &amp;quot; Date-Time [Next-Appointment]&lt;br /&gt;
 Date-Time        = [Date] [Time] ; Must be at least one of them&lt;br /&gt;
 Date             = Day (&amp;quot;.&amp;quot; / &amp;quot;/&amp;quot;) Month (&amp;quot;.&amp;quot; / &amp;quot;/&amp;quot;) Year ; Real format depends on localization settings&lt;br /&gt;
 Day              = 2DIGIT ; 01-31&lt;br /&gt;
 Month            = 2DIGIT ; 01-12&lt;br /&gt;
 Year             = 4DIGIT ; e. g. 2017&lt;br /&gt;
 Time             = Hour &amp;quot;:&amp;quot; Minute [&amp;quot;a.m.&amp;quot; / &amp;quot;p.m.&amp;quot;] ; Real format depends on localization settings&lt;br /&gt;
 Hour             = 2DIGIT ; 01-12 or 00-23&lt;br /&gt;
 Minute           = 2DIGIT&lt;br /&gt;
 Next-Appointment = &amp;quot;(&amp;quot; [&amp;quot;Busy: &amp;quot; / &amp;quot;Away: &amp;quot;] Appointment-Info &amp;quot;)&amp;quot;&lt;br /&gt;
 Appointment-Info = Title | &amp;quot;Private&amp;quot; ;&lt;br /&gt;
 Title            = ; Well - any string in UTF8 Format that can include what ever you whant...&lt;br /&gt;
&lt;br /&gt;
After the presence string, a couple of hash-tags will be added (if Presence is not only &amp;quot;Free&amp;quot;). This tags will&lt;br /&gt;
be sent so that a client can re-build with the cleint&#039;s localization settings. The tags will be added with the&lt;br /&gt;
following rules (note that the order of the tags is not variable):&lt;br /&gt;
&lt;br /&gt;
 Tags             = &amp;quot;&amp;quot; / &amp;quot;#&amp;quot; Activity &amp;quot; &amp;quot; [Info-Len &amp;quot; &amp;quot;] Date-Time &amp;quot; &amp;quot; [Whole-Day &amp;quot; &amp;quot;] [Next-Activity &amp;quot; &amp;quot; Next-Appointment]&lt;br /&gt;
 Activity         = &amp;quot;free&amp;quot; / &amp;quot;busy&amp;quot; / &amp;quot;away&amp;quot;&lt;br /&gt;
 Info-Len         = &amp;quot;#len:&amp;quot; DIGIT &amp;quot;:&amp;quot; DIGIT ; The first DIGIT is the number of characters (UTF-8 conform) and the second the number of bytes&lt;br /&gt;
                                              of the len of the Appointment-Info. This tag only exists if the presence starts with Appointment-Info.&lt;br /&gt;
 Date-Time        = &amp;quot;#until:&amp;quot; DIGIT; DIGIT = Date-Time in sec as 64bit value.&lt;br /&gt;
 Whole-Day        = &amp;quot;#whole-day&amp;quot; ; Only if the appointment or the following one (depending on the case) or next is a&lt;br /&gt;
                                   whole-day appointment. In that case, until should only print the date&lt;br /&gt;
 Next-Activity    = &amp;quot;#next-activity&amp;quot; Activity ; Only, if there is a next is the start of the next appointment (see above).&lt;br /&gt;
 Next-Appointment = &amp;quot;#next:&amp;quot; DIGIT &amp;quot;:&amp;quot; DIGIT &amp;quot;:&amp;quot; DIGIT &amp;quot;:&amp;quot; DIGIT ;&lt;br /&gt;
                                      Where the first DIGIT is the position of the next activities Appointment-Info inside the presence&lt;br /&gt;
                                      string and the second DIGIT the Appointment-Info length. Those values are given in number of charactes (UTF-8 conform).&lt;br /&gt;
                                      The third DIGIT has the same meaning as the first, so that it is given in number of bytes, while the last DIGIT&lt;br /&gt;
                                      has the meaning of the second one, but also in bytes.&lt;br /&gt;
&lt;br /&gt;
=== Additional Notes ===&lt;br /&gt;
&lt;br /&gt;
* The presence starts with &amp;quot;Free until&amp;quot;, if there is an upcoming appointment.&lt;br /&gt;
* If the presence starts with Appointment-Info, Date-Time will be the end of that appointment or the start of the next appointment, if the next appointment starts at or before the current one ends.&lt;br /&gt;
* Date-Time will be time-only, if the is the same day as when the precense text will be build, date only, if the appointment (or Next-Appointmant in case that next is a appointment start) is a whole-day appointment.&lt;br /&gt;
* Next-Appointment only will be written, if the presence won&#039;t start with an Appointment-Info.&lt;br /&gt;
&lt;br /&gt;
=== Example presence strings ===&lt;br /&gt;
  Free&lt;br /&gt;
  Free until 10:30 (Busy: Meeting with Caption Sparrow) #free #until:12345 #next-activity:busy #next:24:28:48:28&lt;br /&gt;
  Meeting with Caption Sparrow until 12:30 #busy #len:28:28 #until:12345&lt;br /&gt;
  Free until 24.12.2017 (Busy: Christmas) #free #until:54321 #whole-day #next-activity:busy #next:29:9:29:2&lt;br /&gt;
  Christmas until 27.12.2017 #busy #len:9 #until:42424242 #whole-day&lt;br /&gt;
  Sleeping until 22.08.2017 07:00 #away #len:8  #until:3333333&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference13r3:Apps/PbxManager/App_Calendar&amp;diff=68810</id>
		<title>Reference13r3:Apps/PbxManager/App Calendar</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference13r3:Apps/PbxManager/App_Calendar&amp;diff=68810"/>
		<updated>2023-10-09T09:00:09Z</updated>

		<summary type="html">&lt;p&gt;Msm: /* Presence mapping */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The PBX Manager Plugin for the Calendar App allows you to create two kinds of app objects. One is the Calendar Admin, which is just a simple overview of what&#039;s going in. The other is the Calendar App itself. Please note that even if the app is named &amp;quot;Calendar&amp;quot;, it isn&#039;t a calendar like it is known. For now, it&#039;s just a tool to synchronize the Outlook / Exchange Calendar with the innovaphone PBX to set the presence of the user to the active or upcomming appointments.&lt;br /&gt;
&lt;br /&gt;
== Applies To == &lt;br /&gt;
&lt;br /&gt;
innovaphone PBX from version 13r1 (Exchange 365 using OAuth2 needs 13r2 beta 2 or newer).&lt;br /&gt;
&lt;br /&gt;
== Supported Exchange Versions ==&lt;br /&gt;
&lt;br /&gt;
* Exchange 2013 or newer&lt;br /&gt;
* Exchange 365&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
In order go get the current users presence synchronized with Exchange, the calendar must be configured. This includes two parts: the configuration for the communication with the PBX and the configuration for the communication with Exchange Server.&lt;br /&gt;
&lt;br /&gt;
=== PBX &amp;amp; Presence ===&lt;br /&gt;
The following configuration can be set for the PBX communication:&lt;br /&gt;
* &amp;lt;b&amp;gt;Master PBX Name:&amp;lt;/b&amp;gt; This is the name of the main PBX. Even if several PBXs are used in your setup, the calendar supports communication with only one of them, usually the main PBX. The name must be specified, even if you use only one.&lt;br /&gt;
* &amp;lt;b&amp;gt;Presence language:&amp;lt;/b&amp;gt; The language the Calendar uses for presence. This is not necessarily the one that is displayed in myApps or on the phone, since the presence is translated there into the respective language.&lt;br /&gt;
* &amp;lt;b&amp;gt;Presence timezone:&amp;lt;/b&amp;gt; The time zone in which the time of presence is calculated. As with the language, this is not necessarily the time that is displayed in myApps or on the phone, since the time zone set there is used.&lt;br /&gt;
* &amp;lt;b&amp;gt;Subject:&amp;lt;/b&amp;gt; Define whether the subject of an appointment should be visible in the presence or not.&lt;br /&gt;
* &amp;lt;b&amp;gt;Prioritized appointments need to contain in title:&amp;lt;/b&amp;gt; Appointments whose title contains a word from this comma-separated list have priority over simultaneous other appointments (e.g. vacation)&lt;br /&gt;
* &amp;lt;b&amp;gt;Prioritized appointments must not contain in title:&amp;lt;/b&amp;gt; Appointments whose titles contain a word from this comma-separated list do NOT have priority over concurrent other appointments (e.g. home office)&lt;br /&gt;
&lt;br /&gt;
=== Exchange Sync ===&lt;br /&gt;
*&#039;&#039;&#039;Sync-Type:&#039;&#039;&#039; Select the type of connection to your Exchange server. On-Premises is to be used for local Exchange installations. Here, the calendar connects to Exchange via NTLM authentication. Cloud is for Exchange 365 (formerly Exchange Online), where AOtuh2 is used for the connection.&lt;br /&gt;
*&#039;&#039;&#039;User:&#039;&#039;&#039; The username to use for the authentication. This use must have the Application Impersonation right and should also have a mailbox, since the user will be used to autodetect the Exchange settings, too. For more information about impersonation right (see below).&lt;br /&gt;
*&#039;&#039;&#039;Password:&#039;&#039;&#039; (Only available when Sync-Type is On-Premises) The password to use for the connection to Exchange.&lt;br /&gt;
*&#039;&#039;&#039;Autodiscover Server URL:&#039;&#039;&#039; The URL of the Exchange Autodiscover server. For more information, see the section autodiscover below. This value is optional.&lt;br /&gt;
*&#039;&#039;&#039;Exchange-Server to use:&#039;&#039;&#039; The Exchange Server can report two addresses through which it can be reached: an internal and an external one. Normally it is not a problem to use the external address. However, depending on the local network setup, this may not work. In this case it is recommended to use the internal address.&lt;br /&gt;
*&#039;&#039;&#039;User for name resolving:&#039;&#039;&#039; Execute name resolution by either the impersonation user or various user names the calendar can create with the information received from the PBX [[Reference13r3:Release_Notes_Firmware#131908_-_Calendar:_Make_new_way_to_resolve_names_optional_for_compatibility_reasons|(see also release note)]].&lt;br /&gt;
*&#039;&#039;&#039;Max subscriptions per connection:&#039;&#039;&#039; limit number of concurrent query requests vs Exchange.  [https://kb.infobridge.com/hc/en-us/articles/115004836973-You-have-exceeded-the-available-subscriptions+ Also crosscheck settings at Exchange!]&lt;br /&gt;
*&#039;&#039;&#039;EWS debugging protocol:&#039;&#039;&#039; de/activate debug output generation for troubleshooting.&lt;br /&gt;
&lt;br /&gt;
=== Exchange Sync for Exchange 365 ===&lt;br /&gt;
For this sync type you have some additional configuration steps. When connecting to Exchange 365, Calendar authenticates itself via OAuth2. In order to use this, the Calendar app must first be set up within Azure Active Directory. A description for this setup can be found in the howto article [[Howto:V13r2_Setting_up_Calendar_with_OAuth2|Setting up Calendar with OAuth2]]&lt;br /&gt;
&lt;br /&gt;
=== Presence mapping ===&lt;br /&gt;
Here you can set how the presence values from Exchange should be mapped to the PBX. The only presence that can&#039;t be mapped is free (appointments with presence free will never show up in the presence), busy or away. The options you have in this sections are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Tentative exceptions:&amp;lt;/b&amp;gt; An email address for a user who can create appointments setting the presence to tentative. This can be used for example by the human relations department. If a colleague is sick, an appointment with &amp;quot;sick&amp;quot; and presence set to tentative can be entered into the calendar of that colleague by someone at humen relations. This makes humen relations to be the organizer and the mapping for that appointment will be different as the mapping for normal tentative appointments.&lt;br /&gt;
&lt;br /&gt;
The mappings to set are:&lt;br /&gt;
* &amp;lt;b&amp;gt;Busy:&amp;lt;/b&amp;gt; Mapping of appointments that are set to &#039;&#039;Busy&#039;&#039; in Exchange.&lt;br /&gt;
* &amp;lt;b&amp;gt;Tentative:&amp;lt;/b&amp;gt; Mapping of appointments that are set to &#039;&#039;Tentative&#039;&#039; in Exchange.&lt;br /&gt;
* &amp;lt;b&amp;gt;Tentative exceptions:&amp;lt;/b&amp;gt; Mapping of appointments that are set to &#039;&#039;Tentative&#039;&#039; in Exchange &#039;&#039;created by the user defined in the tentative exceptions organizer field&#039;&#039;.&lt;br /&gt;
* &amp;lt;b&amp;gt;Out of office:&amp;lt;/b&amp;gt; Mapping of appointments that are set to &#039;&#039;Out of Office&#039;&#039; in Exchange.&lt;br /&gt;
* &amp;lt;b&amp;gt;Working elsewhere:&amp;lt;/b&amp;gt; Mapping of appointments that are set to &#039;&#039;Working elsewhere&#039;&#039; in Exchange.&lt;br /&gt;
* &amp;lt;b&amp;gt;No data:&amp;lt;/b&amp;gt; Mapping of appointments that don&#039;t have any presence information. Should never happen.&lt;br /&gt;
&lt;br /&gt;
Values you can set the mapping to&lt;br /&gt;
* &amp;lt;b&amp;gt;Available:&amp;lt;/b&amp;gt; The appointment is handled as free but still be shown as presence (instead of an appointment that is set to free in exchange). Normally, if there is no appointment, available will be shown. If a presence is mapped to free, the format of the presence is like a free presence but with the title of the appointment. For example: the appointment instead of &amp;quot;Available until 2pm (Busy: Meeting)&amp;quot; it will be &amp;quot;Homeoffice until 2pm (Busy: Meeting)&amp;quot;, if the appointment with mapped presence has the title &amp;quot;Homeoffice&amp;quot;.&lt;br /&gt;
* &amp;lt;b&amp;gt;Busy:&amp;lt;/b&amp;gt; Presence will be mapped to busy.&lt;br /&gt;
* &amp;lt;b&amp;gt;Away:&amp;lt;/b&amp;gt; Presence will be mapped to away.&lt;br /&gt;
* &amp;lt;b&amp;gt;Do not disturb:&amp;lt;/b&amp;gt; Presence will be mapped to do not disturb.&lt;br /&gt;
* &amp;lt;b&amp;gt;Ignore for presence:&amp;lt;/b&amp;gt; The appointment with a presence mapped to this value will not be shown for the presence (default for tentative appointments which won&#039;t be triggered by the tentative exception rule).&lt;br /&gt;
&lt;br /&gt;
== Additional information ==&lt;br /&gt;
=== Impersonation user ===&lt;br /&gt;
In order to query the appointments of all Exchange users, the user used to connect to Exchange (On-Premise) or to authenticate the connection (OAuth2) must have the Application Impersonation right. This means that this user can act on behalf of all other users. For this reason and the rights associated with this impersonation user, the credentials of this user should be kept highly confidential! The Calendar itself stores the user&#039;s password in encrypted form in the AppPlatform database (on-premise only). Since the user is also used to determine Exchange server settings, the user may need to have its own mailbox. An example of how the Application Impersonation right can be assigned to a user can be found here: [https://www.techieshelp.com/exchange-2013-configuring-impersonation-applications/ Exchange 2013 and 2016 Configuring Impersonation For Applications]. Instructions for other Exchange versions or further information about Application Impersonation can be found in the Exchange documentation.&lt;br /&gt;
&lt;br /&gt;
=== Autodiscover ===&lt;br /&gt;
The calendar uses autodiscover to determine the server address, the Exchange version used and other user-relevant information. Normally, the calendar automatically determines the address of Exchange&#039;s autodiscover service based on the TLD of the impersonation user. For example, if the impersonation user&#039;s TLD is &amp;quot;example.com&amp;quot;, the calendar will look for the Autodiscover service at &amp;quot;https://autodiscover.example.com&amp;quot;, &amp;quot;https://example.com&amp;quot;, &amp;quot;http://autodiscover.example.com&amp;quot; and &amp;quot;http://example.com&amp;quot;. Depending on the configuration, at least one of these URLs should be the correct one. However, under certain circumstances, this auto-detection may go wrong. Therefore, the address of the autodiscover service can be configured for the calendar. The exact address depends on your Exchange configuration. For Exchange 365 e.g. https://autodiscover-s.outlook.com or https://outlook.office365.com are possibilities. Additional information can be found in the [https://docs.microsoft.com/en-us/exchange/architecture/client-access/autodiscover?view=exchserver-2019 Autodiscover service in Exchange Server Knowledgebase]&lt;br /&gt;
&lt;br /&gt;
=== Users and primary SMTP address ===&lt;br /&gt;
The calendar will get a list of users available in the PBX. After that, he tries to resolve the primary SMTP address for each user to be able to get the users appointments. The calendar tries to use username@pbx-domain. If that isn&#039;t the users email address, you can add additional addresses to each user object in the PBX. This may help in case that a user can&#039;t be resolved.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
* [[Howto:V13r2_Setting_up_Calendar_with_OAuth2]]&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Main_Page&amp;diff=63678</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Main_Page&amp;diff=63678"/>
		<updated>2022-10-10T14:57:32Z</updated>

		<summary type="html">&lt;p&gt;Msm: /* Latest News */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;!-- Message of the day --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0em 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Remote Support ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://get.anydesk.com/PK8coqHH/AnyDesk.exe Download Anydesk]&lt;br /&gt;
&lt;br /&gt;
== Before you try to use this wiki ==&lt;br /&gt;
To get access &#039;&#039;&#039;[[Account_Creation|READ THIS FIRST]]&#039;&#039;&#039;, make sure you [[Special:Userlogin|log in]] and have [[Account_Creation|your account authorized]].&lt;br /&gt;
&lt;br /&gt;
You may then modify most of the articles and even add new ones.  We hope for a rich and useful platform for professional innovaphone users to emerge this way.&lt;br /&gt;
&lt;br /&gt;
To make sure you understand the terms of use, have a quick look at the [[innovaphone-wiki:About | legal stuff]].  But do not waste too much time there!  Instead, rather browse through the information provided.  There are various hopefully useful links in the sidebar on the left.&lt;br /&gt;
&lt;br /&gt;
== Searching ==&lt;br /&gt;
Searching in wiki works, but is sometimes cumbersome.  However, you can have google do the job for you.  Try [https://www.google.de/search?q=site%3Ainnovaphone.com+xml+documentation &amp;lt;code&amp;gt;site:innovaphone.com your search terms&amp;lt;/code&amp;gt;] to search the innovaphone sites for matches!&lt;br /&gt;
&lt;br /&gt;
If you still don&#039;t find what you are looking for, [mailto:presales-at-innovaphone-dot-com drop us a message]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- latest news commented out, may be reactivated once there are new really --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; margin-top:15px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0.5em 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- please insert new message ON TOP and remove extraneous (more than 5) old messages --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;nowiki&amp;gt; ~~~~ is replaced by your name and date automatically &amp;lt;/nowiki&amp;gt; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Latest News ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Msm|Msm]] 16:57, 10 October 2022 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V13r2 product/13r2/firmware 136386 (sr 17) available | Version 13r2 Service Release 17]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Msm|Msm]] 16:57, 10 October 2022 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V13r1 product/13r1/firmware 133128 (sr 43) available | Version 13r1 Service Release 43]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Msm|Msm]] 16:57, 10 October 2022 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V12r2 product/12r2/firmware 125860 (sr 58) available | Version 12r2 Service Release 58]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Msm|Msm]] 16:57, 10 October 2022 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V11r2 product/11r2/firmware 113805 (sr 63) available | Version 11r2 Service Release 63]] is now available from the [http://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Msm|Msm]] 14:41, 19 September 2022 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V13r2 product/13r2/firmware 136383 (sr 16) available | Version 13r2 Service Release 16]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Msm|Msm]] 14:41, 19 September 2022 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V13r1 product/13r1/firmware 133125 (sr 42) available | Version 13r1 Service Release 42]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Msm|Msm]] 14:41, 19 September 2022 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V12r2 product/12r2/firmware 125857 (sr 57) available | Version 12r2 Service Release 57]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Msm|Msm]] 14:41, 19 September 2022 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V11r2 product/11r2/firmware 113803 (sr 62) available | Version 11r2 Service Release 62]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Hna|Hna]] 13:57, 13 September 2022 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware_V13r3_product/13r3/firmware_137656_(beta3)_available | Version 13r3 Beta 3]] is now available from the [https://store.innovaphone.com/beta/download.htm beta store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Hna|Hna]] 15:41, 18 July 2022 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware_V13r3_product/13r3/firmware_137623_(beta2)_available | Version 13r3 Beta 2]] is now available from the [https://store.innovaphone.com/beta/download.htm beta store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Msc|Msc]] 15:53, 1 June 2022 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware_V13r3_product/13r3/firmware_137584_(beta1)_available | Version 13r3 Beta 1]] is now available from the [https://store.innovaphone.com/beta/download.htm beta store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 18:42, 11 May 2022 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless_Handset_Firmware_IP73_1005_(3.1.6)_released | Wireless Handset Firmware IP73 1005 (3.1.6)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Inno-mst|Inno-mst]] 17:40, 14 February 2022 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V12r1 product/12r1/firmware 121355(sr 46) available | Version 12r1 Service Release 46]] is now available from the [https://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Inno-mst|Inno-mst]] 11:22, 14 April 2022 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Operator9 90246 (hotfix24) available | Operator9 hotfix24]] is now available from [https://store.innovaphone.com/release/download.htm the Software download area].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 15:05, 11 February 2022 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless_Handset_Firmware_IP64_10313_(2.12.10)/IP65_10118_(2.12.10)_released | Wireless Handset Firmware IP64 10313 (2.12.10)/IP65 10118 (2.12.10)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:kwa|kwa]] 14:00, 16 June 2021 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:iQM_Build_8029100_available | IQM Build 8029100 Hotfix34]] is now available from the [https://store.innovaphone.com/release/download.htm the Software download area].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 12:46, 16 June 2021 (CEST))&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:TAPI Service Provider 8188 (hotfix21) available|TAPI Service Provider 8188 (hotfix21)]] is now available from [https://store.innovaphone.com/release/download.htm the Software download area].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 17:38, 21 January 2021 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless_Handset_Firmware_IP62_3040620_(6.2.3)_released | Wireless Handset Firmware IP62 3040620 (6.2.3)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 17:27, 21 January 2021 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:WinPDM_Software_3130111_%284.0.0%29_released | WinPDM Software 3130111 (4.0.0)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 13:17, 2 November 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Linux_Application_Platform_100271_(sr64)_available | Linux Application Platform V10 100271 sr64]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 13:17, 2 November 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Innovaphone_Reporting_100271_(sr64)_available | innovaphone Reporting V10 100271 sr64]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 13:17, 2 November 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Innovaphone_Fax_100271_(sr64)_available | innovaphone Fax V10 100271 sr64]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 13:17, 2 November 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Innovaphone_Exchange_Calendar_Connector_100271_(sr64)_available | innovaphone Exchange Calendar Connector V10 100271 sr64]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 18:21, 12 October 2020 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless_Handset_Firmware_IP61_3022811_(4.7.8)/IP63_3022912_(4.7.8)_released | Wireless Handset Firmware IP61 3022811 (4.7.8)/IP63 3022912 (4.7.8)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 21:30, 27 March 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless_Handset_Firmware_and_Management_Software_product/9.00/wireless_100037_%28hotfix19%29_available | Wireless Package hotfix 19]] is now available from the [http://download.innovaphone.com/ice/9.00#wireless V9 download area].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 07:56, 9 March 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:App_Platform_build_90007_available | App Platform build 90007]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:kwa|kwa]] 14:00, 02 March 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Recording_Build_121100_available | innovaphone Recording SR29 build 121100]] is now available from the [http://download.innovaphone.com/ice/10.00/#recording V10 download area].&lt;br /&gt;
&lt;br /&gt;
== New Articles ==&lt;br /&gt;
{{Special:Newpages/8,namespace=Howto,namespace=Support,namespace=Reference,namespace=Reference7,namespace=Reference8}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; margin-top:15px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0.5em 1em; font-size:1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More innovaphone Ressources ==&lt;br /&gt;
* [http://www.innovaphone.com Home Page]&lt;br /&gt;
* [http://download.innovaphone.com Download Site ]&lt;br /&gt;
* [http://my.innovaphone.com my.innovaphone ]&lt;br /&gt;
* [http://mantis.innovaphone.com/ Ticketing System ]&lt;br /&gt;
* [[Support:What are the Roadmap Documents? | Roadmaps ]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Main_Page&amp;diff=63368</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Main_Page&amp;diff=63368"/>
		<updated>2022-09-19T12:41:23Z</updated>

		<summary type="html">&lt;p&gt;Msm: /* Latest News */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;!-- Message of the day --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0em 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Remote Support ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://get.anydesk.com/PK8coqHH/AnyDesk.exe Download Anydesk]&lt;br /&gt;
&lt;br /&gt;
== Before you try to use this wiki ==&lt;br /&gt;
To get access &#039;&#039;&#039;[[Account_Creation|READ THIS FIRST]]&#039;&#039;&#039;, make sure you [[Special:Userlogin|log in]] and have [[Account_Creation|your account authorized]].&lt;br /&gt;
&lt;br /&gt;
You may then modify most of the articles and even add new ones.  We hope for a rich and useful platform for professional innovaphone users to emerge this way.&lt;br /&gt;
&lt;br /&gt;
To make sure you understand the terms of use, have a quick look at the [[innovaphone-wiki:About | legal stuff]].  But do not waste too much time there!  Instead, rather browse through the information provided.  There are various hopefully useful links in the sidebar on the left.&lt;br /&gt;
&lt;br /&gt;
== Searching ==&lt;br /&gt;
Searching in wiki works, but is sometimes cumbersome.  However, you can have google do the job for you.  Try [https://www.google.de/search?q=site%3Ainnovaphone.com+xml+documentation &amp;lt;code&amp;gt;site:innovaphone.com your search terms&amp;lt;/code&amp;gt;] to search the innovaphone sites for matches!&lt;br /&gt;
&lt;br /&gt;
If you still don&#039;t find what you are looking for, [mailto:presales-at-innovaphone-dot-com drop us a message]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- latest news commented out, may be reactivated once there are new really --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; margin-top:15px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0.5em 1em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- please insert new message ON TOP and remove extraneous (more than 5) old messages --&amp;gt;&lt;br /&gt;
&amp;lt;!-- &amp;lt;nowiki&amp;gt; ~~~~ is replaced by your name and date automatically &amp;lt;/nowiki&amp;gt; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Latest News ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Msm|Msm]] 14:41, 19 September 2022 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V13r2 product/13r2/firmware 136383 (sr 16) available | Version 13r2 Service Release 16]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Msm|Msm]] 14:41, 19 September 2022 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V13r1 product/13r1/firmware 133125 (sr 42) available | Version 13r1 Service Release 42]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Msm|Msm]] 14:41, 19 September 2022 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V12r2 product/12r2/firmware 125857 (sr 57) available | Version 12r2 Service Release 57]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Msm|Msm]] 14:41, 19 September 2022 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V11r2 product/11r2/firmware 113803 (sr 62) available | Version 11r2 Service Release 62]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Hna|Hna]] 13:57, 13 September 2022 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware_V13r3_product/13r3/firmware_137656_(beta3)_available | Version 13r3 Beta 3]] is now available from the [https://store.innovaphone.com/beta/download.htm beta store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Hna|Hna]] 15:41, 18 July 2022 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware_V13r3_product/13r3/firmware_137623_(beta2)_available | Version 13r3 Beta 2]] is now available from the [https://store.innovaphone.com/beta/download.htm beta store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Msc|Msc]] 15:53, 1 June 2022 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware_V13r3_product/13r3/firmware_137584_(beta1)_available | Version 13r3 Beta 1]] is now available from the [https://store.innovaphone.com/beta/download.htm beta store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 18:42, 11 May 2022 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless_Handset_Firmware_IP73_1005_(3.1.6)_released | Wireless Handset Firmware IP73 1005 (3.1.6)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Inno-mst|Inno-mst]] 17:40, 14 February 2022 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Firmware V12r1 product/12r1/firmware 121355(sr 46) available | Version 12r1 Service Release 46]] is now available from the [https://store.innovaphone.com/release/download.htm download page].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Inno-mst|Inno-mst]] 11:22, 14 April 2022 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Operator9 90246 (hotfix24) available | Operator9 hotfix24]] is now available from [https://store.innovaphone.com/release/download.htm the Software download area].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 15:05, 11 February 2022 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless_Handset_Firmware_IP64_10313_(2.12.10)/IP65_10118_(2.12.10)_released | Wireless Handset Firmware IP64 10313 (2.12.10)/IP65 10118 (2.12.10)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:kwa|kwa]] 14:00, 16 June 2021 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:iQM_Build_8029100_available | IQM Build 8029100 Hotfix34]] is now available from the [https://store.innovaphone.com/release/download.htm the Software download area].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 12:46, 16 June 2021 (CEST))&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:TAPI Service Provider 8188 (hotfix21) available|TAPI Service Provider 8188 (hotfix21)]] is now available from [https://store.innovaphone.com/release/download.htm the Software download area].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 17:38, 21 January 2021 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless_Handset_Firmware_IP62_3040620_(6.2.3)_released | Wireless Handset Firmware IP62 3040620 (6.2.3)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 17:27, 21 January 2021 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:WinPDM_Software_3130111_%284.0.0%29_released | WinPDM Software 3130111 (4.0.0)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 13:17, 2 November 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Linux_Application_Platform_100271_(sr64)_available | Linux Application Platform V10 100271 sr64]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 13:17, 2 November 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Innovaphone_Reporting_100271_(sr64)_available | innovaphone Reporting V10 100271 sr64]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 13:17, 2 November 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Innovaphone_Fax_100271_(sr64)_available | innovaphone Fax V10 100271 sr64]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 13:17, 2 November 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Innovaphone_Exchange_Calendar_Connector_100271_(sr64)_available | innovaphone Exchange Calendar Connector V10 100271 sr64]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 18:21, 12 October 2020 (CEST)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless_Handset_Firmware_IP61_3022811_(4.7.8)/IP63_3022912_(4.7.8)_released | Wireless Handset Firmware IP61 3022811 (4.7.8)/IP63 3022912 (4.7.8)]] is now available from the [https://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Afi|Afi]] 21:30, 27 March 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Wireless_Handset_Firmware_and_Management_Software_product/9.00/wireless_100037_%28hotfix19%29_available | Wireless Package hotfix 19]] is now available from the [http://download.innovaphone.com/ice/9.00#wireless V9 download area].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:Dde|Dde]] 07:56, 9 March 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:App_Platform_build_90007_available | App Platform build 90007]] is now available from the [http://store.innovaphone.com/release/download.htm App store].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;[[User:kwa|kwa]] 14:00, 02 March 2020 (CET)&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Support:Recording_Build_121100_available | innovaphone Recording SR29 build 121100]] is now available from the [http://download.innovaphone.com/ice/10.00/#recording V10 download area].&lt;br /&gt;
&lt;br /&gt;
== New Articles ==&lt;br /&gt;
{{Special:Newpages/8,namespace=Howto,namespace=Support,namespace=Reference,namespace=Reference7,namespace=Reference8}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0px; margin-right:10px; margin-top:15px; border:1px solid #58C4C3; background-color:#F4F4F4; padding:0em 1em 0.5em 1em; font-size:1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More innovaphone Ressources ==&lt;br /&gt;
* [http://www.innovaphone.com Home Page]&lt;br /&gt;
* [http://download.innovaphone.com Download Site ]&lt;br /&gt;
* [http://my.innovaphone.com my.innovaphone ]&lt;br /&gt;
* [http://mantis.innovaphone.com/ Ticketing System ]&lt;br /&gt;
* [[Support:What are the Roadmap Documents? | Roadmaps ]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference13r3:Concept_App_Service_Calendar&amp;diff=62184</id>
		<title>Reference13r3:Concept App Service Calendar</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference13r3:Concept_App_Service_Calendar&amp;diff=62184"/>
		<updated>2022-05-24T08:20:53Z</updated>

		<summary type="html">&lt;p&gt;Msm: /* Exchange - PBX presence mapping */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
&lt;br /&gt;
The App Service Calendar is an App Service which can be installed on an innovaphone App Platform. It is used to synchronize the exchange calendar of the users that have been added to the PBX. For now, the synchronized appointments will be used to update the presence of the users. Doing this, the calendar replaces the previous exchange connector.&lt;br /&gt;
&lt;br /&gt;
== Applies To == &lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX from version 13r1&lt;br /&gt;
&lt;br /&gt;
== Apps ==&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-calender ===&lt;br /&gt;
Runs as a service without UI. Handles the synchronization of the Exchange calendar as well as the update of the users presence.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-calender-admin ===&lt;br /&gt;
(Still experimental) Gives some administrative options and can be used to get the current status.&lt;br /&gt;
&lt;br /&gt;
== PBX Manager Plugins ==&lt;br /&gt;
With the calendar plugin, apps can be created and deleted. Also the calendar can be configured.&lt;br /&gt;
&lt;br /&gt;
== Concepts ==&lt;br /&gt;
The calendar will get a list of all users available in the PBX. This list will be used to figure out the users available in Exchange (which means, that a user, that isn&#039;t available in PBX won&#039;t be synchronized by the calendar). Finally, all appointments of the users Exchange calendar will be synchronized to the calendars database and used to update the users presence. The calendar also registeres himself to Exchange to get notified about changes in a users calendar.&lt;br /&gt;
&lt;br /&gt;
=== Synchronization ===&lt;br /&gt;
The way how the calendar receives the data from Exchange in 13r1 had been changed compared to the Exchange Sync Connector of previous version. The calendar now synchronizes all appointments for all users with it&#039;s own database. To activate the synchronization, use the PBX manager to edit the settings for the calendar. There, only the email address and the password for the impersonation user must be given. Exchange 2010 or newer is supported. This includes Exchange 365. Please note that not all Office 365 plans offers access to an Exchange 365 server - but an Exchange server is obligatory. An Office 365 plan without Exchange 365 won&#039;t work. More information can be found at [http://www.office.com Microsoft Office365 homepage].&lt;br /&gt;
&lt;br /&gt;
=== Communication with Exchange ===&lt;br /&gt;
The calendar uses a standard HTTP or HTTPS connection to communicate with Exchange. There is no additional port setup necessary like it was with the old Exchange Sync Connector. Two HTTP(S) connections will be used to communicate with the Exchange. The first is for requesting appointment data and only will be active during data exchange. The other will be used to have some kind of open streaming connection to get informed about changes on Exchange side. This is a non-stop connection (well, actually it will be reestablished each 30 minutes). If HTTP or HTTPS will be used depends on the Exchange configuration. However, HTTPS is highly recommended.&lt;br /&gt;
&lt;br /&gt;
=== Exchange - PBX presence mapping ===&lt;br /&gt;
Starting from 13r1 beta 1, the presence received from exchange can be mapped to a precense type available for the PBX. Instead of previous version, the mapping isn&#039;t static anymore and can be adjusted via PBX manager plugin of the calendar. More details can be found at [[Reference13r3:Apps/PbxManager/App Calendar]]&lt;br /&gt;
&lt;br /&gt;
=== PBX Settings ===&lt;br /&gt;
The calender will replicate the users of the PBX to check if they can be synchronized with Exchange. Because there can be multiple PBX available, the calendar will only accept one. This one must be set in the calendar settings of the PBX manger by giving the name of the master PBX (Only the PBX Name, not the full DNS Name). Note that &amp;quot;master&amp;quot; don&#039;t mean that only a master PBX will be accepted. Also the name of a slave PBX can be entered. Master in that case means, that this will be the master for the calendar, the only PBX the calendar accepts a connection from.&lt;br /&gt;
&lt;br /&gt;
=== Impersonation user ===&lt;br /&gt;
To synchronize all appointments from all users with Exchange, an Exchange user must exist with the Application Impersonation right. Impersonation means, that this user communicates with Exchange in the name of another user. So the calendar uses that user to synchronize every other user reported from the PBX and with an available mailbox in Exchange. Be aware of who has access to the impersonation users mail address and password, because that user has all rights to read, modify and add appointments, emails, tasks, etc. in Exchange for every other user. The calendar itself must save the password, but it will be stored in encrypted form to the database. For more information about impersonation user, ask your Exchange administrator. An example how to add this right to an existing user can be found here: [https://www.techieshelp.com/exchange-2013-configuring-impersonation-applications/ Exchange 2013 and 2016 Configuring Impersonation For Applications]. For other version of Exchange, please look to the proper documentation offered by Microsoft (or ask google).&lt;br /&gt;
&lt;br /&gt;
=== Autodiscover ===&lt;br /&gt;
The calendar uses autodiscover to get the Exchange Server version used as well as the address to use for synchronizing (which is done using the Exchange Web Services). Because of this, the impersonation user must have a valid mailbox, or autodiscover for that user will fail and the calendar won&#039;t be able to get the required information. It could be that Autodiscover it must be activated first. The Calendar searches for the server by taking the domain name of the given user (because of this, the complete email adress of the user must be given) and combinig it with autodiscover related URIs. The calendar then will test it at first with HTTPS and after that with HTTP. For example, if the email adress of the impersonation user is &amp;quot;myuser@example.com&amp;quot;, the calendar will look for the autodiscover server at &amp;quot;https://autodiscover.example.com&amp;quot;, &amp;quot;https://example.com&amp;quot;, &amp;quot;http://autodiscover.example.com&amp;quot; and finally &amp;quot;http://example.com&amp;quot;. Generally, one of the points will send a redirect request which will lead to the correct autodiscover URL, which will be used by the calendar. If there is no redirect and none of the URLs tested will work, autodiscover failed. You can get more information about autodiscover from the [https://docs.microsoft.com/en-us/exchange/architecture/client-access/autodiscover?view=exchserver-2019 Microsoft homepage] (even if it is for the latestes Exchange version, it is nearly the same for older ones), or your Exchange Administrator.&lt;br /&gt;
&lt;br /&gt;
You can test your autodiscover [https://testconnectivity.microsoft.com here].&lt;br /&gt;
&lt;br /&gt;
=== Users and primary SMTP address ===&lt;br /&gt;
The calendar will get a list of users available in the PBX. After that, he tries to resolve the primary SMTP address for each user. This must be done to be able to synchronize the user. So make sure that the email information given to the users object in the PBX contains at least one address that also exists in Exchange, or the resolving will fail. Note that multiple addresses can given to the users object seperated by semicolon.&lt;br /&gt;
&lt;br /&gt;
== Presence ==&lt;br /&gt;
The calendar will create a presence string for the appointments and send it to the PBX. The language and timezone of that presence can be defined in the calendar settings. However, the string also contains some information seperated by hashtags a client can use to rebuild the presence string for its own language and timezone settings (like it will be done by the innovaphone devices). Note that the appointment title itself won&#039;t be translated!&lt;br /&gt;
&lt;br /&gt;
=== Presence string format ===&lt;br /&gt;
The format of the presence string created by the calendar. This description is for developer that whant to implement the display of the current presence in an own client and maybe adjust the values for a special timezone or date-time format. The format string the calendar will send canot be changed (except for language releated values that will depend on the &amp;quot;default presence language&amp;quot; and &amp;quot;default presence timezone&amp;quot; settings):&lt;br /&gt;
&lt;br /&gt;
 Presence         = &amp;quot;Free&amp;quot; / &amp;quot;Free until &amp;quot; Date-Time Next-Appointment / Appointment-Info &amp;quot;until &amp;quot; Date-Time [Next-Appointment]&lt;br /&gt;
 Date-Time        = [Date] [Time] ; Must be at least one of them&lt;br /&gt;
 Date             = Day (&amp;quot;.&amp;quot; / &amp;quot;/&amp;quot;) Month (&amp;quot;.&amp;quot; / &amp;quot;/&amp;quot;) Year ; Real format depends on localization settings&lt;br /&gt;
 Day              = 2DIGIT ; 01-31&lt;br /&gt;
 Month            = 2DIGIT ; 01-12&lt;br /&gt;
 Year             = 4DIGIT ; e. g. 2017&lt;br /&gt;
 Time             = Hour &amp;quot;:&amp;quot; Minute [&amp;quot;a.m.&amp;quot; / &amp;quot;p.m.&amp;quot;] ; Real format depends on localization settings&lt;br /&gt;
 Hour             = 2DIGIT ; 01-12 or 00-23&lt;br /&gt;
 Minute           = 2DIGIT&lt;br /&gt;
 Next-Appointment = &amp;quot;(&amp;quot; [&amp;quot;Busy: &amp;quot; / &amp;quot;Away: &amp;quot;] Appointment-Info &amp;quot;)&amp;quot;&lt;br /&gt;
 Appointment-Info = Title | &amp;quot;Private&amp;quot; ;&lt;br /&gt;
 Title            = ; Well - any string in UTF8 Format that can include what ever you whant...&lt;br /&gt;
&lt;br /&gt;
After the presence string, a couple of hash-tags will be added (if Presence is not only &amp;quot;Free&amp;quot;). This tags will&lt;br /&gt;
be sent so that a client can re-build with the cleint&#039;s localization settings. The tags will be added with the&lt;br /&gt;
following rules (note that the order of the tags is not variable):&lt;br /&gt;
&lt;br /&gt;
 Tags             = &amp;quot;&amp;quot; / &amp;quot;#&amp;quot; Activity &amp;quot; &amp;quot; [Info-Len &amp;quot; &amp;quot;] Date-Time &amp;quot; &amp;quot; [Whole-Day &amp;quot; &amp;quot;] [Next-Activity &amp;quot; &amp;quot; Next-Appointment]&lt;br /&gt;
 Activity         = &amp;quot;free&amp;quot; / &amp;quot;busy&amp;quot; / &amp;quot;away&amp;quot;&lt;br /&gt;
 Info-Len         = &amp;quot;#len:&amp;quot; DIGIT &amp;quot;:&amp;quot; DIGIT ; The first DIGIT is the number of characters (UTF-8 conform) and the second the number of bytes&lt;br /&gt;
                                              of the len of the Appointment-Info. This tag only exists if the presence starts with Appointment-Info.&lt;br /&gt;
 Date-Time        = &amp;quot;#until:&amp;quot; DIGIT; DIGIT = Date-Time in sec as 64bit value.&lt;br /&gt;
 Whole-Day        = &amp;quot;#whole-day&amp;quot; ; Only if the appointment or the following one (depending on the case) or next is a&lt;br /&gt;
                                   whole-day appointment. In that case, until should only print the date&lt;br /&gt;
 Next-Activity    = &amp;quot;#next-activity&amp;quot; Activity ; Only, if there is a next is the start of the next appointment (see above).&lt;br /&gt;
 Next-Appointment = &amp;quot;#next:&amp;quot; DIGIT &amp;quot;:&amp;quot; DIGIT &amp;quot;:&amp;quot; DIGIT &amp;quot;:&amp;quot; DIGIT ;&lt;br /&gt;
                                      Where the first DIGIT is the position of the next activities Appointment-Info inside the presence&lt;br /&gt;
                                      string and the second DIGIT the Appointment-Info length. Those values are given in number of charactes (UTF-8 conform).&lt;br /&gt;
                                      The third DIGIT has the same meaning as the first, so that it is given in number of bytes, while the last DIGIT&lt;br /&gt;
                                      has the meaning of the second one, but also in bytes.&lt;br /&gt;
&lt;br /&gt;
=== Additional Notes ===&lt;br /&gt;
&lt;br /&gt;
* The presence starts with &amp;quot;Free until&amp;quot;, if there is an upcoming appointment.&lt;br /&gt;
* If the presence starts with Appointment-Info, Date-Time will be the end of that appointment or the start of the next appointment, if the next appointment starts at or before the current one ends.&lt;br /&gt;
* Date-Time will be time-only, if the is the same day as when the precense text will be build, date only, if the appointment (or Next-Appointmant in case that next is a appointment start) is a whole-day appointment.&lt;br /&gt;
* Next-Appointment only will be written, if the presence won&#039;t start with an Appointment-Info.&lt;br /&gt;
&lt;br /&gt;
=== Example presence strings ===&lt;br /&gt;
  Free&lt;br /&gt;
  Free until 10:30 (Busy: Meeting with Caption Sparrow) #free #until:12345 #next-activity:busy #next:24:28:48:28&lt;br /&gt;
  Meeting with Caption Sparrow until 12:30 #busy #len:28:28 #until:12345&lt;br /&gt;
  Free until 24.12.2017 (Busy: Christmas) #free #until:54321 #whole-day #next-activity:busy #next:29:9:29:2&lt;br /&gt;
  Christmas until 27.12.2017 #busy #len:9 #until:42424242 #whole-day&lt;br /&gt;
  Sleeping until 22.08.2017 07:00 #away #len:8  #until:3333333&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference13r3:Concept_App_Service_Calendar&amp;diff=62183</id>
		<title>Reference13r3:Concept App Service Calendar</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference13r3:Concept_App_Service_Calendar&amp;diff=62183"/>
		<updated>2022-05-24T08:19:21Z</updated>

		<summary type="html">&lt;p&gt;Msm: /* Communication with Exchange */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
&lt;br /&gt;
The App Service Calendar is an App Service which can be installed on an innovaphone App Platform. It is used to synchronize the exchange calendar of the users that have been added to the PBX. For now, the synchronized appointments will be used to update the presence of the users. Doing this, the calendar replaces the previous exchange connector.&lt;br /&gt;
&lt;br /&gt;
== Applies To == &lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX from version 13r1&lt;br /&gt;
&lt;br /&gt;
== Apps ==&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-calender ===&lt;br /&gt;
Runs as a service without UI. Handles the synchronization of the Exchange calendar as well as the update of the users presence.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-calender-admin ===&lt;br /&gt;
(Still experimental) Gives some administrative options and can be used to get the current status.&lt;br /&gt;
&lt;br /&gt;
== PBX Manager Plugins ==&lt;br /&gt;
With the calendar plugin, apps can be created and deleted. Also the calendar can be configured.&lt;br /&gt;
&lt;br /&gt;
== Concepts ==&lt;br /&gt;
The calendar will get a list of all users available in the PBX. This list will be used to figure out the users available in Exchange (which means, that a user, that isn&#039;t available in PBX won&#039;t be synchronized by the calendar). Finally, all appointments of the users Exchange calendar will be synchronized to the calendars database and used to update the users presence. The calendar also registeres himself to Exchange to get notified about changes in a users calendar.&lt;br /&gt;
&lt;br /&gt;
=== Synchronization ===&lt;br /&gt;
The way how the calendar receives the data from Exchange in 13r1 had been changed compared to the Exchange Sync Connector of previous version. The calendar now synchronizes all appointments for all users with it&#039;s own database. To activate the synchronization, use the PBX manager to edit the settings for the calendar. There, only the email address and the password for the impersonation user must be given. Exchange 2010 or newer is supported. This includes Exchange 365. Please note that not all Office 365 plans offers access to an Exchange 365 server - but an Exchange server is obligatory. An Office 365 plan without Exchange 365 won&#039;t work. More information can be found at [http://www.office.com Microsoft Office365 homepage].&lt;br /&gt;
&lt;br /&gt;
=== Communication with Exchange ===&lt;br /&gt;
The calendar uses a standard HTTP or HTTPS connection to communicate with Exchange. There is no additional port setup necessary like it was with the old Exchange Sync Connector. Two HTTP(S) connections will be used to communicate with the Exchange. The first is for requesting appointment data and only will be active during data exchange. The other will be used to have some kind of open streaming connection to get informed about changes on Exchange side. This is a non-stop connection (well, actually it will be reestablished each 30 minutes). If HTTP or HTTPS will be used depends on the Exchange configuration. However, HTTPS is highly recommended.&lt;br /&gt;
&lt;br /&gt;
=== Exchange - PBX presence mapping ===&lt;br /&gt;
Starting from 13r1 beta 1, the presence received from exchange can be mapped to a precense type available for the PBX. Instead of previous version, the mapping isn&#039;t static anymore and can be adjusted via PBX manager plugin of the calendar. More details can be found at ...&lt;br /&gt;
&lt;br /&gt;
=== PBX Settings ===&lt;br /&gt;
The calender will replicate the users of the PBX to check if they can be synchronized with Exchange. Because there can be multiple PBX available, the calendar will only accept one. This one must be set in the calendar settings of the PBX manger by giving the name of the master PBX (Only the PBX Name, not the full DNS Name). Note that &amp;quot;master&amp;quot; don&#039;t mean that only a master PBX will be accepted. Also the name of a slave PBX can be entered. Master in that case means, that this will be the master for the calendar, the only PBX the calendar accepts a connection from.&lt;br /&gt;
&lt;br /&gt;
=== Impersonation user ===&lt;br /&gt;
To synchronize all appointments from all users with Exchange, an Exchange user must exist with the Application Impersonation right. Impersonation means, that this user communicates with Exchange in the name of another user. So the calendar uses that user to synchronize every other user reported from the PBX and with an available mailbox in Exchange. Be aware of who has access to the impersonation users mail address and password, because that user has all rights to read, modify and add appointments, emails, tasks, etc. in Exchange for every other user. The calendar itself must save the password, but it will be stored in encrypted form to the database. For more information about impersonation user, ask your Exchange administrator. An example how to add this right to an existing user can be found here: [https://www.techieshelp.com/exchange-2013-configuring-impersonation-applications/ Exchange 2013 and 2016 Configuring Impersonation For Applications]. For other version of Exchange, please look to the proper documentation offered by Microsoft (or ask google).&lt;br /&gt;
&lt;br /&gt;
=== Autodiscover ===&lt;br /&gt;
The calendar uses autodiscover to get the Exchange Server version used as well as the address to use for synchronizing (which is done using the Exchange Web Services). Because of this, the impersonation user must have a valid mailbox, or autodiscover for that user will fail and the calendar won&#039;t be able to get the required information. It could be that Autodiscover it must be activated first. The Calendar searches for the server by taking the domain name of the given user (because of this, the complete email adress of the user must be given) and combinig it with autodiscover related URIs. The calendar then will test it at first with HTTPS and after that with HTTP. For example, if the email adress of the impersonation user is &amp;quot;myuser@example.com&amp;quot;, the calendar will look for the autodiscover server at &amp;quot;https://autodiscover.example.com&amp;quot;, &amp;quot;https://example.com&amp;quot;, &amp;quot;http://autodiscover.example.com&amp;quot; and finally &amp;quot;http://example.com&amp;quot;. Generally, one of the points will send a redirect request which will lead to the correct autodiscover URL, which will be used by the calendar. If there is no redirect and none of the URLs tested will work, autodiscover failed. You can get more information about autodiscover from the [https://docs.microsoft.com/en-us/exchange/architecture/client-access/autodiscover?view=exchserver-2019 Microsoft homepage] (even if it is for the latestes Exchange version, it is nearly the same for older ones), or your Exchange Administrator.&lt;br /&gt;
&lt;br /&gt;
You can test your autodiscover [https://testconnectivity.microsoft.com here].&lt;br /&gt;
&lt;br /&gt;
=== Users and primary SMTP address ===&lt;br /&gt;
The calendar will get a list of users available in the PBX. After that, he tries to resolve the primary SMTP address for each user. This must be done to be able to synchronize the user. So make sure that the email information given to the users object in the PBX contains at least one address that also exists in Exchange, or the resolving will fail. Note that multiple addresses can given to the users object seperated by semicolon.&lt;br /&gt;
&lt;br /&gt;
== Presence ==&lt;br /&gt;
The calendar will create a presence string for the appointments and send it to the PBX. The language and timezone of that presence can be defined in the calendar settings. However, the string also contains some information seperated by hashtags a client can use to rebuild the presence string for its own language and timezone settings (like it will be done by the innovaphone devices). Note that the appointment title itself won&#039;t be translated!&lt;br /&gt;
&lt;br /&gt;
=== Presence string format ===&lt;br /&gt;
The format of the presence string created by the calendar. This description is for developer that whant to implement the display of the current presence in an own client and maybe adjust the values for a special timezone or date-time format. The format string the calendar will send canot be changed (except for language releated values that will depend on the &amp;quot;default presence language&amp;quot; and &amp;quot;default presence timezone&amp;quot; settings):&lt;br /&gt;
&lt;br /&gt;
 Presence         = &amp;quot;Free&amp;quot; / &amp;quot;Free until &amp;quot; Date-Time Next-Appointment / Appointment-Info &amp;quot;until &amp;quot; Date-Time [Next-Appointment]&lt;br /&gt;
 Date-Time        = [Date] [Time] ; Must be at least one of them&lt;br /&gt;
 Date             = Day (&amp;quot;.&amp;quot; / &amp;quot;/&amp;quot;) Month (&amp;quot;.&amp;quot; / &amp;quot;/&amp;quot;) Year ; Real format depends on localization settings&lt;br /&gt;
 Day              = 2DIGIT ; 01-31&lt;br /&gt;
 Month            = 2DIGIT ; 01-12&lt;br /&gt;
 Year             = 4DIGIT ; e. g. 2017&lt;br /&gt;
 Time             = Hour &amp;quot;:&amp;quot; Minute [&amp;quot;a.m.&amp;quot; / &amp;quot;p.m.&amp;quot;] ; Real format depends on localization settings&lt;br /&gt;
 Hour             = 2DIGIT ; 01-12 or 00-23&lt;br /&gt;
 Minute           = 2DIGIT&lt;br /&gt;
 Next-Appointment = &amp;quot;(&amp;quot; [&amp;quot;Busy: &amp;quot; / &amp;quot;Away: &amp;quot;] Appointment-Info &amp;quot;)&amp;quot;&lt;br /&gt;
 Appointment-Info = Title | &amp;quot;Private&amp;quot; ;&lt;br /&gt;
 Title            = ; Well - any string in UTF8 Format that can include what ever you whant...&lt;br /&gt;
&lt;br /&gt;
After the presence string, a couple of hash-tags will be added (if Presence is not only &amp;quot;Free&amp;quot;). This tags will&lt;br /&gt;
be sent so that a client can re-build with the cleint&#039;s localization settings. The tags will be added with the&lt;br /&gt;
following rules (note that the order of the tags is not variable):&lt;br /&gt;
&lt;br /&gt;
 Tags             = &amp;quot;&amp;quot; / &amp;quot;#&amp;quot; Activity &amp;quot; &amp;quot; [Info-Len &amp;quot; &amp;quot;] Date-Time &amp;quot; &amp;quot; [Whole-Day &amp;quot; &amp;quot;] [Next-Activity &amp;quot; &amp;quot; Next-Appointment]&lt;br /&gt;
 Activity         = &amp;quot;free&amp;quot; / &amp;quot;busy&amp;quot; / &amp;quot;away&amp;quot;&lt;br /&gt;
 Info-Len         = &amp;quot;#len:&amp;quot; DIGIT &amp;quot;:&amp;quot; DIGIT ; The first DIGIT is the number of characters (UTF-8 conform) and the second the number of bytes&lt;br /&gt;
                                              of the len of the Appointment-Info. This tag only exists if the presence starts with Appointment-Info.&lt;br /&gt;
 Date-Time        = &amp;quot;#until:&amp;quot; DIGIT; DIGIT = Date-Time in sec as 64bit value.&lt;br /&gt;
 Whole-Day        = &amp;quot;#whole-day&amp;quot; ; Only if the appointment or the following one (depending on the case) or next is a&lt;br /&gt;
                                   whole-day appointment. In that case, until should only print the date&lt;br /&gt;
 Next-Activity    = &amp;quot;#next-activity&amp;quot; Activity ; Only, if there is a next is the start of the next appointment (see above).&lt;br /&gt;
 Next-Appointment = &amp;quot;#next:&amp;quot; DIGIT &amp;quot;:&amp;quot; DIGIT &amp;quot;:&amp;quot; DIGIT &amp;quot;:&amp;quot; DIGIT ;&lt;br /&gt;
                                      Where the first DIGIT is the position of the next activities Appointment-Info inside the presence&lt;br /&gt;
                                      string and the second DIGIT the Appointment-Info length. Those values are given in number of charactes (UTF-8 conform).&lt;br /&gt;
                                      The third DIGIT has the same meaning as the first, so that it is given in number of bytes, while the last DIGIT&lt;br /&gt;
                                      has the meaning of the second one, but also in bytes.&lt;br /&gt;
&lt;br /&gt;
=== Additional Notes ===&lt;br /&gt;
&lt;br /&gt;
* The presence starts with &amp;quot;Free until&amp;quot;, if there is an upcoming appointment.&lt;br /&gt;
* If the presence starts with Appointment-Info, Date-Time will be the end of that appointment or the start of the next appointment, if the next appointment starts at or before the current one ends.&lt;br /&gt;
* Date-Time will be time-only, if the is the same day as when the precense text will be build, date only, if the appointment (or Next-Appointmant in case that next is a appointment start) is a whole-day appointment.&lt;br /&gt;
* Next-Appointment only will be written, if the presence won&#039;t start with an Appointment-Info.&lt;br /&gt;
&lt;br /&gt;
=== Example presence strings ===&lt;br /&gt;
  Free&lt;br /&gt;
  Free until 10:30 (Busy: Meeting with Caption Sparrow) #free #until:12345 #next-activity:busy #next:24:28:48:28&lt;br /&gt;
  Meeting with Caption Sparrow until 12:30 #busy #len:28:28 #until:12345&lt;br /&gt;
  Free until 24.12.2017 (Busy: Christmas) #free #until:54321 #whole-day #next-activity:busy #next:29:9:29:2&lt;br /&gt;
  Christmas until 27.12.2017 #busy #len:9 #until:42424242 #whole-day&lt;br /&gt;
  Sleeping until 22.08.2017 07:00 #away #len:8  #until:3333333&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference13r3:Concept_App_Service_Calendar&amp;diff=62182</id>
		<title>Reference13r3:Concept App Service Calendar</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference13r3:Concept_App_Service_Calendar&amp;diff=62182"/>
		<updated>2022-05-24T08:17:06Z</updated>

		<summary type="html">&lt;p&gt;Msm: New page: Apps  The App Service Calendar is an App Service which can be installed on an innovaphone App Platform. It is used to synchronize the exchange calendar of the users th...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|Apps]]&lt;br /&gt;
&lt;br /&gt;
The App Service Calendar is an App Service which can be installed on an innovaphone App Platform. It is used to synchronize the exchange calendar of the users that have been added to the PBX. For now, the synchronized appointments will be used to update the presence of the users. Doing this, the calendar replaces the previous exchange connector.&lt;br /&gt;
&lt;br /&gt;
== Applies To == &lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX from version 13r1&lt;br /&gt;
&lt;br /&gt;
== Apps ==&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-calender ===&lt;br /&gt;
Runs as a service without UI. Handles the synchronization of the Exchange calendar as well as the update of the users presence.&lt;br /&gt;
&lt;br /&gt;
=== innovaphone-calender-admin ===&lt;br /&gt;
(Still experimental) Gives some administrative options and can be used to get the current status.&lt;br /&gt;
&lt;br /&gt;
== PBX Manager Plugins ==&lt;br /&gt;
With the calendar plugin, apps can be created and deleted. Also the calendar can be configured.&lt;br /&gt;
&lt;br /&gt;
== Concepts ==&lt;br /&gt;
The calendar will get a list of all users available in the PBX. This list will be used to figure out the users available in Exchange (which means, that a user, that isn&#039;t available in PBX won&#039;t be synchronized by the calendar). Finally, all appointments of the users Exchange calendar will be synchronized to the calendars database and used to update the users presence. The calendar also registeres himself to Exchange to get notified about changes in a users calendar.&lt;br /&gt;
&lt;br /&gt;
=== Synchronization ===&lt;br /&gt;
The way how the calendar receives the data from Exchange in 13r1 had been changed compared to the Exchange Sync Connector of previous version. The calendar now synchronizes all appointments for all users with it&#039;s own database. To activate the synchronization, use the PBX manager to edit the settings for the calendar. There, only the email address and the password for the impersonation user must be given. Exchange 2010 or newer is supported. This includes Exchange 365. Please note that not all Office 365 plans offers access to an Exchange 365 server - but an Exchange server is obligatory. An Office 365 plan without Exchange 365 won&#039;t work. More information can be found at [http://www.office.com Microsoft Office365 homepage].&lt;br /&gt;
&lt;br /&gt;
=== Communication with Exchange ===&lt;br /&gt;
The calendar uses a standard HTTP or HTTPS connection to communicate with Exchange. There is no additional port setup necessary like it was with the old Exchange Sync Connector. Two HTTP(S) connections will be used to communicate with the Exchange. The first is for requesting appointment data and only will be active during data exchange. The other will be used to have some kind of open streaming connection to get informed about changes on Exchange side. This is a non-stop connection (well, actually it will be reestablished each 30 minutes). If HTTP or HTTPS will be used depends on the Exchange configuration. However, HTTPS is highly recommended.&lt;br /&gt;
&lt;br /&gt;
=== PBX Settings ===&lt;br /&gt;
The calender will replicate the users of the PBX to check if they can be synchronized with Exchange. Because there can be multiple PBX available, the calendar will only accept one. This one must be set in the calendar settings of the PBX manger by giving the name of the master PBX (Only the PBX Name, not the full DNS Name). Note that &amp;quot;master&amp;quot; don&#039;t mean that only a master PBX will be accepted. Also the name of a slave PBX can be entered. Master in that case means, that this will be the master for the calendar, the only PBX the calendar accepts a connection from.&lt;br /&gt;
&lt;br /&gt;
=== Impersonation user ===&lt;br /&gt;
To synchronize all appointments from all users with Exchange, an Exchange user must exist with the Application Impersonation right. Impersonation means, that this user communicates with Exchange in the name of another user. So the calendar uses that user to synchronize every other user reported from the PBX and with an available mailbox in Exchange. Be aware of who has access to the impersonation users mail address and password, because that user has all rights to read, modify and add appointments, emails, tasks, etc. in Exchange for every other user. The calendar itself must save the password, but it will be stored in encrypted form to the database. For more information about impersonation user, ask your Exchange administrator. An example how to add this right to an existing user can be found here: [https://www.techieshelp.com/exchange-2013-configuring-impersonation-applications/ Exchange 2013 and 2016 Configuring Impersonation For Applications]. For other version of Exchange, please look to the proper documentation offered by Microsoft (or ask google).&lt;br /&gt;
&lt;br /&gt;
=== Autodiscover ===&lt;br /&gt;
The calendar uses autodiscover to get the Exchange Server version used as well as the address to use for synchronizing (which is done using the Exchange Web Services). Because of this, the impersonation user must have a valid mailbox, or autodiscover for that user will fail and the calendar won&#039;t be able to get the required information. It could be that Autodiscover it must be activated first. The Calendar searches for the server by taking the domain name of the given user (because of this, the complete email adress of the user must be given) and combinig it with autodiscover related URIs. The calendar then will test it at first with HTTPS and after that with HTTP. For example, if the email adress of the impersonation user is &amp;quot;myuser@example.com&amp;quot;, the calendar will look for the autodiscover server at &amp;quot;https://autodiscover.example.com&amp;quot;, &amp;quot;https://example.com&amp;quot;, &amp;quot;http://autodiscover.example.com&amp;quot; and finally &amp;quot;http://example.com&amp;quot;. Generally, one of the points will send a redirect request which will lead to the correct autodiscover URL, which will be used by the calendar. If there is no redirect and none of the URLs tested will work, autodiscover failed. You can get more information about autodiscover from the [https://docs.microsoft.com/en-us/exchange/architecture/client-access/autodiscover?view=exchserver-2019 Microsoft homepage] (even if it is for the latestes Exchange version, it is nearly the same for older ones), or your Exchange Administrator.&lt;br /&gt;
&lt;br /&gt;
You can test your autodiscover [https://testconnectivity.microsoft.com here].&lt;br /&gt;
&lt;br /&gt;
=== Users and primary SMTP address ===&lt;br /&gt;
The calendar will get a list of users available in the PBX. After that, he tries to resolve the primary SMTP address for each user. This must be done to be able to synchronize the user. So make sure that the email information given to the users object in the PBX contains at least one address that also exists in Exchange, or the resolving will fail. Note that multiple addresses can given to the users object seperated by semicolon.&lt;br /&gt;
&lt;br /&gt;
== Presence ==&lt;br /&gt;
The calendar will create a presence string for the appointments and send it to the PBX. The language and timezone of that presence can be defined in the calendar settings. However, the string also contains some information seperated by hashtags a client can use to rebuild the presence string for its own language and timezone settings (like it will be done by the innovaphone devices). Note that the appointment title itself won&#039;t be translated!&lt;br /&gt;
&lt;br /&gt;
=== Presence string format ===&lt;br /&gt;
The format of the presence string created by the calendar. This description is for developer that whant to implement the display of the current presence in an own client and maybe adjust the values for a special timezone or date-time format. The format string the calendar will send canot be changed (except for language releated values that will depend on the &amp;quot;default presence language&amp;quot; and &amp;quot;default presence timezone&amp;quot; settings):&lt;br /&gt;
&lt;br /&gt;
 Presence         = &amp;quot;Free&amp;quot; / &amp;quot;Free until &amp;quot; Date-Time Next-Appointment / Appointment-Info &amp;quot;until &amp;quot; Date-Time [Next-Appointment]&lt;br /&gt;
 Date-Time        = [Date] [Time] ; Must be at least one of them&lt;br /&gt;
 Date             = Day (&amp;quot;.&amp;quot; / &amp;quot;/&amp;quot;) Month (&amp;quot;.&amp;quot; / &amp;quot;/&amp;quot;) Year ; Real format depends on localization settings&lt;br /&gt;
 Day              = 2DIGIT ; 01-31&lt;br /&gt;
 Month            = 2DIGIT ; 01-12&lt;br /&gt;
 Year             = 4DIGIT ; e. g. 2017&lt;br /&gt;
 Time             = Hour &amp;quot;:&amp;quot; Minute [&amp;quot;a.m.&amp;quot; / &amp;quot;p.m.&amp;quot;] ; Real format depends on localization settings&lt;br /&gt;
 Hour             = 2DIGIT ; 01-12 or 00-23&lt;br /&gt;
 Minute           = 2DIGIT&lt;br /&gt;
 Next-Appointment = &amp;quot;(&amp;quot; [&amp;quot;Busy: &amp;quot; / &amp;quot;Away: &amp;quot;] Appointment-Info &amp;quot;)&amp;quot;&lt;br /&gt;
 Appointment-Info = Title | &amp;quot;Private&amp;quot; ;&lt;br /&gt;
 Title            = ; Well - any string in UTF8 Format that can include what ever you whant...&lt;br /&gt;
&lt;br /&gt;
After the presence string, a couple of hash-tags will be added (if Presence is not only &amp;quot;Free&amp;quot;). This tags will&lt;br /&gt;
be sent so that a client can re-build with the cleint&#039;s localization settings. The tags will be added with the&lt;br /&gt;
following rules (note that the order of the tags is not variable):&lt;br /&gt;
&lt;br /&gt;
 Tags             = &amp;quot;&amp;quot; / &amp;quot;#&amp;quot; Activity &amp;quot; &amp;quot; [Info-Len &amp;quot; &amp;quot;] Date-Time &amp;quot; &amp;quot; [Whole-Day &amp;quot; &amp;quot;] [Next-Activity &amp;quot; &amp;quot; Next-Appointment]&lt;br /&gt;
 Activity         = &amp;quot;free&amp;quot; / &amp;quot;busy&amp;quot; / &amp;quot;away&amp;quot;&lt;br /&gt;
 Info-Len         = &amp;quot;#len:&amp;quot; DIGIT &amp;quot;:&amp;quot; DIGIT ; The first DIGIT is the number of characters (UTF-8 conform) and the second the number of bytes&lt;br /&gt;
                                              of the len of the Appointment-Info. This tag only exists if the presence starts with Appointment-Info.&lt;br /&gt;
 Date-Time        = &amp;quot;#until:&amp;quot; DIGIT; DIGIT = Date-Time in sec as 64bit value.&lt;br /&gt;
 Whole-Day        = &amp;quot;#whole-day&amp;quot; ; Only if the appointment or the following one (depending on the case) or next is a&lt;br /&gt;
                                   whole-day appointment. In that case, until should only print the date&lt;br /&gt;
 Next-Activity    = &amp;quot;#next-activity&amp;quot; Activity ; Only, if there is a next is the start of the next appointment (see above).&lt;br /&gt;
 Next-Appointment = &amp;quot;#next:&amp;quot; DIGIT &amp;quot;:&amp;quot; DIGIT &amp;quot;:&amp;quot; DIGIT &amp;quot;:&amp;quot; DIGIT ;&lt;br /&gt;
                                      Where the first DIGIT is the position of the next activities Appointment-Info inside the presence&lt;br /&gt;
                                      string and the second DIGIT the Appointment-Info length. Those values are given in number of charactes (UTF-8 conform).&lt;br /&gt;
                                      The third DIGIT has the same meaning as the first, so that it is given in number of bytes, while the last DIGIT&lt;br /&gt;
                                      has the meaning of the second one, but also in bytes.&lt;br /&gt;
&lt;br /&gt;
=== Additional Notes ===&lt;br /&gt;
&lt;br /&gt;
* The presence starts with &amp;quot;Free until&amp;quot;, if there is an upcoming appointment.&lt;br /&gt;
* If the presence starts with Appointment-Info, Date-Time will be the end of that appointment or the start of the next appointment, if the next appointment starts at or before the current one ends.&lt;br /&gt;
* Date-Time will be time-only, if the is the same day as when the precense text will be build, date only, if the appointment (or Next-Appointmant in case that next is a appointment start) is a whole-day appointment.&lt;br /&gt;
* Next-Appointment only will be written, if the presence won&#039;t start with an Appointment-Info.&lt;br /&gt;
&lt;br /&gt;
=== Example presence strings ===&lt;br /&gt;
  Free&lt;br /&gt;
  Free until 10:30 (Busy: Meeting with Caption Sparrow) #free #until:12345 #next-activity:busy #next:24:28:48:28&lt;br /&gt;
  Meeting with Caption Sparrow until 12:30 #busy #len:28:28 #until:12345&lt;br /&gt;
  Free until 24.12.2017 (Busy: Christmas) #free #until:54321 #whole-day #next-activity:busy #next:29:9:29:2&lt;br /&gt;
  Christmas until 27.12.2017 #busy #len:9 #until:42424242 #whole-day&lt;br /&gt;
  Sleeping until 22.08.2017 07:00 #away #len:8  #until:3333333&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
</feed>