Tip #982: Before you fire your administrator

Please be careful when disabling System Administrators in Dynamics 365. They are likely to own things, such as workflows. Before disabling System Admin accounts, check to see if there are any organization scope workflows that they own. If there are, reassign the workflows to another System Admin user account. If you don’t, these processes won’t run.

Better idea — make all of your workflows owned by a system account so this doesn’t happen in the first place.

Tip #981: Sharing knowledge with Australians

For years Dynamics CRM/365 has been ignoring language variations like Swedish (Finland), English (Irish), and Spanish (Traditional Sort). People working on portals and new knowledge management features thought otherwise and now you can do either using local language variety.

Neil “New Release – New Country” Benson always tries to play nice with the locals, this time of the year it’s in Australia. This is his story.

Our Australian knowledge managers recently started changing the language of their knowledge articles from the default ‘English – United States’ to ‘English – Australian’.
Setting KB language
Later we discovered that their articles were not appearing in the KB Records search widget on the case form even though the Dynamics 365 user’s language was still ‘English’.

Thanks to Dileep Singh at Microsoft for pointing out that system admins need to adjust the ‘Set Default Language’ option in the Knowledge Base Search tab of the social pane on the case form. To resolve our issue, we changed the default language to ‘English – Australia’.
Set search language filter
Knowledge article documentation can be a little tricky to find because most internet searches will return results about the deprecated knowledge articles instead of the new knowledge articles. Thanks again to Dileep for stepping in: https://technet.microsoft.com/en-us/library/dn946902.aspx.

If you’re planning a multi-language knowledge management solution or your users prefer to specify one of the many language variants supported in the new knowledge articles feature, remember to adjust your case form’s knowledge base search properties accordingly.

Tip #980: Unified User Interface Myths

In Dynamics 365 v. 9, Microsoft is releasing a whole new interface called the Unified User Interface (UUI). This doesn’t mean that the Dynamics 365 Enterprise interface is going away yet, but it does mean that for certain types of users and applications, the interface is changing. Other bloggers have done a better job than I could explaining the “why” behind the UUI. In this post, I want to clear up some misconceptions about what UUI is and who will get it. Read the myths below (in bold) followed by the reality.

Myth #1 — It’s Business Edition. Dynamics 365 v.9 also introduces a new license SKU called Business Edition. While the UUI will be the interface of Business Edition, it is not limited to only business edition. But if you meet the licensing restrictions of Business Edition and only need the functionality available in the UUI, Business Edition may be a fit for you. UUI is not the Business Edition, but it is the only interface available to Business Edition users.

Myth #2 — Enterprise Edition users don’t get it in v.9. Enterprise Edition customers have a choice. They can use the traditional web user interface (which has received significant updates so the forms and views look and feel a lot like UUI). But they also can use the new UUI, and using Dynamics 365 App Designer, you can give Enterprise users an app that is Unified experience or traditional web. Any functionality like campaigns and goals that is not yet available for UUI will not be available from the app.

Myth #3 — It’s more limited than the traditional user interface. This is true or false, depending on your perspective. You can’t configure, create workflows, or run advanced find from the Unified User Interface. However, there are a number of new features that are in UUI that are not in the traditional interface. Some examples:

  • Snazzy new sitemap that doesn’t take up the whole screen.

  • Entity level dashboards (like an account dashboard filtered by account view)

  • Visual filters on dashboards visually summarizing lists

  • Real tabs on forms!

  • Timeline view

  • New features on mobile: By unifying the web and mobile experiences, mobile gets a bunch of new features previously only available in the web. Things like email a link, alphabet selector on views, full sitemap, multiple forms per entity, and more.
  • Consistency: For users of the unified user interface, the interface will be the same between web and mobile experiences. This means that training will be significantly easier, as you won’t have to say “if you are in mobile…” Also, configuration testing is dramatically simplified, as you can test in web on the same interface that mobile users will see.

Takeaway

The Unified User Interface represents the future of user interface in Dynamics 365. While System Administrators and some power users will not want to use it day-to-day (yet), for many users, the UUI will provide a rich, consistent experience. My recommendation when deploying Dynamics 365 is to look at the capabilities that users need. If they fit within the limitations of the UUI, consider deploying a Unified Interface app. If users cannot completely get by in the UUI experience, you will still want to familiarize yourself with it, and since the interface for mobile and Outlook app is UUI, you will still want to configure the UUI experience for mobile and Outlook.

George gets the last word

UUI represents a major architectural shift. Unlike previous clients who used the same definitions to deliver different experience on web vs mobile, UUI uses single rendering engine to deliver the same experience. The other important architectural bit is CCF. Once it’s made available, it will reinvigorate ISV market and will spell the end of “all CRM forms look the same” era. Looking forward for 37 editable grids from Infotec’R’Us companies.

Tip #979: Start planning farewell party for the email router

We always liked email router, we even called it “good, old, and fairly reliable“, and asked people not to leave it behind. But, as the server-side synchronization becomes better and better with every release, it’s time to reconsider.

According to the list of the upcoming important changes, “Email Router will become deprecated in the next major release of Microsoft Dynamics 365”. Next major means the imminent 9.0 release. Come the major release after, email router will be officially “not a thing” anymore. In fact, even if you try the version of the router from the previous build, it will be pretty much bricked due to the fact that it relies on SOAP and the version-after-next will have SOAP support removed.

You still have time but I recommend booking that restaurant for the farewell party and starting money collection for the gift.

Tip #978: Limitations in Voice of the Customer

Voice of the Customer is a great solution for customer surveys, offering a wide variety of survey question types. But before you deploy it, it is important to understand the limitations and validate that the way you are going to use it fits the tool.

Licensing: Full Voice of the Customer capabilities are licensed with Dynamics 365 for Sales, Dynamics 365 for Customer Service, Dynamics 365 for Field Service and Dynamics 365 for Project Service Automation, or Enterprise Plan licenses. Users with other license types can respond to surveys, but they cannot create or edit surveys.

Number of published surveys: Voice of the Customer is limited to 200 published surveys at one time. Need more surveys? Expire some of your active surveys.

Number of questions: Voice of the Customer limits surveys to 250 questions. If you try to add question 251, it will stop you. I have to ask, if you are trying to build a 300 question survey, why would you do that to your customers?

Maximum number of responses: Voice of the Customer leverages Azure to host the surveys and capture responses. Dynamics polls Azure for responses, and brings them into Dynamics. This polling is limited to 2,400 responses per day. So what happens if you get 2,500 responses to a survey in a single day? 2,400 will come in, 100 will remain in Azure until tomorrow. There is a 1,000,000 limit to how many responses can be stored on Azure. If you reach that limit (not counting the responses that have been moved to Dynamics), your customers will be unable to submit responses until that the total stored on Azure is lower than 1,000,000.

The takeaway is that you need to do some mental math before you roll out Voice of the Customer. 2,400 and 1,000,000 sound like a lot, and for the average company that uses Dynamics, they likely will not hit these limits. But once you get multiple surveys going, there is a chance you may hit these limits.

If you need higher volume survey capabilities, consider a third party integrated tool like ClickDimensions.

Going to CRMUG Summit in Nashville? James Bowen and I will be leading a session called How to make Voice of the Customer Better Than Survey Monkey.

Tip #977: Moving forward with the portals

If you are a past or present Adxstudio partner, you might have received the email from adxquest@microsoft.com (quest, er?) with the subject Legacy Adxstudio Portals v7 Partner Announcement. The email is all about the changes coming for legacy Adxstudio Portals v7. I don’t believe there is any new information but it’s really nice to have a clear and concise summary of the options available to partners and customers. Here is the abridged version:

Transition options

  1. Migrate to Microsoft Dynamics 365 – Portals – a new service that is part of the Microsoft Dynamics 365 online offering
  2. Use Microsoft Dynamics 365 – Portals source code v8.3 – a one-time Portals source code release that is customizable, but limits future migration opportunities and does not include support
  3. Continue using legacy Adxstudio Portals v7 – if your customers acquired legacy Adxstudio Portals v7 via a perpetual license, they may continue to use their current legacy Adxstudio Portals v7 product. If they use legacy Adxstudio Portals v7 under a subscription license, they should contact Billing & Subscription support when their license is up for renewal

Support options

  1. If customers choose to migrate to Microsoft Dynamics 365 – Portals, Microsoft will provide documentation to assist them in migrating their organization, and they can obtain migration support from experienced Microsoft partners like yourself.  In our direct communication to our customers, we noted that fees may apply should they require partner services for migration support. Ongoing product support for Microsoft Dynamics 365 – Portals will also be available from Microsoft Customer Service & Support.
  2. If customers choose to download the Microsoft Dynamics 365 – Portals source code v8.3, there will be no Microsoft support available for critical bug fixes or security issues.
  3. If customer choose to continue using legacy Adxstudio Portals v7, Microsoft will provide support to fix critical bugs and security issues until August 1, 2018.

Best part of the email to follow:

Detailed information about transition options

Options Migrate to Microsoft Dynamics 365 – Portals Use Microsoft Dynamics 365 – Portals source code release v8.3 Continue to use legacy Adxstudio Portals v7 as-is
What to expect Migrating involves moving to Dynamics 365 online environment, removing any previous customizations from your customer’s existing portal, upgrade portal solutions, reconfiguring their new portal to meet their requirements, then deploying their new online portal service.

Upgrade documentation is being developed and will be available soon.

The source code is available for free through the Microsoft download center. The code is licensed under a standard industry open source MIT license agreement.

If your customer chooses this option, the only supported path to a future migration to Microsoft Dynamics 365 – Portals is to revert back to a non-customized version of source code, then switch to the online service.

If your customers acquired legacy Adxstudio Portals v7 via a perpetual license, they may continue to use their current legacy Adxstudio Portals v7 product beyond August 1, 2018.

If they use legacy Adxstudio Portals v7 under a subscription license, they should contact Billing & Subscription support when their license is up for extension.

Benefits
  • Product support will be available from Microsoft Customer Service & Support
  • Upgrade documentation will be available soon
  • Experienced partners available for migration support
  • Available in 43 languages
  • Adheres to the highest Microsoft security standards
  • Automatically updated regularly
  • Dynamics 365 subscriptions with 5+ users will get their first Portals license for free (customers will be charged for additional portals)
  • Available in 43 languages
  • Full customization capability
  • Supports both Microsoft Dynamics 365 online and on-premise deployments
  • Critical patches will be made available until August 1, 2018
  • Product support will be available from Microsoft Customer Service & Support until August 1, 2018
Potential challenges The following features from legacy Adxstudio Portals v7 will not be included in the current version of Microsoft Dynamics 365 – Portals:

  • On-Premise CRM Support
  • Asp.net customization
  • Self-service scheduling
  • Community and partner events
  • Issues Management
  • SharePoint document manager
  • ALM Scenarios
  • Public Sector solutions
  • Shopping Cart & Payment
  • Source code is offered as-is, and should be considered as a starter sample code
  • No support available
  • No updates planned
  • Customer is responsible for all code, bug fixes, deployment, monitoring, security and hosting environment

The following features from legacy Adxstudio Portals v7 will not be included in the current version of Microsoft Dynamics 365 – Portals:

  • Self-service scheduling
  • Community and partner events
  • Issues Management
  • SharePoint document manager
  • ALM Scenarios
  • Public Sector solutions
  • Shopping Cart & Payment
  • Product support for legacy Adxstudio Portals v7 from Microsoft Customer Service & Support will only be available until August 1, 2018
  • If your customers use legacy Adxstudio Portals v7 under a subscription license, they will no longer have access to the service beyond August 1, 2018
Support options
  • Ongoing support will be available from Microsoft Customer Service & Support
  • Experienced Microsoft partners will be available to assist with migrating (fees may apply)
  • There will be no support available for critical bug fixes or security issues effective immediately
  • Microsoft will provide support to fix critical bugs and security issues until August 1, 2018
  • Product support for legacy Adxstudio Portals v7 is offered through paid support tickets or bundled with various services and entitlements such as MSDN and Premier license agreements
  • Technical support and Microsoft Dynamics 365 – Portals upgrade support will end on August 1, 2018

The most fitting quote

Would you tell me, please, which way I ought to go from here?’
‘That depends a good deal on where you want to get to,’ said the Cat.
‘I don’t much care where -‘ said Alice.
‘Then it doesn’t matter which way you go,’ said the Cat.
‘- so long as I get SOMEWHERE,’ Alice added as an explanation.
‘Oh, you’re sure to do that,’ said the Cat, ‘if you only walk long enough.

― Lewis Carroll, Alice in Wonderland

Tip #976: Dynamics 365 Outlook App conversation tracking

Now that the Outlook client is deprecated, it is important to be aware of how the automatic tracking options work with the new world of Outlook App + Server-Side Synchronization.

If you have your personal options set to track email messages in response to tracked emails in Dynamics 365, when a user tracks and sends an email to an external contact, when that contact responds to the email, the response email will be automatically tracked.

However, when the user responds to the user’s response, the email will not be automatically tracked with the Outlook app. The user will need to manually track that email for the message to be tracked.

  • User sends message to external contact and tracks the message.
  • External client responds to tracked message: This message is automatically tracked.
  • User responds to client’s message: This message is not automatically tracked.

If it is important to capture all messages in the conversation, The following are your options:

  • Only track the last message in the conversation. Do you really need all individual emails, given the last email will contain all of the other messages in the chain? You can use Outlook’s conversation cleanup feature to delete all messages in conversations except for the latest message, then track the remaining message.
  • Teach users that the emails that they send will never be automatically tracked, and that if responding to a response to a tracked message, they need to hit the track button to track the message.
  • Use folder level tracking, and create folders for important clients (up to 25) and exchange rule to move messages to those folders. This will ensure that all messages in the conversation are automatically tracked. If you want to have your sent items tracked with folder level tracking, see Outlook’s features to save copies of sent messages to other folders.

Tip #975: What is “user activity tracking” in Gamification

One of the new KPI’s introduced in the May 2017 update for Dynamics 365 Gamification is “user activity tracking.”

According to the documentation, this KPI ” award(s) points based on a user’s activity in Dynamics 365.” This “circular definition” is not extremely helpful, as it doesn’t define the types of user activity that give users points in a game.

Ahmend Hudda from Microsoft provides some additional clarification:

User Activity Tracking KPI refers to looking at audit log activity around CRM Sign In activity for the user.  It checks user sign in based on the time interval you setup in the KPI (e.g. 12 hours or 24 hours) and sends that data over to Gamification for active games using that particular KPI.  If you setup the KPI with say a 12 hour window, it will check whether a user has logged in at least once in the last 12 hours.

The goal here is to use Gamification to help companies with active Dynamics 365 licenses get the most out of their investment by encouraging steady user interaction with the product.

This means that if you count total logins for a user in audit logs, your number may be different that the number awarded in Gamification, but the approach that Microsoft has taken is a good balanced approach. it weeds out some of the noise in the audit logs, without reflecting inflated totals if users log in multiple times per day or connect to CRM for Outlook without really using the system. And by counting all logins within an interval as one user activity, it eliminates users gaming the system by logging in and out multiple times.

I’m glad to see that Microsoft has given us an easy to use way to see who is using the system.

Tip #974: Attachments vs. Documents

We have posted here about attachments, and we’ve posted about documents, and whether you should extract your attachments to Azure or SharePoint. But in these discussions, users can get confused, so in this post, I’m hoping to add some clarity to this topic.

In my opinion, attachments and document management are two different use cases. While they can overlap, they address two distinct scenarios:

Attachments:

Attachments are file artifacts that will accumulate as you use Dynamics 365. Some will come from emails that are tracked; some may be photos that you take while on site at a client location, some may be news clippings related to a customer. These are unstructured data, are infrequently accessed, and only needed by people working inside of Dynamics. They do not require revision controls.

Documents:

Documents are more important files and typically are related to a specific process, such as a sales process. There may be legal reasons you need to store them, and you need to be able to quickly find a specific document. They may be things like sales proposals, quote documents, or contracts, which may go through multiple revisions, and you need to be able to view the history of the document. Access to these documents is frequently required by people who are not Dynamics users.

Why is this an important distinction?

In the cloud world, discussions around documents and attachments are frequently driven by storage cost. And while that is important, it overlooks the more important factor of user experience. In other words, just because you strip your attachments to Azure in a supported manner doesn’t mean that you don’t still need the SharePoint document integration.

And I’ve had many clients that have SharePoint document integration tell me “we don’t use attachments in CRM,” only to find that they have 10-20 GB of attachments in their database from email attachments. Don’t expect users to put unstructured attachments in the documents area, and don’t try to force users to try to manage documents with attachments. Use the right tool for the job.

The right tool for managing sales proposal documents is SharePoint. The right tool for quickly uploading photos from your phone while on a site visit is attachments (and then extracting them to Azure BLOB).

Tip #973: Use Trace not Console

For a long time I’ve been a big fan of console applications. Great way to put something together quickly, to see if the idea works, or simply test a piece of code or yet another library. What’s the way to see the output when you need some? They teach you that in code schools:

Console.WriteLine("Hello, world");

I was wrong and I apologize. In fact, I declare use of Console for the purpose of logging or test output to be a case of spießrutenlaufen and banished forever. Use Trace instead:

Trace.WriteLine("Hello, world");

There are multiple advantages: you can set and use levels, boolean switches are available, there are handy WriteIf and WriteLineIf functions, to name but a few. Oh, and the word itself is shorter. The most important, of course, is the concept of listeners, i.e. it’s totally up to you where to direct the output. It can be done in config file

<configuration>  
  <system.diagnostics>  
    <trace autoflush="false" indentsize="4">  
      <listeners>  
        <add name="fileListener" 
 type="System.Diagnostics.TextWriterTraceListener" 
 initializeData="TextWriterOutput.log" />  
        <remove name="Default" />  
      </listeners>  
    </trace>  
  </system.diagnostics>  
</configuration>

or straight in code

var logger = new ConsoleTraceListener();
Trace.Listeners.Add(logger);

Concept of listeners really shines when you need interaction with other libraries that also make use of tracing. Take for example, XrmTooling. If you use CrmServiceClient in your application, but something is not working and troubleshooting is required, simply do this before initializing CrmServiceClient:

var logger = new ConsoleTraceListener();
Trace.Listeners.Add(logger);

TraceControlSettings.TraceLevel = SourceLevels.All;
TraceControlSettings.AddTraceListener(logger);

var client = new CrmServiceClient(...);

The output will light up with all sort of goodness including interesting performance bits like timing of the queries.

When using Console, output is not guaranteed either. If you try running your console code as an Azure Function on Consumption Plan (where mighty Kudu console is not avialable), good luck fishing where did Console.WriteLine go. Even though tracing in Azure Functions is different and not based on System.Diagnostics classes, it’s easy to whip your own tiny listeners as we did in Tip 808:

public class TraceWriterWrapper: TraceListener
{
  private TraceWriter _log;
 
  public TraceWriterWrapper(TraceWriter logger) 
         : base(name)
  {
    _log = logger;
  }
 
  public override void Write(string message)
  {
    _log?.Info(message);
  }
 
  public override void WriteLine(
            string message)
  {
    _log?.Info(message);
  }
}
...
public static void Run(string input, TraceWriter log)
{
  var logger = new TraceWriterWrapper(log);
  Trace.Listeners.Add(logger);

and all of your trace output will reappear in the function log.

Of course, there is always Console.Beep() if you need a sound.