Category Archives: Customization

Functional Location examined

  • to model out the location structure of a larger site
  • i.e. Building, Floor and Room on different levels
  • can also be used when not having a fixed location or location is frequently changing
  • Assets and Locations can easily be moved or reparented (drag n drop) if their location changes
  • Locations can be manually ordered by drag n drop
  • can be Physical or Functional location
  • available on mobile where technicians can add locations and assets
  • Address in Work Order gets updated according to the Functional Location Address, or if this is empty, the system searches across all Parents Location’s addresses (on more than one level!), and takes these if found
  • In Work Order form when first picking a Primary Incident Customer Asset, then the Functional Location gets auto-populated
  • After creating a Work Order, the Primary WO Incident will also be related to the Functional Location chosen in the WO
  • Creating a second WO Incident does NOT automatically relate the WO’s Functional Location to this 2nd WO Incident. Instead it can be manually set i.e. to another Functional Location (or create field mapping if you want it to be the same.)

Data Model of Functional Location

  • possibility to add individual address which automatically gets geo coded
  • 1:n Subgrids:
    • Customer Assets
    • Work Orders
    • Cases
    • Work Order Incidents
    • Agreement Booking Incidents
  • native N:N relationship to Account

So if a User would want to track Work Order Products, WO Services, WO Service Tasks on it, the Functional Location is NOT the best table to use. This brings us to the decision that a HVAC Unit and its components like Compressor, Fan, Thermostat… are better represented as Customer Asset than as Functional Locations (see screen above and note the different symbols for Location versus Asset).

Why N:N relationship to Account?

Imagine you have a big campus and you have different Service Accounts responsible for managing Work Orders of different typesbe .

Or a big construction site with different subcontractors working on the same Functional Locations and Assets.

=> This helps to be flexible enough to have those Locations used be more than one Service Account.

To keep in mind with hierarchies and lookup prefilters here

Functional Location lookup field on Work Order

When creating a Work Order the Functional Locations are prefiltered to those of the Service Account.

Note: Creating a new Asset from the hierarchical tree view f the Account form automatically adds the Account to the created Asset.
However creating a new Functional Location from the hierarchical tree view does ONLY automatically ad the Account to the created Location if that is on the highest level directly under the Account.

When adding a Functional Location to a Work Order after the Service Account has been filled in, only those Locations are suggested by the OOB Lookup View that have the Service Account directly related or related to one of the parent Locations (also over more than one hierarchy level).
However if you’re either removing the Parent Location on the Location form or if you remove the Service Account from the N:N subgrid of the highest level Location, then your Locations won’t be found by the Functional Location Lookup view on the Work Order or Case form anymore. You would need to click Change View and then guess which Location was the one you needed.

I personally think it would be more convenient if Microsoft would automatically add the Account to all levels of Functional Location when created from Account form, as it does for the Customer Asset [improve@microsoft]. A user could still delete the Account from the N:N subgrid if not needed.

Until than it could be solved by a custom cloud flow.

Primary Incident Customer Asset lookup field on Work Order

When creating a Work Order the Primary Incident Customer Asset lookup is prefiltered by the Functional Location chosen before, but only for the Assets that are directly related to the Functional Location via ‘Customer Asset’.’Functional Location’ lookup, not for the Child Assets of such an Asset. Why? The child assets do not automatically inherit the Functional Location of the Parent Asset.

With such a setup

With the hierarchy above you wouldn’t find any Asset when chosing Basement and you would still not find Monitor 1 when chosing Room 005. However you can click Change View and remove this flag and then be able to get a list of all Assets of the Service Account:

Depending on your use cases you could surely also solve this by a custom process (Workflow/Flow) that updates the Child Asset’s Location to the Parent Asset’s Location each time there’s a change in the Asset hierarchy.

Customer Asset Form

In a Microsoft Video there is a Customer Asset Form visible in a browser that contains the new Functional Location/Asset-Hierarchy-View:

I wasn’t able to find this form in my latest OOB installation until I found out that I need the Security Role Field Service – Resource to be able to see the form Customer Asset – Mobile (below screenshot). Being “just” System Admin is not enough to get this form provided ;-).

Tip: As stated somewhere else in relation to WO Products and WO Services already, if you’re customizing Field Service, make sure to also assign yourself the other Field Service Security Roles available OOB. System Admin role does NOT provide you access to all the forms used in Field Service [improve@microsoft].

Account form

Here it is to mention that only those Assets are visible in the new hierarchy control if one of the parent Functional Locations is related to the Account AND the Top-Level Asset (aka Master Asset) belongs to the Account.

This could also be a little bit improved [improve@microsoft] so that also Asset Hierarchies/Assets are visible that have no Functional Location related to the Account but where only one of the parent assets or at least the Asset itself is related to the Account.

So if you use this feature on the Account form make sure to always add your Functional Locations to all necessary Accounts (n:n) and remember that Assets only show up on the Account form if the Master Asset belongs to the account.

Also remember, that on the Asset Form you might get a better overview of how the Asset in embedded in the Location/Asset structure.

Self Scheduling Portal

In this new portal the Functional Location is displayed next to the affected Customer Asset for which you are Scheduling a Service Call/Technician:

Source: https://youtu.be/W4SKfynrjXU?list=PLLqieRfraDcoTcFSM8AbHmmNl8JbLRAU6&t=5291

Closing Words

Even if there are still some things to consider and improve, in general this is a very great addition to overall Field Service functionality as many Field Service organizations have a need for a deeper structuring of their locations. Servicing industry clients regularly needs more specific information for the field tech about where to go than simply the main Service Account address.

We even had a need to create graphical inhouse maps of floors and rooms to make transparent where exactly the work has to be done.

The much improved flexibility that comes with Functional Locations can be used for rental services or large machinery, which regularly change places (like construction machines, trains, ships, and similar).

Also I think the long standing problem of a Return & Repair process could be addressed with a Functional Location similar to a “Repair Warehouse”.

A great combination is the new ability to “Disable Customer Asset Validation” which turns off the necessity that a Customer Asset handled during a Work Order needs to belong to the Service Account of the Work Order.

More information:

18 Min. introduction Video by MS Field Service Team: https://www.youtube.com/watch?v=UCjyEKH0qFg

Our D365 Goddess Dian Taylor:
https://d365goddess.com/dynamics-365-2020-release-wave-2-part-4/

And of course Microsoft Docs (thanks to Dave Clark & Dan Gittler):
https://docs.microsoft.com/en-us/dynamics365/field-service/assets-functional-location

Share it on

Mobile Offline Work Order Report

There is an OOB Work Order Report which can be generated even offline by the mobile application.

It contains the signature of the customer captured via the mobile device. The outcome is a PDF that can be attached to a Work Order.

It can also be sent out to a customer by email, however – of course – online is required for that mail.

Source: https://youtu.be/W4SKfynrjXU?list=PLLqieRfraDcoTcFSM8AbHmmNl8JbLRAU6&t=3861

To adjust the content an dformat of this Work Order Report (PDF Output) the sistem integrator has to adjust a PCF-Control using Visual Studio Code.

An alternative I think is still to use “kind of old school but proven” DocumentsCorePack (DCP) report (highly and easily customizable via MS Word) and let the report be generated when back online via the DCP-Server.

The big question, as this was a weakness in the former mobile signature process where the signature was stored as a picture file attachment within a Note, how does the new mobile app handle the storage of the signature…

It looks like it is stored as a base64 field directly on the Booking:

That means for tools like DCP (or Power Automate) that they have to “interpret” this file format if one wants to use these for a creating a report using the signature.

Share it on

Work Order fields explained

Total Estimated Duration

Sum of all estimated durations coming from Work Order Incidents or Work Order Service Tasks.

First Arrived On

when the first technician arrived onsite / switched the status of a booking to In Progress. It looks at the Actual Arrival Time field of the Booking even if this Arrival Time got updated later.

If Bookings aren’t used the field can be updated manually.

Completed On

when the last booking was completed. If there are more than one bookings it should be the latest of all the bookings.

It looks at the End Time of the Booking combined with the Booking Status Completed.

If Bookings aren’t used the field can be updated manually. For example if you have subcontractors providing their data differently that through the Microsoft apps.

Closed On

When the System Status of the Work Order was switched to Closed – Posted.

System Status

This field should never be customized as it drived the whole Field Service process and has many implications and automatically triggering lots of Microsoft plugins..

System Status Closed – Posted

If you switch the System Status to Closed – Posted while there are still Scheduled Bookings, they will automatically be set to ‘Booking Status’.’Field Service Booking Status’ Canceled.

While having Bookings in Status In Progress it isn’t possible to switch the Work Order to Closed – Posted or Canceled.

Reported By Contact

Can be a Contact that doesn’t belong to the Account.

Is not being filled OOB from Case.Contact.

Support Contact

Lookup to Resource.

If using Remote Assist this should be used for the remote expert a technician should call when (s)he needs remote support.

Is not being filled OOB from Case.Contact.

Primary Contact, Email, Address Phone

The Primary Contact is part of an embedded Quick View Form, so you can’t edit it directly on the Work Order unless you would embed it via a Form Component Control.

It is the Service Account’s Primary Contact.

Sometimes a bit misleading are the Email and Address Phone fields in the Quick View. Those are data of the Service Account directly and not of the Primary Contact. In my opinion they could have been slightly renamed on the Quick view form to make that more transparent. Even more strange is that these fields on the Account Summary Card: Email (emailaddress1) and “Address Phone” (address1_telephone1) are per OOB installation not available on the Account form. So here is one of the “always to do customizations” [improve@microsoft] to somehow change the Quick View or at least put these fields onto the Account Form.

The Primary Contact of the Work Order is also used for the Info Card displayed on tap on the mobile app’s map pin:

Source: https://docs.microsoft.com/en-us/dynamics365/field-service/mobile-powerapp-booking-maps

Price List

Prices for Work Order Products and Work Order Services are pulled out of this Price List. If Products don’t have a Price List Item in this Price List, then the Product.’List Price’ is used for the Work Order.

If the Billing Account (priority 1) has an associated Product Price List, this will be auto-populated (also if the Billing Account was determined by the Service Account).

If the Billing Account has no associated Price List, the System pulls the Price List from the Work Order Type (priority 2), also if the WO Type was determined by a chosen Incident Type.

Even if the you set the WO Type first and afterwards the Billing Account, the system is setting/keeping the price list with the highest priority.

Also even if a Price List was set first and then a Billing Account, the former Price List gets overwritten.

And by the way, the same logic works on the new Get Started=>Work Order Form, even if the Billing Account Lookup isn’t visible there OOB:

Create Incident Type

A new button in the command bar has been introduced with wave1 2021 which helps to create new Incident Types out of an existing Work Order.

Source: Microsoft, https://youtu.be/W4SKfynrjXU

Estimated Duration can be manually adjusted by removing the tick from “Copy Tasks”:

Share it on

Work Order Product and Work Order Service customizations

OOB Forms disappear

Attention! When customizing WO Product or WO Service form and do that how I sometimes do by creating own custom forms, you might stumble across the default forms not being visible anymore. That is because the default “Information” forms for both are only enabled for the following Security Roles:

  • Field Service – Administrator
  • Field Service – Dispatcher
  • Field Service – Inventory Purchase

What of course is strange and missing is the enablement for System Admin [improve@microsoft]!!

So what I recommend is as long as you’re customizing Field Service to assign your own User the Field Service – Administrator role additionally to System Admin.

Hide price and cost related fields

My “fastest” resolution has been to create a Hidden Tab and put all the unnecessary fields in it. This way you’re not getting in trouble when trying to remove fields that aren’t supposed to be removed from the form.

However I thing Microsoft is working on a general solution on how to disable pricing for Field Service in general because there have been so many customers not using pricing in Field Service but keeping it completely in their ERP.

Share it on

Customize the Schedule Board

To customize the Schedule Board has some special limitations but also a lot of possibilities.

Requirement Lists

This is one of the most wanted things to customize.
You can easily use all different kinds of Views from the Entity Resource Requirement on the Schedule Board.

  • System views as well as Personal Views (good for advanced Users customizing their own Schedule Board tab) can be displayed.

Booking Templates

Can be defined per Schedulable Entity.

Good reference here:
https://docs.microsoft.com/en-us/dynamics365/customer-engagement/field-service/booking-template

Tooltips

  • displayed fields are defined by a View

Tooltips that are defined once across all Schedulable Entities:

  • Resource Map Pins: Resource Tooltips View
  • Organizational Unit Map Pins: Organizational Unit Tooltips View

Tooltips individual per Schedulable Entity:

  • Requirement Map Pins (here also personal view possible): Requirement Map Pin Tooltips View
  • Booking Map Pin or Booking Tile: Booking Tooltips View

Note: the Booking Tile’s Booking Tooltips View in the Daily/Weekly and Monthly View are not customizable as of now [improve@MS].

Details Pane

Sliding out from the right after selecting an item.

Views that are defined once across all Schedulable Entities:

  • Resource Map Pin or Resource Card: Resource Details View
  • Organizational Unit Map Pin: Organizational Unit Details View

Views individual per Schedulable Entity:

  • Booking Map Pin or Booking Tile: Booking Details View
  • Requirement Map Pin or Requirement from Requirements List (here also personal view possible): Requirement Details View

Map View filter

  • Requirement Map Filter View
  • Determines which Requirements (Requirement Map Pins) are shown on the map.
  • only the filter, not the columns matter
  • is independent of the Views on the Requirements Panel /Requirement Lists)
  • if Apply Territory Filter from Tab parameters (gearwheel symbol) is set to yes, ADDITIONALLY the Territories of the filter fields will be applied to sort out the displayed Requirement Map Pins

Other Adjustments

  • Increase Booking width (zoom in): slider at the bottom right. This is saved for the Schedule Board Tab (for all users).
  • remove columns from List View directly: only temporarily/local, not saved.
  • to hide certain bookings for example of Custom Entities from the Schedule Board has to be done by using the Field Service Booking Status Canceled for these Bookings and than setting this Status to be hidden.

Customization Tips

  • make default schedule board not editable per Security Role
  • if the setting for a Schedule Board Tab from 2nd gearwheel, upper right corner, should be saved, the User needs update privileges for this Schedule Board Settings entity record. Changes would be visible for all other Users of this tab as well than. More information: Shared vs. personal Schedule Board (by Microsoft).

Advanced Customization

Resource Cell

See here:
https://www.linkedin.com/pulse/extending-schedule-boardif-i-can-do-you-too-scott-lefante/

https://docs.microsoft.com/en-us/dynamics365/customer-engagement/field-service/extend-schedule-board-custom-resource-attribute

Dynamically get the displayed date range and use it for count in Resource Cell:
https://blogs.msdn.microsoft.com/crm/2017/12/15/new-use-schedule-board-date-ranges-in-custom-queries-in-universal-resource-scheduling/

Custom Tab in Details area (left)

A Web Resource can be integrated on the right as Custom Tab:
https://www.powerobjects.com/blog/2016/08/01/advanced-customizations-for-the-custom-tab-in-the-field-service-schedule-board/

Query extentions / Filter Layout extentions

https://docs.microsoft.com/en-us/dynamics365/customer-engagement/field-service/extend-schedule-board-custom-resource-attribute

https://cloudblogs.microsoft.com/dynamics365/it/2017/10/16/blog-post-july-2017-update-for-field-service-and-project-service-automation-universal-resource-scheduling-part-1/?source=crm

https://docs.microsoft.com/en-us/dynamics365/customer-engagement/common-scheduler/developer/extensibility-release-notes

Add a Sort By criteria

Get an insight into how to add a Sort By criteria by using the example of total available time. Also see how UFX works here.

https://community.dynamics.com/365/projectserviceautomation/b/dynamics-365-for-project-service-automation-blog/posts/how-to-sort-results-by-total-available-time-when-searching-for-resource-availability

https://cloudblogs.microsoft.com/dynamics365/it/2017/12/15/sort-available-resources-by-total-available-time-in-universal-resource-scheduling/

Book-Button extention

https://cloudblogs.microsoft.com/dynamics365/it/2017/07/14/dynamically-build-your-schedule-assistant-search-by-changing-the-url/

Custom Javascripts, CSS, and label localization on the Schedule Board

Create a new Client Extension record and associate it to the Schedule Board Setting record that contains your Schedule Board Tab or leave the Schedule Board Setting id field empty to have it affecting all Schedule Board Tabs .

https://community.dynamics.com/365/b/365teamblog/posts/july-2017-update-for-field-service-and-project-service-automation-universal-resource-scheduling-part-1

More information / sources:

6 tips for global versus local changes – Universal Resource Scheduling (by Microsoft)

Share it on

Resource Pool

What I mean here by “Resource Pool” is a Bookable Resource of the Resource Type: Pool.

  1. Create a new Resource with Resource Type: Pool
  2. optional: add members to the Pool as Child Resources (entity: Bookable Resource Group)
  3. set the capacity of the Pool either
    a) manually or
    b) let it be calculated based on the member’s aggregated capacity by setting Derive Capacity From Group Members to Yes

Tip: When creating new Resource Pools and setting the field Derive Capacity From Group Members to Yes and only than start adding Child Resources to the Resource Pool, the system triggers a comprehensive and time consuming Recalculation of the Aggregation, each time after you add a new member to the Pool.
So my recommendation when configuring the Resource Pool with this flag set to Yes is, to first add all the Resource Children (Pool Members) and than in a 2nd step turn the flag to Yes.

You now should be able to see the aggregated capacity of your Pool Resource. Click on Show Work Hours on the Pool Resource’s from:

When opening one of the days for which more than one Pool members were defined, you can see the available capacity here.

Also in schedule Board you’re able to see the Pool resource this way:

The Pool Resource Cell contains the number of Pool members

If you have Resource only temporarily joining the Pool, you also see this reflected in the counter for the number of available Resources on the Pool’s Resource Cell. This counter gets recalculated each time you change the displayed date range.

Resource Pool functionalities

  • you can have Pools consisting of these three Resource Type groupings, called Pool Type:
    – Equipments
    – Facilitiies
    – Combination of [Accounts, Contacts and Users]
  • the capacity can be automatically aggregated by setting the two option set ‘Bookalble Resource’.’ Derive Capacity From Group Members‘ to Yes.
  • the skills are not automatically aggregated to the Pool level
  • you can add skills (manually of by Flow etc to the Pool Resource (parent of the Pool members)
  • if you book a Work Order to one of the Pool members directly, the available capacity of the Pool doesn’t get reduced for the duration of the Work Order
Share it on

Deprecation of Resco based Field Service Mobile App

Microsoft has announced the deprecation of the current Resco based Field Service Mobile App by June 2022.

From June 2021 on new Field Service setups have to use the new Field Service Mobile App which is fully made by Microsoft and in fact is a Model Driven App as we know it today.

The new App can be tested from Field Service Version 8.8.22.x onwards. In mobile App Stores (i.e. Google Playstore) the new app is called “Field Service Mobile (2020)” as of today.

There are some offline capabilities including sync filters already but it looks like offline logic implementation is not as easy and comprehensively possible as is it with the Resco based Field Service app. Also many other functionalities are currently missing, but Microsoft promises to catch up.

Some things that are still missing are: Push notifications, Geofencing and Location Auditing, Reporting, IoT Alerts, Remote Assist and MS Intune.

Interesting is also a new control called “Form Component Control”, which can be used to embed a Work Order form into a Booking form:

Will this be a general new feature which can be used for all other forms as well? – It looks like!

Resco will continue to evolve its Mobile Application Development Framework and will also continuously provide new features and mobile solutions. Resco already offers different mobile solutions and templates (i.e. an advanced Field Service template, Sales template, Route Planning, Inspections) that are working perfectly together with Dynamics 365 and will continue to do so after June 2022. That means by the time Microsoft catches up with current Resco technology there will be new functionality available for Users that stay with Resco as well. On the other hand also Microsoft is rapidly growing its Power Apps capabilities.

For now the direction to go would be for more sophisticated requirements and larger implementation projects Resco will probably be the better fit. For more simple / standard requirements Microsoft’s model drivel app could be worth to consider.

To sum that up – it will not be end of development for the excellent Resco Field Service mobile technology – it will rather be a separation between the Microsoft FS Mobile App and the Resco FS Mobile App. Of course we’ll eventually have to pay Resco separately if we want to use their enhanced solutions. But competition is generally good for the market and customer segmentation has always made sense.

Source and more information:

https://docs.microsoft.com/en-us/dynamics365/field-service/mobile-2020-power-platform

Share it on

Missing Field Service Mobile Push Notifications?

Just had a migration where I was blocked by not having the msdyn_FSMNotifications solution installed in my target environment.

The secret behind it: this solution can only be installed on top of Woodford.

So after you have installed Woodford you’ll need to go to the Instance Picker and click on Install (or Upgrade if available) for Field Service, even if it is already installed. This way only some additional solutions will be installed. There you go!

Sources / more information:
https://docs.microsoft.com/en-us/dynamics365/field-service/upgrade-field-service
https://docs.microsoft.com/en-us/dynamics365/field-service/mobile-push-notifications

Share it on

Losing Office Security Group when resetting an environment

If you are trying to reset an Instance/Environment, this is usually done on https://admin.powerplatform.microsoft.com/environments.

There you can click “Reset” to get the below shown dialog window.

Reset button in powerplatfrom admin portal.

In this window you have the possibility to select an Office Security Group. This field is even pre-populated with the assigned Security Group of the currently selected Instance.

So what you are expecting is that while filling in this form you can use the field “Edit Security group” to assign a Security Group to your reset Instance by choosing the Security Group in this field.

BUUUUT: nothing of this is the case. This field simply has no functionality here.

Even when you click on the lookup pen symbol next to the field so that a popup shows all of your Office Groups and you can select whatever Group you want: for your new reset Instance you’ll always have NO Security Group at all assigned.

So why has Microsoft decided to put this field on this form if it has absolutely no functionality? – Nobody knows.

Please Microsoft, fix that and don’t let us hang with the common statement “works as designed”. Because the design in this point is really more than bad.

Share it on

FS Mobile: Remove Signature from Notes

On Resco for Dynamics or Field Service Mobile Client you by default have this (in my opinion unnecessary) Signature field on every Note form.

Note Form with Signature panel

So you might ask yourself why do you need the huge Signature area on each and every Note form. Usually it should be enough to capture Notes only on Work Orders and maybe for some special (custom) forms/processes. It confuses the End User if all he wants is adding an attachment or even only a text Note.

So what you can do is removing the Signature area by a simple On Can Execute rule on the Note form:

On Can Execute Command on Note form

After you have configured this you would not see the Signature panel on a Note form anymore and also not the Signature command from the upper right burger menu of the Note form.

Note Form without Signature panel
Note menu without Signature command

You can still configure one or more Signature sections for each of your forms as you already have it OOB on the Work Order form in FS Mobile.

Add Signature Tab to a Form

  1. in Woodford, go to Entity where you want to add the Signature
  2. click “Add Media”
  3. provide Name
  4. Select “Capture Signature” and “Clear”
  5. Optional: Provide “Required for Status”. Example: Status “Approved” only possible with Signature
  6. Subject: Title of the Note

Similarly you can apply this for Photos, Videos, Files, … You could also have one Tab for Signature capturing and another Tab for Photo and/or Video capturing. Or collect multiple Signatures on one form by having different Tabs for that.

More information & sources

More details/inspirational source of how to add a Signature to a Form:
https://red365ce.wordpress.com/2015/03/10/resco-mobilecrm-adding-a-digital-signature-to-forms/

For more information about On Can Execute, which enables you to conditionally hide or show commands/buttons in the upper right corner of forms, see here:
https://www.resco.net/woodford-user-guide/#__RefHeading__5865_1627906509

Share it on

Standard Setup Tasks Field Service Mobile

Always, when I setup a new Field Service Mobile, there are some steps I go through to ensure, everything is initially working in a comfortable manner.

Surely some of the steps aren’t required but have proven to be my best practice for new instances.

  1. create Resources and ensure that they are enabled for FS Mobile
  2. install Woodford
  3. install the latest Project Template from here and make a derivate out of it in which you perform all following mobile customizations
  4. in Woodford, go to plugins and activate the most important Delete plugins: Work Order, WO Product, WO Service, WO Service Task, …
  5. in your Project Template derivate, go to Configuration and set Save Password to true

6. edit the Sync Filters to also include data from the past (1-2 weeks) for: Work Order, WO Product, WO Service Task, WO Service, WO Incident, Resource Booking.

7. switch the default Booking View Layout from Calendar to List. To do so, go to Home=>Bookable Resource Bookings=>Properties=>Properties=>Initial Control=>switch from Calendar to List

8. activate your 30-days Trial of Woodford here: https://docs.microsoft.com/en-us/dynamics365/field-service/activate-fs-mobile-app-license

Share it on

Embed Forms Pro Survey into Field Service Mobile

Here is a nice article by Thomas Dayman that gives a short overview of how to embed a Survey Questionnaire created with the new Microsoft Forms Pro into the Field Service Mobile app.
The approach is to create an Offline HTML file where Thomas provides a sample code snippet for, and embed that via iFrame into a Form in Woodford.

Compared to Resco’s new Inspections the Forms Pro integration doesn’t support offline scenarios. Resco Inspections comes with additional licence cost whereas for Forms Pro it is still not clear how the licencing will look like.

Microsoft Forms Pro embedded in Field Service Mobile
Share it on

Mobile: Only load Customer Assets for which you have Work Orders

If you have too many Customer Assets in your Dynamics 365 database and you don’t want to have all of them offline available in your Field Service Mobile client you can set up a Sync Filter to do that.

Open Woodford=>Customer Asset and click on Sync Filter.
Than set it up like this:

Woodford Sync Filter Customer Assets

After saving the filter don’t forget to set the Incremental Linked SyncFilter (on top of the field list) to Enable:

If you want to go deeper, you can read here what this flag does:
https://www.resco.net/woodford-user-guide/#__RefHeading__5819_1627906509

Share it on

Bookable Resource – Form Customization

If you try to copy the OOB Bookable Resource form you might experience that some client side scripting doesn’t seem to be applied to your copied form anymore. Even when you haven’t done ANY other customizations except of copying it.

In this case the Facility/Equipment lookup isn’t hidden anymore when choosing the Resource Type Contact. On the uncustomized form this would have been hidden.

Strange as this usually doesn’t happen, right? If you have JS references you should have copied these references as well to your new form, right?

So when you dig deeper you’re finding that there now are business rules activated for the Bookable Resource form. I think this is rather new that MS delivers Business Rules out of the box. Fine for non-coders!!

The problem seems to be that the Business Rules here are set to scope “Information” which is only the one original OOB form, so your copy of it doesn’t inherit these Business Rules.

Another fascinating thing is that when you go into the Default Solution via old Solution explorer, you’ll see three business rules (above). When using Level Up (Browser Plugin), you’ll find 6 Business Rules taking effect here:

So you would need to go to the new maker experience to find / customize all 6 of them:

Next obstacle is: you can’t just change the scope of these Business Rules (I wouldn’t even know if this would be supported or not) as at least one of them has the Managed Property “Customizable” set to Flase:

Note: trying to customize from Business Rule “Show Enabled for Field Service Mobile field if Resource Type is User]” from within the new maker experience caused for me a state of no return, at least from make.powerapps.com: the BR got Deactivated and I could neither change it nor reactivate it anymore [improve@MS]. A resolution has luckily been to reactivate it from the old solution explorer (upper screenshot).

So what are you going to do to get the same behavior as on your OOB form also for your custom Resource form?

You need to copy the Business Rules delivered by Microsoft, than edit the Scope to your custom Form and activate the copies.
In the end you would have it like this:

Share it on

Requirement Groups in Work Orders

In a former article I have explained how Requirement Groups and Requirement Group Templates work.

Now I’m going to show you how these can be leveraged when using Work Orders.

Configure the Incident Type

  1. create a Requirement Group Template as explained in above mentioned article
  2. create a new Incident Type: Field Service=>Settings=>Incident Types=>”+ New”
  3. Give the new Incident Type a name (my recommendation: provide a hint in the name that helps you later on to remember that this Incident Type is based on a Requirement Group):

4. On the Incident Type form, go to Related=>Requirement Groups
5. create a new Incident Type Requirement Group:

6. associate the formerly created Requirement Group Template to it via the lookup field
7. provide a name to the record and save it.

So you should finally get something like this:

Test it with a Work Order

Now its up to you to test the whole setup.
For doing this you just need to create a new Work Order and fill in our new Incident Type into the field Primary Incident Type on the Work Order form:

Note: With a standard Field Service setup you necessarily need to provide the group based Incident Type in the field Primary Incident Type BEFORE you save the Work Order the first time. Otherwise you’ll get an error saying “You can’t add an incident that is related to a requirement group template to a work order if there is already a requirement related to this work order.”

Than you can check if your Requirements have correctly been associated with the Work Order. For doing so you need to go to: Related=>Requirements=> change the View to “Unsubmitted“:

Customized Work Order form and Requirements view

Customization recommendation (especially if you more often have group based Requirements): create your own Resource Requirement view for the Work Order form.

And now the big moment comes: hit the Book button on top of the Work Order form:

You should now get search results according to the available Resources, the distance to the Service Location and the other parameters like Work Location, Organizational Unit, Resource Type and so forth:

Note: if you are going to use the same or a similar combination of Resources more often, it makes sense to create Requirement Group Templates whereas if you need a certain combination of Resources/Skills only one time it would theoretically be enough to create a Requirement Group without a Template. However it seems like if go down that road, you will not be able to associate your Requirement Group to a Work Order anymore later on. At least I couldn’t find a way to do that. That means that if you want your Users to be able to click the Book button on a Work Order and have the fancy algorithm execute its sophisticated multi-resource query, you will always need to create an Incident Type for it first and associate a Requirement Group Template to it.

What you can do is going back from a created Work Order that has a Requirement Group associated via =>Resource Requirement=>Requirement Group (or simply from the Field Service menu: Requirement Groups) and there editing the instance of the Requirement Group that is responsible for your Work Order.
This method allows you to create a kind of a standard Incident Type Requirement Group and Template which you always use for creating a new Work Order when you want to leverage the Group functionality.

Cascading & sync of attributes within the Requirement Group

a) Cascading attribute changes from Work Order to Requirements

(as of Sept. 2019)

gets initially populated and auto-updated for the Resource Requirement with flag “Is Primary“ only:

  • Time From Promised/Time To Promised
  • Time Window Start/Time Window End
  • Service Territory (remove)

gets initially populated and auto-updated for all associated Resource Requirements:

  • Duration
  • Date Window Start/Date Window Start End (into fields From Date / To Date )
  • Latitude/Longitude
  • Work Location
  • Service Territory (Create, Change)

b) Attributes kept in sync between Resource Requirements

Duration, From/To Date, <long/Lat, Work Location are always kept in sync within the Requirement Group, even when changed on a non-primary Requirement.

Service Territory however is only kept in sync, when it was changed from the Work Order AND the change was not a removal of the field content. So you can open the non-primary Requirements and assign different Territories to each.

As an example you might end up having Requirements like this in the end:

– Time Promised From/To and Time Window Start/End is only populated to the primary Requirement
– Territory has been removed from the Work Order after initial creation: this removal is cascading only to the primary Requirement (whereas an UPDATE/CREATE of the Territory would have been cascaded to all Requirements)

When asking yourself why is there a difference of cascading between Time Promised/Time Window vs. Date Window you can come to the assumption that it has to do with the Requirement Group functionality. If we check the UI (screen below) we can easily see that there are only the From Date / To Date fields (which are the counterparts to Date Window From /To from the Work Order). So Microsoft only takes care for a synchronization of these fields within a Requirement Group but not for the other Date/Time fields.

I was asking myself how can you have differing values in the Time Promised fields for Requirements of the same Requirement Group? As soon as you are scheduling or re-scheduling them, all of the Bookings based on these Requirements get moved simultaneously.
However it could make sense if you have a scenario where a team gets a Booking for a longer period of time (i.e. traveling on site together) but the actual “ToDo” of a Resource would only be for a shorter time frame and you want to keep this information somewhere.
If you are going to use it this way you should surely not create a hard booking restriction – for example with a Real Time Workflow – which forces you to not book outside of time promised from/to.

Also note that a Time From/To Promised on one of the non-primary Requirements will be ignored completely by the Schedule Assistant. However a Time From/To Promised on the Primary Requirement is a hard selection criteria for the Schedule Assistant, even if it doesn’t show these fields in the Filter panel, when scheduling a Requirement Group [improve@MS].

Find in my next article variations of the Requirement Group setup and further detailed hints related to it.

Share it on