Dec 07, 2018

Generate relevant demo data for Field Service in just 5 minutes

Importing relevant demo data for Dynamics 365 for Field Service can be a very comprehensive task due to its complexity. Microsoft provides a demo data package for Field Service & Project Service Automation, but unfortunately only for the base currency US Dollar and with US-based addresses. In addition, the time details of work orders quickly become outdated. For an effective demo it is however crucial that the demo data is suitable for the particular customer and adapted to their local expectations.

In this article I describe how you can adapt the demo data to customer-specific requirements with little effort and also use EUR as a base currency

Generate relevant demo data for Field Service in just 5 minutes

Demo Data in Action

Demo data package with EUR as base currency

As a baseline, I used the existing demo data package and inspected each individual record and converted it from US dollars to Euros using traditional craftsmanship. If you want to avoid the work, just use the following files and replace the existing ones:

This enables the data to be imported into a system with EUR as the base currency. Please follow all other instructions from the sample package readme.

Optimization of demo data for local requirements

To adapt demo data like company names, addresses, time values for work orders, resource bookings and opportunities, I use CRM Demo Monkey - a free tool to create demo data that can even update existing data.

After the download you log in with an arbitrary e-mail and password and with this account you can create and save your own demo data models. After connecting to an existing CRM environment, the tool can create or update any data. The tool can generate a variety of data, including geocoded addresses for over 40 countries.

This instruction assumes that you are using the latest version 5.1 of Demo Monkey. To make it easier for you to follow, I've provided all demo data models as templates, so you don't have to set up the steps manually.

How to proceed:

  1. Download and installation of Demo Monkey.
  2. First time using Demo Monkey, you need to register with any email address to create an account for Demo Monkey. Under this account your personal demo data will be stored.
  3. Log in to the CRM system where you want to import the data. Please do not use a production environment, as this could have some side effects to your business.
  4. Afterwards you can set up your own demo data models.
  5. To access the templates, select "Load Data Model" and then "New Data Model". You can now select one of the templates, then customize and extend it as needed.
  6. Before executing the demo data model, check whether all CRM users have sufficient security roles assigned. To keep it simple, I assign the System Administrator role to the users beforehand.
  7. Now execute the demo data model and validate the changes.

Choose a template

Change company names and addresses:

In order to update existing data Demo Monkey allows you to use FetchXML queries by using the advanced find function in Dynamics 365 CE. Any action can then be applied for each returned record.

I use the following FetchXML query to receive all companies: FetchXML

Copy and paste this query into Demo Monkey. I use the function of CRM Demo Monkey to query existing data (Action Item: "Fetch existing records"). Action Item: "Fetch existing records

With the subsequent function "Update Address", all addresses will be geocoded for the selected countries. Currently, the tool can generate realistic addresses for about 40 countries. Generate Addresses

In the same step I also use a function to update the existing company names. The names are generated based on stored syllables and legal forms. You can simply change the syllables to generate typical company names for the particular country.

After the execution of this demo data model the demo data for the accounts looks much better: Distribution of addresses

We follow the same principle to update all other data. If you don't want to configure the demo data models yourself, I provided them as a template for you. When creating a new model, select one of the existing templates.

Work Orders

For work orders, the execution date must be moved to the future and the address must also be redefined. If we have defined our own territory we also can update it at that point.

In this case I use the advanced search again to create a FetchXML string, the query includes all work orders and additionally the address of the parent service account. FetchXML

We can then access all the fields defined in this query in the subsequent steps. The procedure is the same again. First create an action item of the type "Fetch existing records" and then an action item of the type "Create or Update CRM Records".

Insert FetchXML In this step, the values of the higher-level action item can be accessed using the data provider "Parent Action Item".

Since the values are not located directly on the work order entity, but are integrated via the linked entity, we must prefix the field name with the entity name of the linked entity. For example, "account.address1_city". FetchXML

I admit, updating existing data is a little bit more complicated. But once the model is created, you can reuse it for any environment. I also provided this model as a template so you do not have to create it from scratch.

When updating the record, we can also specify the start and end dates for the work order. For this I use a data provider that randomly generates a date in the future from the current date. How far in advance can be defined in the configuration! For example, "1..5" to move the date a maximum of 5 days from today forward.

If we now execute the data model, then the outcome is that all work orders are now in the future and the address data also match the parent company address. A few work orders should now be visible on the schedule board in every large city: Schedule board

Unfortunately, this is not enough, as we have not yet adapted the addresses for the available service technicians.

The addresses of the resources have to be adapted, whereby the actual address is stored in the contact. Lets keep it simple and just update all contacts. However, if a contact is assigned to an account, I use the mechanism already in place by adopting the values of the assigned account. For all others, an address is simply randomly generated.

FetchXml for contacts with parent company: FetchXml for contacts with parent company

FetchXml for contacts with no company: FetchXml for contacts with no company

This is how it looks in Demo Monkey. The first FetchXML Action Item “Fetch Contacts with Parent Account” followed by “Create or Update CRM records”. This is how it looks in Demo Monkey

And for the second case the first FetchXML Action Item “Fetch Contacts with no Parent Account” followed by “Update Address”. This is how it looks in Demo Monkey

The result now is that all resources are displayed in the desired country: The final result

There are now a few manual tasks left, such as changing the addresses for the organizational units or creating and assigning territories. However, I suppose you've gotten to know the tool well enough to apply it to other areas as well.

Congratulations, you have reached the end of the tutorial. What experience did you gain by creating demo data? Please share your experiences let others know!