Microsoft Exchange
Dieser Adressprovider ermöglicht es auf Kontakte in Microsoft Exchange über die EWS-Schnittstelle zuzugreifen. Hierfür wird ein "Service Account" aus Ihrem Active Directory benötigt.
Konfiguration
Online:
Um auf Exchange Online zuzugreifen, ist die Authentifizierung über OAuth nötig. Hierfür benötigt es eine "App Registration" im Azure Active Directory. Führen Sie folgende Schritte aus:
- Melden Sie sich über das Azure Portal an
- Wählen Sie Ihr Azure Active Directory aus & kopieren Sie die
TenantId - Unter "App registrations" legen Sie eine neue mit beliebigen Namen an
- In der "App" unter "Authentication" aktivieren Sie die Option "Treat application as a public client"
- Ebenfalls unter "Authentication" fügen Sie
urn:ietf:wg:oauth:2.0:oobals "Redirect URI" hinzu - Unter "Manifest" fügen Sie den folgenden Eintrag unter
requiredResourceAccessinnerhalb der eckigen Klammern ein:
{
"resourceAppId": "00000002-0000-0ff1-ce00-000000000000",
"resourceAccess": [
{
"id": "3b5f3d61-589b-4a3c-a359-5dd4b5ee5bd5",
"type": "Scope"
}
]
}
- Unter "Overview" kopieren Sie die
ClientId - Unter “API permissions” geben Sie den “Admin Consent” für Ihren Tenant
- Beachten Sie, dass Sie einen Benutzer ohne 2 Faktoren-Authentifizierung benötigen
Diese Configuration können Sie auch in der Microsoft Dokumentation nachlesen.
Nach Abschluss der Registrierung hinterlegen Sie die ClientId als AppClientId und die TenantId als TenantId.
<!-- AddressService -->
<AddressProvider id="E10A8313-A92D-4CB2-A12B-9AEB58F39207" order="1" active="true">
<!-- serverside Microsoft Exchange address provider -->
<AddressProvider id="24425bd4-d6f1-4e2c-a323-3cc63fb5f07b">
<Debug>false</Debug>
<Title>Exchange Online</Title>
<EWSUrl>https://outlook.office365.com/EWS/Exchange.asmx</EWSUrl>
<AppClientId>{AppClientId}</AppClientId>
<TenantId>{TenantId}</TenantId>
<UserName>{username}</UserName>
<Password>{password}</Password>
<!-- Optional Mapping -->
<Mapping>
</Mapping>
</AddressProvider>
</AddressProvider>
OnPrem:
<!-- AddressService -->
<AddressProvider id="E10A8313-A92D-4CB2-A12B-9AEB58F39207" order="1" active="true">
<!-- serverside Microsoft Exchange address provider -->
<AddressProvider id="24425bd4-d6f1-4e2c-a323-3cc63fb5f07b">
<Debug>false</Debug>
<Title>Exchange OnPrem</Title>
<EWSUrl>{HOST}/EWS/Exchange.asmx</EWSUrl>
<UserName>{username}</UserName>
<Password>{password}</Password>
<IgnoreSslErrors>false</IgnoreSslErrors>
<!-- Optional Mapping -->
<Mapping>
</Mapping>
</AddressProvider>
</AddressProvider>
Empfohlenes Mapping:
Folgendes Mapping wird empfohlen, kann jedoch beliebig angepasst werden.
<!-- AddressService -->
<AddressProvider id="E10A8313-A92D-4CB2-A12B-9AEB58F39207" order="1" active="true">
<!-- serverside Microsoft Exchange address provider -->
<AddressProvider id="24425bd4-d6f1-4e2c-a323-3cc63fb5f07b">
<!-- other settings for OnPrem or Cloud -->
<Mapping>
<Map Source="GivenName" Target="Person_FirstName" />
<Map Source="Surname" Target="Person_LastName" />
<Map Source="JobTitle" Target="Person_Position" />
<Map Source="Profession" Target="Person_Profession" />
<Map Source="MiddleName" Target="Person_SecondName" />
<Map Source="CompanyName" Target="Company_Name" />
<Map Source="Department" Target="Company_Department" />
<Map Source="Contact.Address.Street" Target="Company_Street" />
<Map Source="Contact.Address.City" Target="Company_City" />
<Map Source="Contact.Address.PostalCode" Target="Company_ZipCode" />
<Map Source="Contact.Phone.Business" Target="Company_PhoneDirect" />
<Map Source="Contact.Phone.CompanyMainPhone" Target="Company_PhoneCentral" />
<Map Source="Contact.Fax.Business" Target="Company_FaxDirect" />
<Map Source="Contact.Phone.Mobile" Target="Company_Mobile" />
<Map Source="Mailbox.Address" Target="Company_EmailDirect" />
<Map Target="Company_CountryShortCode">
<Map.SourceExpression>
function main() {
switch(source('Contact.Address.CountryOrRegion')) {
case 'Albania': return 'AL';
case 'Andorra': return 'AD';
case 'Azerbaijan': return 'AZ';
case 'Azerbaidzhan': return 'AZ';
case 'Belgium': return 'BE';
case 'Bosnia and Herzegovina': return 'BA';
case 'Bulgaria': return 'BG';
case 'Denmark': return 'DK';
case 'Germany': return 'DE';
case 'Estland': return 'EE';
case 'Finland': return 'FI';
case 'France': return 'FR';
case 'Georgia': return 'GE';
case 'Greece': return 'GR';
case 'Ireland': return 'IE';
case 'Iceland': return 'IS';
case 'Italy': return 'IT';
case 'Kazakhstan': return 'KZ';
case 'Kazakstan': return 'KZ';
case 'Kosovo': return 'XK';
case 'Croatia': return 'HR';
case 'Latvia': return 'LV';
case 'Liechtenstein': return 'LI';
case 'Lithuania': return 'LT';
case 'Luxembuorg': return 'LU';
case 'Malta': return 'MT';
case 'Macedonia': return 'MK';
case 'Moldova': return 'MD';
case 'Monaco': return 'MC';
case 'Montenegro': return 'ME';
case 'Netherlands': return 'NL';
case 'Norway': return 'NO';
case 'Austria': return 'AT';
case 'Polen': return 'PL';
case 'Portugal': return 'PT';
case 'Romania': return 'RO';
case 'Russia': return 'RU';
case 'San Marino': return 'SM';
case 'Sweden': return 'SE';
case 'Switzerland': return 'CH';
case 'Serbia': return 'RS';
case 'Slowakia': return 'SK';
case 'Slowenia': return 'SV';
case 'Spain': return 'ES';
case 'Czech Republic': return 'CZ';
case 'Türkey': return 'TR';
case 'Ukraine': return 'UA';
case 'Hungary': return 'HU';
case 'Vatican City': return 'VA';
case 'United Kingdom': return 'GB';
case 'Belarus': return 'BY';
case 'India': return 'IN';
case 'United States': return 'US';
case 'Indonesia': return 'ID';
case 'Thailand': return 'TH';
default: return 'DE';
}
return '';
}
</Map.SourceExpression>
</Map>
</Mapping>
</AddressProvider>
</AddressProvider>
Parameter
- id 24425bd4-d6f1-4e2c-a323-3cc63fb5f07b
- Title Titel des Address Provider. Default: "Exchange"
- EWSUrl Uri des Exchange-Service-Endpunkts. Für Exchange Online ist dies immer "https://outlook.office365.com/EWS/Exchange.asmx"
- UserName Der Benutzer, mit welchem sich der Provider bei Exchange anmeldet
- Password Das Passwort, mit dem sich der Provider bei Exchange anmeldet (kann verschlüsselt sein)
- AppClientId Die AppClient ID der im AAD konfigurierten EWS-App (Nur Exchange Online)
- TenantId Die TenantId des AAD (Nur Exchange Online)
- Debug
truefalls zusätzliche Informationen geloggt werden sollen. Geloggt werden die vorhandenen Werte welche für das Mapping verwendet werden können. - IgnoreSslErrors Ungültige SSL Zertifikate ignorieren oder nicht. Default:
false. Nur bei OnPrem Variante teilweise nötig. - Mapping Optionales Mapping, um die abgefüllten Informationen zu individualisieren.
Folgende Daten können über das Standard-Kontakt-Mapping abgegriffen werden:- DisplayName
- GivenName
- Initials
- CompanyName
- EmailAddresses
- Dictionary vom Typ EmailAddressDictionary und Enum EmailAddressKey als Key
- PhysicalAddresses
- Dictionary vom Typ PhysicalAddressDictionary und Enum PhysicalAddressKey als Key
- PhoneNumbers
- Dictionary vom Typ PhoneNumberDictionary und Enum PhoneNumberKey als Key
- ContactSource
- Department
- JobTitle
- Manager
- Surname
- AliasBestimmte Werte aus den
Dictionarieswerden für das Mapping bereits extrahiert und als einfache Werte angeboten: - PhysicalAddressDictionary[PhysicalAddressKey.Business]
- City → Contact.Address.City
- Street → Contact.Address.Street
- PostalCode → Contact.Address.PostalCode
- State → Contact.Addess.State
- CountryOrRegion → Contact.Address.CountryOrRegion
- PhoneNumberDictionary
- PhoneNumberKey.BusinessPhone → Contact.Phone.Business
- PhoneNumberKey.CompanyMainPhone → Contact.Phone.CompanyMainPhone
- PhoneNumberKey.Mobile → Contact.Phone.Mobile
- PhoneNumberKey.BusinessFax → Contact.Fax.Business
- MailBox
- MailBox.Address → MailBox.Address
- MailBox.Name → MailBox.Name
- Standard Mapping Das Standard-Mapping welches greift, wenn kein Mapping definiert ist, umfasst folgende Eigenschaften (Feldnamen aus Exchange):
- GivenName
- Surname
- JobTitle
- Profession
- MiddleName
- CompanyName
- Department
- BusinessPhone
- CompanyMainPhone
- BusinessFax
- MobilePhone
- PhysicalAddress.Business
- City
- PostalCode
- Street
- Mailbox.Address (Primary Email)
HINWEIS
EWS liefert für eine Adresse nur die Länderbezeichnung, nicht aber den ISO-Code des Landes. Im primedocs Empfängerdialog muss aber der Two-Letter-ISO-Code gesetzt werden. Für das Standardmapping bedeutet dies, dass das Land nicht über den Address Provider gemappt wird, sondern mittels des DefaultCountryCode aus der allgemeinen Empfängerkonfiguration.
Ist es nötig, das Land spezifisch zu setzen, weil innerhalb des (A)AD Adressen aus unterschiedlichen Ländern vorhanden sind, dann muss dies gleich wie beim Generic SQL Address provider erledigt werden.