Tip #408: “Value cannot be null” when configuring Outlook Client

Recently we found that users in a specific CRM environment could not configure CRM for Outlook. The error message returned by the configuration wizard was “Value cannot be null. Parameter name: String.” Client trace showed the following: >Failed to refresh entry. Exception Microsoft.Crm.Application.SMWrappers.InvalidOrganizationIdException: Invalid OrganizationId “e79c824a-fee4-40cf-9a2f-fb79112be8b6”.    at Microsoft.Crm.Application.SMWrappers.ClientOrganizationContextFactory .Get(Guid organizationId)    at Microsoft.Crm.Application.SMWrappers.ClientOrganizationContextFactory .Microsoft.Crm.IOrganizationContextFactory.GetOrganizationContext(Guid […]

Tip #351: Tracing for plugins and custom workflow activities

CRM Online continues to improve on the existing features, as Andre “I’ve got 88 in my handle” Margono noticed when looking at the tracing functionality. ITracingService was available to the savvy developers since CRM 2011, however, the catch always has been that trace is only available when things go wrong, exception kind of wrong. Enter […]

Tip #263: Avoid unnecessary plugin execution

Filter the attributes in Visual Studio

Inspired by our rather radical approach to enforcing development discipline, Andre “I’ve got 88 in my handle” Margono decided to pick on another sinful habit in development, this time within plugin development. Corporal punishment triggering behavior this time is to select all attributes as filtering attributes for Update message. Unfortunately, plugin registration tool that comes […]

Tip #194: When automatic update is not your friend

tl;dr Nuget is a great tool and a real timesaver but beware of automatic updates that can unexpectedly bring incompatible or broken builds of third-party libraries and that will, in turn, break your plugins or workflows. The real story or “I saw the whole thing” Friday, August 1st, 6:00PM All users logoff and CRM is […]

Tip #154: One pre-validate to rule them all

It may come as a surprise but when a contact is created as a side-effect of another operation, e.g. qualifying a lead or processing incoming message with contact auto-create in force, pre-validation plugin does not fire at all. It happens when operation performed is a compound message such as QualifyLeadRequest or DeliverPromoteEmailRequest. This behaviour, unintuitive […]

Tip #135: What to check if on-disk plugin registration fails

Registering plugin on disk has its benefits but can be tricky business. Plugin registration tool that comes with SDK is very coy about the errors and display the following message (in the log section of the form): ERROR: Occurred while checking whether the assembly exists You can opt to see more details about fault exception […]

Tip #84: What a difference a date makes

At Convergence 2014, the tipsters participated in some “Ask the MVP” sessions. There were many great questions, but one question kept coming up time and time again, no matter whether the session was for administrators or developers. That’s right: how to deal with timezones when date-only field is used. Since our tipping truck is a […]

Tip #51: What to do if your Plugin won’t Trigger or Debug when Registered on SetState

If you register a plugin on SetState, most of the time you can’t get it to trigger or debug.  Register it instead on the (technically deprecated) SetStateDynamicEntity message. It should work fine. Note: Instead of “Target”, the entity in the context for the entity being activated or deactivated, the new context input parameter will be […]