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.

 

Tip #553: Is CRM Online storage expensive?

One of the critiques of CRM Online is the cost of storage. When compared with SharePoint Online, DropBox, Amazon Web Services (AWS), or other online storage providers, CRM Online is more expensive. However, you need to consider the type of storage when comparing storage plans and prices.

Neil “New CRM Release – New Country” Benson says:

The CRM database is optimized for database record storage and not for file storage. Whereas SharePoint Online, OneDrive for Business, as well as competing storage services from Dropbox, Box, Amazon Web Services are optimized for file storage. File storage is cheaper than record storage, and customers are welcome to use alternative file storage options as an alternative to the CRM database.

Not all customers require separate file storage, so may be there has been insufficient demand from customers to make this a standard feature, but as a custom feature it takes only a couple of weeks to develop. Commercial add-ons are also available. One popular option is AttachmentExtractor from mscrm-addons.com; it costs EUR 2,750 for 100 users.

Compared to competing CRM platforms, for example Salesforce, the Dynamics CRM Online storage costs are, in fact, extremely competitive. Salesforce separate database record storage from file storage but charges many times more than Microsoft does.

Listen to Neil talk about the cost of storage and the CRM agile release train on the latest episode of CRM Audio: The Microsoft Dynamics CRM podcast, sponsored by KingswaySoft

Tip #552: Tipster guide to Dynamics CRM 2016 solution patching

It’s Friday and the first video of 2016 is out. In this video, we explore the new solution patching options available with Dynamics CRM 2016. We discuss the options for patching solutions, and show you how to create and deploy patches. In addition, we explore how to clone a solution that contains all patches that have been created.

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 #550: Subgrids and scripts

One of the Easter Eggs in CRM Online 2015 Update 1/CRM 2016 are the ability to execute scripts when subgrids load. With this enhancement, CRM developers can set event handlers for the OnLoad event of the subgrid. Scripts can be used to:

  • Get the current view selected in the view selector
  • Change the view of the subgrid to a different view.
  • Get the data rows from the grid.
  • Get the selected rows of the subgrid.

For more details see the “Write scripts for subgrids” section of the CRM 2016 SDK.