Tip #443: Tipster guide to Dynamics CRM for Phones

Dynamics CRM recently released an updated Dynamics CRM for Phones app as part of the Spring Update 1. It’s Friday and it’s time for a video walk-through.

YouTube player

Give us your feedback, all of it: good, bad, and ugly, I’m sure we can take it. Suggest new topics either in comments or by sending your ideas to jar@crmtipoftheday.com.

Tip #442: One WSDL to rule them all

WSDL is your best friend when you’re dealing with non .NET clients, e.g. Java, that need to talk to CRM. Historically, it’s always been a 2-step process:

  1. Hit https://crm/XRMServices/2011/Organization.svc?wsdl and get a very small file back usually containing the line
<wsdl:import namespace="blah-blah/Services" 
location=
"https://crm/XRMServices/2011/Organization.svc?wsdl=wsdl0"/>
  1. Hit https://crm/XRMServices/2011/Organization.svc?wsdl=wsdl0 and get a complete file containing full definitions.

Starting from CRM 2013 (or, rather WCF 4.5), however, there is a much easier way to get full WSDL schema:

https://crm/XRMServices/2011/Organization.svc?singleWsdl

No parsing required, the code is shorter and the life is easier.

Tip #441: Errors when sorting views on mobile

Recently Scott “Comandante Redlaces” Sewell noticed that when he was using CRM for Tablets and clicked on a view column to sort, the app returned an error.

Thanks to Tanguy “Toolbox” Touzard’s suggestion, it was determined that the error was caused by having the view sorted by more than one column. After reducing the number of columns the view was sorted by, the views once again worked in the CRM mobile apps, and could be sorted by clicking on the column headers.

Tip #440: When package deployment fails, blame the internets

As you probably already know, Dynamics CRM has its own “installer” for the solutions, called Package Deployer. The package folder and assembly are usually distributed in the shape of a zip file that needs to be extracted and then used either with Package Deployer executable or installed using PowerShell. As documented.

Usually it all goes well until you receive the following message:

No import packages were found. Exiting the program…

Wait, what? The package is there, the assembly, tested and proven, is there, it all Works On My Machine ™, it even works for some users but not the others.

One of the possible reasons is that, when you download files from the internets, quite often they are blocked, giving an additional protection layer. Turns out, this protection goes beyond the nagging user interface. In this instance, it stops package deployer from seeing the package and the assembly altogether.

Unblock fileSolution is to unblock the downloaded archive file prior to unzipping and then your package should work just fine.

If green-on-black rather than right-mouse click is your thing, the following script unblocks all files of the already extracted archive recursively:

ps: > gci c:\packagefolder | Unblock-File

Tip #439: Prevent duplicate Outlook contacts

Frequently in the various CRM forums, someone will ask a question about how to prevent getting duplicate contact records in their Exchange/Outlook contacts when using CRM for Outlook.

There is no magic answer to totally avoid outlook contacts getting duplicated. One of the best things you can do is use server based Exchange synchronization rather than Outlook synchronization. The reason is because when you don’t use server synchronization, every time you reinstall or reconfigure the client you will re synchronize the contacts, which will duplicate any that are already in your contacts. Also, change the user’s contact sync filter prior to enabling synchronization or installing outlook client. The default synchronization filter is contacts I own, and if the user owns many contacts in CRM, this will probably give him more contacts than he really wants to get, and increase the chances of duplicating one that he already has in outlook contacts.

Tip #437: Should I create private notes in CRM?

Generally, no.

Occasionally I will come across a requirement to allow for some CRM notes to be private and only readable by the person who creates them. In my opinion, this is generally a bad idea.

In CRM 2013 and 2015, the user interface for notes does not allow users to open the note form. They must be interacted with from the social pain (mis-spelling intentional). This interface does not give us access to share, run workflow, or any custom fields on the note record, and therefore limits the typical options that we will use to provide selective security to records.

The bigger issue is that by providing the ability for some notes to be private, it is very common for users to start marking all notes as private. The result will be that CRM will be a less collaborative platform, and what’s the point of putting data in CRM if I’m the only one that can see it?

If you must use private notes, my recommendation is to use a custom entity to hold the private notes, then set the permissions on that entity appropriately. But make sure that you set expectations and train your users that only truly private information should go there, so that the non-private data can still be viewed by all users.

Tip #435: Oldies but goodies

The Dynamics CRM team has done a great job of producing documentation for CRM 2015. The ebook and video library are top notch.

But there are still some classic whitepapers that you should keep in your library. The following are my three favorite classic whitepapers that I still refer to on a regular basis:

  1. Offline and online synchronization in Microsoft Dynamics CRM: This “nuts and bolts” whitepaper was written for CRM 4, but it is still unparalleled in explaining from a technical level how synchronization works in CRM. Most of its content still applies 7 years later.
  2. Optimizing and Maintaining the Performance of a Microsoft Dynamics CRM 2011 Server: This whitepaper was written for Dynamics CRM 2011, but most of its content still applies to CRM 2015, including recommendations for CRM and SQL Server settings. And also get the related client whitepaper.
  3. Improving Microsoft Dynamics CRM Performance and Securing Data With Microsoft SQL Server 2008: This document details supported encryption and compression features that can be used to encrypt data or improve performance, and is very useful for discussions with DBA’s.

These are my favorites that I still refer to on a regular basis. Got any more classics? Leave them in the comments.

Tip #434: Recommended security for queues

CRM 2013 SP1 introduced private queues, but the private functionality only works correctly if your user security role permissions are set correctly.

The recommended security role settings is:

  • BU level read permission for queues
  • Append To privileges for queues.

If users still see other user’s queues or other queues that you don’t want them to,  then set all the personal queues and old/legacy queues to private. That should give them visibility for all queues that they are a member of that are private as well as all public queues. 

You can also deactivate any user queues or legacy public queues that you do not want to see in the list.