We use CiraSync to maintain a centralized contact list on users' smartphones. CiraSync is connected to our Office 365 account and it syncs selected contact data into each user's Exchange contacts folder overnight. Outlook on the user's smartphone is used to copy contacts to the phone's contact list.
Our process is like this: we update a contact in Active Directory, AzureAD synchronizes user data to O365, and CiraSync runs overnight to merge the contact information into the user's Outlook contacts, once that is done, Outlook updates the contacts on the phone. Outlook does not impact personal contacts on the phone.
CiraSync has two big advantages in this arrangement. The app is part of our O365 setup and as such we can easily give it permission to access the user's contacts folder. And because the synchronization is automated we no longer have to manually copy contact lists onto phones or deal with aftermarket products such as Touchbase. Also, since we have moved the main contact source to AD, the phones, AD, and the Global Address List are now consistent. After this, we modified a simple ASP page to serve as a company phone list.
CiraSync has lots of other synchronization features, such as calendars and public folders which might be useful in some settings. We found that copying resource calendars into the users' mailboxes was confusing, so when the Outlook client started giving access to resource calendars we removed those from CiraSync and use Outlook instead.