Search is not working in the Outlook Desktop App or Outlook Web App? Check the ContentIndexState of your Mailbox Database on Exchange 2013. I’ve seen two errors and have found for both of them a solution.

First error:

Name                         : Mailbox Database 090767xxxxSERVER
ContentIndexState            : FailedAndSuspended
ContentIndexErrorMessage     : The content index is corrupted.
ContentIndexBacklog          :
ContentIndexRetryQueueSize   :
ContentIndexMailboxesToCrawl :
ContentIndexSeedingPercent   :
ContentIndexSeedingSource    :

In a single server setup follow these steps to reseed the Content Index:

  1. Run the following commands to stop the Microsoft Exchange Search and Microsoft Exchange Search Host Controller services.
    Stop-Service MSExchangeFastSearch
    Stop-Service HostControllerService
  2. Delete, move, or rename the folder that contains the Exchange content index catalog. This folder is named %ExchangeInstallPathMailbox<name of mailbox database>_Catalog<GUID>12.1.Single. For example, you might rename the folder C:\Program Files\Microsoft\Exchange Server\V15\Mailbox\Mailbox Database 0657134726\_CatalogF0627A72-9F1D-494A-839A-D7C915C279DB12.1.Single_OLDexchangereseedindex.
  3. Run the following commands to restart the Microsoft Exchange Search and Microsoft Exchange Search Host Controller services.
    Start-Service MSExchangeFastSearch
    Start-Service HostControllerServiceAfter you restart these services, Exchange Search will rebuild the content index catalog.

You can check the rebuilding progress with Get-MailboxDatabaseCopyStatus | FL Name,*Index* with PowerShell. The output look like this:

Name                         : Mailbox Database 090767xxxxSERVER
ContentIndexState            : Crawling
ContentIndexErrorMessage     : The Microsoft Exchange Search Service is crawling the database.
ContentIndexBacklog          :
ContentIndexRetryQueueSize   :
ContentIndexMailboxesToCrawl : 20
ContentIndexSeedingPercent   :
ContentIndexSeedingSource    :

When the reseeding of the search catalog is in progress, the value of the ContentIndexState property is Crawling. When the reseeding is complete, this value is changed to Healthy, like below:

Name                         : Mailbox Database 090767xxxxSERVER
ContentIndexState            : Healthy
ContentIndexErrorMessage     :
ContentIndexBacklog          : 0
ContentIndexRetryQueueSize   : 0
ContentIndexMailboxesToCrawl :
ContentIndexSeedingPercent   :
ContentIndexSeedingSource    :

Second error:

Name                         : Mailbox Database 090767xxxxSERVER
ContentIndexState            : Failed
ContentIndexErrorMessage     : An internal error occurred for the database or its index.
ContentIndexBacklog          :
ContentIndexRetryQueueSize   :
ContentIndexMailboxesToCrawl :
ContentIndexSeedingPercent   :
ContentIndexSeedingSource    :

There are two solutions for this error, if you are running Exchange 2013 RTM (version 15.0 build 516.32), update your Exchange Server, you can check the versions here. Another solution is to create a group in AD DS with Active Directory Users and Computers and name it ContentSubmitters.

exchangereseedindex2

And grant Admistrators and NetworkService full access to it on the security tab of the object. After that you need to restart the Microsoft Exchange Search and Microsoft Exchange Search Host Controller services. This can be done with the following PowerShell commands:

Restart-Service MSExchangeFastSearch
Restart-Service HostControllerService

You can check the rebuilding progress with Get-MailboxDatabaseCopyStatus | FL Name,*Index* with PowerShell. The output look like this:

Name                         : Mailbox Database 090767xxxxSERVER
ContentIndexState            : Crawling
ContentIndexErrorMessage     : The Microsoft Exchange Search Service is crawling the database.
ContentIndexBacklog          :
ContentIndexRetryQueueSize   :
ContentIndexMailboxesToCrawl : 20
ContentIndexSeedingPercent   :
ContentIndexSeedingSource    :

When the reseeding of the search catalog is in progress, the value of the ContentIndexState property is Crawling. When the reseeding is complete, this value is changed to Healthy, like below:

Name                         : Mailbox Database 090767xxxxSERVER
ContentIndexState            : Healthy
ContentIndexErrorMessage     :
ContentIndexBacklog          : 0
ContentIndexRetryQueueSize   : 0
ContentIndexMailboxesToCrawl :
ContentIndexSeedingPercent   :
ContentIndexSeedingSource    :