<?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-05-05T16:06:08Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<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>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference13r3:Apps/PbxManager/App_Calendar&amp;diff=62181</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=62181"/>
		<updated>2022-05-24T08:15:32Z</updated>

		<summary type="html">&lt;p&gt;Msm: New page: The PBX Manager Plugin for the Calendar App allows you to create to kinds of app objects. One is the Calendar Admin, which is just a simple overview of what&amp;#039;s going in. The other is the Ca...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The PBX Manager Plugin for the Calendar App allows you to create to 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;
&lt;br /&gt;
=== Exchange Sync ===&lt;br /&gt;
*&amp;lt;b&amp;gt;Sync-Type:&amp;lt;/b&amp;gt; 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;
*&amp;lt;b&amp;gt;User:&amp;lt;/b&amp;gt; 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;
*&amp;lt;b&amp;gt;Password:&amp;lt;/b&amp;gt; (Only available when Sync-Type is On-Premises) The password to use for the connection to Exchange.&lt;br /&gt;
*&amp;lt;b&amp;gt;Autodiscover Server URL:&amp;lt;/b&amp;gt; The URL of the Exchange Autodiscover server. For more information, see the section autodiscover below. This value is optional.&lt;br /&gt;
*&amp;lt;b&amp;gt;Exchange-Server to use:&amp;lt;/b&amp;gt; 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;
&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;Tentative:&amp;lt;/b&amp;gt; Mapping of appointments that are set to tentative in Exchange.&lt;br /&gt;
* &amp;lt;b&amp;gt;Tentative exceptions:&amp;lt;/b&amp;gt; Mapping of appointments that are set to tentative in Exchange created by the user defined in the tentative exceptions organizer field.&lt;br /&gt;
* &amp;lt;b&amp;gt;Out of office:&amp;lt;/b&amp;gt; Mapping of appointments that are set to out of office in Exchange.&lt;br /&gt;
* &amp;lt;b&amp;gt;Working elswhere:&amp;lt;/b&amp;gt; Mapping of appointments that are set to working elsewhere 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 realy up to 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=Reference13r2:Apps/PbxManager/App_Calendar&amp;diff=62020</id>
		<title>Reference13r2:Apps/PbxManager/App Calendar</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference13r2:Apps/PbxManager/App_Calendar&amp;diff=62020"/>
		<updated>2022-05-13T16:34:55Z</updated>

		<summary type="html">&lt;p&gt;Msm: /* PBX &amp;amp; Presence */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The PBX Manager Plugin for the Calendar App allows you to create to 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;Tentative exceptions:&amp;lt;/b&amp;gt; Generally, tentative appointments are not used for presence updating. However, an email address for the organizer / creator of a tentative appointment can be specified here. If the Calendar finds such an appointment and the email of the organizer corresponds to the one specified here, the respective appointment will be used for the presence. This can be used, for example, to enter an absence date for a specific user in case of illness. This entry is optional.&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;
&lt;br /&gt;
=== Exchange Sync ===&lt;br /&gt;
*&amp;lt;b&amp;gt;Sync-Type:&amp;lt;/b&amp;gt; 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;
*&amp;lt;b&amp;gt;User:&amp;lt;/b&amp;gt; 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;
*&amp;lt;b&amp;gt;Password:&amp;lt;/b&amp;gt; (Only available when Sync-Type is On-Premises) The password to use for the connection to Exchange.&lt;br /&gt;
*&amp;lt;b&amp;gt;Autodiscover Server URL:&amp;lt;/b&amp;gt; The URL of the Exchange Autodiscover server. For more information, see the section autodiscover below. This value is optional.&lt;br /&gt;
*&amp;lt;b&amp;gt;Exchange-Server to use:&amp;lt;/b&amp;gt; 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;
&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;
== 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=Reference13r2:Apps/PbxManager/App_Calendar&amp;diff=62019</id>
		<title>Reference13r2:Apps/PbxManager/App Calendar</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference13r2:Apps/PbxManager/App_Calendar&amp;diff=62019"/>
		<updated>2022-05-13T16:31:57Z</updated>

		<summary type="html">&lt;p&gt;Msm: /* Exchange Sync for Exchange 365 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The PBX Manager Plugin for the Calendar App allows you to create to 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;
&lt;br /&gt;
=== Exchange Sync ===&lt;br /&gt;
*&amp;lt;b&amp;gt;Sync-Type:&amp;lt;/b&amp;gt; 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;
*&amp;lt;b&amp;gt;User:&amp;lt;/b&amp;gt; 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;
*&amp;lt;b&amp;gt;Password:&amp;lt;/b&amp;gt; (Only available when Sync-Type is On-Premises) The password to use for the connection to Exchange.&lt;br /&gt;
*&amp;lt;b&amp;gt;Autodiscover Server URL:&amp;lt;/b&amp;gt; The URL of the Exchange Autodiscover server. For more information, see the section autodiscover below. This value is optional.&lt;br /&gt;
*&amp;lt;b&amp;gt;Exchange-Server to use:&amp;lt;/b&amp;gt; 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;
&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;
== 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=Reference13r2:Apps/PbxManager/App_Calendar&amp;diff=62018</id>
		<title>Reference13r2:Apps/PbxManager/App Calendar</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference13r2:Apps/PbxManager/App_Calendar&amp;diff=62018"/>
		<updated>2022-05-13T16:31:31Z</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 to 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;
&lt;br /&gt;
=== Exchange Sync ===&lt;br /&gt;
*&amp;lt;b&amp;gt;Sync-Type:&amp;lt;/b&amp;gt; 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;
*&amp;lt;b&amp;gt;User:&amp;lt;/b&amp;gt; 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;
*&amp;lt;b&amp;gt;Password:&amp;lt;/b&amp;gt; (Only available when Sync-Type is On-Premises) The password to use for the connection to Exchange.&lt;br /&gt;
*&amp;lt;b&amp;gt;Autodiscover Server URL:&amp;lt;/b&amp;gt; The URL of the Exchange Autodiscover server. For more information, see the section autodiscover below. This value is optional.&lt;br /&gt;
*&amp;lt;b&amp;gt;Exchange-Server to use:&amp;lt;/b&amp;gt; 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;
&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;
&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=Reference13r2:Apps/PbxManager/App_Calendar&amp;diff=62017</id>
		<title>Reference13r2:Apps/PbxManager/App Calendar</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference13r2:Apps/PbxManager/App_Calendar&amp;diff=62017"/>
		<updated>2022-05-13T16:30:45Z</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 to 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;
&lt;br /&gt;
=== Exchange Sync ===&lt;br /&gt;
*&amp;lt;b&amp;gt;Sync-Type:&amp;lt;/b&amp;gt; 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;
*&amp;lt;b&amp;gt;User:&amp;lt;/b&amp;gt; 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;
*&amp;lt;b&amp;gt;Password:&amp;lt;/b&amp;gt; (Only available when Sync-Type is On-Premises) The password to use for the connection to Exchange.&lt;br /&gt;
*&amp;lt;b&amp;gt;Autodiscover Server URL:&amp;lt;/b&amp;gt; The URL of the Exchange Autodiscover server. For more information, see the section autodiscover below. This value is optional.&lt;br /&gt;
*&amp;lt;b&amp;gt;Exchange-Server to use:&amp;lt;/b&amp;gt; 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;
&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;Tentative:&amp;lt;/b&amp;gt; Mapping of appointments that are set to tentative in Exchange.&lt;br /&gt;
* &amp;lt;b&amp;gt;Tentative exceptions:&amp;lt;/b&amp;gt; Mapping of appointments that are set to tentative in Exchange created by the user defined in the tentative exceptions organizer field.&lt;br /&gt;
* &amp;lt;b&amp;gt;Out of office:&amp;lt;/b&amp;gt; Mapping of appointments that are set to out of office in Exchange.&lt;br /&gt;
* &amp;lt;b&amp;gt;Working elswhere:&amp;lt;/b&amp;gt; Mapping of appointments that are set to working elsewhere 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 realy up to 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=Reference13r2:Apps/PbxManager/App_Calendar&amp;diff=62015</id>
		<title>Reference13r2:Apps/PbxManager/App Calendar</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference13r2:Apps/PbxManager/App_Calendar&amp;diff=62015"/>
		<updated>2022-05-13T16:07:35Z</updated>

		<summary type="html">&lt;p&gt;Msm: /* Exchange Sync for Exchange 365 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The PBX Manager Plugin for the Calendar App allows you to create to 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;
&lt;br /&gt;
=== Exchange Sync ===&lt;br /&gt;
*&amp;lt;b&amp;gt;Sync-Type:&amp;lt;/b&amp;gt; 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;
*&amp;lt;b&amp;gt;User:&amp;lt;/b&amp;gt; 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;
*&amp;lt;b&amp;gt;Password:&amp;lt;/b&amp;gt; (Only available when Sync-Type is On-Premises) The password to use for the connection to Exchange.&lt;br /&gt;
*&amp;lt;b&amp;gt;Autodiscover Server URL:&amp;lt;/b&amp;gt; The URL of the Exchange Autodiscover server. For more information, see the section autodiscover below. This value is optional.&lt;br /&gt;
*&amp;lt;b&amp;gt;Exchange-Server to use:&amp;lt;/b&amp;gt; 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;
&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;
&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=Reference13r2:Apps/PbxManager/App_Calendar&amp;diff=62014</id>
		<title>Reference13r2:Apps/PbxManager/App Calendar</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference13r2:Apps/PbxManager/App_Calendar&amp;diff=62014"/>
		<updated>2022-05-13T16:07:16Z</updated>

		<summary type="html">&lt;p&gt;Msm: /* PBX &amp;amp; Presence */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The PBX Manager Plugin for the Calendar App allows you to create to 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;
&lt;br /&gt;
=== Exchange Sync ===&lt;br /&gt;
*&amp;lt;b&amp;gt;Sync-Type:&amp;lt;/b&amp;gt; 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;
*&amp;lt;b&amp;gt;User:&amp;lt;/b&amp;gt; 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;
*&amp;lt;b&amp;gt;Password:&amp;lt;/b&amp;gt; (Only available when Sync-Type is On-Premises) The password to use for the connection to Exchange.&lt;br /&gt;
*&amp;lt;b&amp;gt;Autodiscover Server URL:&amp;lt;/b&amp;gt; The URL of the Exchange Autodiscover server. For more information, see the section autodiscover below. This value is optional.&lt;br /&gt;
*&amp;lt;b&amp;gt;Exchange-Server to use:&amp;lt;/b&amp;gt; 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;
&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;
== 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=Howto13r2:Setting_up_Calendar_with_OAuth2&amp;diff=60335</id>
		<title>Howto13r2:Setting up Calendar with OAuth2</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto13r2:Setting_up_Calendar_with_OAuth2&amp;diff=60335"/>
		<updated>2021-10-20T16:06:49Z</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 OAut2 =&lt;br /&gt;
This tutorial shows you, how to setup an Azure Active Directory App to let the calendar work with Microsoft 365 and OAuth2. 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. It is expected, that you have an Exchange user with the Application Impersonation right. More information about how to assign this role to a user can be find in 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 August 2021. 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;
== Preparation ==&lt;br /&gt;
During the creation of an app, you need some information provided by the configuration of the Calendar and also add some information given by Azure. Because of that it is recommended to open the PBX Manager / AP Calendar in myApps (click on Configure and select “Cloud (Exchange Online)” as Sync Type) and the Azure Portal in your browser at the same time. You also have to login to the Azure Portal with an admin user to be able to add an application registration as well as to configure it.&lt;br /&gt;
&lt;br /&gt;
If you get stuck or you need additional information, or if you are unsure if the way describe here is the best solution for your company, be free to use all the documentation and help links Microsoft provides in the Azure portal.&lt;br /&gt;
&lt;br /&gt;
= Registering the Calendar app to the Azure Active Directory =&lt;br /&gt;
== Open the Azure Portal Active Directory ==&lt;br /&gt;
[[Image:AD_SelAD.png|thumb|upright=5.0|right|Azure Portal]]&lt;br /&gt;
[[Image:AD_Overview.png|thumb|Azure Active Directory Overview]]&lt;br /&gt;
* Go to the Azure Portal homepage and sign in with your admin user ([https://portal.azure.com portal.azure.com])&lt;br /&gt;
** Select “Manage Azure Active Directory” or click on one of the “Azure Active Directory” links.&lt;br /&gt;
** You will be redirected to the Azure Active Directory Overview&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Add a new App registration ==&lt;br /&gt;
[[Image:AD_CreateAppRegistration.png|thumb|Add new app registration]]&lt;br /&gt;
[[Image:AD_RegisteredAppOverview.png|thumb|Registered app overview]]&lt;br /&gt;
* Create an app registration&lt;br /&gt;
** Click on “+ Add” and select “App registration” (alternatively click on “App Registration” on the side bar and add an App registration by clicking on “New registration”)&lt;br /&gt;
** Set a name for the registration (e. G. innovaphone Calendar)&lt;br /&gt;
** Select the supported account type (see note below).&lt;br /&gt;
** Select &amp;quot;Web&amp;quot; in the dropdown list under &amp;quot;Redirect URI&amp;quot; (just enter the URI that you can find in the &amp;quot;Redirect URI&amp;quot; field of the PBX Manager / Calendar configuration).&lt;br /&gt;
** Click &amp;quot;Register&amp;quot; to save the App Registration. On success, you should see the overview page for the registered app.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The account type should be either “Accounts in this organizational directory only (YourCompanyName only - Single tenant)” (which is recommended) or “Accounts in any organizational directory (YourCompanyName - Multitenant)”. If you go with the single tenant, you have to select “My organization only” in as “Selected account types” for the Calendar configuration. If you select multitenant, “Multiple organizations” have to be configured.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&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 client secret ==&lt;br /&gt;
[[Image:AD_CreateClientSecret2.png|thumb|Create client secret]]&lt;br /&gt;
[[Image:AD_CreateClientSecretDone.png|thumb|Client secret list]]&lt;br /&gt;
* Click on “Certificates &amp;amp; Secrets” in the list on the left&lt;br /&gt;
** Then click on “New client secret” under the “Client secrets” section&lt;br /&gt;
** Define an expiration date (the client secret itself will be randomly created)&lt;br /&gt;
** Optional: add a description&lt;br /&gt;
** Click on &amp;quot;Add&amp;quot; - the secret should be visible in the list&lt;br /&gt;
** Copy the value (click in the icon beside the value) and insert it to the &amp;quot;Client secret&amp;quot; field in the Calendar configuration&lt;br /&gt;
&lt;br /&gt;
Note: after a couple of minutes, the Value of the client secret will be grayed out by Azure and you can’t copy it anymore. If that happens, just delete the old, create a new one and copy the value.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&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;
== Configure the first permissions - the manifest ==&lt;br /&gt;
[[Image:AD_Manifest2.png|thumb|Manifest file]]&lt;br /&gt;
* Click on “Manifest” in the sidebar&lt;br /&gt;
** Scroll down the Manifest-File until you see the “requiredResourceAccess” property&lt;br /&gt;
** Add the data block from box below (including the &#039;,&#039;)&lt;br /&gt;
** Click on save - the manifest should similar to the one in the screenshot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; If you want, you can replace the existing part with in the manifest with the block below (in that case without the comma after the closing ‘}’ bracket). This will remove the Users.Read right, which isn’t used anyways (but it also won’t hurt, if the right still exist).&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;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure the second permissions - Microsoft Graph ==&lt;br /&gt;
[[Image:AD_APIPermissionsList2.png|thumb|Exchange Online - Full access as app]]&lt;br /&gt;
[[Image:AD_APIPermissions_EWS.png|thumb|EWS - Access all user]]&lt;br /&gt;
&lt;br /&gt;
* Click on API permissions on the right&lt;br /&gt;
** Due the changes in the manifest an entry &amp;quot;Office 365 Exchange Online&amp;quot; with the subitem &amp;quot;full_access_as_app&amp;quot; should be visible&lt;br /&gt;
** Click on “Add a permission”.&lt;br /&gt;
** In the following dialog click on “Microsoft Graph”&lt;br /&gt;
** Click on “Delegate permissions”&lt;br /&gt;
** Type “EWS” into the search field&lt;br /&gt;
** Click on the arrow before &amp;quot;EWS&amp;quot; and select “EWS.AccessAsUser.All”&lt;br /&gt;
** Click on &amp;quot;Add permission&amp;quot;&lt;br /&gt;
** You should see &amp;quot;EWS.AccessAsUser.All&amp;quot; under the &amp;quot;Microsoft Graph&amp;quot; section of the list&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&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 permission - set rights ==&lt;br /&gt;
[[Image:AD_APIPermissionsList.png|thumb|Permissions not granted]]&lt;br /&gt;
[[Image:AD_APIPermissions_AdminCosentGranted2.png|thumb|Permissions granted]]&lt;br /&gt;
* The permissions should may have the status &amp;quot;Not granted...&amp;quot; or no status at all.&lt;br /&gt;
** Click on &amp;quot;Grant admin consent for....&amp;quot; button above the list&lt;br /&gt;
** Confirm the question shown by a message box&lt;br /&gt;
** All premissions should now have the status &amp;quot;Granted for...&amp;quot;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
The Calendar app registration is now successfully completed.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&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;
= 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;Configre&amp;quot; (if not already done)&lt;br /&gt;
** Set the fields like shown in the table below&lt;br /&gt;
** Click on &amp;quot;Authenticate&amp;quot; and follow the instructions&lt;br /&gt;
** On success, the Calendar OAuth2 configuration is completed&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)&lt;br /&gt;
|-&lt;br /&gt;
|User:&lt;br /&gt;
|The user with the Application Impersonation right in Exchange&lt;br /&gt;
|-&lt;br /&gt;
|Autodiscover URL:&lt;br /&gt;
|https://autodiscover-s.outlook.com&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 you AD app registration&lt;br /&gt;
|-&lt;br /&gt;
|Supported account:&lt;br /&gt;
|“My organization only” or “Multiple organization”, depending what you configured during app registration (see above).&lt;br /&gt;
|-&lt;br /&gt;
|Redirect URI:&lt;br /&gt;
|Nothing to change here - leave it unchanged&lt;br /&gt;
|-&lt;br /&gt;
|Scopes:&lt;br /&gt;
|https://outlook.office365.com/.default&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;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;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-Your-Impersonation-User&amp;gt;?Protocol=AutodiscoverV1&lt;br /&gt;
&lt;br /&gt;
If your impersonation user has the email address impersonation@mycompany.com, the URL will be: https://outlook.office365.com/autodiscover/autodiscover.json/v1.0/impersonation@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;br /&gt;
&lt;br /&gt;
== Using On-Premises as fallback ==&lt;br /&gt;
If because of some configuration on the Exchange / Active Directory side or whatever reason the above guide won’t help, you still should be able to switch to On-Premises connection even with Exchange Online. Just configure the Calendar using the PBX Manager as follows:&lt;br /&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;
|On-Premises (local network)&lt;br /&gt;
|-&lt;br /&gt;
|User:&lt;br /&gt;
|The user with the Application Impersonation right in Exchange&lt;br /&gt;
|-&lt;br /&gt;
| Password:&lt;br /&gt;
| The password of the user&lt;br /&gt;
|-&lt;br /&gt;
|Autodiscover URL:&lt;br /&gt;
|https://autodiscover-s.outlook.com&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;
&lt;br /&gt;
&lt;br /&gt;
If the connection to the Autodiscover server failed, you can use the above way to get an alternative server and / or disable the default security settings for your AD.&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto13r2:Setting_up_Calendar_with_OAuth2&amp;diff=60334</id>
		<title>Howto13r2:Setting up Calendar with OAuth2</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto13r2:Setting_up_Calendar_with_OAuth2&amp;diff=60334"/>
		<updated>2021-10-20T16:06:35Z</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 OAut2 =&lt;br /&gt;
This tutorial shows you, how to setup an Azure Active Directory App to let the calendar work with Microsoft 365 and OAuth2. 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. It is expected, that you have an Exchange user with the Application Impersonation right. More information about how to assign this role to a user can be find in 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 August 2021. 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;
== Preparation ==&lt;br /&gt;
During the creation of an app, you need some information provided by the configuration of the Calendar and also add some information given by Azure. Because of that it is recommended to open the PBX Manager / AP Calendar in myApps (click on Configure and select “Cloud (Exchange Online)” as Sync Type) and the Azure Portal in your browser at the same time. You also have to login to the Azure Portal with an admin user to be able to add an application registration as well as to configure it.&lt;br /&gt;
&lt;br /&gt;
If you get stuck or you need additional information, or if you are unsure if the way describe here is the best solution for your company, be free to use all the documentation and help links Microsoft provides in the Azure portal.&lt;br /&gt;
&lt;br /&gt;
= Registering the Calendar app to the Azure Active Directory =&lt;br /&gt;
== Open the Azure Portal Active Directory ==&lt;br /&gt;
[[Image:AD_SelAD.png|thumb|upright=5.0|right|Azure Portal]]&lt;br /&gt;
[[Image:AD_Overview.png|thumb|Azure Active Directory Overview]]&lt;br /&gt;
* Go to the Azure Portal homepage and sign in with your admin user ([https://portal.azure.com portal.azure.com])&lt;br /&gt;
** Select “Manage Azure Active Directory” or click on one of the “Azure Active Directory” links.&lt;br /&gt;
** You will be redirected to the Azure Active Directory Overview&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Add a new App registration ==&lt;br /&gt;
[[Image:AD_CreateAppRegistration.png|thumb|Add new app registration]]&lt;br /&gt;
[[Image:AD_RegisteredAppOverview.png|thumb|Registered app overview]]&lt;br /&gt;
* Create an app registration&lt;br /&gt;
** Click on “+ Add” and select “App registration” (alternatively click on “App Registration” on the side bar and add an App registration by clicking on “New registration”)&lt;br /&gt;
** Set a name for the registration (e. G. innovaphone Calendar)&lt;br /&gt;
** Select the supported account type (see note below).&lt;br /&gt;
** Select &amp;quot;Web&amp;quot; in the dropdown list under &amp;quot;Redirect URI&amp;quot; (just enter the URI that you can find in the &amp;quot;Redirect URI&amp;quot; field of the PBX Manager / Calendar configuration).&lt;br /&gt;
** Click &amp;quot;Register&amp;quot; to save the App Registration. On success, you should see the overview page for the registered app.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The account type should be either “Accounts in this organizational directory only (YourCompanyName only - Single tenant)” (which is recommended) or “Accounts in any organizational directory (YourCompanyName - Multitenant)”. If you go with the single tenant, you have to select “My organization only” in as “Selected account types” for the Calendar configuration. If you select multitenant, “Multiple organizations” have to be configured.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&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 client secret ==&lt;br /&gt;
[[Image:AD_CreateClientSecret2.png|thumb|Create client secret]]&lt;br /&gt;
[[Image:AD_CreateClientSecretDone.png|thumb|Client secret list]]&lt;br /&gt;
* Click on “Certificates &amp;amp; Secrets” in the list on the left&lt;br /&gt;
** Then click on “New client secret” under the “Client secrets” section&lt;br /&gt;
** Define an expiration date (the client secret itself will be randomly created)&lt;br /&gt;
** Optional: add a description&lt;br /&gt;
** Click on &amp;quot;Add&amp;quot; - the secret should be visible in the list&lt;br /&gt;
** Copy the value (click in the icon beside the value) and insert it to the &amp;quot;Client secret&amp;quot; field in the Calendar configuration&lt;br /&gt;
&lt;br /&gt;
Note: after a couple of minutes, the Value of the client secret will be grayed out by Azure and you can’t copy it anymore. If that happens, just delete the old, create a new one and copy the value.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&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;
== Configure the first permissions - the manifest ==&lt;br /&gt;
[[Image:AD_Manifest2.png|thumb|Manifest file]]&lt;br /&gt;
* Click on “Manifest” in the sidebar&lt;br /&gt;
** Scroll down the Manifest-File until you see the “requiredResourceAccess” property&lt;br /&gt;
** Add the data block from box below (including the &#039;,&#039;)&lt;br /&gt;
** Click on save - the manifest should similar to the one in the screenshot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; If you want, you can replace the existing part with in the manifest with the block below (in that case without the comma after the closing ‘}’ bracket). This will remove the Users.Read right, which isn’t used anyways (but it also won’t hurt, if the right still exist).&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;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure the second permissions - Microsoft Graph ==&lt;br /&gt;
[[Image:AD_APIPermissionsList2.png|thumb|Exchange Online - Full access as app]]&lt;br /&gt;
[[Image:AD_APIPermissions_EWS.png|thumb|EWS - Access all user]]&lt;br /&gt;
&lt;br /&gt;
* Click on API permissions on the right&lt;br /&gt;
** Due the changes in the manifest an entry &amp;quot;Office 365 Exchange Online&amp;quot; with the subitem &amp;quot;full_access_as_app&amp;quot; should be visible&lt;br /&gt;
** Click on “Add a permission”.&lt;br /&gt;
** In the following dialog click on “Microsoft Graph”&lt;br /&gt;
** Click on “Delegate permissions”&lt;br /&gt;
** Type “EWS” into the search field&lt;br /&gt;
** Click on the arrow before &amp;quot;EWS&amp;quot; and select “EWS.AccessAsUser.All”&lt;br /&gt;
** Click on &amp;quot;Add permission&amp;quot;&lt;br /&gt;
** You should see &amp;quot;EWS.AccessAsUser.All&amp;quot; under the &amp;quot;Microsoft Graph&amp;quot; section of the list&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&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 permission - set rights ==&lt;br /&gt;
[[Image:AD_APIPermissionsList.png|thumb|Permissions not granted]]&lt;br /&gt;
[[Image:AD_APIPermissions_AdminCosentGranted2.png|thumb|Permissions granted]]&lt;br /&gt;
* The permissions should may have the status &amp;quot;Not granted...&amp;quot; or no status at all.&lt;br /&gt;
** Click on &amp;quot;Grant admin consent for....&amp;quot; button above the list&lt;br /&gt;
** Confirm the question shown by a message box&lt;br /&gt;
** All premissions should now have the status &amp;quot;Granted for...&amp;quot;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
The Calendar app registration is now successfully completed.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&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;
= 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;Configre&amp;quot; (if not already done)&lt;br /&gt;
** Set the fields like shown in the table below&lt;br /&gt;
** Click on &amp;quot;Authenticate&amp;quot; and follow the instructions&lt;br /&gt;
** On success, the Calendar OAuth2 configuration is completed&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)&lt;br /&gt;
|-&lt;br /&gt;
|User:&lt;br /&gt;
|The user with the Application Impersonation right in Exchange&lt;br /&gt;
|-&lt;br /&gt;
|Autodiscover URL:&lt;br /&gt;
|https://autodiscover-s.outlook.com&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 you AD app registration&lt;br /&gt;
|-&lt;br /&gt;
|Supported account:&lt;br /&gt;
|“My organization only” or “Multiple organization”, depending what you configured during app registration (see above).&lt;br /&gt;
|-&lt;br /&gt;
|Redirect URI:&lt;br /&gt;
|Nothing to change here - leave it unchanged&lt;br /&gt;
|-&lt;br /&gt;
|Scopes:&lt;br /&gt;
|https://outlook.office365.com/.default&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;
&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-Your-Impersonation-User&amp;gt;?Protocol=AutodiscoverV1&lt;br /&gt;
&lt;br /&gt;
If your impersonation user has the email address impersonation@mycompany.com, the URL will be: https://outlook.office365.com/autodiscover/autodiscover.json/v1.0/impersonation@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;br /&gt;
&lt;br /&gt;
== Using On-Premises as fallback ==&lt;br /&gt;
If because of some configuration on the Exchange / Active Directory side or whatever reason the above guide won’t help, you still should be able to switch to On-Premises connection even with Exchange Online. Just configure the Calendar using the PBX Manager as follows:&lt;br /&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;
|On-Premises (local network)&lt;br /&gt;
|-&lt;br /&gt;
|User:&lt;br /&gt;
|The user with the Application Impersonation right in Exchange&lt;br /&gt;
|-&lt;br /&gt;
| Password:&lt;br /&gt;
| The password of the user&lt;br /&gt;
|-&lt;br /&gt;
|Autodiscover URL:&lt;br /&gt;
|https://autodiscover-s.outlook.com&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;
&lt;br /&gt;
&lt;br /&gt;
If the connection to the Autodiscover server failed, you can use the above way to get an alternative server and / or disable the default security settings for your AD.&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto13r2:Setting_up_Calendar_with_OAuth2&amp;diff=60333</id>
		<title>Howto13r2:Setting up Calendar with OAuth2</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto13r2:Setting_up_Calendar_with_OAuth2&amp;diff=60333"/>
		<updated>2021-10-20T16:03:25Z</updated>

		<summary type="html">&lt;p&gt;Msm: /* Configure permission - set rights */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= How-to setup the Calendar for OAut2 =&lt;br /&gt;
This tutorial shows you, how to setup an Azure Active Directory App to let the calendar work with Microsoft 365 and OAuth2. 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. It is expected, that you have an Exchange user with the Application Impersonation right. More information about how to assign this role to a user can be find in 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 August 2021. 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;
== Preparation ==&lt;br /&gt;
During the creation of an app, you need some information provided by the configuration of the Calendar and also add some information given by Azure. Because of that it is recommended to open the PBX Manager / AP Calendar in myApps (click on Configure and select “Cloud (Exchange Online)” as Sync Type) and the Azure Portal in your browser at the same time. You also have to login to the Azure Portal with an admin user to be able to add an application registration as well as to configure it.&lt;br /&gt;
&lt;br /&gt;
If you get stuck or you need additional information, or if you are unsure if the way describe here is the best solution for your company, be free to use all the documentation and help links Microsoft provides in the Azure portal.&lt;br /&gt;
&lt;br /&gt;
= Registering the Calendar app to the Azure Active Directory =&lt;br /&gt;
== Open the Azure Portal Active Directory ==&lt;br /&gt;
[[Image:AD_SelAD.png|thumb|upright=5.0|right|Azure Portal]]&lt;br /&gt;
[[Image:AD_Overview.png|thumb|Azure Active Directory Overview]]&lt;br /&gt;
* Go to the Azure Portal homepage and sign in with your admin user ([https://portal.azure.com portal.azure.com])&lt;br /&gt;
** Select “Manage Azure Active Directory” or click on one of the “Azure Active Directory” links.&lt;br /&gt;
** You will be redirected to the Azure Active Directory Overview&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Add a new App registration ==&lt;br /&gt;
[[Image:AD_CreateAppRegistration.png|thumb|Add new app registration]]&lt;br /&gt;
[[Image:AD_RegisteredAppOverview.png|thumb|Registered app overview]]&lt;br /&gt;
* Create an app registration&lt;br /&gt;
** Click on “+ Add” and select “App registration” (alternatively click on “App Registration” on the side bar and add an App registration by clicking on “New registration”)&lt;br /&gt;
** Set a name for the registration (e. G. innovaphone Calendar)&lt;br /&gt;
** Select the supported account type (see note below).&lt;br /&gt;
** Select &amp;quot;Web&amp;quot; in the dropdown list under &amp;quot;Redirect URI&amp;quot; (just enter the URI that you can find in the &amp;quot;Redirect URI&amp;quot; field of the PBX Manager / Calendar configuration).&lt;br /&gt;
** Click &amp;quot;Register&amp;quot; to save the App Registration. On success, you should see the overview page for the registered app.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The account type should be either “Accounts in this organizational directory only (YourCompanyName only - Single tenant)” (which is recommended) or “Accounts in any organizational directory (YourCompanyName - Multitenant)”. If you go with the single tenant, you have to select “My organization only” in as “Selected account types” for the Calendar configuration. If you select multitenant, “Multiple organizations” have to be configured.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&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 client secret ==&lt;br /&gt;
[[Image:AD_CreateClientSecret2.png|thumb|Create client secret]]&lt;br /&gt;
[[Image:AD_CreateClientSecretDone.png|thumb|Client secret list]]&lt;br /&gt;
* Click on “Certificates &amp;amp; Secrets” in the list on the left&lt;br /&gt;
** Then click on “New client secret” under the “Client secrets” section&lt;br /&gt;
** Define an expiration date (the client secret itself will be randomly created)&lt;br /&gt;
** Optional: add a description&lt;br /&gt;
** Click on &amp;quot;Add&amp;quot; - the secret should be visible in the list&lt;br /&gt;
** Copy the value (click in the icon beside the value) and insert it to the &amp;quot;Client secret&amp;quot; field in the Calendar configuration&lt;br /&gt;
&lt;br /&gt;
Note: after a couple of minutes, the Value of the client secret will be grayed out by Azure and you can’t copy it anymore. If that happens, just delete the old, create a new one and copy the value.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&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;
== Configure the first permissions - the manifest ==&lt;br /&gt;
[[Image:AD_Manifest2.png|thumb|Manifest file]]&lt;br /&gt;
* Click on “Manifest” in the sidebar&lt;br /&gt;
** Scroll down the Manifest-File until you see the “requiredResourceAccess” property&lt;br /&gt;
** Add the data block from box below (including the &#039;,&#039;)&lt;br /&gt;
** Click on save - the manifest should similar to the one in the screenshot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; If you want, you can replace the existing part with in the manifest with the block below (in that case without the comma after the closing ‘}’ bracket). This will remove the Users.Read right, which isn’t used anyways (but it also won’t hurt, if the right still exist).&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;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure the second permissions - Microsoft Graph ==&lt;br /&gt;
[[Image:AD_APIPermissionsList2.png|thumb|Exchange Online - Full access as app]]&lt;br /&gt;
[[Image:AD_APIPermissions_EWS.png|thumb|EWS - Access all user]]&lt;br /&gt;
&lt;br /&gt;
* Click on API permissions on the right&lt;br /&gt;
** Due the changes in the manifest an entry &amp;quot;Office 365 Exchange Online&amp;quot; with the subitem &amp;quot;full_access_as_app&amp;quot; should be visible&lt;br /&gt;
** Click on “Add a permission”.&lt;br /&gt;
** In the following dialog click on “Microsoft Graph”&lt;br /&gt;
** Click on “Delegate permissions”&lt;br /&gt;
** Type “EWS” into the search field&lt;br /&gt;
** Click on the arrow before &amp;quot;EWS&amp;quot; and select “EWS.AccessAsUser.All”&lt;br /&gt;
** Click on &amp;quot;Add permission&amp;quot;&lt;br /&gt;
** You should see &amp;quot;EWS.AccessAsUser.All&amp;quot; under the &amp;quot;Microsoft Graph&amp;quot; section of the list&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&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 permission - set rights ==&lt;br /&gt;
[[Image:AD_APIPermissionsList.png|thumb|Permissions not granted]]&lt;br /&gt;
[[Image:AD_APIPermissions_AdminCosentGranted2.png|thumb|Permissions granted]]&lt;br /&gt;
* The permissions should may have the status &amp;quot;Not granted...&amp;quot; or no status at all.&lt;br /&gt;
** Click on &amp;quot;Grant admin consent for....&amp;quot; button above the list&lt;br /&gt;
** Confirm the question shown by a message box&lt;br /&gt;
** All premissions should now have the status &amp;quot;Granted for...&amp;quot;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
The Calendar app registration is now successfully completed.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&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;
= Setting up the Calendar configuration on the App Platform =&lt;br /&gt;
You have now registered you App to the Azure Active Directory. The last step is to finalize the setup for the innovaphone Calendar using the PBX Manager. Just fill in the fields as follows:&lt;br /&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)&lt;br /&gt;
|-&lt;br /&gt;
|User:&lt;br /&gt;
|The user with the Application Impersonation right in Exchange&lt;br /&gt;
|-&lt;br /&gt;
|Autodiscover URL:&lt;br /&gt;
|https://autodiscover-s.outlook.com&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 you AD app registration&lt;br /&gt;
|-&lt;br /&gt;
|Supported account:&lt;br /&gt;
|“My organization only” or “Multiple organization”, depending what you configured during app registration (see above).&lt;br /&gt;
|-&lt;br /&gt;
|Redirect URI:&lt;br /&gt;
|Nothing to change here - leave it unchanged&lt;br /&gt;
|-&lt;br /&gt;
|Scopes:&lt;br /&gt;
|https://outlook.office365.com/.default&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;
&lt;br /&gt;
&lt;br /&gt;
Now click on “Authenticate…” and follow the instructions. If everything works as expected, the Calendar should now communicate with Exchange Online, using OAuth2 authentication.&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-Your-Impersonation-User&amp;gt;?Protocol=AutodiscoverV1&lt;br /&gt;
&lt;br /&gt;
If your impersonation user has the email address impersonation@mycompany.com, the URL will be: https://outlook.office365.com/autodiscover/autodiscover.json/v1.0/impersonation@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;br /&gt;
&lt;br /&gt;
== Using On-Premises as fallback ==&lt;br /&gt;
If because of some configuration on the Exchange / Active Directory side or whatever reason the above guide won’t help, you still should be able to switch to On-Premises connection even with Exchange Online. Just configure the Calendar using the PBX Manager as follows:&lt;br /&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;
|On-Premises (local network)&lt;br /&gt;
|-&lt;br /&gt;
|User:&lt;br /&gt;
|The user with the Application Impersonation right in Exchange&lt;br /&gt;
|-&lt;br /&gt;
| Password:&lt;br /&gt;
| The password of the user&lt;br /&gt;
|-&lt;br /&gt;
|Autodiscover URL:&lt;br /&gt;
|https://autodiscover-s.outlook.com&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;
&lt;br /&gt;
&lt;br /&gt;
If the connection to the Autodiscover server failed, you can use the above way to get an alternative server and / or disable the default security settings for your AD.&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto13r2:Setting_up_Calendar_with_OAuth2&amp;diff=60332</id>
		<title>Howto13r2:Setting up Calendar with OAuth2</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto13r2:Setting_up_Calendar_with_OAuth2&amp;diff=60332"/>
		<updated>2021-10-20T16:02:22Z</updated>

		<summary type="html">&lt;p&gt;Msm: /* Configure the first permissions - the manifest */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= How-to setup the Calendar for OAut2 =&lt;br /&gt;
This tutorial shows you, how to setup an Azure Active Directory App to let the calendar work with Microsoft 365 and OAuth2. 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. It is expected, that you have an Exchange user with the Application Impersonation right. More information about how to assign this role to a user can be find in 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 August 2021. 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;
== Preparation ==&lt;br /&gt;
During the creation of an app, you need some information provided by the configuration of the Calendar and also add some information given by Azure. Because of that it is recommended to open the PBX Manager / AP Calendar in myApps (click on Configure and select “Cloud (Exchange Online)” as Sync Type) and the Azure Portal in your browser at the same time. You also have to login to the Azure Portal with an admin user to be able to add an application registration as well as to configure it.&lt;br /&gt;
&lt;br /&gt;
If you get stuck or you need additional information, or if you are unsure if the way describe here is the best solution for your company, be free to use all the documentation and help links Microsoft provides in the Azure portal.&lt;br /&gt;
&lt;br /&gt;
= Registering the Calendar app to the Azure Active Directory =&lt;br /&gt;
== Open the Azure Portal Active Directory ==&lt;br /&gt;
[[Image:AD_SelAD.png|thumb|upright=5.0|right|Azure Portal]]&lt;br /&gt;
[[Image:AD_Overview.png|thumb|Azure Active Directory Overview]]&lt;br /&gt;
* Go to the Azure Portal homepage and sign in with your admin user ([https://portal.azure.com portal.azure.com])&lt;br /&gt;
** Select “Manage Azure Active Directory” or click on one of the “Azure Active Directory” links.&lt;br /&gt;
** You will be redirected to the Azure Active Directory Overview&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Add a new App registration ==&lt;br /&gt;
[[Image:AD_CreateAppRegistration.png|thumb|Add new app registration]]&lt;br /&gt;
[[Image:AD_RegisteredAppOverview.png|thumb|Registered app overview]]&lt;br /&gt;
* Create an app registration&lt;br /&gt;
** Click on “+ Add” and select “App registration” (alternatively click on “App Registration” on the side bar and add an App registration by clicking on “New registration”)&lt;br /&gt;
** Set a name for the registration (e. G. innovaphone Calendar)&lt;br /&gt;
** Select the supported account type (see note below).&lt;br /&gt;
** Select &amp;quot;Web&amp;quot; in the dropdown list under &amp;quot;Redirect URI&amp;quot; (just enter the URI that you can find in the &amp;quot;Redirect URI&amp;quot; field of the PBX Manager / Calendar configuration).&lt;br /&gt;
** Click &amp;quot;Register&amp;quot; to save the App Registration. On success, you should see the overview page for the registered app.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The account type should be either “Accounts in this organizational directory only (YourCompanyName only - Single tenant)” (which is recommended) or “Accounts in any organizational directory (YourCompanyName - Multitenant)”. If you go with the single tenant, you have to select “My organization only” in as “Selected account types” for the Calendar configuration. If you select multitenant, “Multiple organizations” have to be configured.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&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 client secret ==&lt;br /&gt;
[[Image:AD_CreateClientSecret2.png|thumb|Create client secret]]&lt;br /&gt;
[[Image:AD_CreateClientSecretDone.png|thumb|Client secret list]]&lt;br /&gt;
* Click on “Certificates &amp;amp; Secrets” in the list on the left&lt;br /&gt;
** Then click on “New client secret” under the “Client secrets” section&lt;br /&gt;
** Define an expiration date (the client secret itself will be randomly created)&lt;br /&gt;
** Optional: add a description&lt;br /&gt;
** Click on &amp;quot;Add&amp;quot; - the secret should be visible in the list&lt;br /&gt;
** Copy the value (click in the icon beside the value) and insert it to the &amp;quot;Client secret&amp;quot; field in the Calendar configuration&lt;br /&gt;
&lt;br /&gt;
Note: after a couple of minutes, the Value of the client secret will be grayed out by Azure and you can’t copy it anymore. If that happens, just delete the old, create a new one and copy the value.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&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;
== Configure the first permissions - the manifest ==&lt;br /&gt;
[[Image:AD_Manifest2.png|thumb|Manifest file]]&lt;br /&gt;
* Click on “Manifest” in the sidebar&lt;br /&gt;
** Scroll down the Manifest-File until you see the “requiredResourceAccess” property&lt;br /&gt;
** Add the data block from box below (including the &#039;,&#039;)&lt;br /&gt;
** Click on save - the manifest should similar to the one in the screenshot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; If you want, you can replace the existing part with in the manifest with the block below (in that case without the comma after the closing ‘}’ bracket). This will remove the Users.Read right, which isn’t used anyways (but it also won’t hurt, if the right still exist).&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;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configure the second permissions - Microsoft Graph ==&lt;br /&gt;
[[Image:AD_APIPermissionsList2.png|thumb|Exchange Online - Full access as app]]&lt;br /&gt;
[[Image:AD_APIPermissions_EWS.png|thumb|EWS - Access all user]]&lt;br /&gt;
&lt;br /&gt;
* Click on API permissions on the right&lt;br /&gt;
** Due the changes in the manifest an entry &amp;quot;Office 365 Exchange Online&amp;quot; with the subitem &amp;quot;full_access_as_app&amp;quot; should be visible&lt;br /&gt;
** Click on “Add a permission”.&lt;br /&gt;
** In the following dialog click on “Microsoft Graph”&lt;br /&gt;
** Click on “Delegate permissions”&lt;br /&gt;
** Type “EWS” into the search field&lt;br /&gt;
** Click on the arrow before &amp;quot;EWS&amp;quot; and select “EWS.AccessAsUser.All”&lt;br /&gt;
** Click on &amp;quot;Add permission&amp;quot;&lt;br /&gt;
** You should see &amp;quot;EWS.AccessAsUser.All&amp;quot; under the &amp;quot;Microsoft Graph&amp;quot; section of the list&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&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 permission - set rights ==&lt;br /&gt;
[[Image:AD_APIPermissionsList.png|thumb|Permissions not granted]]&lt;br /&gt;
[[Image:AD_APIPermissions_AdminCosentGranted2.png|thumb|Permissions granted]]&lt;br /&gt;
* The permissions should may have the status &amp;quot;Not granted...&amp;quot; or no status at all.&lt;br /&gt;
** Click on &amp;quot;Grant admin consent for....&amp;quot; button above the list&lt;br /&gt;
** Confirm the question shown by a message box&lt;br /&gt;
** All premissions should now have the status &amp;quot;Granted for...&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;
&lt;br /&gt;
= Setting up the Calendar configuration on the App Platform =&lt;br /&gt;
You have now registered you App to the Azure Active Directory. The last step is to finalize the setup for the innovaphone Calendar using the PBX Manager. Just fill in the fields as follows:&lt;br /&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)&lt;br /&gt;
|-&lt;br /&gt;
|User:&lt;br /&gt;
|The user with the Application Impersonation right in Exchange&lt;br /&gt;
|-&lt;br /&gt;
|Autodiscover URL:&lt;br /&gt;
|https://autodiscover-s.outlook.com&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 you AD app registration&lt;br /&gt;
|-&lt;br /&gt;
|Supported account:&lt;br /&gt;
|“My organization only” or “Multiple organization”, depending what you configured during app registration (see above).&lt;br /&gt;
|-&lt;br /&gt;
|Redirect URI:&lt;br /&gt;
|Nothing to change here - leave it unchanged&lt;br /&gt;
|-&lt;br /&gt;
|Scopes:&lt;br /&gt;
|https://outlook.office365.com/.default&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;
&lt;br /&gt;
&lt;br /&gt;
Now click on “Authenticate…” and follow the instructions. If everything works as expected, the Calendar should now communicate with Exchange Online, using OAuth2 authentication.&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-Your-Impersonation-User&amp;gt;?Protocol=AutodiscoverV1&lt;br /&gt;
&lt;br /&gt;
If your impersonation user has the email address impersonation@mycompany.com, the URL will be: https://outlook.office365.com/autodiscover/autodiscover.json/v1.0/impersonation@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;br /&gt;
&lt;br /&gt;
== Using On-Premises as fallback ==&lt;br /&gt;
If because of some configuration on the Exchange / Active Directory side or whatever reason the above guide won’t help, you still should be able to switch to On-Premises connection even with Exchange Online. Just configure the Calendar using the PBX Manager as follows:&lt;br /&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;
|On-Premises (local network)&lt;br /&gt;
|-&lt;br /&gt;
|User:&lt;br /&gt;
|The user with the Application Impersonation right in Exchange&lt;br /&gt;
|-&lt;br /&gt;
| Password:&lt;br /&gt;
| The password of the user&lt;br /&gt;
|-&lt;br /&gt;
|Autodiscover URL:&lt;br /&gt;
|https://autodiscover-s.outlook.com&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;
&lt;br /&gt;
&lt;br /&gt;
If the connection to the Autodiscover server failed, you can use the above way to get an alternative server and / or disable the default security settings for your AD.&lt;/div&gt;</summary>
		<author><name>Msm</name></author>
	</entry>
</feed>