Exploring the Dynamics 365 Field Service Customer Portal

At South Coast Summit, I had the opportunity to speak about what’s new in Field Service in 2021 covering features released as part of waves 1 and 2. The Field Service (FS) Customer Portal was one of the features I was quite excited about, spending a bulk of my time talking about the topic. In preparation for the session I spent some time setting up, playing with and attempting to modify the portal (sometimes being unsuccessful and breaking the portal altogether – remember, the portal is in preview).

In this post, I’ll cover some basics about the FS customer portal along with some of my thoughts, observations and experiences using the portal – If you missed my session at SCS, here’s your chance to read some of what I covered.

Note: I’m going to assume you have a basic-ish understanding of Field Service.

A little background

In case you haven’t already guessed, the FS Customer portal IS a Power Apps Portal-based template with a pre-canned set of configuration records to allow you to quickly get a working portal up and running.

Field Service Portal Self Scheduling

The portal, as it currently stands has two main capabilities – Customer self scheduling and technician tracking

  • The customer self scheduling aims to allow end customers to log into the portal, create and schedule work orders for a selected service, all while scheduling the correct resource in real time, taking availablity, skills and distance into consideration.
  • The technician tracking capability is a set of pages, configuration and background functionality to send notifications to a customer when a technician selects an applicable status on a booking (such as accepted, travelling, completed, etc). As the name suggests, it also tracks the technician’s movement in near real-time for the customers’ visibility.

Interestingly, the portal started out with the Technician Tracker feature being the sole piece of functionality introduced in the 2021 Wave 1 release. However, between the wave 1 and wave 2 releases, the portal has seen a slew of useful updates – It still has a long way to go though, but its on the right track.

I’ll be covering the customer self scheduling (and related setup) in this post. We’ll save the Technician Tracker stuff for later.

The setup process

Maker Portal

Setting up a Field Service Portal is a surprisingly straightforward process. The Microsoft Docs article page provides a detailed step by step guide on how to set it up, but here’s the TLDR version 👇

  1. Go to make.powerapps.com > select your environment (please don’t do this in a production environment)
  2. Select the ‘+ Create’ section
  3. Under the list of Power Apps templates, search for ‘field service portal’ (or a variation of those words)
  4. Select it to begin the creation process
Finding the Field Service Portal
  1. Provide a portal name and URL > select create.
Pick a name and address. You’re limited to a single FS Portal so my create button was disabled

Portal configuration in Field Service

Once the Portal has been provisioned, you can begin setting up the data to allow the portal work. Head over to the Field Service App and open the single record in the Customer Portal navigation items under the Settings Area. This record contains a few key settings that need to be confirmed/changed in order to make the portal work.

To get the portal (and self scheduling) up and running you need to toggle the following settings:

  • On the ‘Configuration’ tab
    • Set Self Scheduling to Yes
    • Set the ‘Send self-scheduling experience to Account Contacts’ to Yes. You can select ‘Existing and New Contacts’ on the pop-up that appears (in this case)
  • The ‘Display Settings’ tab controls the look and feel of the portal. We’ll skip changes to this for now.
  • On the ‘Self Scheduling (Preview)’ tab there are a few settings you can choose to toggle depending on your preference
    • Enable Asset selection – allows a logged in customer to view and select their ‘Customer Asset’ (via the parent account association on the Asset and Account that the logged in contact belongs to) when scheduling a Work Order. This is handy in principle, but does have some caveats – covered as part of the booking experience
    • Resource Radius – Make sure you increase this or have resources within the radius or your scheduling search will return no results. It’s important to note that changing this radius also affects the search radius on the Schedule Board.

Supporting data

The final step in the setup process is to setup the necessary data required to make the portal work:

  • Incident Types – When a portal user selects a ‘service’ as part of the self scheduling experience, they are picking from a list of Incident Types that have been enabled to be displayed on the portal. This is driven by the ‘Enable for C2’ toggle on the Incident Type record (image below).
    Additionally, you will need to set the Estimated Duration, the Default Work Order Type and make sure that the related Work Order has a Default Price List set against it.
    You can also set Characteristics, Service Tasks, etc. against the Incident Type.
  • Bookable Resources – You will need to setup Bookable Resources of type ‘User’ with the correct location/ address, working hours and characteristics.
  • Invite Contact – There are a couple ways to invite Invite Contacts who you want to join the portal –
    • Create a New Contact against the Account with Assets. This will automatically send an invitation to the new contact to sign up to the portal
    • Manually setup a Contact via the Portal Management App – I use this method as a shortcut, setting the username, enabling the login and setting a password
    • Send an existing contact an invitation – There is a Command Bar action to send the invite
Send Invitation Action

In all cases, make sure you check that the Contact record as the ‘Web API Users’ Web Role associated – You can check this via the Related entities list.

After these steps, you should have a working portal where an external user can log in and schedule work orders.

The user experience

Homepage experience

As it currently stands, the homepage for the portal is relatively bare (but this will change with one of the wave 2 updates). At the moment (left image) you’re simply presented with a GIANT ‘Schedule Service Now’ link.

In the new iteration as part of wave 2, the homepages brings some useful additional functionality:

  • See your current booking at the top and access the technician tracker
  • Access past bookings and actions to provide feedback (via customer voice)
  • Access future bookings and actions to reschedule bookings

Booking experience

Clicking the Schedule Service Now button (provided you have logged in) takes you to the booking experience with 3 main steps to self schedule:

  1. Select the Service Product
  2. Select the Service Type
  3. Select the Date, then one of the available slots, add additional information, and then click Book.
The booking experience before and after picking the product and service

Thoughts on the booking experience

The Service Product dropdown is displayed if ‘Enable Asset Selection’ is set to Yes, BUT, it is an optional field. Users can skip populating this field if they wish and there doesn’t seem to be a way to control whether the fiekd is mandatory or optional.

I have not seen the ablity to filter/limit the serviceable assets that are presented to the logged in contact- for example: you may only want to surface the boiler installed at the customer location and not all the serialised child assets

The dropdown to pick the Service Type is a list of Incident Types where the ‘show on C2’ flag is set to yes. This field is not mandatory, but you need to select an option to complete step 3.

While its great to have these two abilities, I can’t help but think this could result in a disjointed booking experience for the customer and a management hassle for back office staff. The two dropdowns (product and service) are in no way dependent on each other, nor does there seem to be a way to create a dependency between the two. You could end up with a customer selecting the right product and wrong service or vice versa

Ideally I would like to see the available services filtered by the selected customer asset – This could be driven through an intersect (at the asset category level perhaps).

The Service Types surfaced on the portal for the logged in contact takes an all or nothing approach i.e. if the flag on the Incident Type is set to yes, it is displayed on the portal. It would have been great to surface Incident Types based on the logged in customer (or based on the Customer Asset suggestion above). You will need to be mindful of what Incident Types are surfaced on the portal as the ones you choose will be available to all logged in contacts (at least as of today)

At the point that you select a Service Type, the portal makes a real-time call to the Dataverse using the scheduling APIs to retrieve the resources who can cater for the particular request. The scheduling APIs handle the heavy lifting to find the resource with the right skills and availability, in the right location etc. The returned booking slots are displayed at a minimum of 30 min increments. You don’t see the specific resource at this point in time. Also, it’s worth mentioning that this isn’t true slot-based scheduling.

Gotchas/Observations

In addition to my thoughts and observations above, there are a few more gotacha’s to keen in mind if you are considering the use of the FS portal in your solution.

Disjointed Portal Themes

The FS portal has a dramatically different (read: Better) UI and theme in comparison to the existing D365 portal templates. The theme is more modern and in keeping with the Power Apps Portal ‘Blank’ templates based on the Fabric UI.

2 separate portals will have to exist independently

When provisioning the FS portal, it will exist independently from any other Power Apps Portal that you may already have. This includes having a separate website record, portal URL, site settings etc.

You could theoretically ‘integrate’ the two through a simple navigation re-direct along with making sure the themes match up, but the maintenance overhead will continue to exist.

Self-Scheduling applies to User resources only

When a portal user goes through the self scheduling experience, the returned results of available resources is limited to ‘User’ Resources only. So if you have Contact or Equipment resources, you can’t benefit from the self scheduling capabilities just yet. Additionally, self scheduling is not available for crews, pools and multiple resources.

Locked down pages

Key FS portal web pages such as the ‘self scheduling’ and track my technician pages are built using Web Templates based on custom aspx pages managed by Microsoft. So if you want to implement custom frontend logic on the page, there doesn’t seem to be a way to do so (at least at an initial glance).

Summary

The FS portal is an excellent start to provide customers with a self-serve capability within the field service context. At the moment it has a fairly specific use case of allowing a customer to self schedule from a set of services without the confusion of selecting the right product. However, you can see where the product can be improved to make it more usable in the long run. It is after all, still in preview.