Zum Inhalt springen
EBF Logo

EBF product documentation

Find help using and administering EBF applications

EBF Contacts

  • Changelog
  • 01. What is EBF Contacts
  • 02. Requirements
  • 03. Get EBF Contacts up and running in few steps
  • 04. App usage by end user
  • 05. Contact

02. Requirements

Table of Contents
  • 02.1. Minimum system version
  • 02.2. AppConfig
  • 02.3 Prefix Combination Explanation (Only Exchange On-Premise)
  • 02.4. Default filtering behavior on synchronisation of contacts data
  • 02.5. Selected groups Explanation (only O365)
  • 02.6. AppTunnel/VPN
  • 02.7. Authentication and permissions
  • 02.8. Encryption password policy
  • 02.9. HubSpot setup

02.1. Minimum system version

EBF Contacts will run on both iOS / iPadOS version 13 and above.

02.2. AppConfig

It is mandatory for EBF Contacts to receive an AppConfig or a Managed-AppConfig from an UEM System (e.g. MobileIron, Microsoft Intune, Jamf).
The AppConfig can/must contain the following key/value pairs, where all values are of type “string”:

 

KeyValue / Description
customerNameEx.: “EBF GmbH”.
This key is mandatory.
licenseKeyA valid license key that is being assigned to the customer which contains a validity end date.
If the end date is reached, an error will pop-up when opening the app.
You can contact our Sales team to receive valid license keys.This key is mandatory.
licenseCountEx.: 150
The licenseCount results from the number of devices that will use the app.
This key is mandatory.
endpointFor On-Premise Server the Exchange Server URL is needed here.

For O365 the Azure Application ID is needed here.

  • Regarding Application ID mandatory permissions, all of type “delegated” are:
    • Contacts.Read
    • User.Read
    • User.ReadBasic.All
    • User.Read.All
  • Application ID may also require optional permissions:
    • Group.Read.All (if you want to use the parameter “selectedGroups”)
  • For generating an Application ID:
    Register your app with the Azure AD v2.0 endpoint – Microsoft Graph
  • It is mandatory for the app registration to have set the Azure App Registration Settings to:
    • Multitenant
    • The app redirect URL to public / native app with URL: „msauth.de.ebf.contacts://auth“

This key is mandatory.

tenantExample: ebf.de
Only needed for O365
(value example: 31be2ebc-ba2d-49c4-a680-ffdw30h7b5ed)
if (Single tenant)
tenant set is mandatory.
else (Multitenant)
tenant set is not mandatory.
deltaEnabledBy default EBF Contacts will use the “delta” feature when fetching contact data from O365. After a full list on first usage, next synchronization attempts will only fetch changed data items, which reduces data and sync time.
In some environments it can be helpful to deactivate this feature, because O365 can block the delta API, until uncommitted changes are fully processed.default = trueOnly needed (optionally) for O365.
office365PageSizeWith this parameter the admin can change the package size for data fetched from O365. This parameter is only respected, if “deltaEnabled” is “false”. If “deltaEnabled” is true O365 uses a fixed package size of 200.

Value between 100 – 999.

default = 100

Only needed (optionally) for O365.

selectedGroupsFor O365 it is possible to filter the contact list by related Azure AD groups.
Value must be in JSON format. Please check “02.5 Filtering via selectedGroups (Only O365)” for more details.
usernameUsername used for the login to Exchange for an automated login (prefilled username).
Only needed for Exchange On-Premise Server.
hubSpotTokenHubSpot application token. Please check “02.9. HubSpot setup” for more details.
Mandatory, if you want to use HubSpot as data source.
passwordPassword used for the login to Exchange. Not recommended, only for technical accounts.
Only needed for Exchange On-Premise Server.
primaryColorValue as hex code for the color of the buttons of the app.

default = #2494C5

readPersonalContactsKey value to show or hide personal contacts (true/false).
Personal contacts are external contacts which each user can save in their address book. Only contacts of the default folder will be synchronized.default = false
exportContactKey value to enable export contact to personal address book function in contact details page (true/false).

(default = false)

allowCustomCertKey value for Exchange On-Premise Server to allow a custom SSL certificate (true/false).

default = false

encryptUserImageKey value to encrypt all user images (true/false).

default = true

mailClientKey value to optionally use Outlook or Email+ for the “send email” feature in the contact details page, in case your standard email client is not the iOS native mail app.

  • MSOutlook
  • EmailPlus

default = native mail app

addressListIdsBy default EBF Contacts will read the Global Address List (GAL).
The admin can change this to read one or multiple specific address lists instead (using the id of each address list)
Value must be in JSON format.
Example:

{
"values" : [ "790e6929-4b1d-4026-8929-9aadd06ca033", "790e6929-4b1d-4026-8929-9aadd06ca034"]
}
encryptionPasswordPolicyValue must be in JSON format. Please check chapter 02.8. for more details.
prefixCombinationsPlease check chapter 02.3.for more details.

Only needed for Exchange On-Premise Server.

callerIdStructureBy default EBF Contacts displays givenname, surname and company name on incoming calls and in the call list of iOS. Using this parameter the admin can configure, which fields will be shown in a given order and length limitations.

This value is expected in JSON format. The following example uses all available fields with name fields having unlimited length:

Example:

{
"givenName": -1,
"surname": -1,
"jobTitle": 10,
"department": 10,
"companyName": 18,
"officeLocation": 15
}
settingsPermissionsParameters are reflected in the App settings page. Admins can activate or deactivate those settings and can allow or deny changes to these settings using the “…Allowed” parameters explained below.

Example: 

{ "showUserImageAllowed": true, "showUserImageActivated": true, "showUserImageOnlyInDetailAllowed": true, "showUserImageOnlyInDetailActivated": false, "biometricsAllowed": false, "biometricsActivated": true, "synchronizationAllowed": false, "synchronizationActivated": true, "mobileDataAllowed": false, "mobileDataActivated": true, "standardCallAllowed": true, "faceTimeCallAllowed": true, "teamsCallAllowed": true, "teamsVideoCallAllowed": true, "syncIntervalAllowed": false, "autoSyncIntervalIndex": 3 }

Explanation:

  • showUserImageAllowed – allow users to enable or disable changing users images visibility
  • showUserImageActivated – activate or deactivate users‘ images visibility
  • showUserImageOnlyInDetailAllowed : to allow user to enable or disable changing users images visibility in detail view only.
  • showUserImageOnlyInDetailActivated : to activate or deactivate users images visibility in detail view only.
  • biometricsAllowed – allow users to enable or disable biometrics recognition for login (Face ID/Touch ID)
  • biometricsActivated – activate or deactivate biometrics recognition for login (Face ID/Touch ID)
  • synchronizationAllowed – allow users to enable or disable synchronization
  • synchronizationActivated – activate or deactivate synchronization
  • mobileDataAllowed – allow users to enable or disable mobile data to be used for data sync
  • mobileDataActivated – activate or deactivate mobile data to be used for data sync
  • standardCallAllowed – allow standard call (default=true)
  • faceTimeCallAllowed – allow Face time call (default=true)
  • teamsCallAllowed – allow MS Teams call (default=true if available)
  • teamsVideoCallAllowed – allow MS Teams video call (default=true if available)
  • syncIntervalAllowed – allow users to change the synchronization interval
  • autoSyncIntervalIndex – set the synchronization interval (value= 0, 1, 2 or 3)

0 ==> synchronize again earliest after 8 hours
1 ==> … 24 hours
2 ==> … 48 hours
3 ==> … 7 days

loggingSet this value to “debug” to show additional debug logs in the log file of EBF Contacts

 

An example AppConfig XML file is available below:

<?xml version="1.0" encoding="UTF-8"?>
<managedAppConfiguration>
   <version>1.1.0</version>
   <bundleId>de.ebf.contacts</bundleId>
   <dict>
      <string keyName="customerName">
         <defaultValue>
            <value>customer name</value>
         </defaultValue>
      </string>
      <string keyName="licenseKey">
         <defaultValue>
            <value>license keys</value>
         </defaultValue>
      </string>
      <string keyName="endpoint">
         <defaultValue>
            <value>Office 365 or url</value>
         </defaultValue>
      </string>
      <string keyName="tenant">
         <defaultValue>
            <value>tenant only for Office 365</value>
         </defaultValue>
      </string>
      <string keyName="licenseCount">
         <defaultValue>
            <value>license count</value>
         </defaultValue>
      </string>
      <string keyName="office365PageSize">
         <defaultValue>
            <value>999</value>
         </defaultValue>
      </string>
   </dict>
</managedAppConfiguration>

02.3 Prefix Combination Explanation (Only Exchange On-Premise)

Since there is a limit for EWS (Exchange Web Services) when reading out contact data, it may be necessary, especially for organizations with many contacts, to split the data over several queries by adjusting the configuration. This can ensure that all records are synchronized and displayed to the users.

For EWS, a maximum of 100 records can be returned in response to a query. The identification of the records is done via the e-mail address of the contact.

By default EBF contacts will try to iterate through the contacts DB step by step, but this might take time on first usage of the app assuming a large database.

When this process is completed and the app restarted once, the log file shows a compressed string.

This string can be shared with other users via “prefixCombinations” parameter to speed up synchronization for all users. Only the compressed string is accepted by the app via parameter.

Example:

prefixCombinations=fVvdmqO6rnyXdb2Tr8F20jzL/s4FSSD8Q2ySzMzTH6iysZiV3RctlQnIkl…

02.4. Default filtering behavior on synchronisation of contacts data

There are several basic attributes and conditions, that EBF Contacts will take into account to decide, whether a contact record should be shown in the list.

For O365 the following criteria are relevant for a contact to be shown:

  • Contact must be of usertype “member”
  • Related user account must be enabled
  • Attribute showInAddressList must be empty (null) or true
  • Contacts must have either an email address or a mobile or business phone number (private phone numbers are not synchronized)

For Exchange On-Premise the following rules apply:

  • Contact must no have the “Hide from Address lists” flag set
  • Contacts must have either an email address or a mobile or business phone number (private phone numbers are not synchronized)

02.5. Selected groups Explanation (only O365)

EBF Contacts support filtering of contacts by Azure AD groups.
You may define a list of Azure AD group names in the configuration parameter “selectedGroups” to select only specified contacts records from the given groups.

If the parameter is missing or empty, EBF Contacts will load all contact records by default.

There is a limit of max. 50 groups to be used for filtering.

Example:

{
"values" : [  "HR Team", "DEV Team"]  
}

02.6. AppTunnel/VPN

EBF Contacts uses server port 443 for data synchronization.
You may need to implement a VPN solution on the device to secure access to the Exchange server.
It is recommended to use an UEM system’s VPN solution in that case.

02.7. Authentication and permissions

EBF Contacts currently allows user authentication via basic authentication and NTLM.
On-Premise users need to have permission to access EWS (Exchange Web Services).
When activating personal contacts usage (readPersonalContacts) in the config, the app also needs access to Exchange Rest-API.

02.8. Encryption password policy

By default EBF Contacts does not force a policy for the encryption password. By using this parameter you can establish a policy.

Character classes that can be used are “upper case”, “lower case”, “numbers”, “special character”.

MaxLength: Maximum length of the password

MinLength: Minimum Length of the password

Complexity:

0 = no restriction

1 = 2 out of 4 character classes must be used

2 = 3 out of 4 character classes must be used

3 = 4 out of 4 character classes must be used

Example:

{
"MaxLength": 16, "MinLength": 3, "Complexity": 0
}

02.9. HubSpot setup

EBF Contacts supports synchronization of contact data from HubSpot CRM application. For this to work you need to create a private application in the HubSpot admin portal.
Go to “Settings” → “Account Setup” → “Integrations” → “Private Apps”

Create a new application and enter an application name. Then select the scope (permission): crm.objects.contacts.read


After creating the application an Access token will be shown, that needs to be provided in the EBF Contacts configuration in the “hubSpotToken” parameter.
Example:

hubSpotToken=pat-eu1-xxxxxxxx-xxxxxxxx-xxxxxxxx

Was this article useful?
Still stuck? How can we help?

How can we help?

Updated on 24. März 2023
01. What is EBF Contacts03. Get EBF Contacts up and running in few steps
Table of Contents
  • 02.1. Minimum system version
  • 02.2. AppConfig
  • 02.3 Prefix Combination Explanation (Only Exchange On-Premise)
  • 02.4. Default filtering behavior on synchronisation of contacts data
  • 02.5. Selected groups Explanation (only O365)
  • 02.6. AppTunnel/VPN
  • 02.7. Authentication and permissions
  • 02.8. Encryption password policy
  • 02.9. HubSpot setup
Subscribe for EBF Newsletter
©2020 EBF-EDV Beratung Föllmer GmbH, All Rights Reserved
Imprint Terms and Conditions Privacy Statement Contact
Facebook-square Twitter-square Linkedin Xing-square Instagram
EBF Status Check