·
1 min read

Fixing Report Snapshots in CRM 4.0

Problem: V4: Report snapshots are never generated when scheduling a Report in CRM v4.0


Cause:
When the report snapshot is being generated, CRM Data Connector for SQL Server Reporting Service (SSRS) attempts to verify the identity of the calling user, it failed in several reasons:



1. We verify the caller by checking the System.Threading.Thread.CurrentPrincipal to see if it is a Windows Principal. Since this code is run from within a Windows Service (Reporting Service), it will be a Generic Principal, not the Windows Principal. The code asserts because of the check.


2. When the SSRS runs under the LocalSystem account, the code treats it as the direct member in the AD PrivUserGroup hence throws the exception.


3. When the CRM Server and SSRS are running in the different machines, the SSRS machine account was not added to the PrivUserGroup so the validation against the machine account failed.


Fix: Fix the issues for the calling user’s validation:



1. Use the static function WindowsIdentity.GetCurrent() for WindowsIdentity and to construct the WindowsPrincipal object.


2. Validate the SSRS machine account for the Windows LocalSystem account as well.


3. Add the SSRS machine account to the PrivUserGroup and PrivReportingGroup in AD.


Where is the fix?


The KB number for the first two issues are 955206 and the fix is part of CRM 4.0 UR2. You can download from the following link: http://www.microsoft.com/downloads/details.aspx?FamilyID=aa671769-61e9-45c4-919f-c88199aa4241&DisplayLang=en


The KB number for the third issue (CRM Server and SSRS run in different machine) is 968243 and the hotfix package is not available yet at this moment. Please contact your support personnel if you want to know when and where you can download the fix. You can also workaround it by adding the SSRS machine name into the PrivUserGroup and PrivReportingGroup manually in AD.


Thanks


Chris Xia