02.1. Minimum system version
EBF Contacts supports the following operating systems:
- iPhone and iPad: iOS / iPadOS 18 or later
- Android devices: Android 13 or later
- Starting with EBF Contacts version 3.2.0, the app requires iOS 26.
Recommended Setup
- Keep devices updated to the latest supported OS version.
- Use a supported UEM (Unified Endpoint Management) solution such as:
- Microsoft Intune
- Ivanti / MobileIron
- Jamf
- Blackberry
- Workspace One
02.2. Caller Identification
EBF Contacts can identify incoming callers on:
- iPhones
- Android phones
- Android tablets
Important Requirements
To make caller identification work correctly:
- Store all phone numbers in international format.
- Include the country code.
Example Germany: +49 221 474550
Best Practices
- Avoid local-only numbers such as 0221 474550.
- Use one consistent number format across all data sources.
- Verify imported contacts before large deployments.
02.3. AppConfig
It is mandatory for EBF Contacts to receive an AppConfig or a Managed-AppConfig from an UEM System (e.g. MobileIron/Ivanti, Microsoft Intune, Jamf). The AppConfig can/must contain the following key/value pairs, where all values are of type „string“:
Required parameters
Showing 6 parameters
Defines the customer or company name displayed in the app configuration.
- Type
- String
- Example
EBF GmbH- Notes
- Mandatory for all deployments.
Defines the customer license key.
- Type
- String
- Example
97MtLkThSDF…- Notes
- Contains an expiration date. The app displays an error after expiration. Contact the EBF Sales team for valid keys.
Defines how many devices may use the app.
- Type
- Enum
- Example
150- Notes
- Match this value to the licensed device count.
Defines the Exchange On-Premise server URL or Microsoft 365 Azure Application ID.
- Type
- URL String
- Example
https://my-exchange-server.com610fc6a9-2659-842e-8733-5ceb3aeda4ac- Notes
- Exchange requires a full HTTPS URL including protocol. Microsoft 365 requires an Azure Application ID.
Defines the HubSpot private application token.
- Type
- String
- Example
pat-eu1-xxxxxxxx- Notes
- Create a private HubSpot app with the permission
crm.objects.contacts.read.
Defines the downloadable ZIP archive containing CSV or JSON files.
- Type
- URL
- Example
https://my-server.com/ContactsExport.zip- Notes
- ZIP files must use HTTPS and contain valid CSV or JSON files.
No parameters match your search.
Microsoft 365 Authentication Methods
| Authentication Method | Description | Best Use Case | Required Permissions | Limitations |
| User Login Authentication | Users sign in with Azure AD username and password. | Use when users need personal contacts synchronization. | Delegated: Contacts.Read, User.Read, User.ReadBasic.All, User.Read.All | Users must authenticate manually. |
| Anonymous Authentication | The app authenticates with Azure Application ID and secret. Users do not sign in manually. | Use for easier onboarding, kiosk devices, or users without Azure AD accounts. | Application: Contacts.Read, User.Read.All | Cannot combine with readPersonalContacts. Secrets require regular renewal. |
Azure App Registration Requirements
| Setting | Required Value | Additional Details |
| Tenant Type | Multitenant or Single Tenant | Depends on deployment type and tenant parameter usage. |
| iOS Redirect URL | msauth.de.ebf.contacts://auth | Configure as Public / Native Client redirect URI. |
| Android Redirect URL | msauth://de.ebf.contacts/bX7u+szRPaxp7M/Ux+hz8esKB7I= | Configure as Public / Native Client redirect URI. |
| ADFS Requirement | Forms-Based Authentication enabled | Required for successful Azure authentication on devices using ADFS. |
Common Optional Parameters
Showing 37 parameters
Reads specific Exchange address lists instead of the default GAL.
- Type
- JSON
- Default
- N/A
- Notes
- Requires
useFindPeople=true.
Merges phone numbers from matching contacts across multiple data sources.
- Type
- Boolean
- Default
- false
- Notes
- Recommended only for environments with 5,000 contacts or fewer.
Allows users to copy phone numbers and email addresses.
- Type
- Boolean
- Default
- true
- Notes
- Disabling this also disables
exportContact.
Allows custom SSL certificates.
- Type
- Boolean
- Default
- false
- Notes
- Use only with trusted certificates.
Changes the displayed app title.
- Type
- String
- Default
- EBF Contacts
- Example
Acme Directory- Notes
- Useful for company branding.
Controls which contact fields appear during incoming calls.
- Type
- JSON
- Default
- Built-in default
- Example
{ "givenName": -1, "surname": -1, "jobTitle": 10, "department": 10, "companyName": 18, "custom1": "(", "officeLocation": 15, "custom2": ")" }- Notes
- Supports
givenName,surname,jobTitle,department,companyName, andofficeLocation.
Disables AppConnect handling when opening the native mail client from EBF Contacts.
- Type
- Boolean
- Default
- false
- Notes
- Recommended if users experience issues opening the native mail client while AppConnect is enabled. Often used together with the
mailClientparameter.
Disables the requirement for users to create and enter an encryption password when starting EBF Contacts.
- Type
- Boolean
- Default
- false
- Notes
- Even when enabled, EBF Contacts still encrypts contact data stored on the device. This setting only removes the user password prompt during app startup.
Defines how long the app waits before sending another request to the Exchange server after a failed request.
- Type
- String
- Default
- 15000
- Example
30000- Notes
- Helps reduce server load in unstable network environments. Increase if the Exchange server rate-limits or blocks requests after failures.
Enables Microsoft 365 delta synchronization.
- Type
- Boolean
- Default
- true
- Notes
- Downloads only changed contacts after the first sync.
Enables the iOS ContactProvider Extension instead of the default CallKit extension. Synchronizes contact data with the native iOS Contacts framework.
- Type
- Boolean
- Default
- false
- Notes
- Supports approximately 25,000 contact entries. Disable "Allow documents from managed apps to unmanaged apps" to prevent data leakage.
Known issue in iOS 26.x: removing EBF Contacts does not automatically remove synchronized contacts. Users must disable the ContactProvider Extension before uninstalling. Fixed in iOS 26.4.
Defines the password policy for the local encryption password.
- Type
- JSON
- Default
- No policy enforced
- Example
{ "MaxLength": 16, "MinLength": 8, "Complexity": 2 }- Notes
- Complexity values:
0 = No requirements
1 = At least 2 character classes
2 = At least 3 character classes
3 = All character classes required
Encrypts synchronized user profile images stored on the device.
- Type
- Boolean
- Default
- true
- Notes
- Recommended for environments with strict security or compliance requirements.
Allows exporting contacts to the personal address book.
- Type
- Boolean
- Default
- false
- Notes
- Requires
allowCopy=trueandenableContactProvider=false.
Imports all contact entries from the ZIP archive, including entries with duplicate or missing email addresses.
- Type
- Boolean
- Default
- false
- Notes
- Even when enabled, Caller ID can only assign each phone number once. Use carefully — duplicate contacts may appear in the app.
Enables the optimized Microsoft 365 group synchronization process when using the selectedGroups parameter.
- Type
- Boolean
- Default
- true
- Notes
- Recommended for large address books where only smaller subsets of contacts are synchronized via Azure AD groups.
Enables additional debug logging.
- Type
- Enum
- Default
- Disabled
- Example
debug- Notes
- Users can export logs from the Settings screen.
Defines which email application EBF Contacts uses when a user selects the "Send Email" action.
- Type
- Enum
- Default
- Native mail app
- Example
MSOutlookEmailPlusBlackBerryWorkBoxerWorkspaceONE- Notes
- If empty or missing, EBF Contacts uses the native Mail app on iOS and Gmail on Android. In AppConnect environments, consider enabling
closeAppConnect=true.
Changes Microsoft 365 sync package size.
- Type
- String
- Default
- 100
- Example
500- Notes
- Works only when
deltaEnabled=false.
Enables anonymous Microsoft 365 authentication.
- Type
- String
- Default
- N/A
- Notes
- Cannot be combined with
readPersonalContacts.
Defines a custom Microsoft Graph filter for synchronizing Microsoft 365 contacts.
- Type
- String
- Default
- N/A
- Example
proxyAddresses/any(x:startswith(x,'smtp:')) and UserType eq 'Member' and AccountEnabled eq true
- Notes
- Requires
deltaEnabled=false. EBF Contacts downloads all contacts and applies the filter locally. Incorrect filters may exclude valid users.
Defines how many parallel requests EBF Contacts sends to the Exchange On-Premise server during synchronization.
- Type
- String
- Default
- 20 (useFindPeople=false) / 10 (useFindPeople=true)
- Example
15- Notes
- Higher values may improve sync speed but increase server load. Lower values improve stability in restricted environments.
Defines the Exchange password used for authentication.
- Type
- String
- Default
- N/A
- Notes
- Not recommended for standard user deployments. Intended for technical or shared service accounts. Store securely in the UEM configuration.
Provides a compressed synchronization optimization string for large Exchange On-Premise environments.
- Type
- String
- Default
- N/A
- Notes
- EBF Contacts generates this value automatically after the first full synchronization. Administrators can distribute it to other users to improve initial sync performance.
Defines the primary color used for buttons and UI highlights in EBF Contacts.
- Type
- Hex
- Default
- #2494C5
- Example
#1271C5- Notes
- Use standard hexadecimal color values. Useful for company branding.
Enables synchronization of Microsoft 365 organization contacts.
- Type
- Boolean
- Default
- false
- Notes
- Requires the Azure application permission
OrgContact.Read.All. Delta synchronization is automatically disabled for organization contacts.
Enables synchronization of users' personal contacts stored in their Exchange or Microsoft 365 mailbox.
- Type
- Boolean
- Default
- false
- Notes
- Cannot be used together with
office365Secret. In Exchange On-Premise environments, this may fail if "Extended Protection" blocks REST API communication.
Defines how long EBF Contacts waits for a server response before cancelling an API request.
- Type
- String
- Default
- 15
- Example
30- Notes
- Increase for slow or overloaded servers. Lower values improve responsiveness but can cause sync failures in unstable environments.
Defines the minimum number of characters a user must enter before the app starts searching contacts.
- Type
- String
- Default
- 3
- Example
2- Notes
- Increasing this value can improve search performance in environments with very large contact databases.
Filters synchronized contacts by Azure AD group.
- Type
- JSON
- Default
- All contacts
- Example
[ {"id": "a1b2c3d4-..."}, {"id": "e5f6g7h8-..."} ]- Notes
- Maximum 50 groups. Requires
Group.Read.Allpermission.
Controls which settings users can view, change, or use inside EBF Contacts.
- Type
- JSON
- Default
- N/A
- Example
{ "showUserImageAllowed": true, "showUserImageActivated": true, "biometricsAllowed": false, "biometricsActivated": true, "synchronizationAllowed": false, "synchronizationActivated": true, "mobileDataAllowed": false, "mobileDataActivated": true, "standardCallAllowed": true, "faceTimeCallAllowed": true, "teamsCallAllowed": true, "teamsVideoCallAllowed": true, "syncIntervalAllowed": false, "autoSyncIntervalIndex": 3 }- Notes
- All JSON keys must be included. Missing values may cause unexpected behavior.
autoSyncIntervalIndex: 0 = 8h, 1 = 24h, 2 = 48h, 3 = 7 days
Displays business address information for personal contacts in the contact details view.
- Type
- Boolean
- Default
- false
- Notes
- When enabled, shows available business address information for synchronized personal contacts.
Shows Microsoft 365 user presence information.
- Type
- Boolean
- Default
- false
- Notes
- Requires
Presence.Read.Allpermission.
Defines the Microsoft 365 tenant.
- Type
- String
- Default
- N/A
- Example
ebf.de- Notes
- Not required for multi-tenant deployments.
Enables an alternative Exchange On-Premise endpoint for retrieving contact data.
- Type
- Boolean
- Default
- false
- Notes
- Required when using
addressListIds. Uses the Exchange FindPeople API, supporting up to 1,000 results per request. The defaultonPremRequestCountchanges from 20 to 10.
Prefills the username field for Exchange login or identifies the user when authentication does not use personal credentials.
- Type
- String
- Default
- N/A
- Example
john.doe@company.com- Notes
- Also required to enable the QR code feature when using
office365Secret, HubSpot, or ZIP data sources.
Defines the ZIP archive password.
- Type
- String
- Default
- N/A
- Notes
- Supports ZipCrypto encryption only.
No parameters match your search.
An example AppConfig XML file and plist is available below:
<managedApplicationConfiguration>
<version>1.7.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>
<string keyName="selectedGroups">
<defaultValue>
<value>{ "values" : [ "Name of AD group 1", "Name of AD group 2"] }</value>
</defaultValue>
</string>
<string keyName="callerIdStructure">
<defaultValue>
<value>{"givenName": -1,"surname": -1,"custom": "-","jobTitle": 10,"department": 10,"companyName": 18,"officeLocation": 15}</value>
</defaultValue>
</string>
</dict>
</managedApplicationConfiguration><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>customerName</key>
<string>EBF GmbH</string>
<key>licenseKey</key>
<string>97MtLkThSDFo39kmkj6pW/aTR20Rbj5nPiIa4IKYWB2YZ3orT8ms5rVkXLQHc9NcGLnv5ZiC172cJQsPx6Q4l/pLs=</string>
<key>endpoint</key>
<string>9f12e12e-ea6b-42db-8712-ea1040aa9999</string>
<key>tenant</key>
<string>ebf.de</string>
<key>licenseCount</key>
<string>200</string>
<key>office365PageSize</key>
<string>500</string>
<key>selectedGroups</key>
<string>{ "values" : [ "Name of AD group 1", "Name of AD group 2"] }</string>
<key>callerIdStructure</key>
<string>{"givenName": -1,"surname": -1,"custom": "-","jobTitle": 10,"department": 10,"companyName": 18,"officeLocation": 15}</string>
</dict>
</plist>02.4. Prefix Combination Explanation (Only Exchange On-Premise)
Why This Configuration May Be Needed
Exchange Web Services (EWS) limits the number of contact records returned in a single query. Organizations with large contact databases may need to adjust the EBF Contacts configuration to ensure the app synchronizes all contacts correctly.
Without optimization:
- Initial synchronization may take a long time
- Some contacts may not appear immediately
- Users may experience slower first-time setup
EWS Query Limits
EWS supports the following maximum results per query:
- Standard mode:
- Up to 100 records per query
- When using the useFindPeople parameter:
- Up to 1000 records per query
EBF Contacts identifies records using the contact’s email address.
Default Synchronization Behavior
By default, EBF Contacts processes the contact database in multiple steps.
This approach:
- Helps avoid EWS query limits
- Allows the app to eventually synchronize all contacts
However, the first synchronization can take longer in environments with many contacts.
Improving Synchronization Speed
After the first full synchronization completes:
- Restart the app once
- Open the log file
- Locate the generated compressed string
You can share this string with other users through the configuration parameter:
prefixCombinations
Using this parameter helps:
- Reduce synchronization time
- Improve first-time app setup
- Speed up contact indexing for additional users
Example Configuration
prefixCombinations=fVvdmqO6rnyXdb2Tr8F20jzL/s4FSSD8Q2ySzMzTH6iysZiV3RctlQnIkl…
Important
- The app only accepts the compressed string format
- Do not modify the generated value manually
Best Practices
- Use useFindPeople when your Exchange environment supports it
- Perform the first synchronization with a stable internet connection
- Share the generated prefixCombinations value with other users in the same environment
- Restart the app after the initial synchronization completes
Troubleshooting
Synchronization Takes Too Long
- Verify the number of contacts in the Exchange environment
- Enable useFindPeople if available
- Confirm network connectivity and server response times
Some Contacts Are Missing
- Check that contacts contain valid email addresses
- Verify that Exchange returns the expected records
- Review existing contact filtering rules
prefixCombinations Does Not Work
- Confirm that the full compressed string was copied correctly
- Make sure the value was added exactly as generated
- Do not add spaces or line breaks
02.5. Default filtering behavior on synchronisation of contacts data
EBF Contacts automatically filters contact records during synchronization.
The app only displays contacts that match the required rules.
Office 365 (O365) Filtering Rules
A contact appears in EBF Contacts only if all of the following conditions are true:
- The contact uses the user type member
- The related user account is enabled
- The showInAddressList attribute is:
- empty (null), or
- set to true
- The contact includes at least one of these:
- email address
- mobile phone number
- business phone number
Important
The app does not synchronize private phone numbers
Custom Filtering
Administrators can override the default filter by using the configuration parameter:
office365UserFilter
Exchange On-Premise Filtering Rules
A contact appears in EBF Contacts only if:
- “Hide from Address Lists” is disabled
- The contact includes at least one of these:
- email address
- mobile phone number
- business phone number
Important
The app does not synchronize private phone numbers
Troubleshooting
If contacts are missing:
- Verify that the user account is enabled
- Check the showInAddressList setting
- Confirm that the contact contains a supported phone number or email address
- Review custom filter settings
- Run a manual synchronization
02.6. Filtering via selectedGroups (only O365)
EBF Contacts can filter contacts by Azure AD groups.
Use the selectedGroups configuration parameter to load contacts only from selected groups.
How It Works
- If selectedGroups is empty or missing:
- EBF Contacts loads all contacts
- If selectedGroups contains group names:
- EBF Contacts only loads contacts from those groups
Limits
- Maximum supported groups: 50
Example
{
"values": [
"HR Team",
"DEV Team"
]
}Troubleshooting
If contacts do not appear:
- Confirm that the group name matches Azure AD exactly
- Verify that the user belongs to the selected group
- Check that the total number of groups does not exceed 50
02.7. AppTunnel/VPN
EBF Contacts uses port 443 for data synchronization.
Security Requirements
- Always use HTTPS connections
- The app does not support unencrypted HTTP connections
VPN Recommendations
If your Exchange server requires secure internal access:
- Use a VPN solution
- Use your UEM platform’s VPN feature when possible
Troubleshooting
If synchronization fails:
- Confirm that the server URL starts with https://
- Verify that port 443 is open
- Check that the VPN connection is active
- Test access to the Exchange server from the device browser
02.8. Authentication and permissions
EBF Contacts supports these authentication methods:
- Basic Authentication
- NTLM Authentication
Exchange On-Premise Requirements
Users must have permission to access Exchange Web Services (EWS)
Optional Technical User
You can configure a technical user account.
This account:
- Must have a mailbox
- Must have standard permissions
- Can remain hidden from address lists
Android Requirement
For Exchange On-Premise on Android disable “Extended Protection” on the Exchange server
Personal Contacts Access
If you enable:
readPersonalContacts
the app also needs access to Exchange REST API.
Troubleshooting
If login fails:
- Verify username and password
- Confirm that EWS access is enabled
- Check whether “Extended Protection” is disabled for Android environments
- Confirm that the REST API is available when using personal contacts
- Review server authentication settings
02.9. Encryption password policy
By default, EBF Contacts does not enforce password complexity rules.
Administrators can define password requirements through configuration settings.
Available Character Classes
You can require these character types:
- Uppercase letters
- Lowercase letters
- Numbers
- Special characters
Configuration Options
MaxLength
Maximum password length
MinLength
Minimum password length
Complexity
0 = No complexity requirements
1 = Password must contain at least 2 of the following: uppercase letters, lowercase letters, numbers, or special characters
2 = Password must contain at least 3 of the following: uppercase letters, lowercase letters, numbers, or special characters
3 = Password must contain uppercase letters, lowercase letters, numbers, and special characters
{
"MaxLength": 16,
"MinLength": 3,
"Complexity": 0
}Best Practices
- Use a minimum length of at least 8 characters
- Require multiple character types for better security
- Avoid short passwords in production environments
02.10. 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
Important Security Note
- Treat the token like a password
- Do not share the token publicly
- Rotate the token regularly based on your company security policy
Troubleshooting
If synchronization fails:
- Verify that the token is valid
- Confirm that the required permission is enabled
- Check that the token was copied correctly
- Test the HubSpot connection again after saving settings
02.11. CSV and JSON data source in ZIP archive
EBF Contacts can import contact data from CSV or JSON files.
Requirements
- Store the files inside a ZIP archive
- Upload the ZIP file to a reachable web server
- Provide the ZIP file URL in the configuration
Supported Security
ZIP password protection using ZipCrypto
Required Configuration
Set the ZIP file URL in:
zipURL
Required Fields
Each CSV or JSON file must include:
- Display Name
- Email Address
- Phone Number or Mobile Phone
Example Workflow
- Create CSV or JSON contact files
- Compress the files into a ZIP archive
- Upload the ZIP file to a secure web server
- Add the ZIP URL to the EBF Contacts configuration
- Add the ZIP password if required
- Start synchronization
Troubleshooting
If import fails:
- Verify that the ZIP URL is accessible
- Confirm that the ZIP file is not corrupted
- Check that required fields exist
- Verify the ZIP password
- Confirm that the server supports HTTPS access
Additional Support
EBF can help customers create:
- PowerShell scripts
- Export scripts
- Valid data export files
Please find valid JSON and CSV example files below.
JSON
[
{
"DISPLAY NAME": "Adele Vance",
"TITLE": "Retail Manager",
"EMAIL ADDRESS": "adele.vance@ebf.com",
"OFFICE": "18/2111",
"FIRST NAME": "Adele",
"LAST NAME": "Vance",
"DEPARTMENT": "Retail",
"COMPANY": "EBF GMBH",
"PHONE": "+1 425 555 2222",
"MOBILE PHONE": "+1 425 555 3333",
"IMAGE URL": "https://picsum.photos/200/300.jpg",
"MANAGER EMAIL": "",
"PHONE2": "+1 425 555 1111",
"PHONE3": "+1 425 555 6666"
},
{
"DISPLAY NAME": "Grady Archie",
"TITLE": "Designer",
"EMAIL ADDRESS": "grady.archie@ebf.com",
"OFFICE": "18/2111",
"FIRST NAME": "Grady",
"LAST NAME": "Archie",
"DEPARTMENT": "R&D",
"COMPANY": "EBF GMBH",
"PHONE": "+1 425 555 4444",
"MOBILE PHONE": "+1 425 555 5555",
"IMAGE URL": "https://picsum.photos/200/300.jpg",
"MANAGER EMAIL": "adele.vance@ebf.com",
"PHONE2": "+1 425 555 8888"
}
]
CSV
"DISPLAY NAME","EMAIL ADDRESS","COMPANY","DEPARTMENT","FIRST NAME","LAST NAME","OFFICE","PHONE","MOBILE PHONE","TITLE","MANAGER EMAIL","IMAGE URL","PHONE2","PHONE3" "Adele Vance","adele.vance@ebf.com","EBF GmbH","Retail","Adele","Vance","18/2111","+1 425 555 2222","+1 425 555 3333","Retail Manager","","https://picsum.photos/200/300.jpg","+1 425 555 1111","" "Grady Archie","grady.archie@ebf.com","EBF GmbH","R&D","Grady","Archie","18/2111","+1 425 555 4444","+1 425 555 5555","Designer","adele.vance@ebf.com","https://picsum.photos/200/300.jpg","+1 425 555 7777","+1 425 555 8888"
02.12. Android specifics
On Android devices, EBF Contacts stores synchronized contacts inside the Android system contacts database.
This allows caller identification for incoming calls.
Security Requirement
Install EBF Contacts only inside an:
- Android Enterprise Work Profile
This helps prevent unmanaged apps from accessing company contact data.
Browser Requirement
Install a browser app inside the Work Profile.
The app needs a browser to:
- Open the Microsoft 365 login page
- Complete authentication
Important Uninstallation Behavior
Android keeps synchronized contacts in the Work Profile after app removal.
To remove all contacts completely:
Option 1
Remove the entire Work Profile
Option 2
Before uninstalling:
- Open EBF Contacts
- Select Logout
- Wait for contact cleanup to finish
- Uninstall the app
Troubleshooting
If contacts remain after uninstall:
- Confirm that the user logged out before uninstalling
- Remove the Work Profile if cleanup did not occur
If login pages do not open:
- Verify that a browser exists inside the Work Profile