Exchange connector for SharePoint 2013 : Error comes up when performing a full crawl: "Error while crawling LOB contents"

Few months ago worked on an issue where we were unable to crawl the Exchange Source. Crawl log showed "Error while crawling LOB contents"

SP logs showed:

Errorinfo is "Error caused by exception: Microsoft.BusinessData.Infrastructure.BdcException The shim execution failed unexpectedly - Exception has been thrown by the target of an invocation..: System.InvalidOperationException An internal server error occurred. Try again later."  [fltrsink.cxx:566]  search\native\mssdmn\fltrsink.cxx       

Now the reason that the BDC Exception is seen here is because SharePoint 2013 used the BCS Connector Framework when crawling external data such as Exchange/ Lotus etc

The above error happened because the crawler account was getting throttled on Exchange server. I worked with our Exchange engineer and below solution resolved our issue and we were able to crawl the Exchange content source successfully.

Here is event ID 9646 log from Exchange server:

Log Name:      Application
Source:        MSExchange
Date:          2/13/2015 10:36:29 AM
Event ID:      9646
Task Category: General
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      *******
Description:
Mapi session "8bcd2046-e644-4403-ae56-7be1c62e1e07: /o=J*****/ou=Exchange Administrative Group (******)/cn=Recipients/cn=SPSvcs service23a" exceeded the maximum of 250 objects of type "objtMessage".

Resolution Steps:

New-ThrottlingPolicy SharePoint  //this creates a new Throttling Policy called “SharePoint”;
 
• Type : Set-ThrottlingPolicy SharePoint -RCAMaxConcurrency $NULL -RCAPercentTimeInCAS $NULL -RCAPercentTimeInMailboxRPC $NULL -RCAPercentTimeInAD $NULL -EWSMaxConcurrency $NULL -EWSPercentTimeInAD $NULL -EWSPercentTimeinCAS $NULL -EWSPercentTimeInMailboxRPC $NULL -EWSMaxSubscriptions $NULL -EWSFastSearchTimeoutInSeconds $NULL -EWSFindCountLimit $NULL
 
• To confirm that all required settings have been set correctly please type: Get-ThrottlingPolicy SharePoint
 
• These items should now be blank:
 
CPAMaxConcurrency (Exchange 2010 SP1)
CPAPercentTimeInCAS (Exchange 2010 SP1)
CPAPercentTimeInMailboxRPC (Exchange 2010 SP1)
EWSMaxConcurrency
EWSPercentTimeInAD
EWSPercentTimeInCAS
EWSPercentTimeInMailboxRPC
EWSMaxSubscriptions
EWSFastSearchTimeoutInSeconds
EWSFindCountLimit
RCAMaxConcurrency
RCAPercentTimeInAD
RCAPercentTimeInCAS
RCAPercentTimeInMailboxRPC
 
To assign the Throttling Policy to the Default Access Account of SharePoint:
 
Set-Mailbox <Domain>\<UserName-DefaultContentAccessAccount> -ThrottlingPolicy SharePoint

 
Increase the number of allowed concurrent objects per session on the Exchange Server(s)

• Browse to the following registry key:   HKLM\System\CurrentControlSet\Services\MSExchangeIS\ParametersSystem\
•  Create a New Key called "MaxObjsPerMapiSession" ;
• Create a new Dword (32-bit) value objtFolder and set the value to 1000 ;
• Create a new Dword (32-bit) value objtMessage and set the value to 500;
• Restart the Exchange server after failing over the mailbox databases.

Note: I would recommend that you run these changes with your Exchange server Admin too to monitor any performance impact.