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.

Tip #601: Reliably send email in workflow

Sometimes, instead of a simple Send Email action in the workflow, it’s necessary to prepare the email in the workflow (Create Email action), perform some additional manipulations (like adding attachments) and then send it. To do just that, setting email status to Pending Send has been reliably working for everyone since CRM 2011. Until now. Technically, this approach was never documented and the reality of unsupported customizations finally caught up with us.

For one reason or another, setting status to Pending Send no longer works in CRM Online 2015 Update 1 where Dynamics CRM for Outlook is used to send the emails – emails would just sit with Pending Send status and Outlook would duly ignore them while happily sending all other CRM emails. If you find yourself in the same boat, create a custom workflow activity to send draft emails using SendEmailRequest message (code is simplified with any tracing and error handling removed):

public class SendEmail : CodeActivity
{
  [RequiredArgument]
  [Input("Email to send")]
  [ReferenceTarget("email")]
  public InArgument<EntityReference> SourceEmail 
	{ get; set; }

  [Output("Email Subject")]
  public OutArgument<string> Subject { get; set; }
  
  protected override void 
     Execute(CodeActivityContext ec)
  {
    IWorkflowContext context = 
      ec.GetExtension<IWorkflowContext>();

    IOrganizationServiceFactory serviceFactory = 
      ec.GetExtension<IOrganizationServiceFactory>();

    IOrganizationService service = serviceFactory
      .CreateOrganizationService(context.UserId);

    EntityReference email = SourceEmail.Get(ec);
    SendEmailResponse ser = service.Execute(
        new SendEmailRequest()
        {
          EmailId = email.Id,
          IssueSend = true
        }
      ) as SendEmailResponse;

    if (ser != null)
    {
      Subject.Set(ec, ser.Subject);
    }
  }
}

Works like a charm.

Tip #600: CRM Online Access Only Behind the Firewall

When you migrate from CRM On Premise to CRM Online you immediately get put into the world of access to CRM anywhere via the Internet. If your organization’s philosophy up to that point had been to only allow access to CRM from behind your corporate firewall then you need to do a little more work.

The technet article – Limiting Access to Office 365 Services Based on the Location of the Client gives you a path to mirroring the same access control to CRM as you had when you were on premise. By federating and using the features of your identity provider to block access to the authentication you will limit the points of access.

Our thanks to Marc Schweigert on the MS CRM Product Team for sharing this suggestion with us as a followup to Tip #599

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!