How to fix Exchange Offline Adressbook download issue (0x8004010f)

You may see the error below in Outlook connected to an on premise Exchange server:

0x8004010F: The operation failed. An object could not be found.
or
0x8004010F: Outlook data file cannot be accessed.

Outlook profile on client

You may want to check first if there is an issue with the Outlook profile on your Windows client. Follow this article to rule this out: Error 0x8004010F when sending or receiving email – Outlook | Microsoft Docs. If this does not solve the issue, proceed to the next chapter.

Exchange database indexes

Verify if the database indexes on the Exchange server are healthy

Launch the Exchange Management Shell and use the following command to verify the index status of your database(s), if they are not healthy fix the indexes.

[PS] C:\Windows\system32>Get-MailboxDatabaseCopyStatus -Server EXCH16 | ft -auto

Name Status CopyQueueLength ReplayQueueLength LastInspectedLogTime ContentIndexState
---- ------ --------------- ----------------- -------------------- -----------------
priv1\EXCH16 Mounted 0 0 Failed
pub2\EXCH16 Mounted 0 0 Failed

You may also see some event log recrods related to the database index:

Log Name: Application
Source: MSExchangeFastSearch
Event ID: 1009
Level: Warning
Task cageory: General

The indexing of mailbox database pub2 encountered an unexpected exception. Error details: Microsoft.Exchange.Search.Core.Abstraction.OperationFailedException: The component operation has failed. ---> Microsoft.Exchange.Search.Core.Abstraction.CatalogReseedException: Some of the notifications for database 'fe54e013-c0d0-46e8-9b72-e55ddc155b80 (pub2)' are missing. Requesting a reseed.
at Microsoft.Exchange.Search.Engine.SearchFeedingController.DetermineFeederStateAndStartFeeders()
at Microsoft.Exchange.Search.Engine.SearchFeedingController.InternalExecutionStart()
at Microsoft.Exchange.Search.Core.Common.Executable.InternalExecutionStart(Object state)
--- End of inner exception stack trace ---
at Microsoft.Exchange.Search.Core.Common.Executable.EndExecute(IAsyncResult asyncResult)
at Microsoft.Exchange.Search.Engine.SyncRootController.ExecuteComplete(IAsyncResult asyncResult)

Recreate database index if required

Hint: Those steps do not procude an Exchange downtime – but the search functionality inside of Outlook will be unavailable
The performance of your Exchange server may be impacted, think about the best time window for this procedure.

1. Launch a command prompt with administative privileges and stop following services:

net stop HostControllerService
net stop MSExchangeFastSearch

2. Delete or rename the index folder in the exchange database folder

The index folder contains a GUID inside your database folder.
E:\priv1\2C227528-1308-4387-966E-BBF4010D58F112.1.Single
E:\pub2\FE54E013-C0D0-46E8-9B72-E55DDC155B8012.2.Single

3. Restart the previously stopped services to trigger the reindex of your database automatically.

net start HostControllerService
net start MSExchangeFastSearch

4. Monitor the progress by opening perfmon.exe

or monitor via Exchange Management Shell:

[PS] C:\Windows\system32>Get-MailboxDatabaseCopyStatus | ft -auto

Name Status CopyQueueLength ReplayQueueLength LastInspectedLogTime ContentIndexState
---- ------ --------------- ----------------- -------------------- -----------------
priv1\CHBAI17 Mounted 0 0 Crawling
pub2\CHBAI17 Mounted 0 0 Crawling

5. After the reindex process has been completed, verify the status of the indexes. They should be healthy now.

[PS] C:\Windows\system32>Get-MailboxDatabaseCopyStatus | ft -auto
Creating a new session for implicit remoting of "Get-MailboxDatabaseCopyStatus" command...

Name Status CopyQueueLength ReplayQueueLength LastInspectedLogTime ContentIndexState
---- ------ --------------- ----------------- -------------------- -----------------
priv1\CHBAI17 Mounted 0 0 Healthy
pub2\CHBAI17 Mounted 0 0 Healthy

Check offline adressbook

Check default adressbook

1. Check if your addressbook is your default addressbook:

[PS] C:\Windows\system32>Get-OfflineAddressBook | select Name, IsDefault

Name IsDefault
---- ---------
Default Offline Address List (Ex2013) True

2. If this is the case, check if it can be found via AutoDiscover

[PS] C:\Windows\system32>Get-OfflineAddressBook | select Name, VirtualDirectories, *web*

Name VirtualDirectories GlobalWebDistributionEnabled WebDistributionEnabled
---- ------------------ ---------------------------- ----------------------
Default Offline Address List (Ex2013) {} False False

3. If both values are “False” then try to publish your addressbook.

3.a Option1: Specify virtual directory

Check the paths of your offline address books:

[PS] C:\Windows\system32>Get-OabVirtualDirectory | fl Server,Name

Server : EXCH16-1
Name : OAB (Default Web Site)

Server : EXCH16-2
Name : OAB (Default Web Site)

and then assign the address book:

[PS] C:\Windows\system32>Set-OfflineAddressBook "Default Offline Address List (Ex2013)" -VirtualDirectories "EXCH16-1\OAB (Default Web Site)","EXCH16-2\OAB (Default Web Site)"

3.b Option2: Allow all directories (Microsoft’s prefered solution)

[PS] C:\Windows\system32>Set-OfflineAddressBook "Default Offline Address List (Ex2013)" -GlobalWebDistributionEnabled $true

4. Execute iisreset.exe to apply your changes.

C:\Windows\system32>iisreset

Attempting stop...
Internet services successfully stopped
Attempting start...
Internet services successfully restarted

 

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.