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.

Share on FacebookTweet about this on TwitterShare on Google+

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.

Share on FacebookTweet about this on TwitterShare on Google+

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


Share on FacebookTweet about this on TwitterShare on Google+

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.


Share on FacebookTweet about this on TwitterShare on Google+

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.

Share on FacebookTweet about this on TwitterShare on Google+

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:


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.


– 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


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


– 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


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


Detects duplicates in Games, Player or Metric data.


– Create new Data Process

– Create Data Job

– Run Job


Retrieves the CRM server version.


Retrieves the organization name.


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


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)


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


– 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


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.


Updates game start and end date.


Gets Gamifications jobs that are in running state.


Resets all Gamification jobs.


Retrieves Gamification settings.


Checks if a process is running or not.


Resets entity markers related to all metrics.


– Commit markers

– Drop FullPostFlag if exist

– Drop Sales Metrics Reset Flag

– Set settings.IsCalculationRunning to false


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


Resets game metric feeds.


Creates out of box KPI’s


Disables entity related KPI’s.


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


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.


Send KPI information to cloud side.


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


Activates/Deactivates KPI’s on CRM side.


Send new users created to cloud.


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


=> Runs every 6 hrs

=> Checks state of processes

=> Log the failure and restart processes as needed


Map players to users.


Retrieves midnight markers from cloud side.


Retrieves metrics from cloud.


=> Create a Scheduled process

=> Start it running


Send change tracking disabled notification to Gamification cloud end point.


– 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


Resets the metric data on the cloud side.


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

=> Send the users to cloud


Creates and update GamificationSettings entity.


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)


Stops all gamification processes.


Stops all running processes and jobs.


This sends out telemetry information periodically.


Sets time out for gamification operations.


Logs exception trace and throws plugin exception.


Sends App version information to Cloud end point


– 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


Share on FacebookTweet about this on TwitterShare on Google+

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.


Share on FacebookTweet about this on TwitterShare on Google+

Tip #1001: Migrate Parature to Dynamics 365

Microsoft recently announced that Parature will be discontinued on May 18, 2017. To help their customers who currently use Parature, Microsoft is providing a toolkit which includes:

  • A data migration tool to migrate accounts, contacts, cases (tickets), knowledge base articles, and files;

  • Portal templates you can choose from to quickly deploy a modern support portal; and

  • A customer service configuration template, which includes out of the box workflows, fields and other configurations.

Based on information posted on the Parature website, the toolkit will be available on October 9, 2017, however at this time it is not yet available for download.

Want other options? Our friends at KingswaySoft have a great Parature SSIS integration Toolkit that can be used to migrate your Parature data to Dynamics 365 or to other systems.


See also:

Parature, from Microsoft transition

Can I migrate before or after my scheduled migration window?

What if I need help with the toolkit and migrating?

What is included in the toolkit?

When will the toolkit be available?

What if I do not want to migrate to Dynamics 365?


Share on FacebookTweet about this on TwitterShare on Google+

Tip #1000: Automatically close phone calls the hard way

CRM Tip of the Day reader writes:

I want to automatically close phone calls without the user clicking the “close” button. How can I do that?

In the words of Theodore Roosevelt, “Far better is it to dare mighty things, to win glorious triumphs, even though checkered by failure… than to rank with those poor spirits who neither enjoy nor suffer much, because they live in a gray twilight that knows not victory nor defeat.”

Here at CRM Tip of the day, we are not ones to take the easy way out. So here is how to close phone call records, in less than 22 steps.

  1. When done with the phone call user creates a note against the phone call record with the subject “I’m done.”
  2. Workflow is triggered by the note being created via a check condition step looking for notes with “I’m done” subject.
  3. Workflow creates task record.
  4. Task being created triggers Microsoft Flow.
  5. Microsoft Flow updates facebook with “just got off the phone”
  6. Facebook update triggers IFTTT rule.
  7. IFTTT adds a row to a spreadsheet in Dropbox.
  8. Spreadsheet update triggers Zapier to send an email to “closephonecall@yourcompany.com.”
  9. Exchange rule on mailbox forwards email to forward mailbox.
  10. Dynamics 365 picks up message and adds it to queue.
  11. Auto case creation rule converts email to case.
  12. SLA escalates the case to escalation queue
  13. Escallation of case triggers workflow
  14. Workflow creates Announcement record.
  15. Announcement record plugin pushes announcement to Azure queue.
  16. Logic apps listens on the queue and sends SMS message.
  17. Message is picked up by Azure Function.
  18. Azure Function signals listener on a client machine.
  19. Listener kicks in UI Automation that opens browser, finds the announcement and deactivates it.
  20. Deactivated announcement triggers workflow.
  21. Phone call is completed.

Thank you for reading and sending your tips over the past 4 years and 1,000 tips! Watch a videoof our live reveal at CRMUG Summit 2017.

Share on FacebookTweet about this on TwitterShare on Google+