Tip #599: CRM Online Express Route Doesn’t Limit Access

We have been investigating Express Route for a client that is concerned about performance when moving from CRM On Premise to CRM Online. One option is the new Express Route service. It was announced back in December by Jujhar Singh

It kind of appears from the technical overview that when you enable it (got to purchase it) that it locks you down to a VPN like connection to your CRM Online instance. And consequently it then only allows access via that connection. This isn’t correct. You can still get to your CRM Online instance from anywhere but if you access it from the network setup with Express Route you will receive the benefits of the improved pipe.

Tip #598: Illustrated tipster guide to CRM forms

With every new release of CRM we seem to acquire one or two new form types and it’s becoming increasingly difficult to keep track of what form to use where and what is supported or not supported for a particular form type.

Introducing illustrated tipster guide to CRM forms. (As you can see, we completely ignored now-next-to-useless mobile express forms as well as updated vs classic forms, otherwise this table would need an A0 piece of paper and a 3D printer to visualize)

Illustrated tipster guide to CRM forms

This is a living guide – your feedback is much appreciated and revisions will follow to incorporate suggestions and changes.

Tip #597: Tipster guide to Creating Business Rules Based on Business Process Flows

Friday. ‘Nuff said.

Robinson Crusoe & FridayDynamics CRM 2016 introduced a new feature that allows you to create Business Rules, that can execute based on Business Process Flows. Here we show you how to configure this option. If you prefer reading, this non-animated version will guide you 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 #596: Prepare client customizations or watch the paint dry

Dynamics CRM TipperThis truck stop is somewhat unusual. Traditionally, we have a question and one or more answers to serve. This time we have two people independently arriving at the same question.

tl;dr

If you are rolling out Dynamics CRM mobile apps or customizing Interactive Service Hub, don’t forget to click Prepare Client Customizations after you publish customizations – that will significantly improve the synchronization performance for the first user starting CRM mobile apps or the interactive service hub.

Question(s)

Mitch “Only in Texas” Milam and Andrhe “I’ve got 88 in my handle” Margono couldn’t help themselves while poking around in CRM 2016 Update 0.1 and stumbled across this:
Prepare Client Customizations

The combined question would sound like:

What does that button do and where can I find more info about it?

Answer

Thanks to the rapid response from the awesome team of Jim “That’s Mr SDK for you” Daly, we now have the official answer:

Once you publish customizations, the first user to start one of the CRM mobile apps or the interactive service hub can experience performance issues, because their sign in prompts CRM to prepare the metadata package for download. That means the first user has to wait for both the metadata package preparation and the download (subsequent users only have to wait for the download).

With Dynamics CRM 2016 Update 0.1 or later, you can improve performance for that first user by clicking the Prepare Client Customizations button after publishing your customizations. This prompts CRM to prepare the metadata package right then instead of waiting for the first user to start a mobile app or the interactive service hub.

Tip #595: The “silent observer” custom activity

When people mention custom activities, they typically think in terms of a user or customer actions. Sending SMS, making money transfer, approving the design, to name a few. These activities are typically created explicitly using Activity menu.

nomoremenuThere is a different type of custom activity that I’d like to talk about today, the “silent observer”, the one you’d untick the box Display in Activity Menus for.

Let’s say you have a membership entity describing when your customers join your club, mailing list, welfare program, investment fund, or pottery class. If people can cancel their membership then naturally, you’d want to record the status (reason why they cancelled) and the date they did.

If you want to allow customers to re-join, you face a challenge of either creating and managing multiple memberships for the customer or amend the existing record and accept the loss of the information (the original cancellation date and the reason, among other things).

Opportunity Close little clone to the rescue. Create a custom activity that would record the information related to the cancellation event (or maybe even broader, to the change of status) of the membership. Then using workflows automatically create a record when the membership’s status changes, recording the date, the reason, perhaps notes and any additional information you’d like to capture and set regarding field to the membership in question.

With this design, your membership record will reflect the current status of the membership while a quick peek into associated closed activities will give you the full picture of the membership, i.e. history of the customer leaving, joining, leaving and joining again.

I’m sure there are more types and more uses for the custom activities, of course, but I find this particular type very useful and frequently apply it in the solutions design.

What do you use custom activities for?

Tip #594: Handcrafting your dashboards

Occasionally, dashboards in Dynamics CRM misbehave:
Void space on dashboard
The precise cause of misalignment is not clear, probably a rogue pixel miscalculation in the layout engine, manifesting itself when top right-hand corner listview is blank and the left one has multiple pages. Not all browsers are affected either – Edge turned out to be quite resilient, unlike IE, Chrome, or Firefox. Whatever is the reason, it’s not pretty.

You may have also noticed that, regardless of the dashboard layout you choose, you end up with a single tab, restricting user’s ability to expand and collapse tabs on demand.

Under the hood, dashboards use FormXml. That means you can export the system dashboard, extract customization.xml file, and play with the form layout. The above problem, for example, can be resolved by adding a separate tab for the bottom row – that will also allow you to control tab expanded state when dashboard is loaded.

To be on a safe side, follow Rodin’s principle, i.e. copy the existing tab element and remove what is not needed. Don’t forget to change unique identifiers to something, errrr, unique.

Note: the layout issue seems to have disappeared in CRM 2016 Online, one more reason to upgrade!

Tip #592: Tipster guide to Deploying a Dynamics CRM Package

PopcornLast week we showed you how to create Dynamics CRM Package Deployer package using Visual Studio. In this week’s video we finish our series on the Configuration Migration tool and Package Deployer by putting the items we created together and walking though an install.

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 #591: Advanced text conditions in system views

If you need to create a list of accounts with an annual revenue between 1 and 2 millions, you can quickly add two conditions in your view:
Revenue between condition
But what if you’d like to see a list of accounts with the names from A through L? There is no Greater Than clause for the text fields so what can we do except adding 10 “ORed” Begins with conditions (one per letter)?

Building advanced text conditions is not that difficult, as it turns out.

  1. Create a new system view and add Begins with condition and add [A-L] as the value. Naturally, that won’t work but save the view anyway.
  2. Create new solution, add account entity and, if you happen to use CRM 2016, select only that view.
  3. Export the solution, extract customizations.xml file and open in your favorite XML editor.
  4. Find fetchxml for the view and locate the clause you entered. It will look like
    <condition value="[[]A-L]%" 
        attribute="name" operator="like" />
    

    As you can see, CRM escaped the square bracket so that SQL Server treats it as a square bracket and not a wildcard character set. Let’s fix that.

  5. Replace the value with [A-L]% and save the file
    <condition value="[A-L]%" 
        attribute="name" operator="like" />
    
  6. Replace customizations.xml in your solution zip file and import that solution back.

Why would you want to do it? How about the list of accounts where name starts with non-alphanumeric? Change condition to “[^A-Z0-9]%”. How about accounts where 3rd letter is ‘S’? “__s%” will do it for you. In fact, as you guessed it, any wildcard SQL operator should work.

Note: modifying fetchxml is supported but you no longer will be able to edit this view in the browser. It’s also too easy to get it wrong so, if in doubt, test your fetch using FetchXml Tester tool from XrmToolbox.

Tip #590: The list has not finished loading

In a recent deployment of CRM 2016 on premises, users started seeing an error message when setting regarding in the CRM Outlook client: The list has not finished opening. Try your request again.

 

All Binoogle searches found were forum posts saying that it had been fixed in CRM 2011 Update Rollup 10. This made me start wondering if Groundhog Day came a little bit late this year.

The cause of the issue turned out to be internet security software. As is a best practice, we had added CRM internal and external URL’s to the McAffee Internet Security script scanning exclusion list, but McAffee was still interfering with CRM script execution. The answer was to add a trailing slash (/) to the end of the URL’s, and that fixed the issue.

So instead of https://internalcrm.yourdomain.com, use https://internalcrm.yourdomain.com/.

Filed under #don’taskmewhy.