Tip #1011: Case subject/category code strategies

Whether you use the standard Dynamics 365 Case Subject tree, or you use an alternative method and hope that the subject tree dies, categorization of your cases is important if you want to report on them later and analyze your case history. By assigning subjects to cases, you can group cases by category, identify related issues, and spot trends that will be helpful in improving your products and services in the future. By analyzing your case history by subject, you can identify which products or categories have the most issues and perform root cause analysis on these issues.

But if you are starting from scratch, sometimes it is hard to know which subjects you should include, and how your structure should be organized.

My recommendation is start simple. Too often managers want to overload the subject tree with too many options. This can be counter-productive, as customer service agents will find navigation through the list to be cumbersome, and may pick the wrong subject. Start with a handful of subjects and add to it over time based on user feedback.

The subjects that you use will probably differ based on you type of business and how your customer service teams are organized.

Companies that sell products

If you have customer service and sales teams ordered by product line, then categorizing cases by product line usually makes sense with subcategory types that clarifies the question or issue.

  • Product A
    • Sales Question
    • Technical support question
    • Returns
  • Product B
    • Sales Question
    • Technical support question
    • Returns
  • Product C
    • Sales Question
    • Technical support question
    • Returns

A Software Company

The following example is for a software company that has teams separated by function and technical tier.

  • Bug
  • Feature Request
  • Sales Question
  • How To
  • Technical Issue
  • Cancellation

Corporate IT

If you are using CRM to support internal helpdesk tickets, you probably will want to categorize by IT area and team handling the request.

  • Desktop Hardware
  • Desktop Software
  • Server
  • Networking
  • New Employee
  • Office 365
  • CRM
  • Change Request

By Department

In some organizations where issues are strictly handled by each department, categorizing by department can make sense.

  • Software Development
  • Sales
  • Information Technology
  • Human Resources
  • Mail Room
  • Operations
  • Shipping

How did you arrive at your case subject/category structure? Let us know in the comments..

Tip #1010: Use synchronization filters

I have a customer who is running Dyn 2016 8.0 On-prem and Server Side Sync. One of the accounts has 12000+ appointments and when/if we do a “Test and Approve” of the mailbox it seems that the resync of the mailbox with the Exchange Server (ver 2010) takes a very long time, often over 12 hours.

(That was Gustaf “Surströmming” Westerlund asking for help, if you must know)

Joel to the rescue

Update said user’s sync filter for appointments to start date on or after 1-Sep-2017 or something like that. NO reason to sync old/completed appointments.

Tîpp Jäår

Be smart, be like Joel, and start using synchronization filters to exclude old or irrelevant data. That can definitely speed up both initial and ongoing synchronizations.

Another common scenario is when a user account is used to perform initial data import or integration, and that user ends up owning bazillions of contacts. Default synchronization filter is My Contacts which will attempt to drag all those records across into the user’s address book. Smart move would be to adjust the filter and exclude contacts from the initial synchronisation altogether and then, over the time, start bringing the relevant records in (once you figured out what does “relevant” mean to that poor user). You can use last contact date, for example.

Tip #1009: Turn your Dynamics 365 into a rocketship

Every once in a while, when I am doing an event or a class, a student will show me something that totally changes how I do or show stuff. This week it happened to both myself and George as we were doing an event together. I would like to credit Scott “Go Fish” Meddings, a TSP in Australia, for showing us this one.

We all know that Dynamics 365 is reasonably fast most of the time but here is a simple trick that can be done on your machine to add an extra boost to Dynamics 365 client. It came up in the context of dealing with screens loading when doing demos, and preloading content. Both George and I have used this several times this week, and Dynamics 365 runs like a rocketship.

Run with graphic processor

Right-mouse click a shortcut to a browser of choice (as long as it’s not Edge), then select Run with graphics processor, then select the processor if there is more than one. The second I did it, I noticed a huge difference. Things that normally took forever to load were loading almost right away.

YMMV, of course, but give this one a try, whether it’s for a demo or just daily routine work, and again thanks Scott for the tip.

Tip #1008: Learn PowerApps

If you are a long time “CRM Person” like me, you may be interested in PowerApps, but if you try out PowerApps, you see that the process of building a PowerApp is significantly different than customizing Dynamics 365 forms. So I asked PowerApps MVP Daniel Laskewitz

What are the best training materials for “CRM people” to learn how to create PowerApps?

Have you built any PowerApps yet? Share your experiences and lessons learned in the comments below.

Tip #1007: What is the Common Data Service (CDS) today?

Much digital ink has been spilled about the Common Data Service (CDS) and the vision of what it will be in the future as the glue that connects Dynamics applications and model driven apps.

But what is the CDS today?

The Common Data Service is a service that provides one or more databases that include many of the common entities and fields that are in Dynamics 365 Customer Engagement (CRM) and Operations (AX). Administrators can add additional entities, fields, and relationships,  but cannot delete or modify the system created components. CDS provides pre-defined templates for integration with AX and CRM common processes.

CDS is also a back-end database for PowerApps. Users creating PowerApps can define their data model in CDS and build an app that stores data in the CDS database.

How do you get to the CDS?

You manage the CDS through the PowerApps website. If you don’t have access to PowerApps, you cannot access CDS.

  • Go to powerapps.com and log in.
  • Click the Common Data Service tab in menu to access CDS.
  • The first time you do this, you will be prompted to create your database. This will create your first database, which includes the common tables and fields such as accounts, contacts, orders, products, etc.
  • To add new entities, select “Entities” under CDS

  • To add new fields, open the desired entity and add a new field.
  • To add a new relationship, go to the child entity (where the lookup field should be), click the relationship tab, then add the relationship.

  • If you want to add a picklist field, you must first go to “Picklists” in the menu, define the picklist, then you can add the picklist field to entities.

How does integration with CDS and Dynamics 365 work?

To configure integration with Dynamics 365 and CDS:

  • Go to the PowerApps admin center.

  • Click “Data Integration” on menu
  • Create a connection set if one doesn’t already exist. This defines the CDS instance, CRM instance, and AX instance to use for integration.

  • Click Projects, then “New Project”
  • Give your project a name. You will need to select one of the pre-created integration templates, then click next. The integration templates are designed around the most common integration scenarios between Customer Engagement and Operations, such as synchronizing companies, contacts, products, and orders.
  • Select connections, organization, then confirm your selection.

Is CDS just one big database to use for Dynamics integration and PowerApps?

CDS can have one or more databases. In the Environments area of the PowerApps Admin Center you can define multiple PowerApps environments, each of which has its own CDS database. The number of CDS databases you can have differs based on licensing.

So a best practice may be to separate your instances based on usage. If you are synchronizing CRM data to CDS and building Power Apps that don’t use the Dynamics tables (or need those tables for other unrelated purposes), I would recommend creating additional environments and CDS databases so your usage doesn’t conflict. This can also be helpful for dev/prod scenarios.

What about security?

From the Environments area of the PowerApps Admin Center you can define permission sets, which are groups of CRUD permissions by entities.

You can then create roles and associate one or more permission sets to the roles, then grant roles to users.

Some important things to note:

  • There is no idea of owner or business unit security
  • CDS security does not mirror Dynamics security
  • If you have a user accessing Dynamics 365 data from a PowerApp and wish for it to mirror their security in Dynamics 365, you probably will want to use the Dynamics 365 connector for Power Apps rather than data synchronized to the CDS database.

Why would I use CDS for an integration between CRM and AX instead of a direct ETL integration?

One of the reasons why you may use CDS instead of a direct integration is because while AX and CRM have similar data and related processes, they do things in different ways. One example is currencies–both provide multiple currency support, but the way that currencies on transactions are stored is different in both applications. The CDS is designed to provide a common shared integration database that stores this data in a common way, simplifying process integration between the two (such as in quote to cash scenarios).

In some cases, however, a custom ETL integration (using tools like KingswaySoft) will be a better fit. Especially in highly customized deployments or where significant changes to standard field mapping is required.

And the answer may be both. If the standard templates work for you, but you need some additional integration support, it may be valid to use the CDS integration and supplement with some additional ETL based integrations.

__________________________________________________________________________________________________________

Any other questions or comments? Put them in the comments

 

Tip #1006: Case management vs. ticket management in Dynamics 365

Dynamics 365 customer service functionality includes case management, which is used for a wide variety of purposes. Many companies use Dynamics 365 for management of incidents (cases), which can be everything from a service issue, a customer complaint, or a request. Dynamics 365 cases have rich functionality, just a few examples:

  • Hierarchical parent/child cases
  • Queues
  • Rules-based routing
  • Automatic creation from email and other sources
  • SLA enforcement and escalation
  • Support for complex branching processes
  • Entitlement management to enforce service contract allowances

Dynamics 365 can handle very complex case management scenarios. But what about more simple scenarios, such as ticket management.

Note–different industries and standards organizations like ITIL have precise definitions around terms like incident, ticket, request. The definition used for case and ticket in this post are based on common usage, not any specific industry definition.

While “ticket” and “case” are frequently used interchangeably, they generally describe slightly different things. Tickets are frequently closed quickly, have fewer details than a case, and are email (or other message) centric. A common workflow for a ticket is:

  1. Request received from customer
  2. Ticket created
  3. Ticket assigned
  4. Agent resolves issue
  5. Agent responds to request
  6. Ticket is closed

Common systems used for ticket management include ServiceNow and ZenDesk.

Simple cases may follow a similar workflow as tickets, but for more complex issues, a case can be open for a much longer time, include more people, and have more steps. Dynamics 365 is built to handle very complex case scenarios.

But is CRM a good fit for more simple ticket management? The answer is yes, it can be, if you configure it correctly. The standard case configuration may seem cumbersome if you mainly manage simple tickets, but with a little bit of configuration, it can be a great fit for ticket management

The following are some tips for how to simplify the CRM Case entity for simple ticket management. Special thanks to Leon Tribe for his input on this tip:

  • Remove the stuff you don’t need. Doing tickets for internal helpdesk and don’t need entitlements? Turn it off and remove it from the form.
  • If most of your tickets are closed in one step, turn off business process flow for cases.
  • One complaint about CRM cases in email-centric ticketing processes is that the original email can get lost in the noise of the activity pane on the case form. Especially if you have processes sending emails to clients when cases are created or updated, if the agent wants to easily respond to the original email from the client, it can be hard to find it among all of the other case activity history. To make it easier for the agent to respond to the client’s email, add a subgrid of email records with a view filtered to exclude emails sent from the account that sends the case notification emails. This makes it very easy to locate the original email and respond to it. When you do so, the response email will be automatically linked to the case.
  • If most tickets are closed in one step, add case resolution fields to the case form, and have a workflow close the case when these fields are populated. While this only saves a few seconds per case, in a busy helpdesk, this can be a significant timesaver.
  • Want auto-text that the agent can insert to an email response and make some quick edits to send to client? Knowlege base articles or email templates can provide this functionality.

Do you have any other recommendations on how to simplify Dynamics 365 cases to better fit simple ticket management scenarios? Leave them in the comments.

 

Tip #1005: Keep your portals warm and cuddly

This week I had a privilege to sit among Australian Technical Solution Professionals (TSPs) absorbing some of the best selling techniques delivered by none other than our resident video tipster Derik Bormann.

One of challenges of the pre-sales demos is that they need to flow as smooth as butter – there is no room for mistakes and any hiccup is nearly fatal. “You had your chance” seems to be the motto.

When demoing Microsoft Portals, the performance needs to be especially flawless – expectations are high and there is no room for an hourglass cursor. Instead of frantically refreshing the pages 5 minutes before the demo, why not to keep your portal ready to go by hitting the pages you’re about to demo every minute or so, starting 15 minutes before your demo.

If you already use external monitoring services like https://pingdom.com, https://nodeping.com, or any other, go ahead and add your portal pages there – done. If you don’t have any of those (and why would you if you work in pre-sales), here’s how you can create a quick and dirty warmer-upper using existing Azure subscription (I assume you do have one of those if you demo Dynamics 365 and Portals, right?)

  1. In your https://portal.azure.com click + New, search for Scheduler, then click Create.
    Azure Scheduler
  2. Give it a good name
  3. Pick up an existing job collection or create a new one. Note: you’d want a collection in standard tier or higher – free one has only hourly runs.
  4. Click Action settings, select Https Action, enter Url of your page, leave the rest as is and hit OK
    Scheduler action
  5. Click Schedule and enter the details: start date/time (say 15 minutes before the demo), end date/time (15 minutes after), frequency of 1 minute. (And no, I don’t demo at 4:30 AM, it’s UTC speak for 3:30 PM in Sydney)
    Start stop
  6. Rinse, repeat for the pages you’re going to use in your demo.

You are all set now. Whatever problem you encounter during the demo, portal performance ain’t gonna be it.

Tip #1003: Gamification Workflow Assemblies and Plugins

After you enable Gamification in Dynamics 365, you will notice a new category of workflow steps available to you.

These workflows may be useful to you in controlling how Gamification works (such as automatically triggering KPI rollups, disabling KPI’s, etc), and some of them may be useful for other purposes (stop all running workflows). The following is a brief description of the workflows and plugins provided with the Gamification solution:

Microsoft.Dynamics365.Gamification.AggregationMasterWF:

Retrieves Sales Metrics where  game.startdate <= DateTime.Now and game.enddate >= DateTime.Now. Retrieves Data markers and create process and job records of type retrieve.

Microsoft.Dynamics365.Gamification.AggregationWorkerWF:

– Retrieve new Aggregation Values using FetchXML (Group by Sales Metric Id, Player Id, filter by specific date and sales metric ids of updated individual metric records)

– Update Player Data Records using aggregated values in transaction

–  If it is not last page -> create Calculation job for next page

– Mark current job for deletion

Microsoft.Dynamics365.Gamification.AuthPlugin

Authenticates the cloud end point and schedules the SendUserWf and PredefinedKPIInitializationWf to run.

Microsoft.Dynamics365.Gamification.CleanWorkerWF

– If it is Player Data Records Job

Retrieve Player Data Records related to appropriate sales metric

Mark records for deletion

If it is not last page -> create Reset job for next page

If it is the last page -> create Reset job for Interim Records

Mark current job for deletion

– Else (it is Interim Records Job)

Retrieve Interim Records related to appropriate sales metric

Mark records for deletion

If it is not last page -> create Reset job for next page

Mark current job for deletion

Microsoft.Dynamics365.Gamification.Configuration.BulkDeleteJobsSetupWf

Deletes data metrics, jobs, processes, player data, interim records.

Microsoft.Dynamics365.Gamification.Configuration.DuplicateDetectionRulesSetupWf

Detects duplicates in Games, Player or Metric data.

Microsoft.Dynamics365.Gamification.CreateProcess

– Create new Data Process

– Create Data Job

– Run Job

Microsoft.Dynamics365.Gamification.CrmVersionTrackerWF

Retrieves the CRM server version.

Microsoft.Dynamics365.Gamification.CurrentVersionWF

Retrieves the organization name.

Microsoft.Dynamics365.Gamification.DailyMarkerTrackerWF

Get midnight marker. Trigger on create of settings

=> Wait for next settings.NextDataMarkerTrackerWFRun

=> Create empty data marker

=> Retrieve changes for data marker using last saved data marker

=> Backup new midnight marker

=> update next run value (+1 day)

=> trigger itself

Microsoft.Dynamics365.Gamification.DailySyncWF

Get games, players and metrics from Azure. Trigger on first authorize on the Login/Register page. Runs daily midnight

=> Wait until settings.NextFSTDailySyncDate

=> Retrieves data from cloud and update CRM records if needed

=> Update NextFSTDailySyncDate+1 day

=> triggers a child workflow (itself)

Microsoft.Dynamics365.Gamification.DataReceiveWorkerWF

Retrieves changes related to an entity based on the data marker.

Microsoft.Dynamics365.Gamification.DropFlagsInterimRecordsWF

– If it is Player Data Records Job

Retrieve Updated Player Data Records

Drop IsUpdated flag

If it is not last page -> create Drop Flags job for next page

If it is the last page -> create Drop Flags job for Interim Records

Mark current job for deletion

– Else (it is Interim Records Job)

Retrieve Updated Interim Records

Drop IsUpdated flag

If it is not last page -> create Drop Flags job for next page

Mark current job for deletion

Microsoft.Dynamics365.Gamification.GameCreateUpdatePlugin

On change in Game start date end date drops the existing data markers and stops any metric handling running processes or jobs and resets all metrics.

Microsoft.Dynamics365.Gamification.Games.GameDatesOffsetChangePlugin

Updates game start and end date.

Microsoft.Dynamics365.Gamification.GetNotCompletedJobWf

Gets Gamifications jobs that are in running state.

Microsoft.Dynamics365.Gamification.GetResetProcessWF

Resets all Gamification jobs.

Microsoft.Dynamics365.Gamification.GetSettingsWF

Retrieves Gamification settings.

Microsoft.Dynamics365.Gamification.HeartBeatWf

Checks if a process is running or not.

Microsoft.Dynamics365.Gamification.KpiStateResetActivity

Resets entity markers related to all metrics.

Microsoft.Dynamics365.Gamification.MarkersCommitWF

– Commit markers

– Drop FullPostFlag if exist

– Drop Sales Metrics Reset Flag

– Set settings.IsCalculationRunning to false

Microsoft.Dynamics365.Gamification.MasterWF

On Demand. Launch calculation iteration

=> Retrieve set sales metrics where related game.startdate <= DateTime.Now and game.enddate >= DateTime.Now

=> Retrieve current data markers

=> If exist

– Create process record (Type – Retrieve)

– For each entity type of retrieved sales metric, create a Job record related to process record with appropriate marker

=> Set state of N created job (N – settings.ThrottleNumber) to Run => start Gamification Worker

Microsoft.Dynamics365.Gamification.Metrics.GameMetricFeedChangePlugin

Resets game metric feeds.

Microsoft.Dynamics365.Gamification.Metrics.InitPredefinedMetricFeedsWorkflow

Creates out of box KPI’s

Microsoft.Dynamics365.Gamification.Metrics.KpiDisablingActivity

Disables entity related KPI’s.

Microsoft.Dynamics365.Gamification.Metrics.MetricFeedDeletePlugin

Deletes KPI data on the cloud side based on the metric feed ID.

Microsoft.Dynamics365.Gamification.Metrics.MetricFeedPreDeletePlugin

Checks if there are any active games running corresponding to the KPI data that is currently being deleted. If they are this will throw an exception.

Microsoft.Dynamics365.Gamification.Metrics.MetricFeedSyncPlugin

Send KPI information to cloud side.

Microsoft.Dynamics365.Gamification.Metrics.MetricFeedSyncWf

Fetches KPI information from the cloud side and syncs it on the CRM side.

Microsoft.Dynamics365.Gamification.Metrics.MetricFeedUpdatePlugin

Activates/Deactivates KPI’s on CRM side.

Microsoft.Dynamics365.Gamification.NewUpgradeUserPlugin

Send new users created to cloud.

Microsoft.Dynamics365.Gamification.NextWorkerWF

Schedules the next job in the process which is in ready state to run.

Microsoft.Dynamics365.Gamification.ObserverWF

=> Runs every 6 hrs

=> Checks state of processes

=> Log the failure and restart processes as needed

Microsoft.Dynamics365.Gamification.PlayersMatchingPlugin

Map players to users.

Microsoft.Dynamics365.Gamification.RestoreMidnightMarkersBackupPlugin

Retrieves midnight markers from cloud side.

Microsoft.Dynamics365.Gamification.RetrievePlugin

Retrieves metrics from cloud.

Microsoft.Dynamics365.Gamification.ScheduledWorkerWF

=> Create a Scheduled process

=> Start it running

Microsoft.Dynamics365.Gamification.SendingCTDisableFlagWF

Send change tracking disabled notification to Gamification cloud end point.

Microsoft.Dynamics365.Gamification.SendingWorkerWF

– Retrieve updated player data records

– Post data to Azure

– If it is not last page -> create Data Sending job for next page

– Mark current job for deletion

Microsoft.Dynamics365.Gamification.SendMetricResetWF

Resets the metric data on the cloud side.

Microsoft.Dynamics365.Gamification.SendUsersWF

=> Get all active users in CRM  which have valid first name, last name, email address

=> Send the users to cloud

Microsoft.Dynamics365.Gamification.SettingsCreatePlugin

Creates and update GamificationSettings entity.

Microsoft.Dynamics365.Gamification.StarterWF

Starts on activation, controls when the calculation should run

=> Wait until settings.NextStarterWFRun

=> Retrieve games where related game.startdate <= DateTime.Now and game.enddate >= DateTime.Now

=> If games exist

– Run child workflow (FST Scheduler WF)

– Update settings. NextStarterWFRun (game.enddate + 1day if no overlap, or max(game.enddate) + 1 day if overlaps

=> Else

– Update settings. NextStarterWFRun (+1 day)

=> Run child workflow (itself)

Microsoft.Dynamics365.Gamification.StopAsyncProcesses

Stops all gamification processes.

Microsoft.Dynamics365.Gamification.StopRunningJobsWF

Stops all running processes and jobs.

Microsoft.Dynamics365.Gamification.Telemetry.SendTelemetryWf

This sends out telemetry information periodically.

Microsoft.Dynamics365.Gamification.Throttling.ThrottleTimeoutActivity

Sets time out for gamification operations.

Microsoft.Dynamics365.Gamification.ThrowExWF

Logs exception trace and throws plugin exception.

Microsoft.Dynamics365.Gamification.Update.CustomUpdateStep

Sends App version information to Cloud end point

Microsoft.Dynamics365.Gamification.UserActivityTrackingActivity

– Retrieve entity changes using marker (appropriate page)

– If CT retrieve failed

Send request to Azure (CT failed)

Set settings.CTDisabled to true

Mark current job for deletion

Exit from WF

– Retrieve sales metrics based on specific entity type

– Retrieve players based on sales metrics

– Apply sales metrics filters to retrieved records (Get FetchXML from sales metric, add “IN (retrieved records   ids)” condition to id)

– Update Individual Metric Records (for retrieved records) using ExecuteTransaction

– If it is the last page

Update entity marker

– Else

Create new job with the same entity name and marker, but with next page

– Mark current job for deletion

 

Tip #1002: Benefits of the UUI to PC users

Recently we posted about Unified User Interface (UUI) myths. Much of that, and other discussions, have focused on the additional goodies the UUI will bring to mobile users. But the benefits also go the other way–web/PC users of the Unified User Interface (UUI) will finally be able to use some of the “mobile only” functionality that mobile users currently enjoy.

  • Task flows: In Tip 914 I ranted about the deprecation of dialogs, especially because there wasn’t a viable replacement option in the web interface. With the UUI, task flows are no longer “mobile task flows.” They work in all interfaces. While there still are some gaps when compared with dialogs (like the ability to run them in context with a record), this is a big step to provide users, no matter what client they are using, with wizards to simplify multi-step processes.
  • Visual controls: Dynamics CRM 2016 introduced a number of great visual controls to mobile. The UUI now makes all of these controls available to users in the web UI. That means that all users will be able to benefit from sliders, signature controls, and many more. Here is an example of a form with a video URL field. The multimedia control displays the video in-line from the web form. The video is our tipster’s guide to visual controls.

  • Recently viewed/pinned records: The mobile app (8.2 and earlier) gives you the ability to pin records to the home screen. This is handy, but these pins are device specific, so if you log in to the browser or you go to a different device, you don’t have these pinned records.The UUI shows recently used records from the application menu and allows favorite records or views to be pinned. These pinned records are available from all interfaces, including web and mobile.