The main goal of Search Alerts is to get notified whenever something new gets indexed (Full crawl or Incremental crawl), based on a search term that you specify.

Now, if you’re outgoing mail configuration is properly set on your SharePoint Farm, that works for any other mail related functionality but not for Search Alerts… what can you do?

Enabling the Search Alerts Feature in SharePoint Server 2010 or SharePoint 2013

  1. Verify that the user account that is performing this procedure is an administrator for the Search service application. (connect with the SharePoint Farm Global Administrator)
  2. In Central Administration, in the Application Management section, click Manage service applications.
  3. On the Manage Service Applications page, click the Search service application for which you want to configure search alerts.
  4. On the Search Administration page, in the System Status section, locate Search alerts status.
  5. The search alerts status displays as Off or On.
  6. By default, search alerts are turned On. Click Disable to turn off search alerts or click Enable to turn on search alerts.

Search

After the search alerts feature is enabled, the SharePoint Farm Global Administrator must configure the outgoing mail service.

Search

The service account that you use must have special privileges. The privilege is the delegate (“Send-As”) permission to the mailbox listed in the “from” line. If this attribute permission is not configured, the email submission will fail.

For more information, see Configure Outgoing E-Mail (SharePoint Server 2010). The administrator must also ensure that the Timer Job service is running.

The SharePoint Farm Global Administrator should also have a look at the “Immediate Alerts” timer job to refine the schedule time.

The Immediate Alerts is a web application targeted timer job so be sure that you made the correction (if needed) on the correct one.

Search

Search alerts in SharePoint 2010 or SharePoint 2013 is a pretty powerful feature but this is for “local use” (as designed).

If you’re in an environment where you have a search service application that’s shared between farms, you need to configure which farms the search service application should allow search alerts for. Tricky isn’t it?

How do we now that?  Well for the first time the SharePoint Logs was clear enough to explain me what went wrong with the Timerjob.

SearchServiceApplicationProxy::Execute--Error occurred:  
System.ServiceModel.FaultException`1[System.ServiceModel.ExceptionDetail] 
  
Error while processing search alert at search service 
application 'Search Service Application'.  
  
Farm Id 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' does not 
exist in the FarmIdsForAlerts property  
or is not the local farm id 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'.  
(Fault Detail is equal to An ExceptionDetail, 
likely created by IncludeExceptionDetailInFaults=true,  
whose value is: System.InvalidOperationException: 
  
Error while processing search alert at  search 
service application 'Search Service Application'.   
Farm Id 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' does 
not exist in the FarmIdsForAlerts property   
or is not the local farm id 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'

The SearchServiceApplication object has a property called FarmIdsForAlerts, which is a list of farm ids. All farms that should have search alerts must be listed here (not necessary to list the local farm). To add the first farm id to the list, you can use PowerShell:

$guid = new-object "System.Guid" -ArgumentList "{FARM.ID}"
$app = Get-SPEnterpriseSearchServiceApplication 
-Identity "Search Service Application"
$type = ("System.Collections.Generic.List"+'`'+"1") -as "Type"
$type = $type.MakeGenericType("system.Guid" -as "Type")
$list = [Activator]::CreateInstance($type)$list.Add($guid)
$app.FarmIdsForAlerts = $list$app.Update()

References