Tip #1137: Learn language and study API to simplify your code

Simple life

I already wrote about the benefits of learning new language features. Equally important is to understand what assemblies are available as part of Dynamics 365 SDK, how they work, what classes and interfaces are available, and how the edge cases work (basically, “what-if” scenarios, like “what if this is null”). This week I had “privilege” […]

Tip #1136: How emails are resolved to the Dynamics 365 records

Do something great

Literally a week later after Jonas “The Shuffler” Rapp was puzzled how From fields are resolved (see tip 1119),  Josh Wells from the cold city of Fargo (where some of the Microsoft folks tend to congregate) chimed in with the final resolution to the problem and a very good advice: One of the best changes […]

Tip #1135: For plugins, use SDK with the same or below the server version

Mismatch

Problem Another week, another challenge from Guido “Future Olive Farmer” Preite: I created a plugin for one Online instance (version 8.2.2.1862),  I created a class library project with .NET 4.5.2 and with nuget I installed the Microsoft.CrmSdk.CoreAssemblies version 9.0.2.3 I registered the plugin and I always get this error: Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=8.0.0.0, Culture=neutral, […]

Tip #1133: Rename the view that causes the drama

Scope viewer

Problem Guido “Future Olive Farmer” Preite was not having any luck importing a solution: This is the situation: Sandbox is 9.0.2.441, Production is 9.0.2.197. From the sandbox we exported a solution as managed, when we import to production we get the following error: this solution package cannot be imported because it contains invalid xml… The […]

Tip #1132: Performance of various instance types

Lottery balls

We keep hearing this question over and over again from the customers, consultants, and developers: Are production instances given any preferential treatment in terms of resources as compared to sandbox and trial instances? I thought it’d be a good idea to revisit the 4 years old answer as nothing has changed since then. As per […]

Tip #1131: Add some vector finesse to your Unified Interface App

Calligraphy

We want our users to have confidence in the apps that we create and shove down their deploy. That’s not an easy task according to Steve “Mr SMB” Mordue who asks “How do we display our icon here, instead of puzzle piece in custom app? Puzzle Pieces do not instil confidence.” “That looks like a […]

Tip #1129: Add features to Dynamics 365 Portal

Mixing in the features

Even the best of us occasionally make the wrong choice when provisioning Dynamics 365 Portals, especially when Customer Self-Service seems like an obvious all-encompassing choice. Except that it is not. Take, for example, the case of Feridun “Best Twitter Handle for CRM MVP” Kadir: Problem I have a D365 instance with the customer self-service portal […]

Tip #1127: Don’t update auto number field

Locked boxes with the engraved numbers

We did mentioned in the past that most of the good inventions are driven by the laziness. Auto numbering the new records is one of those. Instead of manually looking up the next available number, calling other users to see if they have any intention of creating a new record in the next few minutes, […]

Tip #1125: Busy times and say .NYET to .NET

Busy hamsters

You probably have noticed a somewhat reduced stream of daily tips. “More like tip of the week now” you say and you’d be right. We’ve been extremely busy in the last couple of months: countless pints consumed in between awesome sessions at CRMUG EMEA in Dublin despite my inept organizational abilities, the inaugural BAD Masterclass […]

Tip #1122: Multiple tokens in cache

Golf balls in a bucket

If you are working with multiple user or app identities (e.g. for testing), and the code uses ADAL, and especially if the application is killed or crashes, you may occasionally get an error: multiple_matching_tokens_detected: The cache contains multiple tokens satisfying the requirements. Call AcquireToken again providing more requirements (e.g. UserId) Note that it does not […]