Tip #543: Tipster guide to Dynamics CRM 2016 solution changes

Another Friday and the first video on 2016 release is here. CRM 2016 includes, among other things, a number of enhancements to the CRM solutions functionality. In this video we will look at the how to work with solution sub-components, and introduce the concept of solutions patches.

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 #542: Who do you think you are

One of the great features of Dynamics CRM is the ability to impersonate other users’ accounts. Just set CallerId property on CrmConnection object and go on with your business as usual. However, make sure that your code or the code that you call, do not rely on the current user identity obtained using WhoAmIRequest. As it turns out, CRM impersonates all requests with the exception of WhoAmIRequest. Store caller identity and use it explicitly.

CrmConnection connection = new CrmConnection("Xrm");
// impersonate known (to us) user account
connection.CallerId = 
      new Guid("64D74566-C903-E511-80BA-00155D003523");

using (OrganizationService service = 
   new OrganizationService(connection))
{
    // this call will return the original caller, 
    // not impersonated one
    var userId = service.Execute<WhoAmIResponse>(
       new WhoAmIRequest()).UserId;

    // account, however, will have 
    // impersonated user as createdby
    Guid accountId = service.Create(
      new Entity("account")
      {
        Attributes = { { "name", "Acme Inc" } }
      });
}

Tip #541: Don’t use white background for navigation icons

Ivan Kurtev tells us not to use white  (#ffffff) as a color for custom entities in CRM 2016. It causes navigation icons and relationship tiles in the mobile app to appear in glistening white, which is a fine color, that’s also the color of the font that the entity name is displayed on the relationship tiles, making it mighty difficult for an end user to figure out what entity the tile is for. You have to click on a tile to find out, it’s kind of like opening a nicely wrapped Christmas present. This was not an issue in 2015 and earlier versions. White Relationship Tiles

 

Tip #539: CRM 2016 Postponed Features

As we mentioned last week, Dynamics CRM 2016 was released last week. But you may have noticed that some of the anticipated features are not there.

The release preview guide has been updated with a revision summary on the last page. This table lists features which have been postponed. Some are postponed until a future release, some will be released as a preview feature before the next release

Revision_summary

So why the delay?

While Microsoft has not shared the reason for each of these delays, the most probable reason is that they weren’t fully baked yet. MVP Neil Benson says

Has the Microsoft Dynamics CRM product group switched to an agile release train release pattern? An agile release train involves several software releases that are planned in advance and released on a pre-planned schedule. Every feature that’s “done” gets released on the next train. The release train doesn’t wait until a pre-defined set of features are done. That’s a big shift from releases like CRM 4.0 and CRM 2011 that were only released once every feature was ready. Microsoft Dynamics CRM 2016 was released on 1 December, precisely as scheduled. There are a couple of expected features that appear to have missed this release train and will make it on the next one. The latest update to the Release Preview Guide describes how Voice of the Customer, External Party Access, Service Intelligence and a couple of other features will be released later. This is a good indicator that the CRM product group is using an agile release train. An agile release train is a modern software product management concept. It delivers valuable features in a regular cadence in small batches . It’s perfectly suited to a cloud-first world where customers and users expect their software to be updated and to adapt seamlessly to their needs. All aboard!

So while users may be disappointed that mobile offline capability or guided user experience are delayed, the good news is the spring 2016 release is coming.

GeorgeD $0.02 + GST

I like this agile pattern, I like this release train. My primary concern is for the on-premises customers being stuck on the platform 9 & 3/4 with the agile train picking them up only once a year. Will they miss out on Voice of the Customer a.k.a. Surveys until December 2016? Only the time will tell.

Want to learn more about what IS included in CRM 2016? Check out the latest episode of CRM Audio: The Microsoft Dynamics CRM Podcast. This week we talk about knowledge management, engagement hub, solution segmentation, and more CRM 2016 goodies.

Tip #538: Tipster guide to Dynamics CRM routing rule sets

Another Friday – another video continuing coverage of the customer service features in Dynamics CRM. In this video, we explore how to use Dynamics CRM’s Routing Rule Sets to route cases to different queues. It covers the creation, and activation as well as how they get applied to the records.

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 #537: Removing O365 global administrators

When you assign an O365 user a Global Administrator role, and this user is assigned a Dynamics CRM license, system will automatically assign a System Administrator role to that user. If later on Global Administrator role is removed, the system will also remove a System Administrator CRM role regardless whether it was automatically or manually assigned.

If you decide to tighten up the O365 security and remove unnecessary Global Administrator rights, find out if any of the affected users have System Administrator role in CRM and whether they need. If they do, you will have to re-assign this role manually.

So if any of your users complain that they can no longer access CRM even though they are administrators, or if you receive a yellow warning that some of the users are missing security privileges, that O365 role clean up could be the reason.

Tip #536: CRM Online, SharePoint On-premises and OneNote walk into a bar

There seems to be a theme here, at CRM Tip of the day, with trios of various components walking into refreshment establishments. On this occasion, it did cost me a few hours of mouse-bending investigation. Enjoy the summary.

OneNoteAs we mentioned before, if you carefully followed the steps to configure server-based authentication for Dynamics CRM Online and SharePoint on-premises, most likely you’ll end up with the working integration. Chances are though that OneNote integration will not be available. The link is just not there. If you don’t need OneNote, skip the rest, and enjoy the rest of your day, documents will work just fine.

Trick 1

Since integrating with on-premises SharePoint requires a SharePoint Online license, you do have access to SharePoint Online. Remove all SharePoint sites you configured so far then enable integration with SharePoint Online. OneNote integration will light up. Ta-da? Not so fast. Now, if you try to add your on-premises site, the one that was working before, most likely you will receive “Failed authentication” error.

Trick 2

In short, after the trust is established, CRM Online sends claim to SharePoint on-premises where it’s mapped to a local account. For on-premises integration, claim emailaddress is mapped to a Work email of a SharePoint user account. And it does work until you enable integration with Online that sends nameid claim that happened to be Azure Active Directory PUID. SharePoint on-premises has no clue what this identifier is, tries to map it to local Active Directory SID and fails miserably.

The answer is buried in this small article about custom claims. What you need to do is to tell CRM Online what claim to send to the SharePoint. Turns out, there is a perfectly named sharepointemailaddress attribute on the systemuser so simply add it to the user form and tell CRM to send it as a claim.

service.Create(new Entity("usermapping")
{
    Attributes =
    {
        { "claimtype", "smtp" },
        { "systemuserattributename",
            "sharepointemailaddress" }
    }
});

(First you may want to check if the usermapping record for claimtype smtp already exists).

Trick 3

Everything is working now but only for my account. Ugh. CRM Online is now sending individual claims per user who’s accessing the instance. Since we are not using SharePoint Email Address attribute for anything else, why not to set it for all users to the same single account that is mapped to our SharePoint:

var qba = new QueryByAttribute("systemuser");
qba.AddAttributeValue("isdisabled", false);
var users = service.RetrieveMultiple(qba);
foreach (var user in users.Entities)
{
    service.Update(new Entity("systemuser")
    {
        Attributes =
        {
            { "systemuserid", user.Id },
            { "sharepointemailaddress", 
                "drink@bar.onmicrosoft.com" }
        }
    });
}

(You’d need to skip some user accounts that are outside of your control like Delegate Admin).

Like a boss meme

Tip #535: Licensing Microsoft Dynamics Marketing trial

Dynamics CRM TipperStopping the truck again, otherwise Daniel “Soft king” Cai won’t be able to market his awesome products.

Daniel: Computer says “No”

I wonder what criteria it is to get a MDM trial. I have successfully requested a new MDM trial, but when I try to assign myself a license for MDM, I am getting the following error message.

You can’t assign licenses that contain these conflicting services: Microsoft Dynamics Marketing Sales Collaboration – Eligibility criteria apply, Microsoft Dynamics Marketing Enterprise. Review the services included with each license, and try again.

What’s the point of making the trial instance available to me, but not allowing me to assign myself a license? Can anyone please help me get a trial? Ideally I hope that I can get a long-term instance, so that I don’t have to configure the integration options every time I get a new trial instance.

Jason: Computer says “Yes”?

Jason “I can make a kettle talk to CRM” Lattimer to the rescue:
On your O365 user under Licenses, look at the Microsoft Dynamics CRM Online Professional license, you should be able to expand it and under it you’ll see 3 different selections. Uncheck the option for Microsoft Dynamics Marketing Sales Collaboration.

Tip #534: Product Bundles

Product bundles is a feature that was added in Dynamics CRM 2015. Bundles addressed some of the major limitations of the old “kit” feature. It allows you to create product bundles that combine multiple products with various quantities, allowing users to add configured bundles to quotes, opportunities, and orders.

The biggest improvement over the old kit feature is that when a user adds a bundle to a quote, opportunity, or order, you can actually see all the products in the bundle, rather than just seeing the bundle. Users can then remove optional products from the bundle, if they don’t apply.

Product Bundles

Scott “Ribbon Workbench” Durow adds a few limitations to consider when using this feature:

  1. You can’t search on dynamic product properties through advanced find, but you can use FetchXml.
  2. There isn’t any way of making the price dependant on the product properties –but you can create a custom pricing component that does this which works really well.
  3. Once you have created a bundle – you can’t add/remove bundle items.
  4. Moving the product catalogue between orgs needs to be done using the Configuration Migration tool – it’s good at importing new products, but not at updating existing ones.
  5. You can’t import dynamic property values using the import utility.