Setting up Outlook client to work against a new Dynamics CRM 2011 IFD setup, I came across the following error:

image

Obviously my credentials were right and I had the proper certificates already installed. Everything worked fine through IE.

 

So, I turned on tracing by using the out of the box Diagnostics tool:

image

Tried again so I got the complete trace at:

C:\Users\<user>\AppData\Local\Microsoft\MSCRM\Traces

 

When opened the trace file I realized the true error:

 

…..

>Crm Exception: Message: Credentials required, ErrorCode: -2147220988
[2012-04-15 08:55:56.375] 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 ClaimsBasedAuthProvider`1.AuthenticateClaims()
    at ClaimsBasedAuthProvider`1.SignIn()
    at ClientAuthProvidersFactory`1.SignIn(Uri endPoint, Credential credentials, AuthUIMode uiMode, IClientOrganizationContext context, Form parentWindow, Boolean retryOnError)
    at DeploymentInfo.LoadOrganizations(AuthUIMode uiMode, Form parentWindow, Credential credentials)
    at DeploymentsInfo.InternalLoadOrganizations(OrganizationDetailCollection orgs, AuthUIMode uiMode, Form parentWindow)
    at DeploymentsInfo.LoadOrganizations(AuthUIMode uiMode, Form parentWindow)
    at ServerForm.LoadOrganizations(Boolean forceUI)
    at ServerForm.<InitializeBackgroundWorkers>b__0(Object sender, DoWorkEventArgs e)
    at BackgroundWorker.OnDoWork(DoWorkEventArgs e)
    at BackgroundWorker.WorkerThreadStart(Object argument)
    at StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
    at StackBuilderSink.AsyncProcessMessage(IMessage msg, IMessageSink replySink)
    at AgileAsyncWorkerItem.DoAsyncCall()
    at AgileAsyncWorkerItem.ThreadPoolCallBack(Object o)
    at QueueUserWorkItemCallback.WaitCallback_Context(Object state)
    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.
[2012-04-15 08:55:56.376] Process:Microsoft.Crm.Application.Outlook.ConfigWizard |Organization:00000000-0000-0000-0000-000000000000 |Thread:   11 |Category: Application.Outlook |User: 00000000-0000-0000-0000-000000000000 |Level: Error | ClientAuthProvidersFactory`1.SignIn
    at ClientAuthProvidersFactory`1.SignIn(Uri endPoint, Credential credentials, AuthUIMode uiMode, IClientOrganizationContext context, Form parentWindow, Boolean retryOnError)
    at DeploymentInfo.LoadOrganizations(AuthUIMode uiMode, Form parentWindow, Credential credentials)
    at DeploymentsInfo.InternalLoadOrganizations(OrganizationDetailCollection orgs, AuthUIMode uiMode, Form parentWindow)
    at DeploymentsInfo.LoadOrganizations(AuthUIMode uiMode, Form parentWindow)
    at ServerForm.LoadOrganizations(Boolean forceUI)
    at ServerForm.<InitializeBackgroundWorkers>b__0(Object sender, DoWorkEventArgs e)
    at BackgroundWorker.OnDoWork(DoWorkEventArgs e)
    at BackgroundWorker.WorkerThreadStart(Object argument)
    at StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
    at StackBuilderSink.AsyncProcessMessage(IMessage msg, IMessageSink replySink)
    at AgileAsyncWorkerItem.DoAsyncCall()
    at AgileAsyncWorkerItem.ThreadPoolCallBack(Object o)
    at QueueUserWorkItemCallback.WaitCallback_Context(Object state)
    at ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
    at QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
    at ThreadPoolWorkQueue.Dispatch()
    at _ThreadPoolWaitCallback.PerformWaitCallback()
>Silent sign-in failed and requested UiMode is silentonly. Failing authentication process.
[2012-04-15 08:55:56.376] Process:Microsoft.Crm.Application.Outlook.ConfigWizard |Organization:00000000-0000-0000-0000-000000000000 |Thread:   11 |Category: Application.Outlook |User: 00000000-0000-0000-0000-000000000000 |Level: Error | DeploymentsInfo.InternalLoadOrganizations
    at DeploymentsInfo.InternalLoadOrganizations(OrganizationDetailCollection orgs, AuthUIMode uiMode, Form parentWindow)
    at DeploymentsInfo.LoadOrganizations(AuthUIMode uiMode, Form parentWindow)
    at ServerForm.LoadOrganizations(Boolean forceUI)
    at ServerForm.<InitializeBackgroundWorkers>b__0(Object sender, DoWorkEventArgs e)
    at BackgroundWorker.OnDoWork(DoWorkEventArgs e)
    at BackgroundWorker.WorkerThreadStart(Object argument)
    at StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
    at StackBuilderSink.AsyncProcessMessage(IMessage msg, IMessageSink replySink)
    at AgileAsyncWorkerItem.DoAsyncCall()
    at AgileAsyncWorkerItem.ThreadPoolCallBack(Object o)
    at QueueUserWorkItemCallback.WaitCallback_Context(Object state)
    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: Credentials required
   at Microsoft.Crm.Outlook.ClientAuth.ClaimsBasedAuthProvider`1.AuthenticateClaims()
   at Microsoft.Crm.Outlook.ClientAuth.ClaimsBasedAuthProvider`1.SignIn()
   at Microsoft.Crm.Outlook.ClientAuth.ClientAuthProvidersFactory`1.SignIn(Uri endPoint, Credential credentials, AuthUIMode uiMode, IClientOrganizationContext context, Form parentWindow, Boolean retryOnError)
   at Microsoft.Crm.Application.Outlook.Config.DeploymentsInfo.DeploymentInfo.LoadOrganizations(AuthUIMode uiMode, Form parentWindow, Credential credentials)
   at Microsoft.Crm.Application.Outlook.Config.DeploymentsInfo.InternalLoadOrganizations(OrganizationDetailCollection orgs, AuthUIMode uiMode, Form parentWindow)
[2012-04-15 08:55:58.290] Process:Microsoft.Crm.Application.Outlook.ConfigWizard |Organization:00000000-0000-0000-0000-000000000000 |Thread:   11 |Category: Application.Outlook |User: 00000000-0000-0000-0000-000000000000 |Level: Verbose | ClientAuthProvidersFactory`1.RetrieveUserCredentialsAndSignIn
    at ClientAuthProvidersFactory`1.RetrieveUserCredentialsAndSignIn(Uri endPoint, Credential credentials, Form parentWindow, Boolean retryOnError, IClientOrganizationContext context)
    at ClientAuthProvidersFactory`1.SignIn(Uri endPoint, Credential credentials, AuthUIMode uiMode, IClientOrganizationContext context, Form parentWindow, Boolean retryOnError)
    at DeploymentInfo.LoadOrganizations(AuthUIMode uiMode, Form parentWindow, Credential credentials)
    at DeploymentsInfo.InternalLoadOrganizations(OrganizationDetailCollection orgs, AuthUIMode uiMode, Form parentWindow)
    at DeploymentsInfo.LoadOrganizations(AuthUIMode uiMode, Form parentWindow)
    at ServerForm.LoadOrganizations(Boolean forceUI)
    at ServerForm.<InitializeBackgroundWorkers>b__0(Object sender, DoWorkEventArgs e)
    at BackgroundWorker.OnDoWork(DoWorkEventArgs e)
    at BackgroundWorker.WorkerThreadStart(Object argument)
    at StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
    at StackBuilderSink.AsyncProcessMessage(IMessage msg, IMessageSink replySink)
    at AgileAsyncWorkerItem.DoAsyncCall()
    at AgileAsyncWorkerItem.ThreadPoolCallBack(Object o)
    at QueueUserWorkItemCallback.WaitCallback_Context(Object state)
    at ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
    at QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
    at ThreadPoolWorkQueue.Dispatch()
    at _ThreadPoolWaitCallback.PerformWaitCallback()
>Creating a client authentication form.
[2012-04-15 08:56:47.023] Process:Microsoft.Crm.Application.Outlook.ConfigWizard |Organization:00000000-0000-0000-0000-000000000000 |Thread:   12 |Category: Application.Outlook |User: 00000000-0000-0000-0000-000000000000 |Level: Error | ClientAuthProvider`1.HandleAuthenticationFailures
    at ClientAuthProvider`1.HandleAuthenticationFailures(Action method)
    at ClaimsBasedAuthProvider`1.AuthenticateClaims()
    at ClaimsBasedAuthProvider`1.SignIn()
    at ClientAuthProvidersFactory`1.HandleCredentialsEntered(Object sender, CredentialsEventArgs e)
    at ClientAuthForm.SignInAsync(Object value)
    at QueueUserWorkItemCallback.WaitCallback_Context(Object state)
    at ExecutionContext.runTryCode(Object userData)
    at RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
    at ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
    at ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
    at QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
    at ThreadPoolWorkQueue.Dispatch()
    at _ThreadPoolWaitCallback.PerformWaitCallback()
>Exception when trying to authenticate:System.ServiceModel.Security.MessageSecurityException: The security timestamp is invalid because its creation time ('2012-04-15T12:05:07.838Z') is in the future. Current time is '2012-04-15T11:56:46.863Z' and allowed clock skew is '00:05:00'.

Server stack trace:
   at System.ServiceModel.Security.SecurityTimestamp.ValidateFreshness(TimeSpan timeToLive, TimeSpan allowedClockSkew)
   at System.ServiceModel.Security.SecurityTimestamp.ValidateRangeAndFreshness(TimeSpan timeToLive, TimeSpan allowedClockSkew)
   at System.ServiceModel.Security.ReceiveSecurityHeader.ReadTimestamp(XmlDictionaryReader reader)
   at System.ServiceModel.Security.ReceiveSecurityHeader.ExecuteFullPass(XmlDictionaryReader reader)
   at System.ServiceModel.Security.StrictModeSecurityHeaderElementInferenceEngine.ExecuteProcessingPasses(ReceiveSecurityHeader securityHeader, XmlDictionaryReader reader)
   at System.ServiceModel.Security.ReceiveSecurityHeader.Process(TimeSpan timeout, ChannelBinding channelBinding, ExtendedProtectionPolicy extendedProtectionPolicy)
   at System.ServiceModel.Security.TransportSecurityProtocol.VerifyIncomingMessageCore(Message& message, TimeSpan timeout)
   at System.ServiceModel.Security.TransportSecurityProtocol.VerifyIncomingMessage(Message& message, TimeSpan timeout)
   at System.ServiceModel.Security.SecurityProtocol.VerifyIncomingMessage(Message& message, TimeSpan timeout, SecurityProtocolCorrelationState[] correlationStates)
   at System.ServiceModel.Channels.SecurityChannelFactory`1.SecurityRequestChannel.ProcessReply(Message reply, SecurityProtocolCorrelationState correlationState, TimeSpan timeout)
   at System.ServiceModel.Channels.SecurityChannelFactory`1.SecurityRequestChannel.Request(Message message, TimeSpan timeout)
   at System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
   at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

….

 

So, I came to the point that it was something wrong with my clock, smelling like the ‘already typical’ issue with CRM Outlook client when there is a difference bigger than 5 minutes between server and client.

 

Solution

Once identified the actual problem, solution was pretty easy. Just adjusted my clock to be the same as server (timezone and time) and after that, I could successfully set up my Outlook client.

 

Hope it helps you out,

 

PP [twitter: @pabloperalta]

UruIT Dynamix | Excellence in Dynamics CRM Nearshoring Services.