Tip #523: Tipster guide to invoking custom actions without code

Hey, it’s Friday and time for another video tip. In the last week’s video we talked about how to create custom action, add parameters to it, define conditions and steps, etc. This week we continue by demonstrating how to call your custom actions from real-time workflows (or dialogs) without writing any code.

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 #522: Escape CRM Online sandbox

I said it before and I said it again that presenting at the conferences like eXtremeCRM can be a real eye-opener. You quickly learn, for example, that Bob could not make it and you also learn how much people know about CRM. With all the accumulated knowledge it comes as a surprise that some of the features that has been around for years are misunderstood, and underused.

Take, for example, this menu item:
Register Service Endpoint
As it turns out, people are still unsure what it’s there for and what exactly does it do.

Without writing a single line of code it allows registration of an endpoint that is similar to a standard plugin registration so that you can register steps with it, like create for the account entity. The difference is that, instead of executing your plugin code this endpoint will push the data out of CRM to the Azure Service Bus with all the plugin context intact. For example, push it to the queue and then create a listener on the other end and pick up whatever CRM pushed out.

Why would we want to do that? How about:

  1. Remoting the lengthy processing to bypass 2 minutes sandbox limit.
  2. Publishing context for partner’s consumption – the data pushed out is protected by service bus security but no longer governed by CRM.
  3. Copying data to on-premises database for processing and reporting – listener can be behind the firewall and get an easy secure access to the service bus.
  4. Run small listening service on users’ computers notifying them almost in real-time when something important happens
  5. Big opportunity win notification

Of course, there are some additional moving parts to the story like creating an Azure Service Bus, negotiating security between CRM and the service bus, etc, but all steps are documented to death in MSDN and there are some good articles and walkthroughs written about it.

Go and create some goodness.

Tip #521: SharePoint integration in a CRM Online trial

So you set up a Dynamics CRM Online 30 day trial and you want to also try the document and OneNote integration. Here is how to get a SharePoint Online trial to use with your Dynamics CRM trial. There are two approaches:

  1. If you have already set up a CRM Online trial, from the Office 365 account associated with your trial, sign up for the Office E3 trial (https://products.office.com/en-us/business/office-365-enterprise-e3-business-software). This trial includes SharePoint.
  2.  If you have not already set up a CRM Online trial, start with an Office 365 trial, open O365 portal, go to Purchase and add CRM trial.

 

Tip #520: Appointment meeting invitations

In Dynamics CRM 2013 or later, synchronized appointments send meeting invitation emails to meeting attendees when they are created or updated. This is a feature that was commonly requested by CRM users, but there are some scenarios where you may not want this to happen.

Meetings created or updated after the meeting happens

Some users may want to update the appointment attendees to accurately reflect who attended the meeting. Or you may want to create an appointment record after the meeting occurred. In these scenarios, you don’t want the attendees getting a retroactive meeting invitation.

One approach that can help with this is to modify the appointment synchronization filter to only include meetings where the start date is in the future (say the next 500 days or something). Alternatively, you could create a “do not synchronize” flag on the appointment record, then update users synchronization filters to not include records flagged as “do not synchronize.

Gustaf Westerland says that if you don’t want any attendees getting notified, you may want to take more dramatic action, such as breaking appointments out to separate mapping entity and then using precreate/update plugin to prevent the notification email from being sent.

Sensitive meeting notes

Another concern is that if a user updates the body of the appointment with notes from the meeting, the attendees will receive a meeting update email. We addressed this in tip 287. Don’t use the appointment body/description for meeting notes. Replace it with the notes pane (or OneNote if you are online). Set the body to not synchronize between CRM and Exchange. This will prevent embarrassing notes or comments from being sent to your customers.

 

Tip #519: Keep your precious SharePoint on-premises

Most of the people in our small but very proud Dynamics CRM universe are perfectly aware of the very cool integration between Dynamics CRM Online and SharePoint Online. Yes, the one which is required to enable other cool features like OneNote integration unleashed (had to add a cool word for the third link).

As I discovered couple days ago, very few, however, are aware that since CRM Online Update 1 you can integrate with SharePoint on-premises. The dry extract of what you need (besides CRM Online):

  • SharePoint 2013 SP1 (for those of you trying to save a few bucks – Foundation versions are not supported), accessible from internets via https (with the certificate from a public authority, selfies won’t cut it)
  • SharePoint Online license. Yes, at least one.
  • Skillz to operate heavy machinery and PowerShell
  • Administrative privileges in O365, CRM and SharePoint. (That’s the simplest, actual permissions required are slightly less reaching than the full admin)

For more details and step-by-step instructions, go no further than the official administrator’s source of truth – TechNet.

Tip #518: Tipster guide to Dynamics CRM custom actions

Hey, it’s Friday and time for another video tip. With Unified Service Desk done and dusted for now, we switch our attention back to least explored Dynamics CRM features. In this week’s video we look at custom actions. Creating a Custom Action can provide a lot of possibilities for composing business logic. Here we talk a bit about that they are, how to use them, and then create one.

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 #517: Disabled user’s personal views

Sometimes you get the same question from multiple people. This week, it was people asking about what to do with personal views owned by users who are no longer active. Consider if you have personal views shared with multiple people, you disable that user, and now nobody can edit or delete those views. What can be done?

I am aware of three approaches to resolve this. Some more supported than others.

  1. Re-enable the user and either change the password or change the AD user ID to another AD account that is not currently a CRM user, then log in to the account and reassign the personal views. If using CRM online, you can add a CRM license to the disabled user and change the password, then log in. Once you have reassigned the saved views, you can disable the user again.
  2. Try one of the codeplex personal view manager utilities. Like this one. Or this one.
  3. If you are feeling adventurous and wish to venture into unsupported territory, you can edit the personal view records in the user query table of the MSCRM database. Insert disclaimer about this being unsupported, swim at your own risk. Custom views are stored in the userquery table with query type value of 16384.

Tip #516: Say no to the first name

As some of you know, with the exception of the podcast where we keep straight face, Joel and I disagree a lot. This time I think he is wrong and I am right (I think that most of the time, to be fair). Without further ado, our most recent squabble.

George

I’ve had it with first and last names (project I was working on had a list of countries where these names are to be swapped when building the full name o__O). It’s culture dependent and mostly useless except when searching by the surname. So the idea I’m entertaining to use form now on for contacts:

  1. Use just name which is the same as the fullname (just remove first name and relabel the last name). Example: George Doubinski, Mao Dze Dun, Mao Zedong, Schnitzel Von Krumm, Joel Ave Maria Johnathan Batista Lindstrom.
  2. Use salutation to determine how to address the contact, e.g. George, Shifu, Leader, Dog, Mr & Mrs Lindstrom etc. That’d be used in the letters as in Dear Leader, Dear Shifu, Dear Mr & Mrs Lindstrom, etc.

Any issues with this approach? (Apart, of course, from the need to fill in an archaic form that requires separate first and last names)

Joel

Kind of funny, I was just having a conversation about this specific idea with a client lately. Their source system only had a single name for contacts, which made moving them into CRM a bit of a challenge.

I can see the attraction of having a single name; however, as I see it, there are two major downsides:

  1. Outlook sync. IMO the sync experience is weird if you don’t have separate first and last names, especially since that is how Outlook and most contact management applications on phones, etc do it. So if your CRM contacts start syncing in with only the last name/surname field populated, it looks really out of place if you have other contacts with separate first and last names.
  2. You are limiting options for direct mail/mail merge/marketing automation. If your client ever wants to do any kind of targeted marketing with CRM data, not having separate first and last name fields precludes having templates that say “Dear John” or “Mr. Doubinski.” I’ve had too many cases where a client tells me “we’re never going to …” to turn around and need to do that thing later.

My approach is to have an alternate firstname lastname field that stores the name in the opposite order of the fullname field and make it searchable. That way if I search for “Redlaces, Captain” or “Captain Redlaces” I get a result.

George

Haven’t thought about 1 but for 2 is exactly what salutation is about. So my name is George Doubinski but I’d prefer if you address me as Dear <salutation>, e.g. Dear Shifu.

The challenge with the first names is that in many countries they have the exactly opposite meaning, e.g. China. I know that for you, being in egocentric North America, it’s a concept that is hard to fathom but I thought after your visit to Japan you’d have a bit more appreciation of what we’re dealing with on a daily basis trying to offload the coal surplus?!

Joel

I agree that it is most useful for Asian countries. For North America, you would want the option to use the last name, such as Mr. Doubinski

George

Oh boy… “How would you like us to address you? Mr Lindstrom? OK” (busily writing “Mr. Lindstrom” in salutation field)

Does it work for you?

Joel

What about “Dear first name, we would like to invite you and the rest of the [lastname] family to our event?” Not saying that is everyday, but not unheard of.

George

Oh man, imagine if the guy is single because his family [insensitive blurb removed]. Who’d be responsible for his suicide then?!
Not saying that is everyday, but not unheard of.

Joel

The client is a life insurance company. They would have updated his marital status in CRM

Call for action

As you can see, we were quickly getting nowhere. Everyone is holding their ground firm. What do YOU think?

Tip #515: Why lookup control appears disabled

The other day the client asked us to verify the field level security settings on the system. The reason, as they explained it, was that one of the lookup controls appeared disabled and wouldn’t become enabled regardless of what they did to FLS settings. Long story short, the control was disabled not because of the FLS but because user did not have Append privilege on the child entity.

In general, lookup control will be disabled if one of the following conditions is true:

  1. Field is protected by the FLS and user does not have create or update privilege when creating or updating the record
  2. User does not have Append privilege for the child entity (the one being edited)
  3. User does not have Append To privilege for the parent entity (the one being looked up)

Tip #514: Multi-entity Quick Find blocks solution uninstall

The man himself Tanguy “The XRM Toolbox” Touzard has the podium today:

If you are getting the error code -2147089917 while trying to uninstall managed solution and the message reads “[entity] did not have a valid Quickfind query”, verify that the entity is not in the list of entities enabled for multi-entity quick search:

Settings > Administration > System Settings then General tab > Set up Quick Find (heading) > Select entities for search > Select…
Select entities for Quick Find