Microsoft Dynamics 365 Field Service, Resco Field service Mobile

Activating field service mobile licenses for D365

If your customer has D365 FS licenses and you were using Woodford solution to customize the Microsoft FS mobile app or Resco FS app, the woodford trial would eventually expire after a period of 30 days.

However for each D365 FS license you can activate a FS mobile app license as well, how to do it is explained in detail on the following URL:

https://docs.microsoft.com/en-us/dynamics365/customer-engagement/field-service/activate-fs-mobile-app-license

 

 

 

Advertisements
Standard
Microsoft CRM Dynamics, Microsoft Dynamics 365

New PowerBI dashboard button not showing in D365

Recently we had a requirement to show existing PowerBI dashboards in Dynamics 365.

When we tried to create a Power BI dashboard in dynamics, we couldn’t see the “New PowerBI dashboard” option on Dashboards page.

1

The problem was the PowerBI dashboards feature in Dynamics has to be enabled before we can go ahead and add a dashboard.

This is how to enable it:

  • Sign-in to Microsoft Dynamics 365 as a user with the system administrator security role.
  • Go to Settings > Administration > System Settings.
  • On the Reporting tab in the Allow Power BI visualization embedding option, select Yes to enable.
  • Click OK.

Once you are done, refresh the Dashboards page and you should now be able to see the Add new button.

2.JPG

 

Note: To access PowerBI dashboards in Dynamics, the users would need Power BI pro license. Exception being if customer has power BI premium, in that case only users creating power bi reports need to have power bi pro licenses.

 

Standard
Dynamics 365 Field Services, Microsoft Dynamics 365 Field Service

How to sync Resource Bookings in Field service with MS Outlook

A very basic Field service use case is that bookings should show as appointments in MS outlook so that users can keep track of bookings and other office tasks in one single view.

Fortunately this is configurable in D365 FS, however there are few prerequisites:

  • Dynamics 365 Field Service licenses
  • Office 365 Enterprise E3 licenses

Here are the steps to enable synchronization of bookings with User’s calendar:

1.1.1.1       To be done by Dynamics 365 Administrator

  • From the main menu, click Settings -> Administration.
  • Click System Settings -> Synchronization.
  • Under Select whether to enable syncing of resource booking with, check the Synchronize resource booking with Outlook.

 

1.png

 

1.1.1.2       To be done by each User(Bookable Resource)

  • Click the Settings button in the upper-right corner of the screen.
  • Click Options and then Synchronization tab.

 

2.png

  • Under Resource booking sync with Outlook, check the Synchronization resource booking with Outlook.

 

Standard
CRM, Dynamics 365 Field Services, Microsoft CRM Dynamics, Microsoft Dynamics 365, Microsoft Dynamics 365 Field Service

Creating Booking Rules in Microsoft Dynamics 365 Field Services

Booking Rules are Javascript validations that you can attach to the Booking creation event which is triggered when a booking is created on the schedule board or the schedule assistant.

To create a Booking Rule,  Field Service > Administration, and then choose Booking Rules.

Capture.JPG

What we need to do is attach a JS web resource with the Booking rule. The JS web resource should have a function which takes in the context and is called when a Resource requirement is dragged and dropped on to the Schedule board or the assistant.

Let’s see some code, in this example we are restricting creating of a Booking on the basis of how many bookings are already being created for a Resource.

function validateRules(sbContext) {
debugger;
var ruleResult = {};
var resourceReqId = '';
if (sbContext.newValues.ResourceRequirementId != undefined) {
resourceReqId = sbContext.newValues.ResourceRequirementId;
}
else if (sbContext.newValues.ResourceScheduleSource != undefined && sbContext.newValues.ResourceScheduleSource == 690970004) {//SA
var rr = Xrm.Page.getAttribute('msdyn_resourcerequirement');
if (rr != null && rr.getValue() != null && rr.getValue().length > 0) {
resourceReqId = rr.getValue()[0].id;
}
}
if (resourceReqId == '') {
console.log('RR is null. Exiting..');

ruleResult.IsValid = true;
ruleResult.Message = “No RR”;
ruleResult.Type = ‘success’;
return ruleResult;
}

resourceReqId = resourceReqId.replace(‘{‘, ”).replace(‘}’, ”);
var resourceId = sbContext.newValues.ResourceId;
var startTime = sbContext.newValues.StartTime;
var endTime = sbContext.newValues.EndTime;
var hearingType = ”;

var req = new XMLHttpRequest();
req.open(“GET”, encodeURI(Xrm.Page.context.getClientUrl() + ‘/api/data/v8.2/msdyn_resourcerequirements?$filter=msdyn_resourcerequirementid eq ‘ + resourceReqId + ‘&$expand=new_wa_case($select=wa_hearingtype)’), false);
req.setRequestHeader(“Accept”, “application/json”);
req.setRequestHeader(“Content-Type”, “application/json;charset=utf-8”);
req.setRequestHeader(“OData-MaxVersion”, “4.0”);
req.setRequestHeader(“OData-Version”, “4.0”);
req.setRequestHeader(“Prefer”, “odata.include-annotations=OData.Community.Display.V1.FormattedValue”);
req.send();
if (req.readyState === 4) {
req.onreadystatechange = null;
if (req.status === 200) {
var result = JSON.parse(req.response);
hearingType = result.value[0].new_wa_case[‘wa_hearingtype’];

if (hearingType == null) {
hearingType = 953860001; // Motion as default
console.log(‘motion set as default’);
}
console.log(hearingType);

//————————————————
var dt = new Date(startTime).toISOString();
var st = dt.substr(0, dt.indexOf(‘T’)) + ‘T00:00:00Z’;
var et = dt.substr(0, dt.indexOf(‘T’)) + ‘T23:59:59Z’; //2018-07-17T11:59:59Z
console.log(dt); // today’s date
var req = new XMLHttpRequest();
req.open(“GET”,
encodeURI(Xrm.Page.context.getClientUrl() +
‘/api/data/v8.2/bookableresourcebookings?$select=bookableresourcebookingid,starttime,endtime&$expand=Resource($select=wa_jurytrialhearinglimit,wa_motion)&$filter=_resource_value eq ‘ +
resourceId +
‘ and wa_hearingtype eq ‘ +
hearingType +
‘ and starttime gt (‘ + st + ‘) and endtime lt (‘ + et + ‘)’),
false);
req.setRequestHeader(“Accept”, “application/json”);
req.setRequestHeader(“Content-Type”, “application/json;charset=utf-8”);
req.setRequestHeader(“OData-MaxVersion”, “4.0”);
req.setRequestHeader(“OData-Version”, “4.0”);
req.setRequestHeader(“Prefer”, “odata.include-annotations=OData.Community.Display.V1.FormattedValue”);
req.send();
if (req.readyState === 4) {
req.onreadystatechange = null;
if (req.status === 200) {
var res = JSON.parse(req.response);
var data = res.value;

ruleResult.IsValid = true;
ruleResult.Message = “Validation succeeded”;
ruleResult.Type = ‘success’;

if (data.length > 0 && data[0].Resource != null) { // Court Room
var juryLimit = data[0].Resource.wa_jurytrialhearinglimit;
var motionLimit = data[0].Resource.wa_motion;
console.log(data, data.length, juryLimit, motionLimit);
var isDone = false;
for (var i = 0; i = new Date(data[i].starttime) && startTime = juryLimit) {
ruleResult.IsValid = false;
ruleResult.Message = ‘Jury Hearing capacity reached. Bookings not allowed.’;
ruleResult.Type = ‘error’;
} else if (hearingType == 953860001 && data.length >= motionLimit) {
ruleResult.IsValid = false;
ruleResult.Message = ‘Motion Hearing capacity reached. Bookings not allowed.’;
ruleResult.Type = ‘error’;
}
}
}
} else {
console.log(req.statusText);
}
}
}
else {
console.log(req.statusText);
}
}
return ruleResult;
}

Standard
CRM, Dynamics 365 Field Services, Microsoft Dynamics 365, Microsoft Dynamics 365 Field Service

How to hide Initial public view from schedule board in D365 Field services

As you would know in D365 field services schedule board, we can configure multiple boards and configure different filters or one scenario which is very common is having a board for each Organization unit/Territory.

We have a request from customer that they want to hide the Default Initial Public view from the board. There’s an easy way to configure this in D365.

Go to Advanced find and search for “Schedule board Settings entity”:

Find the record with Tab Name: “Initial public view” and change the Share Type to System instead of Everyone.

This is going to hide the tab from the schedule board.

Capture6.JPG

 

 

Standard
Dynamics 365 Field Services, Microsoft CRM Dynamics, Microsoft Dynamics 365 Field Service, Microsoft Dynamics CRM

How to show Crew on the schedule board in Dynamics 365 Field Services

If you have configured Crews in Field Services and trying to figure out why they aren’t showing on the Schedule board then you are in the right place.

The schedule board has few default filters and the default filter settings don’t have Crews configured to be shown on the board.

Let’s open the Filter settings in the board settings. Here is what the default settings look like:

1.JPG

Let’s open the Filter layout and scroll down to see the section which lists various resource type ids that should be displayed on the board:

 

2.JPG

Now, if we want to add Crew to this list, we need to add another item with value 6 in this list. Here’s how the config looks after the change:

3.JPG

 

Save the config and give it a name and apply. You should now see Crews in the Resource type in the filter pane:

 

4.JPG

 

Standard
Dynamics 365 Field Services, Microsoft CRM Dynamics, Microsoft Dynamics 365 Field Service, Microsoft Dynamics CRM

Setup Work Hour templates in D365 Field services

Although setting up Work hour templates in Field services isn’t that hard but it isn’t very intuitive either.

The first step is to configure work hours for one of the Resources in the system.

Capture2.JPG

 

Capture1.JPG

Once you are done configuring work hours for a resource, you can go to Work hour templates in Resource scheduling and create a new template using the resource you just configured in the previous step.

Capture

 

Capture1.JPG

 

Next step is to apply the template to the resources in the system.

Capture2.JPG

PS: You can apply the work hour template to maximum of 25 resources at a time, if there are more than 25 resources you’d have to do it in steps 🙂

 

 

Standard