Azure, docker, Service Fabric

How to upgrade docker engine version in a Service Fabric cluster.

Recently we had to upgrade docker engine version in all nodes of our Service Fabric cluster hosted on Azure because of a vulnerability issue with the previous version.

There was no proper documentation available online so had to work with Microsoft Service Fabric team and did the same using the following steps:

  1. Restart-Deactivate 1 node at a time which you want to upgrade. You can do it from the SF explorer

2. Once the node is disabled, you can rdp into the machine and run the following powershell commands in admin mode

net stop ServiceFabricNodeBootstrapAgent

net stop FabricHostSvc
Install-Package -Name docker -ProviderName DockerMsftProvider -update -force

You should now see a prompt in powershell with the latest version of docker.

Once done, restart the virtual machine.

Go back to SF explorer and activate the node.

Repeat the same process for all other nodes.

Dynamics 365 Field Services, Microsoft CRM Dynamics, Microsoft Dynamics 365, Microsoft Dynamics 365 Field Service, Microsoft Dynamics CRM, Resco Field service Mobile

Connecting to your D365 Field Service instance from Field service mobile app

If you are trying to connect to your Field service instance using the FS mobile app you need to first setup the Field service mobile configuration tool (a.k.a. woodford) , install the Default base mobile template project and then derive a customizations project which would hold your Mobile customizations.

This can be setup following the guide on Microsoft docs:

But even after following the guide if you try connecting to FS mobile, you may end up getting few errors.

Your organization has not created a Bookable Resource for your account and set it to be “Enabled for Field service Mobile”

The issue here is that if you want to access FS mobile app, your user account should have a corresponding Bookable Resource with “Enabled for Field service Mobile” flag checked.

Here I have created a Bookable resource and enabled it for FS mobile:

Once you setup the Bookable resource, try to connect to FS mobile app again, you may get another error message:

Your organization needs to configure Field Service Mobile. There may not be a published mobile project or the mobile project is not configured for a security role assigned to you.

If you remember while setting up the FS Mobile project in woodford, the project was enabled for Field Service related Security roles, you need to make sure the User trying to login to the FS mobile app has at least one of those security roles. Once you give FS related security role to the user you should be able to access FS mobile app.

Happy Field servicing 🙂

Azure, Cognitive services, Connected Field Service

Invalid subscription key error when connecting Azure cognitive services Face API

Recently during an integration scenario with D365 Field services in order to identify if the person making a change to the Customer asset is an employee or not we spinned up an Azure Face API service and on trying to connect it from an Azure function we were getting Invalid key exception.

We were using the Face API client library which defaults to west US endpoint of the service but our service was in EastUS.

Default endpoint:

The solution is to override the endpoint to which can be done by using another constructor of the FaceServiceClient class

FaceServiceAPIClient = new FaceServiceClient("Face API subscription key", "");



Microsoft CRM Dynamics, Microsoft Dynamics 365, Microsoft Dynamics CRM, Power platform

Nested gallery not returning more than 500 records in canvas app

Recently we were using a nested gallery in Canvas app and displaying some data from CDS(Dataverse/ Dynamics CE).

Although connection to CDS is delegable i.e. under the hoods the connector grabs more data as it is displayed on the canvas app but that is not the case if you are using a nested gallery.

Our data set had a max of 1400 records, so for us what worked is a global setting on the app.

The setting is defaulted to 500, you can find it in the settings area of the Canvas App:

The max it can be increased to is 2000

Update of this setting helped us fetch all 1400+ records.

PS: If you have more than 2000 records, then you have to fall back on implementing pagination(Get 500 records at a time and then get the next 500 on trigger of an event.)

CRM, Microsoft CRM Dynamics, Microsoft Dynamics 365, Microsoft Dynamics CRM

Querying entity/attribute metadata in Dynamics 365 from browser

We all usually go to a solution or the customization area to see the entity metadata, may it be attributes or properties related to the entity like auditing etc.

There are also tools that a lot of developers use like the Entity metadata browser, which is a solution that you install in your environment and can browse through the metadata in an easier manner.

What I find most productive is to query the metadata from the browser itself by forming the URL specific to the entity I am looking for.

So let’s say I want to see what all attributes/fields which are available on the account entity, here’s the URL that I would use:

https://{Organization base URL}/api/data/v9.1/EntityDefinitions(LogicalName=’account’)?$select=LogicalName&$expand=Attributes($select=LogicalName;)

This is how the output would look like:

You can use any JSON formatter of your choice to better present the data if you want:

Hope it helped :-)!


How to downgrade the tier or SKU of an Azure resource

We were recently doing a POC for a customer where in we were using an Integration Account(Standard tier). As it wasn’t production scale we thought of downgrading the SKU to free tier but didn’t find any option to do so from the portal.

Fortunately, we can do the same using Azure CLI/Powershell. Here’s the CLI script we used to downgrade the Integration Account’s SKU to free tier:

az resource update --resource-group SourceAs2 --resource-type Microsoft.Logic/integrationAccounts --name Integrationaccount --subscription 860188f0-6i3c-911c-98e0-4dcc90a57c70 --set

Lo and behold, the tier downgraded to free tier.

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

Scheduling dependent requirements using RSO in Dynamics 365 Field Service

As part of the April 2020 wave 1 release for Dynamics 365 Field Service you can now have dependent requirements and these can be scheduled in sequence using RSO (Yes this feature is not available for manual or any bookings done using schedule assistant).

You can define relationship between requirements using the successor relationship of a resource requirement

Once you define the the relationship between the requirements and run RSO, RSO is going to schedule the requirements in sequence and the same would reflect on the schedule board too. This is how it’s going to look like on the schedule board:

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

Not able to see Requirement groups on the schedule board – Dynamics 365 Field service

If you are working with Requirement groups and want to schedule them using the schedule board and not able to find them on the board, you are at the right place.

Resource requirements don’t appear on the Schedule board by default, it has to be configured from the Schedule board settings area.

Let’s see how to do it:

If you see the default Schedule board, there’s no view configured for Requirement groups. Click on the Schedule board settings icon:

Go to Requirement Panels settings area:

Add a view by selecting View type = Requirement Group

You should now see another view for scheduling Resource Requirements

Microsoft CRM Dynamics, Microsoft Dynamics 365, Microsoft Dynamics 365 Field Service, Microsoft Dynamics CRM

Restricting resources for customers in Dynamics 365 Field service

I have used Preferred Resource for Accounts in Field services a lot many times, which basically means that you can configure if the customer has some preferred resources and it helps the dispatcher to schedule those resources (if available) for a better customer experience.

Recently I came across how to configure if the customer doesn’t want a Resource to be allocated for their work orders.

How we do it is using the same Resource Preferences records but instead of choosing “Preferred ” preference type we use “Restricted”.

Adding Resource preferences:

Create a Resource preference of type “Restricted”

On schedule assistant, the restricted preferences will be applied and the resources would be filtered on the scheduled board if they are Restricted for a customer.

Field service

Benefits of the new UCI (Unified client interface) based Dynamics 365 Field Service App

As you might know starting Field service V7.5.5.x, the Field service related entities are just available from the UCI app not the standard UI.

During the initial usage of the new interface, I have jotted down few of the benefits I see from usage perspective which I am going to document here in this article:

Behaviour of the app when there’s an issue with Internet

I haven’t seen anybody talking about this as a feature but I as a user felt really good when the UI tells me that there is issue with Network rather than just not showing anything :-), a more app like behaviour.

Streamlined Navigation – Just seeing entities which are relevant to the User

As the app focuses on just one thing so there’s less clutter and less questions raised by Users on what do you mean by this when all they are using is Field services

Will add more findings here as I see more happy faces using UCI 🙂

Dynamics 365 Field Services, Field service

How to restrict bookings in Dynamics 365 Field service to only be scheduled at start of an hour

One of our customers had a requirement where they want a booking to be scheduled only at the start of an hour i.e. a booking can be scheduled at 2PM or 3PM but not at 2:30 PM.

On searching for a solution, we found out a very easy OOB solution which is called Time resolution.

It’s a setting on the schedule board which allows the booking to be created in an interval of minutes (1 to 60). Once we set this to 60, the User would just see 1PM, 2PM etc while dragging and dropping the Resource requirement on the schedule board.

Now this is going to just restrict the booking when dragged and dropped on the schedule board.

We also created booking rules to put some additional checks which work on the schedule board and finally a plugin on create of a booking which takes care if booking is created manually.