Tip #562: Tipster guide to Dynamics CRM 2016 New Visual Controls for Mobile Clients

Woot-woot! It’s Friday, folks, time for another animation. Dynamics CRM 2016 introduces new visual controls that can be used on a variety of different fields types to enhance the user experience on both the Tablet and Phone clients. These mobile controls range from sliders that can be used on numeric fields, to input masks, and calendar controls.

In this video we show you how to insert and configure these new controls on several different field types.

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 #561: Custom Activity Forms

One of the great features in the last several releases of Dynamics CRM is the ability to create custom forms.

However, in the area of Activities this isn’t 100% correct.

While you can create custom versions of the activities:

  • Task
  • Fax
  • Phone Call
  • Email
  • Letter
  • Campaign Response
  • Campaign Activity
  • Text Message

There is no New button or Save As button that is available on the following activities:

  • Social Activity
  • Appointment
  • Recurring Appointment

This is mostly likely is due to the binding of the information on the form fields to the Outlook client for Appointments and to Microsoft Social Engagement for the Social Activity. Custom versions of the form would likely endanger the integrity of the sync.

Here is what you see when you go to add a custom form where allowed.

Custom Forms Allowed

Custom Forms Allowed

And here how it looks for the activity entities you can’t customize.

Activities with no Custom Forms Capability

Activities with no Custom Forms Capability

Tip #560: Consolidate your workflows

When I evaluate a CRM environment that has been in use for several years, it is very common to see many active workflows for the same entities. For example, in this case there are multiple workflows for the appointment entity.

before

The problem with this design is that with so many workflows triggered on create or status change of appointment, every time an appointment is created or updated, 20-30 processes are fired. If multiple appointments are created or updated simultaneously, this can cause a major performance impact on CRM, and potentially overload the Asynchronous Processing Service.

A better design is to group related processes together into the same workflow. For example, say you have two processes that run when appointments are completed–one for the Annual Review type of appointment, the other for the Tier 1 Account Review process. Instead of having two separate workflows, each with a check condition step, do one workflow with two conditional branches.

When should you consolidate?

  • Same entity
  • Same triggering events

Note–the CRM workflow designer tends to slow down when it has around twenty or more steps. This is one reason why you may have to split to more than one workflow process for similar processes.

In the case mentioned above, I was able to go from 50 workflows to 15.

after

Tip #559: Microsoft Dynamics Marketing First Aid

Are you struggling with Microsoft Dynamics Marketing?

There is a great resource for the community at the Microsoft Dynamics Marketing Support Blog.

One of the key contributors is Jon Birnbaum who is a Support Escalation Engineer for Dynamics CRM and Marketing.

Jon has a blog series that walks you through the nuts and bolt of setting up the sync of records between Dynamics Marketing and Dynamics CRM.

Tip #558: O Mailbox Statistics, Where Art Thou?

Challenge

Joel can be such a pain, he always keeps asking some questions no one seems to know the answer for. Like the other day:

What are these sync cycle processing records that feed the server side sync performance dashboard? I don’t see them in the system job log. Is there any way to bulk delete them so the server side synchronization performance dashboard is usable and doesn’t exceed the aggregate fetch record limit?

Mailbox statistics are not useful on large deployments

Response

What a poor developer can do but a bit of digging?

From https://msdn.microsoft.com/en-us/library/gg328086.aspx:

Internal entities

The following entities are visible in the system but have no supported developer scenarios.

Entity type code Entity logical name Display name Ownership type
<snip>
9607 mailboxstatistics Mailbox Statistics Organization owned

 

Confirming that Retrieve does work on that entity, Delete does not, BulkDeleteRequest fails as well with “Privilege Type Delete not defined on entity ‘MailboxStatistics'”

Unless there are some system processes that clean up this table, this table seems to continue to grow.

The road to nowhere

We were told that there are clean up processes in place for this table, however, according to Joel

Every environment in which I have checked that has server side sync for more than 50 users, this dashboard is unusable. It’s a shame, because this could be very helpful if it worked.

I guess that means that we have to wait until more information about this entity becomes available.

Tip #557: Tipster guide to Dynamics CRM 2016 Interactive Service Hub

This Friday we continue review of Dynamics CRM 2016 many new features and enhancements. In today’s video we provide you with an overview of Dynamics CRM’s new Interactive Service Hub feature.

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 #556: Rumors about Microsoft.Xrm.Client death are exaggerated

Update 18-Nov-2016: Bugs reported have been fixed and there are no compelling reasons (beyond the support of the existing codebase) to continue use of Microsoft.Xrm.Client.

One thing you’d notice about Dynamics CRM 2016 SDK is that some of the assemblies has gone MIA. For example, Microsoft.Xrm.Client, a home to some useful developers extensions, including a mighty CrmConnection class, is nowhere to be found. These extensions were taken over by Xrm Tooling family, the one we mentioned before.

CrmServiceClient, in particular, looks like a solid replacement for CrmConnection but, as with any new libraries, there are few gotchas.

This is the only connection string that worked for us so far in non-interactive mode:

CrmServiceClient conn = new CrmServiceClient(
   "ServiceUri=https://orgname.contoso.com/orgname;" + 
   "AuthType=IFD;Domain=anything;" + 
   "UserName=george@contoso.com;Password=pass@word1;" + 
   "LoginPrompt=Never;");

Note the following:

  • Url must be in the form of https://orgname.contoso.com/orgname. For on-premises and IFD deployments the connector expects orgname to be at the end and looks like it does not make any attempt to deduce orgname from the server url.
  • Domain name must be specified but it’s not passed via claims, so it can be anything. Really any non-empty string o__O
  • Username must be UPN. If it’s not, then, since domain name is not passed it, ADFS 3.0 throws a fit (ADFS 2.0 assumes the domain)

The following syntax works as well:

CrmServiceClient conn = new CrmServiceClient(
   new System.Net.NetworkCredential(
       "george@contoso.com", "pass@word1"),
   AuthenticationType.IFD, 
   "orgname.contoso.com", "443", 
   "orgname", useSsl: true);

Same restrictions apply except that there is no need to specify the dummy domain name.

Whilst we manage to get CrmServiceClient working for non-interactive IFD connections, we’re heard from reliable sources that it does not work currently in Azure Web Apps / App Service Web Apps while attempting to connect to CRM Online.

The workaround? You can still use the bits from CRM 2015 SDK and its very reliable CrmConnection class – just make sure to load the other Nuget packages for CRM 2016 first and then add Microsoft.Xrm.Client.

Tip #555: Check your checksum

I’ve got new laptop – yay! Office 2016 installation would go to 88%, sit there for 20-30 minutes then crash with some streaming error. NOT yay. 3 complete re-installation later I decided to re-download the ISO image. Out of curiosity, compared new download to the old one. Everything looked fine, except the checksum. Meaning my previous download was corrupted. Doh!

Lesson: if you have information about the file checksum, always use it to verify that your download is not corrupted. You can quickly calculate checksum for any of your files using either:

It’s a shame that download center no longer provides a checksum. Dynamics CRM server is almost a 0.5GB file and it’d be nice to verify the integrity before facing strange errors and failed installations. Downloads from the volume licensing site as well as MSDN subscribers downloads do provide this information – use it.

As for the Office 2016, installation from the fresh, non-corrupted ISO image took about 4 minutes.

Tip #554: Recently Visited Items in Outlook Client

One fantastic time saving feature in Dynamics CRM is recently visited items. In CRM in browser, if I click the drop-down arrow by an entity tile, I will see the recently viewed records for that entity.

recentlyviewedbrowser

But what if I’m using CRM for Outlook? There is not drop-down to display the recently visited records. But you can still see recently visited records. Simply right mouse click on the entity folder and select “Recently visited.”

Recently Visited

Note–the recently visited items displayed in Outlook will include records recently visited in the Outlook client. Items viewed in CRM in browser or CRM mobile will not display in recently visited items in Outlook.