Field Service: overview

field service

Field Service Overview

Field Service capabilities extend Dynamics 365 to provide a complete Field Service management solution. It helps to….

  • Optimize your service schedule with efficient routing, resource skill matching, and reduced travel time.
  • Increase first time fix rates and on-time delivery performance.
  • Enhance real-time communication and collaboration between customer service, dispatch, field agents, and customers.

Continue reading “Field Service: overview”

Fetch all parents who does not have child

free resorces

In one of scenario I was looking for all available Assets only, means show only those assets who are available for particular data range. Just like get all parents who does not have any child.

So, after some googling i found below way, but i was showing all booked and non booked assets for given date range.

Out of the box it wont give NOT-IN result, for it we need to change ‘Inner’ to ‘Outer’

<link-entity name="bookableresourcebooking" from="resource" to="bookableresourceid" link-type="outer" alias="aj">

Here is the complete sample fetch XML…..

<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="true">

<entity name="bookableresource">

<attribute name="name" />

<attribute name="bookableresourceid" />

<order attribute="name" descending="false" />

<filter type="and">

<condition attribute="statecode" operator="eq" value="0" />

</filter>

<link-entity name="bookableresourcecategoryassn" from="resource" to="bookableresourceid" link-type="inner" alias="ai">

<filter type="and">

<condition attribute="resourcecategory" operator="eq" uiname="Backhoe" uitype="bookableresourcecategory" value="{798E6C02-3BBE-E711-8123-E0071B686A81}" />

</filter>

</link-entity>

<link-entity name="bookableresourcebooking" from="resource" to="bookableresourceid" link-type="outer" alias="aj">

<filter type="and">

<condition attribute="starttime" operator="on-or-after" value="2018-03-01" />

<condition attribute="endtime" operator="on-or-before" value="2018-03-31" />

<condition attribute="bookingstatus" operator="not-in">

<value uiname="Hard" uitype="bookingstatus">{6ABF1A73-DFB9-E711-8129-E0071B67C991}</value>

<value uiname="Soft" uitype="bookingstatus">{6BBF1A73-DFB9-E711-8129-E0071B67C991}</value>

</condition>

</filter>

</link-entity>

</entity>

</fetch>

 

But, it was not satisfactory one, as I was interested only for available assets. So with below little tweak its possible which include above tweak.

<condition entityname="bookableresourcebooking" attribute="resource" operator="null" />

and here is complete sample for it ….

<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="true">

<entity name="bookableresource">

<attribute name="name" />

<attribute name="bookableresourceid" />

<order attribute="name" descending="false" />

<filter type="and">

<condition attribute="statecode" operator="eq" value="0" />

<condition entityname="bookableresourcebooking" attribute="resource" operator="null" />

</filter>

<link-entity name="bookableresourcecategoryassn" from="resource" to="bookableresourceid" link-type="inner" alias="ai">

<filter type="and">

<condition attribute="resourcecategory" operator="eq" uiname="Backhoe" uitype="bookableresourcecategory" value="{798E6C02-3BBE-E711-8123-E0071B686A81}" />

</filter>

</link-entity>

<link-entity name="bookableresourcebooking" from="resource" to="bookableresourceid" link-type="outer" alias="aj">

<filter type="and">

<condition attribute="starttime" operator="on-or-after" value="2018-03-01" />

<condition attribute="endtime" operator="on-or-before" value="2018-03-31" />

<condition attribute="bookingstatus" operator="not-in">

<value uiname="Hard" uitype="bookingstatus">{6ABF1A73-DFB9-E711-8129-E0071B67C991}</value>

<value uiname="Soft" uitype="bookingstatus">{6BBF1A73-DFB9-E711-8129-E0071B67C991}</value>

</condition>

</filter>

</link-entity>

</entity>

</fetch>

Simple one but it will save hours.

Thanks!!

Get data from selected rows of Sub-Grid

Here is the sample code to get desired data ( sample shows about GUIDS) from selected rows from the editable grid.

function GetSelecctedGuidsFromGrid() {

//Get an array of entity references for all selected rows in the subgrid
    var selectedEntityReferences = [];
    var sGuids = "";
 //get selected rows from grid    
var sRows = Xrm.Page.getControl("booked_asset").getGrid().getSelectedRows();
    
sRows.forEach(function (selectedRow, i) {
        selectedEntityReferences.push(selectedRow.getData().getEntity().getEntityReference());
    });
 //get all required data from each selected row    
for (let i = 0; i < selectedEntityReferences.length; i++) {
        if (sGuids == "") {
            sGuids = (selectedEntityReferences[i].id.toString());        
}
        else {
            sGuids = sGuids + "," + (selectedEntityReferences[i].id.toString());
        }    
}  
//clear field value    
Xrm.Page.getAttribute("soft_selectedassetlist").setValue(""); 
//set attribute value     
Xrm.Page.getAttribute("soft_selectedassetlist").setValue(sGuids);
    Xrm.Page.data.entity.save();
}

Thanks !!

Document creation in MSD 365

Many times we need to create document in MSD CRM and or MSD 365, ex. Quote. In earlier CRM version it was not available out of the box. But as part of MSD CRM 2016 and MSD 365 its has been introduced out of the box, in few clicks we cam create document or automate the process with the help of out of box workflow.  Continue reading “Document creation in MSD 365”

Main features – MS CRM 2016

ms-crm

The key features of Microsoft Dynamics CRM 2016 include … Continue reading “Main features – MS CRM 2016”

Deployments – Keep GUID sync

deploymnet

During deployments we have to keep same GUID’s across the environments, it will reduce the over headache like workflow/business rule validation. Here  are some methods ..

Manual Method

Exporting the data out of your DEV CRM (ticking for reimport), turning the files into CSV files, this will have the guid each row.  You can import these into different CRM instances

Create a CRM SDK Console app

Continue reading “Deployments – Keep GUID sync”

Working with Goals – Rollup Query

rollup

We can create Rollup Queries using CRM SDK (plugin or workflow or some external tool). In this entity, MS CRM provided similar to advance find capability for Query attribute, CRM stores it in database as ‘fetchxml’ attribute in fetch-XML (XML) format. Continue reading “Working with Goals – Rollup Query”

Common plugin for Deactivate / Delete all associated entity

Its walk-through for deactivating all associated (1:N) records. Steps for that are

  1. Create plugin
  2. Register and create steps

Create plugin

Continue reading “Common plugin for Deactivate / Delete all associated entity”

Trigger plugin using Action

actions

There are many scenarios that we needs to trigger plugin from ribbon / command bar. For this kind of scenario what we do, we create dummy entity and then call some message from JavaScript of  that dummy entity to trigger our plugin (you can explore this example from here ). This is what we do for MS CRM 2011, but from MS CRM 2013 onward, Microsoft CRM introduced ‘Action’ process.

Using Action we can trigger plugin, steps for that are …

Continue reading “Trigger plugin using Action”