Tip #611: On Server-Side SharePoint and Subfolders

With Dynamics CRM 2016 with server-side SharePoint integration, the documents list in CRM does not display subfolders. For example, say you have 100 documents in a SharePoint documents folder associated with an opportunity. With the old SharePoint List Component, users would commonly create subfolders in CRM SharePoint document folders to organize documents by type.

With this in mind, I created a Microsoft Connect product suggestion that server-side SharePoint integration should display subfolders (you can vote for it here).

Jukka Niiranen quickly pointed out that while the document list does not show the subfolder icons, the documents in the subfolders are still displayed. This design is most likely due to the product direction to show files from multiple sources within a unified grid, including SharePoint, OneDrive for Business, and Office Groups. Plus, it is displaying them not only in browser, but they are also now available in mobile.

And while you cannot see the folder icons, the path of the document is displayed, so you can sort and filter the list based on folder location.

doc grid

Tip #610: Missing Entitlement Permissions

After a recent upgrade to CRM 2016, users started seeing errors when creating cases. After investigating the error log, it turned out to be missing permissions on Entitlements. This was a mystery, because the implementation did not use Entitlements, and the Entitlement grid was removed or hidden on the case form. What gives?

While you could just give the users permissions for Entitlements, if you don’t need or use them, this answer is not satisfactory.

The reason for the error is a new setting that was introduced sometime around CRM 2015 Update 1 in the System Settings–>Service tab. This setting automatically adds Entitlements to Cases when they are created.

By setting these settings to “no,” the user should no longer see any errors when creating cases without permission for Entitlements.

Auto apply entitlements

Tip #609: Higher SQL compatibility level does not mean better

Gayan “Performance Wizard” Perera continues to live up to his nickname with another awesome performance tip.

tl;dr

Beware setting the SQL database compatibility level to a level higher than 110 on a CRM 2016 system.

The scenario

You have an entity with more than 5 secured fields. When the record is opened it either times out or takes more than 3 minutes to open the record. The reason is, CRM creates a query like this:

SELECT xyz.fields FROM custom_Entity as xyz
LEFT OUTER JOIN fn_UserSharedAttributeAccess(user, 
   field, entity) as poaa0 on ...
LEFT OUTER JOIN fn_UserSharedAttributeAccess(user, 
   field, entity) as poaa1 on ...
LEFT OUTER JOIN fn_UserSharedAttributeAccess(user, 
   field, entity) as poaa2 on ...
...etc

It seems, if the compatibility is set to a level higher than 110 on a CRM 2016 system the query optimizer estimates an incorrect number of records, does some weird [10^Number of Secured Fields] calculation and causes CRM to timeout or take a very long time to execute. E.g. if you have 10 secured fields, SQL estimates that you have 10^10 = 10,000,000,000 records generating a suboptimal execution plan that results in poor performance.

Tip #608: Generate documents in code

CRM 2016 has the ability to generate documents using Word templates. For workflows there’s a custom action called SetWordTemplate which can be added via Add Step > Perform Action > SetWordTemplate.

Generate document action in the workflow
But what if you want to generate the document in a plugin, javascript or in external application so that the functionality can be used by custom UI, batch processes or even from an external system via the web service?

Shamira (Sam) Fernando has the answer. The below snippet can be used to generate a document from code and the action attaches the generated document to the target record. The document template needs to be a system template – personal document templates won’t work.

OrganizationRequest req = 
   new OrganizationRequest("SetWordTemplate");

req["Target"] = 
   new EntityReference("account", accountGuid);
req["SelectedTemplate"] = 
   new EntityReference("documenttemplate", templateGuid);

service.ExecuteCrmOrganizationRequest(req);

Tip #607: Tipster guide to Voice of the Customer – Distributing Surveys

Chocolate Easter BunniesThis Friday is special in some parts of the globe but our US comrades don’t get a well deserved holiday. Neither do tipsters.

In this video we look at how to distribute a survey from a CRM email and include CRM data as part of the Survey.

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 #606: Be careful with WAN optimization

If your network magicians deployed either a hardware or a software WAN Optimizer, here is a word of advice from Gayan “Performance Wizard” Perera, presumably learned the hard way:

If you have a WAN Optimizer on your network and it’s trying to optimize CRM traffic, double check the following settings because it can affect CRM form load times. Ensure that the following settings are turned OFF:

  • Compression Stripping – CRM and IIS does a nice enough job that the WAN optimizer doesn’t need to interfere
  • Keep-Alive header injection
  • Authentication Header Stripping

When optimizer is not configured properly, it can interfere with CRM traffic resulting in errors and/or poor performance. The symptoms may include (YMMV):

  • Click on a list record – lag before the record opens
  • When the record is opening, the ‘Loading’, ‘Requesting data…’, ‘Loading business logic’ phases are slow compared with a system that’s optimized correctly
  • Opening a record results in blank or incomplete screen, or infinite ‘Loading’ message
  • Certificate errors or blocked content

Tip #605: Birthday reminders

I started using CRM for Outlook, and now I get notified when my contacts have birthdays. Why does CRM do that?

First of all, CRM doesn’t do this. At least it’s not a direct feature. This is a great example of how CRM functionality can have indirect behavior due to the default actions of other applications. While CRM does not have a feature that notifies you of contact birthdays, Outlook does. It is called the “Birthday Calendar.”

Any contact in your Outlook contacts that has a value set for birthday will be displayed on the Outlook Birthday calendar. If you choose to display the birthday calendar, you will see contact birthdays on your calendar..

If a contact synchronizes with your Exchange contacts, and you keep the default field sync settings, your synchronized contact records in Outlook will contain the birthday of the contact. This will make the birthday calendar in Outlook notify you of your CRM contact’s birthdays.

If you don’t want to see these birthdays, you can turn off the birthday calendar in Outlook. But instead of being such a birthday hating grouch, maybe you should join the party and send them some cake.

Tip #604: Where to find quick campaigns

Dynamics CRM TipperThis is not even a real truckstop, more of a drive-by, really.

 

Q

Larry “Tex” Lentz wonders

if they’re was a way to use Advanced Find to search for Quick Campaigns. Can’t see it from AF editor.

& A

You won’t find it by name in the Advanced Find, Larry, since Quick Campaign is an activity record. Search for Activity of type Quick Campaign:

Find Quick Campaigns

Tip #603: Express Route Talk to the Experts

Thinking about using Express Route for your CRM Online and/or Office 365 services?

Want to know more than just what is online at Technet – https://azure.microsoft.com/en-us/documentation/articles/expressroute-introduction/

Help is available – There is an Express Router Black Belt Team that runs a weekly Express Route every Friday.

At the site you can view previous recordings, find sample scripts and get invited to the next event.

Tip #602: Tipster guide to Voice of the Customer – Introduction

Friday is hard workAt long last Friday is making its way around the globe.

Dynamics CRM 2016 recently release it’s Voice of the Customer Survey solution. In this video we explore the basics of VOC, such setup and configuration, fundamental components, and Survey Creation.

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.