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
Date: 2/13/2015 10:36:29 AM
Event ID: 9646
Task Category: General
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".
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)
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.