“An internal system component has disabled hibernation.”

 

hibernate

The issue:

There is this little annoying file called hiberfil.sys that takes up 16GB (equate to my system memory) of my precious C:\ drive space that I cannot delete / rename.  It would be wonderful if it can actually sleep/hibernate. But the problem is, I’m running Windows Server 2008 R2 with Hyper-V enabled which doesn’t support hibernate. So why should I pay 16GB of disk space for something that’s not even of use to me.

image


The journey
:

I started off with hunting down the windows process with procmon (the new filemon) that’s locking the file and preventing me from deleting it. Boy, it did not end pretty. It BSoD’d on me. Sad smile

Lots of folks seem to suggest to run the following simple power configuration command line to disable hibernation and delete this little blood sucker. There is also a MSFT KB and FixIt for it http://support.microsoft.com/kb/920730

powercfg.exe –hibernate off

 

But the system seems to think that it’s already off, also it cannot be switched on. And rightly so!!! Sad smile

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\Administrator>powercfg -h off
Hibernation failed with the following error: The request is not supported.

The following items are preventing hibernation on this system.
        An internal system component has disabled hibernation.

 

image

There also has been suggestions to boot into another OS and delete this file. But as soon as I boot up my server 08, the file just gets created again.



The solution
:

Thanks for http://forums.techarena.in/windows-server-help/1172294.htm

image

All it takes it to modify the registry key to 0 and a reboot to disable Hibernate…

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentCongtrolSet\Control\Power\HibernateEnabled]

Smile

CRM 2011 Developer Road Tour New Zealand

 

6724.dyn-CRM2011_v_rgb_3

 

I’m hitting the road again doing a speaking tour, targeting .NET developers, to 7 various .NET User Groups throughout the country. Smile

 

Here is the blurb,

Title Microsoft Dynamics CRM 2011 – A Developer’s Perspective
Description “After 3 years of research and development, Microsoft Dynamics CRM 2011 was recently release earlier this year, online then on-premise from the same codebase. Come to this session to learn about the latest and greatest in the toolbox for developing business applications with Microsoft Dynamics CRM 2011. Specifically we’ll explore in depth on the new APIs, WCF, OData, LINQ, Sandboxing, Azure and WF.”
Level 300
Target Audience .NET developers with little or no experience with Microsoft Dynamics CRM 2011

 

Here is the schedule:

Date Time Location User Group RSVP
19/05/2011 6:00 p.m. – 7:30 p.m. Centre for Innovation University of Otago
(Downstairs seminar room)
87 St David Street
Dunedin
Dunedin .NET User Group Link
24/05/2011 11:30 a.m. – 12:30 p.m. 7 Forests Rd
Stoke
Nelson
Nelson .NET User Group Link
31/05/2011 6:00 p.m. – 7:30 p.m. Room A116/119
Ground Floor of the Awanui Building,
Massey University’s Hokowhitu Campus
Palmerston North .NET User Group Link
09/06/2011
3:30 pm – 5:00 pm
Eastern Institute of Technology (EIT), Gloucester Street, Taradale, Napier, Room C117 Hawke’s Bay .NET User Group Link
15/06/2011 6:00 p.m. – 8:00 p.m. Wintec Central City Campus Hamilton .NET User Group Link
16/06/2011
6:00pm – 8:00 p.m.
Bongard Centre, Bay of Plenty Polytechnic, 200 Cameron Road Tauranga .NET User Group Link
TBA 8/477A Devon St East, Strandon New Plymouth .NET User Group TBA

 

I will update this schedule as more detail comes to light. Smile

Troubleshooting CRM 2011 Beta Outlook Client Configuration

In this post I’m documenting a couple of issues that I ran into to get CRM 2011 Beta Outlook up running for an CRM Online 2011 beta org.

Issue #1: IDCRL – a bug that causes authentication failures on machines with new versions of IDCRL that are distributed with Windows Live beta software

Symptoms:

When you attempt to login via the dialog below;

image

It would error:

image

In the configuration log file, you will find several messages on IDCRL:

>IDCRL - initializing the system for service {DF60E2DF-88AD-4526-AE21-83D130EF0F68}. >IDCRL - Waiting for lock. >IDCRL - freeing resource. >IDCRL - Released lock. >IDCRL - Waiting for lock. >IDCRL - logging on user [YOUR LIVE ID] to service {DF60E2DF-88AD-4526-AE21-83D130EF0F68} / partner urn:crm5:dynamics.com. >IDCRL - opening an identity for user [YOUR LIVE ID]. >IDCRL - logging on to passport using policy MBI_FED_SSL.

 

And eventually errors out with:

>Crm Exception: Message: Logon failed because credentials are invalid, ErrorCode: -2147204335 >Exception during Signin Microsoft.Crm.CrmException: Logon failed because credentials are invalid

 
The complete log are shown in the following;

Log file location: [Drive]:\Users\[Current User]\AppData\Local\Microsoft\MSCRM\Traces
 
[17:36:45.519] Process:Microsoft.Crm.Application.Outlook.ConfigWizard |Organization:00000000-0000-0000-0000-000000000000 |Thread: 11 |Category: Platform |User: 00000000-0000-0000-0000-000000000000 |Level: Info | FederationLogOnManager..ctor at FederationLogOnManager..ctor(String environment) at PassportAuthProvider`1.SignIn() at ClientAuthProvidersFactory`1.form_CredentialsEntered(Object sender, EventArgs e) at ExecutionContext.runTryCode(Object userData) at RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData) at ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) at QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() at ThreadPoolWorkQueue.Dispatch() at _ThreadPoolWaitCallback.PerformWaitCallback() >IDCRL - initializing the system for service {DF60E2DF-88AD-4526-AE21-83D130EF0F68}. [17:36:45.775] Process:Microsoft.Crm.Application.Outlook.ConfigWizard |Organization:00000000-0000-0000-0000-000000000000 |Thread: 11 |Category: Platform |User: 00000000-0000-0000-0000-000000000000 |Level: Info | PassportAuthProvider`1.SignIn at PassportAuthProvider`1.SignIn() at ClientAuthProvidersFactory`1.form_CredentialsEntered(Object sender, EventArgs e) at ExecutionContext.runTryCode(Object userData) at RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData) at ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) at QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() at ThreadPoolWorkQueue.Dispatch() at _ThreadPoolWaitCallback.PerformWaitCallback() >IDCRL - Waiting for lock. [17:36:45.781] Process:Microsoft.Crm.Application.Outlook.ConfigWizard |Organization:00000000-0000-0000-0000-000000000000 |Thread: 11 |Category: Platform |User: 00000000-0000-0000-0000-000000000000 |Level: Info | FederationLogOnManager.GetConfigurationData at FederationLogOnManager.GetConfigurationData(String item) at FederationLogOnManager.GetConfiguration() at PassportAuthProvider`1.SignIn() at ClientAuthProvidersFactory`1.form_CredentialsEntered(Object sender, EventArgs e) at ExecutionContext.runTryCode(Object userData) at RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData) at ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) at QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() at ThreadPoolWorkQueue.Dispatch() at _ThreadPoolWaitCallback.PerformWaitCallback() >IDCRL - freeing resource. [17:36:45.786] Process:Microsoft.Crm.Application.Outlook.ConfigWizard |Organization:00000000-0000-0000-0000-000000000000 |Thread: 11 |Category: Platform |User: 00000000-0000-0000-0000-000000000000 |Level: Info | FederationLogOnManager.GetConfigurationData at FederationLogOnManager.GetConfigurationData(String item) at FederationLogOnManager.GetConfiguration() at PassportAuthProvider`1.SignIn() at ClientAuthProvidersFactory`1.form_CredentialsEntered(Object sender, EventArgs e) at ExecutionContext.runTryCode(Object userData) at RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData) at ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) at QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() at ThreadPoolWorkQueue.Dispatch() at _ThreadPoolWaitCallback.PerformWaitCallback() >IDCRL - freeing resource. [17:36:45.791] Process:Microsoft.Crm.Application.Outlook.ConfigWizard |Organization:00000000-0000-0000-0000-000000000000 |Thread: 11 |Category: Platform |User: 00000000-0000-0000-0000-000000000000 |Level: Info | FederationLogOnManager.GetConfigurationData at FederationLogOnManager.GetConfigurationData(String item) at FederationLogOnManager.GetConfiguration() at PassportAuthProvider`1.SignIn() at ClientAuthProvidersFactory`1.form_CredentialsEntered(Object sender, EventArgs e) at ExecutionContext.runTryCode(Object userData) at RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData) at ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) at QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() at ThreadPoolWorkQueue.Dispatch() at _ThreadPoolWaitCallback.PerformWaitCallback() >IDCRL - freeing resource. [17:36:45.796] Process:Microsoft.Crm.Application.Outlook.ConfigWizard |Organization:00000000-0000-0000-0000-000000000000 |Thread: 11 |Category: Platform |User: 00000000-0000-0000-0000-000000000000 |Level: Info | FederationLogOnManager.GetConfigurationData at FederationLogOnManager.GetConfigurationData(String item) at FederationLogOnManager.GetConfiguration() at PassportAuthProvider`1.SignIn() at ClientAuthProvidersFactory`1.form_CredentialsEntered(Object sender, EventArgs e) at ExecutionContext.runTryCode(Object userData) at RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData) at ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) at QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() at ThreadPoolWorkQueue.Dispatch() at _ThreadPoolWaitCallback.PerformWaitCallback() >IDCRL - freeing resource. [17:36:45.801] Process:Microsoft.Crm.Application.Outlook.ConfigWizard |Organization:00000000-0000-0000-0000-000000000000 |Thread: 11 |Category: Platform |User: 00000000-0000-0000-0000-000000000000 |Level: Info | PassportAuthProvider`1.SignIn at PassportAuthProvider`1.SignIn() at ClientAuthProvidersFactory`1.form_CredentialsEntered(Object sender, EventArgs e) at ExecutionContext.runTryCode(Object userData) at RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData) at ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) at QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() at ThreadPoolWorkQueue.Dispatch() at _ThreadPoolWaitCallback.PerformWaitCallback() >IDCRL - Released lock. [17:36:45.805] Process:Microsoft.Crm.Application.Outlook.ConfigWizard |Organization:00000000-0000-0000-0000-000000000000 |Thread: 11 |Category: Platform |User: 00000000-0000-0000-0000-000000000000 |Level: Info | PassportAuthProvider`1.SignIn at PassportAuthProvider`1.SignIn() at ClientAuthProvidersFactory`1.form_CredentialsEntered(Object sender, EventArgs e) at ExecutionContext.runTryCode(Object userData) at RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData) at ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) at QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() at ThreadPoolWorkQueue.Dispatch() at _ThreadPoolWaitCallback.PerformWaitCallback() >IDCRL - Waiting for lock. [17:36:45.810] Process:Microsoft.Crm.Application.Outlook.ConfigWizard |Organization:00000000-0000-0000-0000-000000000000 |Thread: 11 |Category: Platform |User: 00000000-0000-0000-0000-000000000000 |Level: Info | PassportAuthProvider`1.SignIn at PassportAuthProvider`1.SignIn() at ClientAuthProvidersFactory`1.form_CredentialsEntered(Object sender, EventArgs e) at ExecutionContext.runTryCode(Object userData) at RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData) at ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) at QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() at ThreadPoolWorkQueue.Dispatch() at _ThreadPoolWaitCallback.PerformWaitCallback() >IDCRL - logging on user [YOUR LIVE ID] to service {DF60E2DF-88AD-4526-AE21-83D130EF0F68} / partner urn:crm5:dynamics.com. [17:36:45.814] Process:Microsoft.Crm.Application.Outlook.ConfigWizard |Organization:00000000-0000-0000-0000-000000000000 |Thread: 11 |Category: Platform |User: 00000000-0000-0000-0000-000000000000 |Level: Info | FederationLogOnManager.Logon at FederationLogOnManager.Logon(String userName, String password, String partner, String policy, String& memberName) at PassportAuthProvider`1.SignIn() at ClientAuthProvidersFactory`1.form_CredentialsEntered(Object sender, EventArgs e) at ExecutionContext.runTryCode(Object userData) at RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData) at ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) at QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() at ThreadPoolWorkQueue.Dispatch() at _ThreadPoolWaitCallback.PerformWaitCallback() >IDCRL - opening an identity for user [YOUR LIVE ID]. [17:36:45.830] Process:Microsoft.Crm.Application.Outlook.ConfigWizard |Organization:00000000-0000-0000-0000-000000000000 |Thread: 11 |Category: Platform |User: 00000000-0000-0000-0000-000000000000 |Level: Info | FederationLogOnManager.Logon at FederationLogOnManager.Logon(String userName, String password, String partner, String policy, String& memberName) at PassportAuthProvider`1.SignIn() at ClientAuthProvidersFactory`1.form_CredentialsEntered(Object sender, EventArgs e) at ExecutionContext.runTryCode(Object userData) at RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData) at ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) at QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() at ThreadPoolWorkQueue.Dispatch() at _ThreadPoolWaitCallback.PerformWaitCallback() >IDCRL - logging on to passport using policy MBI_FED_SSL. [17:36:45.835] Process:Microsoft.Crm.Application.Outlook.ConfigWizard |Organization:00000000-0000-0000-0000-000000000000 |Thread: 11 |Category: Exception |User: 00000000-0000-0000-0000-000000000000 |Level: Error | CrmException..ctor at CrmException..ctor(String message, Exception innerException, Int32 errorCode, Boolean isFlowControlException) at CrmException..ctor(String message, Int32 errorCode) at FederationLogOnManager.LogonPassport(String policy, String partner, LOGON_FLAG logonFlag) at FederationLogOnManager.Logon(String userName, String password, String partner, String policy, String& memberName) at PassportAuthProvider`1.SignIn() at ClientAuthProvidersFactory`1.form_CredentialsEntered(Object sender, EventArgs e) at ExecutionContext.runTryCode(Object userData) at RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData) at ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) at QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() at ThreadPoolWorkQueue.Dispatch() at _ThreadPoolWaitCallback.PerformWaitCallback() >Crm Exception: Message: LogonIdentityExWithUI(), ErrorCode: -2147186577 [17:36:45.840] Process:Microsoft.Crm.Application.Outlook.ConfigWizard |Organization:00000000-0000-0000-0000-000000000000 |Thread: 11 |Category: Platform |User: 00000000-0000-0000-0000-000000000000 |Level: Info | MiniDump.CreateDumpInternal at MiniDump.CreateDumpInternal(MiniDumpReasons reason, Exception exception) at CrmException..ctor(String message, Exception innerException, Int32 errorCode, Boolean isFlowControlException, Boolean enableTrace) at CrmException..ctor(String message, Exception innerException, Int32 errorCode, Boolean isFlowControlException) at CrmException..ctor(String message, Int32 errorCode) at FederationLogOnManager.LogonPassport(String policy, String partner, LOGON_FLAG logonFlag) at FederationLogOnManager.Logon(String userName, String password, String partner, String policy, String& memberName) at PassportAuthProvider`1.SignIn() at ClientAuthProvidersFactory`1.form_CredentialsEntered(Object sender, EventArgs e) at ExecutionContext.runTryCode(Object userData) at RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData) at ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) at QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() at ThreadPoolWorkQueue.Dispatch() at _ThreadPoolWaitCallback.PerformWaitCallback() >MiniDump: TraceDirectory setting not set or missing. Defaulting to temporary folder. [17:36:45.845] Process:Microsoft.Crm.Application.Outlook.ConfigWizard |Organization:00000000-0000-0000-0000-000000000000 |Thread: 11 |Category: Exception |User: 00000000-0000-0000-0000-000000000000 |Level: Error | CrmException..ctor at CrmException..ctor(String message, Exception innerException, Int32 errorCode, Boolean isFlowControlException) at CrmException..ctor(String message, Int32 errorCode) at PassportAuthProvider`1.SignIn() at ClientAuthProvidersFactory`1.form_CredentialsEntered(Object sender, EventArgs e) at ExecutionContext.runTryCode(Object userData) at RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData) at ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) at QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() at ThreadPoolWorkQueue.Dispatch() at _ThreadPoolWaitCallback.PerformWaitCallback() >Crm Exception: Message: Logon failed because credentials are invalid, ErrorCode: -2147204335 [17:36:45.850] Process:Microsoft.Crm.Application.Outlook.ConfigWizard |Organization:00000000-0000-0000-0000-000000000000 |Thread: 11 |Category: Platform |User: 00000000-0000-0000-0000-000000000000 |Level: Info | MiniDump.CreateDumpInternal at MiniDump.CreateDumpInternal(MiniDumpReasons reason, Exception exception) at CrmException..ctor(String message, Exception innerException, Int32 errorCode, Boolean isFlowControlException, Boolean enableTrace) at CrmException..ctor(String message, Exception innerException, Int32 errorCode, Boolean isFlowControlException) at CrmException..ctor(String message, Int32 errorCode) at PassportAuthProvider`1.SignIn() at ClientAuthProvidersFactory`1.form_CredentialsEntered(Object sender, EventArgs e) at ExecutionContext.runTryCode(Object userData) at RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData) at ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) at QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() at ThreadPoolWorkQueue.Dispatch() at _ThreadPoolWaitCallback.PerformWaitCallback() >MiniDump: TraceDirectory setting not set or missing. Defaulting to temporary folder. [17:36:45.855] Process:Microsoft.Crm.Application.Outlook.ConfigWizard |Organization:00000000-0000-0000-0000-000000000000 |Thread: 11 |Category: Platform |User: 00000000-0000-0000-0000-000000000000 |Level: Info | FederationLogOnManager.Dispose at FederationLogOnManager.Dispose() at PassportAuthProvider`1.SignIn() at ClientAuthProvidersFactory`1.form_CredentialsEntered(Object sender, EventArgs e) at ExecutionContext.runTryCode(Object userData) at RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData) at ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) at QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() at ThreadPoolWorkQueue.Dispatch() at _ThreadPoolWaitCallback.PerformWaitCallback() >IDCRL - closing the current identity. [17:36:45.861] Process:Microsoft.Crm.Application.Outlook.ConfigWizard |Organization:00000000-0000-0000-0000-000000000000 |Thread: 11 |Category: Platform |User: 00000000-0000-0000-0000-000000000000 |Level: Info | PassportAuthProvider`1.SignIn at PassportAuthProvider`1.SignIn() at ClientAuthProvidersFactory`1.form_CredentialsEntered(Object sender, EventArgs e) at ExecutionContext.runTryCode(Object userData) at RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData) at ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) at QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() at ThreadPoolWorkQueue.Dispatch() at _ThreadPoolWaitCallback.PerformWaitCallback() >IDCRL - un-initializing the system. [17:36:45.869] Process:Microsoft.Crm.Application.Outlook.ConfigWizard |Organization:3046abc7-8c5a-4304-a463-bb52c6008005 |Thread: 11 |Category: Application.Outlook |User: 00000000-0000-0000-0000-000000000000 |Level: Error | ClientAuthProvidersFactory`1.form_CredentialsEntered at ClientAuthProvidersFactory`1.form_CredentialsEntered(Object sender, EventArgs e) at ExecutionContext.runTryCode(Object userData) at RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData) at ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) at QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() at ThreadPoolWorkQueue.Dispatch() at _ThreadPoolWaitCallback.PerformWaitCallback() >Exception during Signin Microsoft.Crm.CrmException: Logon failed because credentials are invalid at Microsoft.Crm.Outlook.ClientAuth.PassportAuthProvider`1.SignIn() at Microsoft.Crm.Outlook.ClientAuth.ClientAuthProvidersFactory`1.form_CredentialsEntered(Object sender, EventArgs e)

 

Also, check that this key [IDCRLVersion] is indeed 7.x, then this is the issue.

Registry Key: [HKLM\SOFTWARE\Microsoft\IdentityCRL]

image

Resolution:

1) Uninstall Windows Live Essential 2011 from Add or Remove Programs

2) Install IDCR 6.5 (32 or 64 bit depending on OS) from http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=5e193cfe-f45a-4e29-b6b7-984e7802c639

3) Configure Outlook Client

Reference Link:

http://social.microsoft.com/Forums/en-US/crm2011beta/thread/e54c4040-3989-4a91-abfc-c6a50f6645aa

 

Issue #2: If you are on 64-bit Office, you will need to install both the 32-bit and 64-bit version of SQL CE first before configuring CRM for outlook.

Symptoms:

In the configuration log, the key message to spot is:

Error| Exception : Unable to load the native components of SQL Server Compact corresponding to the ADO.NET provider of version 8082

The complete log are shown in the following;

11:02:13|Verbose| Method entry: Microsoft.Crm.Application.Outlook.Config.ConfigEngine.Execute 11:02:13|Verbose| Method entry: Microsoft.Crm.Application.Outlook.Config.ConfigEngine.GetActionList 11:02:13| Info| Action type : Add. 11:02:13| Info| Add GlobalRepositoryConfigurator. 11:02:13| Info| Add AddinConfigurator. 11:02:13| Info| Add OrganizationRepositoryConfigurator. 11:02:13| Info| Add PrimaryConfigurator. 11:02:13| Info| Add OutlookConfigurator. 11:02:13| Info| Add FinalConfiguratorConfigurator. 11:02:13|Verbose| Method exit: Microsoft.Crm.Application.Outlook.Config.ConfigEngine.GetActionList 11:02:13| Info| Get action list. 11:02:13| Info| Get action total progress : 55. 11:02:13|Verbose| Method entry: Microsoft.Crm.Application.Outlook.Config.ConfigEngine.GetActionEntry 11:02:13| Info| Action command type : Add. 11:02:13|Verbose| Method entry: Microsoft.Crm.Application.Outlook.Config.ConfigEngine.Configure 11:02:13|Verbose| Method entry: Microsoft.Crm.Application.Outlook.Config.GlobalRepositoryConfigurator.Configure 11:02:13|Verbose| Method entry: Microsoft.Crm.Application.Outlook.Config.GlobalRepositoryConfigurator+DeleteUserApplicationFilesAction.DeleteUserApplicationFilesAction 11:02:13|Verbose| Method exit: Microsoft.Crm.Application.Outlook.Config.GlobalRepositoryConfigurator+DeleteUserApplicationFilesAction.DeleteUserApplicationFilesAction 11:02:13| Info| Deleted user application files. 11:02:13|Verbose| Method entry: Microsoft.Crm.Application.Outlook.Config.GlobalRepositoryConfigurator.SetConfigurationRegistryValuesAction 11:02:13|Verbose| Method entry: Microsoft.Crm.Application.Outlook.Config.GlobalRepositoryConfigurator.SetClientRegistryDefaultSettings 11:02:13| Info| Copied registry values created by setup in HKLM to HKCU on configuration 11:02:13|Verbose| Method exit: Microsoft.Crm.Application.Outlook.Config.GlobalRepositoryConfigurator.SetClientRegistryDefaultSettings 11:02:13| Info| Set default settings to client configuration. 11:02:13|Verbose| Method entry: Microsoft.Crm.Application.Outlook.Config.GlobalRepositoryConfigurator.SetLaptopClientRegistryValues 11:02:13|Verbose| Method entry: Microsoft.Crm.Application.Outlook.Config.ConfigInfo.GetAspDotNetPath 11:02:13| Info| ASP Net version key name : Software\Microsoft\ASP.NET\4.0.30319.0 11:02:13| Info| ASP Net install path : C:\Windows\Microsoft.NET\Framework64\v4.0.30319 11:02:13|Verbose| Method exit: Microsoft.Crm.Application.Outlook.Config.ConfigInfo.GetAspDotNetPath 11:02:13| Info| Created Crm allow list key. 11:02:13|Verbose| Method exit: Microsoft.Crm.Application.Outlook.Config.GlobalRepositoryConfigurator.SetLaptopClientRegistryValues 11:02:13| Info| Set laptop client registry key values. 11:02:13|Verbose| Method entry: Microsoft.Crm.Application.Outlook.Config.GlobalRepositoryConfigurator.SetPlatformRootAction 11:02:13| Info| No extended chars in https://mydomain.com/mycrmorg/XRMServices/2011/Organization.svc were found. No need for short naming. 11:02:13| Info| Set platform root registry keys. 11:02:13|Verbose| Method exit: Microsoft.Crm.Application.Outlook.Config.GlobalRepositoryConfigurator.SetPlatformRootAction 11:02:13| Info| Set platform root key value. 11:02:13| Info| Set user id registry key. 11:02:13|Verbose| Method exit: Microsoft.Crm.Application.Outlook.Config.GlobalRepositoryConfigurator.SetConfigurationRegistryValuesAction 11:02:13| Info| Set configuration registry key values. 11:02:13|Verbose| Method entry: Microsoft.Crm.Application.Outlook.Config.GlobalRepositoryConfigurator.SetConfigureFinishAction 11:02:13|Verbose| Method exit: Microsoft.Crm.Application.Outlook.Config.GlobalRepositoryConfigurator.SetConfigureFinishAction 11:02:13| Info| Set configuration finish registry key values. 11:02:13|Verbose| Method exit: Microsoft.Crm.Application.Outlook.Config.GlobalRepositoryConfigurator.Configure 11:02:13|Verbose| Method entry: Microsoft.Crm.Application.Outlook.Config.AddinConfigurator.Configure 11:02:13|Verbose| Method entry: Microsoft.Crm.Application.Outlook.Config.AddinConfigurator.SetCrmAddinRegistryValuesAction 11:02:13| Info| Enable the crm ribbon addin keys under Software\Microsoft\Office\Outlook\Addins\crmaddin.RibbonAddin 11:02:13| Info| Delete the resiliency keys under Software\Microsoft\Office 11:02:13| Info| Delete the resiliency keys under Software\Microsoft\Office 11:02:13| Info| Delete the resiliency keys under Software\Microsoft\Office 11:02:13|Verbose| Method exit: Microsoft.Crm.Application.Outlook.Config.AddinConfigurator.SetCrmAddinRegistryValuesAction 11:02:13|Verbose| Method entry: Microsoft.Crm.Application.Outlook.Config.AddinConfigurator.SetFixedRegistryValuesAction 11:02:13| Info| Registered the form region for IPM.Note in Office registry hive. 11:02:13| Info| Registered the form region for IPM.Appointment in Office registry hive. 11:02:13| Info| Registered the form region for CRM.Note in Office registry hive. 11:02:13| Info| Registered the form region for CRM.Task in Office registry hive. 11:02:13| Info| Registered the form region for CRM.Contact in Office registry hive. 11:02:13| Info| Registered the form region for CRM.Task in Office registry hive. 11:02:13| Info| Registered the form region for CRM.Contact in Office registry hive. 11:02:13|Verbose| Method exit: Microsoft.Crm.Application.Outlook.Config.AddinConfigurator.SetFixedRegistryValuesAction 11:02:13|Verbose| Method entry: Microsoft.Crm.Application.Outlook.Config.AddinConfigurator.CreateIntegrationKey 11:02:13| Info| Created Crm integrate key. 11:02:13|Verbose| Method exit: Microsoft.Crm.Application.Outlook.Config.AddinConfigurator.CreateIntegrationKey 11:02:13|Verbose| Method exit: Microsoft.Crm.Application.Outlook.Config.AddinConfigurator.Configure 11:02:13|Verbose| Method entry: Microsoft.Crm.Application.Outlook.Config.OrganizationRepositoryConfigurator.Configure 11:02:13|Verbose| Method entry: Microsoft.Crm.Application.Outlook.Config.OrganizationRepositoryConfigurator.SetContextValues 11:02:14|Verbose| Method exit: Microsoft.Crm.Application.Outlook.Config.OrganizationRepositoryConfigurator.SetContextValues 11:02:14| Info| Set org-based registry values. 11:02:14|Verbose| Method exit: Microsoft.Crm.Application.Outlook.Config.OrganizationRepositoryConfigurator.Configure 11:02:14|Verbose| Method entry: Microsoft.Crm.Application.Outlook.Config.PrimaryConfigurator.Configure 11:02:14|Verbose| Method entry: Microsoft.Crm.Application.Outlook.Config.PrimaryConfigurator.SetPrimaryContextValues 11:02:14|Verbose| Method exit: Microsoft.Crm.Application.Outlook.Config.PrimaryConfigurator.SetPrimaryContextValues 11:02:14| Info| Set Primary Org values. 11:02:14|Verbose| Method exit: Microsoft.Crm.Application.Outlook.Config.PrimaryConfigurator.Configure 11:02:14|Verbose| Method entry: Microsoft.Crm.Application.Outlook.Config.OutlookConfigurator.Configure 11:02:14|Verbose| Method entry: Microsoft.Crm.Application.Outlook.Config.OutlookConfigurator.InitializeMapiStoreForFirstTime 11:03:05| Error| Exception : Unable to load the native components of SQL Server Compact corresponding to the ADO.NET provider of version 8082. Install the correct version of SQL Server Compact. Refer to KB article 974247 for more details. at System.Data.SqlServerCe.NativeMethods.LoadNativeBinaries() at System.Data.SqlServerCe.SqlCeEngine..ctor() at Microsoft.Crm.Application.SMWrappers.CrmSqlCeDatabase.CreateDatabase(Boolean force) at Microsoft.Crm.Application.SMWrappers.CrmSqlCeDatabase.Initialize() at Microsoft.Crm.Application.SMWrappers.CacheDataProvider.Microsoft.Crm.IClientCrmCacheSqlConnector.GetEntry(String rootKey, String key) at Microsoft.Crm.ClientCrmCache`1.TryLookupEntryAsObjectNoLock(String key, Object&; value) at Microsoft.Crm.ClientCrmCache`1.TryLookupEntryNoLock(String key, TValue&; value) at Microsoft.Crm.ClientCrmCache`1.TryLookupEntry(String key, TValue&; value) at Microsoft.Crm.Caching.CrmMultiOrgCache`2.LookupEntry(TKey key, IOrganizationContext context) at Microsoft.Crm.Application.Outlook.Config.OutlookConfigurator.InitializeMapiStoreForFirstTime() at Microsoft.Crm.Application.Outlook.Config.OutlookConfigurator.Configure(IProgressEventHandler progressEventHandler) at Microsoft.Crm.Application.Outlook.Config.ConfigEngine.Configure(Object stateInfo) 11:03:05| Error| Exception : Unable to load DLL 'sqlceme35.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E) at System.Data.SqlServerCe.NativeMethods.GetSqlCeVersionInfo(IntPtr&; pwszVersion) at System.Data.SqlServerCe.NativeMethods.LoadValidLibrary(String modulePath, Int32 moduleVersion) at System.Data.SqlServerCe.NativeMethods.LoadNativeBinaries() 11:03:09|Verbose| Method entry: Microsoft.Crm.Application.Outlook.Config.ConfigEngine.Undo 11:03:09|Verbose| Method entry: Microsoft.Crm.Application.Outlook.Config.OutlookConfigurator.Unconfigure 11:03:09|Verbose| Method exit: Microsoft.Crm.Application.Outlook.Config.OutlookConfigurator.Unconfigure 11:03:09|Verbose| Method entry: Microsoft.Crm.Application.Outlook.Config.OrganizationRepositoryConfigurator.Unconfigure 11:03:09|Verbose| Method entry: Microsoft.Crm.Application.Outlook.Config.OrganizationRepositoryConfigurator.RemoveContextValues 11:03:09| Info| Delete org-based registry keys. 11:03:09|Verbose| Method exit: Microsoft.Crm.Application.Outlook.Config.OrganizationRepositoryConfigurator.RemoveContextValues 11:03:09| Info| Remove org-based registry values. 11:03:09|Verbose| Method exit: Microsoft.Crm.Application.Outlook.Config.OrganizationRepositoryConfigurator.Unconfigure 11:03:09|Verbose| Method entry: Microsoft.Crm.Application.Outlook.Config.AddinConfigurator.Unconfigure 11:03:09|Verbose| Method entry: Microsoft.Crm.Application.Outlook.Config.AddinConfigurator.RemoveFixedRegistryValuesAction 11:03:09|Verbose| Method exit: Microsoft.Crm.Application.Outlook.Config.AddinConfigurator.RemoveFixedRegistryValuesAction 11:03:09|Verbose| Method entry: Microsoft.Crm.Application.Outlook.Config.AddinConfigurator.RemoveIntegrationKey 11:03:09|Verbose| Method exit: Microsoft.Crm.Application.Outlook.Config.AddinConfigurator.RemoveIntegrationKey 11:03:09|Verbose| Method exit: Microsoft.Crm.Application.Outlook.Config.AddinConfigurator.Unconfigure 11:03:09|Verbose| Method entry: Microsoft.Crm.Application.Outlook.Config.GlobalRepositoryConfigurator.Unconfigure 11:03:09|Verbose| Method entry: Microsoft.Crm.Application.Outlook.Config.GlobalRepositoryConfigurator.StopApplicationHosterAction 11:03:10|Verbose| Method exit: Microsoft.Crm.Application.Outlook.Config.GlobalRepositoryConfigurator.StopApplicationHosterAction 11:03:10| Info| Stopped application hoster. 11:03:10|Verbose| Method entry: Microsoft.Crm.Application.Outlook.Config.GlobalRepositoryConfigurator.RemoveApplicationhosterSettings 11:03:10| Info| Deleted Application hoster registry value. 11:03:10|Verbose| Method exit: Microsoft.Crm.Application.Outlook.Config.GlobalRepositoryConfigurator.RemoveApplicationhosterSettings 11:03:10| Info| Removed application hoster settings. 11:03:10|Verbose| Method entry: Microsoft.Crm.Application.Outlook.Config.GlobalRepositoryConfigurator+DeleteUserApplicationFilesAction.DeleteUserApplicationFilesAction 11:03:10|Verbose| Method exit: Microsoft.Crm.Application.Outlook.Config.GlobalRepositoryConfigurator+DeleteUserApplicationFilesAction.DeleteUserApplicationFilesAction 11:03:10| Info| Deleted user application files. 11:03:10|Verbose| Method entry: Microsoft.Crm.Application.Outlook.Config.GlobalRepositoryConfigurator.RemoveConfigurationRegistryValuesAction 11:03:10|Verbose| Method entry: Microsoft.Crm.Application.Outlook.Config.GlobalRepositoryConfigurator.RemoveLaptopClientRegistryValues 11:03:10| Info| Deleted Crm allow list key. 11:03:10|Verbose| Method exit: Microsoft.Crm.Application.Outlook.Config.GlobalRepositoryConfigurator.RemoveLaptopClientRegistryValues 11:03:10| Info| Removed Laptop client registry keys. 11:03:10|Verbose| Method exit: Microsoft.Crm.Application.Outlook.Config.GlobalRepositoryConfigurator.RemoveConfigurationRegistryValuesAction 11:03:10| Info| Removed Crm client registry keys. 11:03:10|Verbose| Method exit: Microsoft.Crm.Application.Outlook.Config.GlobalRepositoryConfigurator.Unconfigure 11:03:10|Verbose| Method exit: Microsoft.Crm.Application.Outlook.Config.ConfigEngine.Undo 11:03:10| Error| Failed to configure Microsoft Dynamics CRM for Outlook with Utilise IT. 11:03:10|Verbose| Method exit: Microsoft.Crm.Application.Outlook.Config.ConfigEngine.Configure 11:03:10| Error| Exception : Cannot configure the organization for Microsoft Dynamics CRM for Outlook. Try to configure the organization again. If the problem persists, contact your system administrator. at Microsoft.Crm.Application.Outlook.Config.ConfigEngine.Execute(ActionCommand command, ServerInfo serverInfo) at Microsoft.Crm.Application.Outlook.Config.ServerForm.<InitializeBackgroundWorkers>b__3(Object sender, RunWorkerCompletedEventArgs e)

 

Resolution: – from Beta Readme.

Before you can configure Microsoft Dynamics CRM for Outlook, you must install both the 32-bit and 64-bit versions of Microsoft SQL Server Compact Edition, which is a prerequisite for Microsoft Dynamics CRM for Outlook. First, install both the 32-bit and 64-bit versions of SQL Server CE, and then install Microsoft Dynamics CRM for Outlook again.

Click the following 32-bit and 64-bit links to download and install SQL Server CE in the language that you are using:

Reference:

http://go.microsoft.com/fwlink/?LinkId=200379

I’m a Microsoft Dynamics CRM MVP

 

 

Today, I received in my email from the local MVP lead that I have been awarded MVP for Microsoft Dynamics CRM. This is a key milestone for my career.

Here is the link to my profile
https://mvp.support.microsoft.com/profile=B5DFBCFB-2905-4C10-B3DA-5AF445762C3B

Here I’d like to say thanks to a few that I can’t have possibly achieved this without…

1. Thanks to MSFT for giving me this recognition for my contribution to the local technical community and Rose for nominating me 🙂

2. Thanks to Tokes http://andrewtokeley.net/, my mentor back at Intergen day. Thanks for your relentless nurturing and help in my Intergen days and beyond.

3. Chris Auld http://www.syringe.net.nz/, thanks for taking me under your wings and inspiring me along the way.

4. @TeamIntergen – my last employer, thanks for giving me the great opportunities to work on the most challenging projects there are in New Zealand along with a team of awesome Intergenites.

5. Thanks to folks from local MBS and DPE team: Darryl Burling, Catherine Eibner, Stuart Gibbs, Dirk Develter.

6. Mostly importantly, thanks to everyone in the local Dynamics community, you are the stars!!!

CRM Jargon in Chinese

The background:

This is a way overdue post from earlier this year when I delivered some training courses in Mandarin Chinese in China.

Fact is, I had to translate over 300 pages of PPT slides from English to Chinese. So I picked up a lot of CRM jargons in Chinese in a very short period of time. The training courses I delivered were Business Action World Tour in Beijing and Shanghai, which was a 200 level, 4 hours session on xRM with various other MSFT technologies. And Business Action Training Tour, a 300 level 2 day full on training course diving deep on BAWT contents in Guangzhou.

The irony: – 恶补中文!(惡補中文!)

“But aren’t you a native Chinese speaker?” I hear you ask, and “yes” is the answer. However I can articulate these terms well in English since I learnt them in English, but I really had to learn what they are in Chinese as some of them are quite technical.

It’s rather ironic. When my Dad decided that I should become a shepherd and sent me to New Zealand 10 years ago, I had to learn the language – Engrish – pretty much from ground up. The only language that I did know was Chinese, so you’d see Chinese translations scribbled all over the English text I’d have been given to study. This time around, you still see Chinese translations of the English words all over my PPTs. But I was learning Chinese this time rather than English…

The content:

So I’ve compiled a list of these terms from my recollection and I will amend it as I remember more. Some are really simple, others are pretty technical.

English (en-nz) Simplified Chinese (zh-cn) Traditional Chinese
(zh-tw)
CRM 客户关系管理 客戶關係管理
Seamless integration 无缝集成 無縫集成
Multi-currency 多币种 多弊種
Multi-language 多语言 多語言
Marketing Analysis 市场营销分析 市場營銷分析
Data Cleansing 数据清理 數據清理
Opportunity 商业机会,市场机会 商業機會,市場機會
Lead 潜在客户,潜在顾客 潛在客戶,潛在顧客
Contact 联系人,关联者 聯繫人,關連人
Cost 成本 成本
Profit 利润 利潤
Revenue 收入 收入
Sunk cost 沉没成本 沉沒成本
Liability 负债 負債
Equity 所有者权益 所有者權益
Capital 资本 資本
Asset 资产 資產
Marketing Campaign 市场活动 市場活動
Marketing campaign response 市场活动响应 市場活動響應
Mail merge template 邮件合并模板 郵件合併模板
Lead qualification 潜在客户验证 潛在客戶驗證
Customer Loyalty 客户忠诚度 客戶忠誠度
Return on Investment (ROI) 投资回报 投資回報
Service Level Agreement (SLA) 服务级别协议 服務及別協議
Business process 业务流程 業務流程
Real time communication 实时交流 實時交流
Marketing channels 商业渠道 商業渠道
Response rate 响应率 響應率
Sales target 销售指标 銷售指標
Trending analysis 趋势分析 趨勢分析
Up sale 升级销售 升級銷售
Cross sale 交叉销售 交叉銷售
Workflow customization 工作流定义 工作流定義
Workflow rule 工作流规则 工作流規則
Dashboard 监控看板 監控看板
Online marketing 在线营销 在線營銷
Telemarketing 电话营销 電話營銷
Custom UI 自定义用户界面 資定義用戶界面
Support call 支持请求 支持請求
Support case 支持案例 支持案例
Case management 案例管理 案例管理
Customer satisfaction 客户满意度 客戶滿意度
Customer experience 客户体验 客戶體驗
Self service web portal 自助网站 自助網站
Communication channel 交互渠道 交互渠道
Knowledge base 知识库 知識庫
Consistent customer service experience 始终如一的客服体验 始終如一的客戶體驗
Client side scripting 代理脚本 代理腳本
Call centre 呼叫服务中心 呼叫服務中心
Knowledge base article (KBA) 知识库文章 知識庫文章
Third party integration 第三方集成 第三方集成
Quote, sales order, contracts 报价,订单,合同 報價, 訂單, 合同
Offline access 脱机访问 託機訪問
Sales cycle 销售周期 銷售周期
Line of business application (LOB) 商业应用系统 商業應用系統
Follow up process 跟踪流程 跟蹤流程
Lead routing 分派潜在客户 分派潛在客戶
Win rate 成交率 成交率
Wizard driven 向导驱动 嚮導驅動
Customer interactions 客户交互 客戶交互
Open proposal 未决报价 未決報價
From proposal to invoice 从报价到开票 從報價到開票
Close sales 成交 成交
Sales literature 销售宣传资料 銷售宣傳資料
Sales metrics 销售度量 銷售度量
Performance indicator 业绩指标 業績指標
Product catalog 产品目录 產品目錄
Sales pipeline 销售来源 銷售來源
Customer retention 客户保留 客戶保留
Scalability 可伸展性 可伸展性
Software as a Service (SaaS) 软件即服务 軟件即服務
On-Premise deployment 内部部署 內部部署
Custom development 二次开发 二次開發
Plugins 插件 插件
Data visualization 数据可视化 數據可視化
Mobile development 嵌入式开发 嵌入式開發
Vector-based composition 基于矢量的组成 基於矢量的組成
Extensibility 扩展性 擴展性
databinding 数据绑定 數據綁定
Full trust application 全信托应用程序 全信託應用程序
Business productivity 商业效率 商業效率
Business intelligence 商业智能 商業知能
Unified communication 统一通讯 統一通訊
Enterprise search 企业搜索 企業搜索
Office Business Application (OBA) 办公商业应用 辦公商業應用
Web Portal 门户网站 門戶網站
Enterprise Content Management (ECM) 企业内容管理 企業內容管理
Workspace 工作空间 工作空間
Instant messaging 即时通讯 即時通訊
Enterprise Service Bus (ESB) 企业服务总线 企業服務總線
Partner hosted deployment 合作伙伴托管部署 合作夥伴託管部署
Authentication, authorization 认证,授权 認證, 授權
Transaction 事务 事務
Access control 访问控制 訪問控制
Metering, billing 计量,计费 計量, 計費
Platform providers 平台提供商 平台提供商
Industry solution providers 行业解决方案供应商 行業解決方案提供商
Independent Software Vendor (ISV) 软件开发商 軟件開發商
Value Added Resellers (VARs) 增值经销商 增值經銷商
System Integrators (SIs) 系统集成商 系統集成商
Distributors 分销商 分銷商
Multi-tenancy 多托管者架构 多托管者架構
Hosting provider 托管商 托管商
Tenant 托管者 托管者
Database failover 数据库切换 數據庫切換
Downtime 中断时间 中斷時間

Troubleshooting CRM Data Connector

The background:

So, I was called in to troubleshoot a CRM Reporting issue a client had, they had CRM Server front end, SQL Server 2008 + SSRS on the backend server – simple setup.

First thing first, CRM Data Connector is just another name (the real name) for Microsoft Dynamics CRM 4.0 Connector for SQL Reporting Services.

A quick revision and the purpose of the Data Connector

From Barry Givens’ post:

  1. Reports in CRM 4.0 are running out of this thing called “SQL Reporting Services Report Viewer” which is plainly an ASP.Net control that runs on the CRM 4.0 Web server. So when users view reports in CRM 4.0, they are hitting up a URL on the CRM 4.0 Web Server.
  2. Because of this, CRM 4.0 reports are always run in a delegated mode, the CRM and SSRS integration has to handle security. This requires us to use integrated authentication and configure trust for delegation between the CRM server, the SSRS server and the SQL server with the CRM database. [Refer to HOW TO: Configure Kerberos authentication for Microsoft CRM 3.0 and Microsoft SQL Server Reporting Services and Microsoft CRM 3.0: Additional Setup Tasks Required if Reporting Services Is Installed on Different Server.]
  3. MSFT decided to make our life less miserable by shipping this Data Connector with CRM 4.0. It is essentially an SSRS Data Processing Extension and handles all of the delegation for us so that we no longer have to fiddle around Kerberos etc, which wasn’t an option in version 3.0.

Right, back to our problem at hand;

The symptoms:

1. When users try to run a SSRS report via CRM Web App, they get a 401.

[{date time}] Process: w3wp |Organization:{Org Guid}
|Thread: 5
|Category: Application
|User: 00000000-0000-0000-0000-000000000000
|Level: Error
| ErrorInformation.LogError
>MSCRM Error Report:
--------------------------------------------------------------------------------------------------------
Error: Exception of type 'System.Web.HttpUnhandledException' was thrown.
Error Number: 0x80040494
Error Message: The request failed with HTTP status 401: Unauthorized.
Error Details: The request failed with HTTP status 401: Unauthorized.
Source File: Not available
Line Number: Not available
Request URL: http://{IPAddress}:5555/{OrgName}/CRMReports/rsviewer/reportviewer.aspx
Stack Trace Info: [WebException: The request failed with HTTP status 401: Unauthorized.]
at Microsoft.SqlServer.ReportingServices2005.Execution.RSExecutionConnection.GetSecureMethods()
at Microsoft.SqlServer.ReportingServices2005.Execution.RSExecutionConnection.IsSecureMethod(String methodname)
at Microsoft.SqlServer.ReportingServices2005.Execution.RSExecutionConnection.LoadReport(String Report, String HistoryID)
at Microsoft.Reporting.WebForms.ServerReport.GetExecutionInfo()
at Microsoft.Reporting.WebForms.ServerReport.SetParameters(IEnumerable`1 parameters)
at Microsoft.Crm.Web.Reporting.SrsReportViewer.ConfigurePage()
[CrmReportingException: The request failed with HTTP status 401: Unauthorized.]
at Microsoft.Crm.Web.Reporting.SrsReportViewer.ConfigurePage()
at Microsoft.Crm.Application.Controls.AppUIPage.OnPreRender(EventArgs e)
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
[HttpUnhandledException: Exception of type 'System.Web.HttpUnhandledException' was thrown.]
at System.Web.UI.Page.HandleError(Exception e)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.ProcessRequest()
at System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context)
at System.Web.UI.Page.ProcessRequest(HttpContext context)
at ASP.{OrgName}_crmreports_rsviewer_reportviewer_aspx.ProcessRequest(HttpContext context)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

2. However, users can directly run the reports via report server URL.

3. When user click on the Preview arrow to the left of each report, like the one shown below;

image

They are greeted with the following error message;

“Reports cannot be run because the Connector for Microsoft SQL Server Reporting Services, a required component for reporting, is not installed on the server that is running Microsoft SQL Server Reporting Services.”

image

4. This is accompanied by the following error message in the CRM Web trace;

[{Date & Time}] Process: w3wp
|Organization:{Org Guid}
|Thread: 6
|Category: Application
|User: 00000000-0000-0000-0000-000000000000
|Level: Error
| ErrorInformation.LogError
>MSCRM Error Report:
--------------------------------------------------------------------------------------------------------
Error: Exception of type 'System.Web.HttpUnhandledException' was thrown.
Error Number: 0x80040492
Error Message: MSCRM Data Connector Not Installed
Error Details: MSCRM Data Connector Not Installed
Source File: Not available
Line Number: Not available
Request URL: http://{IPAddress}:5555/{OrgName}/_grid/preview.aspx?type=9100&id={Report Guid}
Stack Trace Info: [CrmException: MSCRM Data Connector Not Installed]
at Microsoft.Crm.ObjectModel.ReportService.GetReportServer(ExecutionContext context, Boolean verifyAndConfigDataConnector)
at Microsoft.Crm.ObjectModel.ReportService.ListSnapshots(Guid reportId, ExecutionContext context, String[]& HistoryIds, DateTime[]& CreatedDates)
[TargetInvocationException: Exception has been thrown by the target of an invocation.]
at Microsoft.Crm.Application.Utility.Util.RaiseXMLError(Exception exception)
at Microsoft.Crm.Application.Pages.Grids.PreviewPage.ConfigurePage()
at Microsoft.Crm.Application.Controls.AppUIPage.OnPreRender(EventArgs e)
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
[HttpUnhandledException: Exception of type 'System.Web.HttpUnhandledException' was thrown.]
at System.Web.UI.Page.HandleError(Exception e)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.ProcessRequest()
at System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context)
at System.Web.UI.Page.ProcessRequest(HttpContext context)
at ASP.{OrgName}__grid_preview_aspx.ProcessRequest(HttpContext context)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

Diagnosis and resolution:

The fact that users are able to browse to the reports via report server and getting a 401 via CRM Web application, suggests the Data Connector is playing up. The second error message about Data Connector confirms this assumption. So we decided to reinstall Data Connector. The steps we did this in are the following;

1. Uninstall Data Connector from Add and Remove Programs.

2. Reinstall Data Connector from command line and the following configuration file.

3. Restart SSRS.

4. Recycle CRM AppPool or IISRESET.

5. Verify it works by firing up new IE and run up the reports.

6. Ask for your managers for a pay rise.

IMPORTANT points to remember when installing CRM Data Connector:

  1. Data Connector must be installed on the same server as the SQL Server Reporting Services instance that your CRM Server is using!
  2. If CRM is using a SQL Server 2008 backend, we must download an installer update file (.msp) from this KB article [How to obtain the setup updates for Microsoft Dynamics CRM 4.0] and install it via command line and a XML configuration file. (Refer to page 97 of the Install Guide for details.)
  3. If there are more than more SQL Server Reporting Services instances on the same server, the Reporting Server Uri and the instance name must be specified in the configuration file. (Like the one shown below.)
  4. Always remember to restart SSRS and IISRESET the CRM Web application before verify this has worked.

<crmsetup>
<srsdataconnector>
<configdbserver></configdbserver>
<autoupdateconfigdb>1</autoupdateconfigdb>
<reportserverurl>http://servername/reportserver_SSRS2008</reportserverurl>
<autogroupmanagementoff>0</autogroupmanagementoff>
<instancename>SSRS2008</instancename>
<configsku>OnPremise</configsku>
<!-- Set enabled = true for DB webstore integration.  Set configdb="true" for config db webstore integration-->
<webstore enabled="false" configdb="false" />
<monitoring>
<!-- Monitoring service account name and password. It can not be local system or network service account -->
<serviceaccountname></serviceaccountname>
<serviceaccountpassword></serviceaccountpassword>
</monitoring>
</srsdataconnector>
</crmsetup>

There you go, happy CRM’in 🙂

Failure: The SQL Server ‘{0}’ is unavailable

The Background:

I’ve started working with Microsoft Dynamics CRM since early days of version 3.0 and have done “quite a few” installations over the years. However, this is a new one to me…

This particular setup has a front end CRM Server and a SQL Server 2008 and SSRS backend. It was for a client in the banking industry that runs  mission critical applications, as a result their IT infrastructure is very much locked down and they have M to the power of N layers of firewall in between the CRM Server and their SQL Server; with *everything* enforced via group policies.

The Problem:

When we install CRM on the CRM server, on the very last check list dialog it one warning and one error that prevented the installation from going ahead;

The warning message:

|Warning| Check SqlServerAgentValidator : Warning: Setup was unable to verify that SQL Server Agent (SqlAgent$crm) was running.

The error message:

|  Error| Check CrmSqlDomainValidator : Failure: The SQL Server ‘{0}’ is unavailable.

And sure enough, we saw the following details getting logged in the server setup log.

09:11:50|Verbose| Calling BaseGroup.Validate
09:12:11|Warning| Check SqlServerAgentValidator : Warning: Setup was unable to verify that SQL Server Agent (SqlAgent$crmdev) was running.
09:12:11| Info| Check SqlInstanceNameValidator: Success
09:12:11| Error| Check CrmSqlDomainValidator : Failure: The SQL Server '{0}' is unavailable.
09:12:11| Info| Check SqlServerValidator: Success
09:12:11| Info| Check SysAdminValidator: Success
09:12:11| Info| Check WordBreakerValidator: Success
09:12:11| Info| Check FullTextInstalledValidator: Success
09:12:11| Info| Check FullTextRunningValidator: Success
09:12:11| Info| Check ConfigDatabaseFilesValidator: Success
09:12:12| Info| Check CrmDatabaseFilesValidator: Success
09:12:12|Verbose| BaseGroup.Validate completed

Diagnosis:

Judging from the warning and error messages, we initially suspected the following causes:

  • The SQL Agent window services wasn’t running on the SQL server.
  • The SQL Server instance itself wasn’t running.
  • The user account used to install CRM wasn’t a Local Admin on the SQL server.
  • The user account used to install CRM wasn’t a System Admin on the SQL Server instance.

After checking with the system administrator and the DBA, all of these have been configured correctly.

But, we were quite adamant that the CRM installer was, in one way or another, unable to access SQL Server. So, we ran a SQL profile trace to see if the responsible SQL Server instance was getting a reaction from the CRM installer. To our surprise, it did execute a bunch of scripts against the SQL server instance. (FYI: The sort of stuff that the CRM installer does to the SQL Server is beyond sanity… Try to run a SQL profile trace on the CRM installer and you’ll know exactly what I mean.)

Then we started digging deeper around how else does CRM interact with SQL Server apart from TCP port 1433 for SQL Server Sockets service… With help from the support team from Microsoft Australia, we found out that there is a whole raft of other ports that the CRM Web Application and  the Data Connector require to connect to the SQL Server.

Resolution:

In our case, we needed a burn through the M to the power of N layers of firewalls on TCP port 445 between CRM Server and the SQL Server. After this firewall burn, the CRM installation was completed successfully.

“So, ” I hear you ask, “what the hell is TCP port 445 used for?” – Microsoft Directory Services (Microsoft-DS), and I quote, “Active Directory service required for Active Directory access and authentication”.

Your inevitable second question is, “what other ports does CRM use?” Here is an exhaustive list of Network ports used for Microsoft Dynamics CRM 4.0.

Network ports used for the Microsoft Dynamics CRM Web application

The following table lists the ports used for a server that is running a full-server installation of Microsoft Dynamics CRM. Moreover, with the exception of the Microsoft SQL Server server role, and the Microsoft Dynamics CRM Connector for Microsoft SQL Server Reporting Services server role, all server roles are installed on the same computer.

Protocol Port Number Description Explanation
TCP 80 HTTP Default Web application port. This port may be different as it can be changed during Microsoft Dynamics CRM Setup. For new Web sites, the default port number is 5555.
TCP 135 MSRPC RPC endpoint resolution
TCP 139 *NETBIOS-SSN NETBIOS session service
TCP 443 HTTPS Default secure HTTP port. The port number may be different from the default port. This secure network transport must be manually configured. Although this port is not required to run Microsoft Dynamics CRM, it is strongly recommended. For information about how to configure HTTPS for Microsoft Dynamics CRM, see the article “Make Microsoft Dynamics CRM 4.0 client-to-server network communications more secure.”
TCP 445 Microsoft-DS Active Directory service required for Active Directory access and authentication
UDP 123 *NTP Network Time Protocol
UDP 137 *NETBIOS-NS NETBIOS name service
UDP 138 *NETBIOS-dgm NETBIOS datagram service
UDP 445 Microsoft-DS Active Directory required for Active Directory access and authentication
UDP 1025 *Blackjack DCOM, used as an RPC listener

Network ports used by SQL Server running the Microsoft Dynamics CRM Connector for Microsoft SQL Server Reporting Services server roles

The following table lists the ports that are used for a computer that is running SQL Server and has only SQL Server and the Microsoft Dynamics CRM Connector for Microsoft SQL Server Reporting Services server roles installed.

Protocol Port Number Description Explanation
TCP 135 MSRPC RPC endpoint resolution
TCP 139 NETBIOS-SSN NETBIOS session service
TCP 445 Microsoft-DS Active Directory service required for Active Directory access and authentication
TCP 1433 ms-sql-s SQL Server sockets service. This port is required for access to SQL Server. Note that, this number may be different if you have configured your SQL Server to use a different port number.
UDP 123 *NTP Network Time Protocol
UDP 137 *NETBIOS-NS NETBIOS name service
UDP 138 *NETBIOS-dgm NETBIOS datagram service
UDP 445 Microsoft-DS Active Directory required for Active Directory access and authentication
UDP 1025 *Blackjack DCOM, used as an RPC listener

* This port and service are not strictly used by Microsoft Dynamics CRM but may be required for the various underlying platform components, such as Windows or Active Directory.

There are a couple of source for this information.

1. http://rc.crm.dynamics.com/rc/regcont/en_us/op/articles/crmports.aspx  (Don’t worry, I totally knew where to find this page by heart… NOT!)

2. Page 60 of the Planning Guide in the Implementation Guide, I should have known this one better.

WEB 304 Building Silverlight Application for Microsoft Dynamics CRM 4.0

This is the second session I delivered in Tech Ed 2009 Australia. It went bloody well I reckon, heaps better than my first session in terms of delivery and time management, and evaluations have rightfully reflected on this as well.

The following is a link the source code I used for this demo.

clip_image001

Note:

1. I originally developed this code sample for Business Action Training Tour (BATT) that happened around the world in May/June 2009.

2. This is Silverlight 3.0 code.

3. It uses a charting control from Silverlight 3.0 Control Toolkit, July 2009 version.

4. It will be published on MSDN as a HOL by DPE Corp.

5. As I mentioned earlier, I’m allowed to distribute my Tech Ed decks freely. Sorry about that folk, but you can always email me and ask questions about it. 🙂

DYN330 SharePoint Strategies for Microsoft Dynamics CRM

This is my first session at Tech Ed 2009, Australia. In fact, this is my first time presenting at Tech Ed ever. It was nerve-wracking presenting in front of hundreds of people. Thanks to the folks who came to this session. I got 6 more twitter followers as a result of that!!! I hope you got something out of it, as much as I intended to deliver 🙂

So here is source code that I used in today’s session.

clip_image001

Note:

1. This code includes:
    a. Chromeless SharePoint site definition
    b. CRM Workflow for creating the SharePoint site
    c. CRM Plugin assembly that upload CRM email attachment to SharePoint site
    d. Business Data Catalog application definition for CRM
        (This is based on the Analytics Accelerator)

2. The SharePoint site definition was built with WSP Builder v1.0.6, the latest at the time of this post. The CRM solution was built with CRM Developer Toolkit v1.1. You might want to download and install these tools to build the code.

3. Apologies that I can’t provide the slide decks for download as they are only available for Tech Ed 2009 attendees from CommNet.

Enjoy!!!

“The request failed with HTTP status 401: Unauthorized.”

The story:

I needed to do a few demos on Microsoft Dynamics CRM 4.0 for Outlook (On-Premise deployment).

I have this MSCRM VPC VM running locally on my Windows 7 64 bit RC build host machine. This functions as my CRM Server, and I use everything locally to connect to it to do my demos, like; Browse to CRM Web via IE8 on my host, and connect CRM Outlook client to this local VM CRM Server. The reason we are doing it this way, is to hide the VM from the audience all together, so we can show off some of the Windows 7 eye candy features as well. I installed Microsoft Dynamics CRM 4.0 for Outlook and went about configuring it…

The problem:

In the 3rd dialog of the configuration wizard where it asks me for the Intranet address for my crm deployment.

image

I punched in http://moss:5555/ then click on Next…

(I shared loopback adaptor with my VM and statically assigned IP addresses for both the VM as well as my host on the adaptor, so that they belong the same subnet, I then mapped the IP address to ‘moss’ in the hosts file on my host machine)

This big, fat, ugly error popped out “The request failed with HTTP status 401: Unauthorized.

image

Wait!!! there is MORE… “Mandatory updates for Microsoft Dynamics CRM could not be applied successfully, Try running the application again.

image

Ok it and exit out of the configuration wizard…

 

The Resolution:

So there I was, bing’ing / Google’ing the Interweb in desperate needs for an answer. Thanks to Girish Raja who pointed me to the right directly and here it is:

Microsoft Dynamics CRM 4.0 for Outlook (On-Premise)” doesn’t tell you, doesn’t prompt you, and it secretly, deceitfully uses  ‘Stored Credentials’ on the host machine to connect to the server. If it doesn’t find the login details in the ‘Stored Credentials’ on your Windows OS, it will spit out with the above error messages.

Pretty sneaky I reckon!

So there are a couple of ways you can resolve this,

First approach is to use IE;

1. Hit http://moss:5555/ (Or whatever your crm server address is)

image

2. You’ll be greeted with a Windows Auth prompt, punch your credential and REMEMBER to tick the "Remember my credentials” checkbox, because this will put your credential in the Windows Vault (a new name in Windows 7 for an old feature Saved Credentials).

image

3. To see this in Windows Vault (If you are on Windows 7), Start | User Accounts and Family Safety | Credential Manager

image

alternatively you can directly get to it when in enter “Manage Windows Credentials” or “Windows Vault” and “Stored Credentials” works too…

image

Second approach is to directly add the credential from Credential Manager, which I won’t elaborate, and I’ll reference to an article on how to achieve this later in this post…

Now, when you go back to the MS CRM Outlook Configuration Wizard; we will be able to step through it…

image

That was easy 😉

Note: You will not be required to deal with “Stored Credentials” if you satisfy the following conditions;
a. Your machine is joined to the same domain as MSCRM
b. You’ve logged on as a domain account and your domain account is a CRM User.
d. You’ve added MSCRM URL to your Intranet sites.
e. Your IE settings is set to “Automatic logon only in Intranet zone” in IE 8 | Tools | Internet Options | Security | Local intranet | Custom Level | User Authentication | Logon

 

A side note on Windows Vault in Windows 7:

It seems to me that, Windows Vault is essentially the “Stored Credentials” or “Stored User Names and Passwords” feature in previous Windows OS (client and server) but given a prettier name in Windows 7 and with more features.

My colleague Chaks has written a great article explaining the Windows Vault  feature in details.