Before we get to the actual business requirement and offered solution, let’s first talk a bit about optimization, optimal schedule, business goals and vision of a Field Service provider. Ideally, a Service Provider would like to maximize efficiency – have all his technicians working more, traveling less and be as productive as possible, which makes absolute sense.
So let’s look at the example below.
The Service Provider ABC has 10 technicians working 9 am-6 pm. The average duration of each Service Appointment is 1 hour and for simplicity let’s ignore lunch breaks, absences, and travel time. Now, each technician, theoretically, can complete 9 appointments per day. Let’s also take it one step forward and think about appointment variations or Work Types. Not all appointments serve the same purpose, bring the same business value or revenue, and technicians are not necessarily equally paid for all appointments.
For example, Break-Fix appointments are normally created to fix malfunctions when the customer is not happy. On the other hand, Installation appointments bring in new business and, in many industries, monthly subscription-based payments. The customer is excited to get the device installed and watch his favorite movie. During installation, the technician may offer additional products that the customer is likely to accept. The technician has incentives in the form of extra payment or “sales” bonuses while working with happy customers and collecting additional leads.
What does it mean from a scheduling perspective? It means that if we schedule 9 Break-Fixes to Technician A and 9 installations to Technician B, Technician B would be super excited, but Technician A would be upset because he must deal with fixing issues, and paid less. He will therefore gen get frustrated if that will develops into a pattern.
If we add additional factors into the scheduling considerations such as travel time, splitting work between technicians might be justified because it increases efficiency. Well, there are even more additional factors such as unions, government or state laws that drive fair schedules in which technicians are not abused with work and have a fair schedule. Some unions limit the number of appointments, and others limit the amount of working time. Obviously, there are more examples that may require inefficient work split or work limits.
Does it have an impact on scheduling quality and revenues? It’s not surprising that the answer is – absolutely yes!
Putting constraints affects flexibility. If we could schedule an additional appointment just 0.5 miles away from the previous appointment, why do we need to send other technicians to the same territory?
Does it have a negative impact on the business? Not necessarily!
A happy technician usually means a happy customer and a happy customer is a paying customer. A happy technician means the service provider can worry less about technicians’ turnover, training, supervision, or losing productivity time. More than that, we are limited by laws and not always can do what’s best. As one of my friends says, everything is a trade-off.
The bottom line is, service providers need a way to limit technician workload. Luckily, In the Summer of ‘20, Salesforce introduced the much-anticipated Count Rule which provides the ability to limit appointments scheduled for technicians on a daily resolution. We can decide to limit the amount of work scheduled by 3 parameters:
- Number of appointments.
- Duration of appointment (excluding travel time).
- Custom logic – for example, implement logic in which the truck is not overloaded by goods when each appointment has its own “size” or “weight” value.
You may say that daily resolution is not sufficient, and you would like to limit the number of appointments in each appointment window by work type, limit the number of installations towards ad-hoc appointments that may come “last minute,” and have a shorter SLA. That’s absolutely true and it is a common use case in telco and utility industries. Count Rule does not support this kind of flexibility. If you are looking for a more comprehensive solution such as limiting appointments per appointment window per work type with a real ability to manage different capacities (and much more!) consider evaluating Asperii’s Capacity Reservation Add-On. Count Rule is restrictive and does not have much anticipated flexibility. It is very important to remember that Count Rule works on a daily resolution and you cannot control different maximal values per day unless you define different Service Territory Member’s Relevancy Groups and have complex STM maintenance processes.
Count Rule Business Case
In the beginning, we had a simple business requirement – a limited number of Break-Fix appointments per contractor per day because of the contractor payments B2B model. This requirement should be supported by all Salesforce Field Service logic services, including Global Actions and Optimization.
This requirement is simple to achieve. Every Break-Fix appointment receives a “cost” of 1, any other appointment receives a cost of 0. Count Rule was configured to count “Custom Value” against maximal value defied on a Service Resource of type Contractor.
After some time, the customer came back to us saying the solution is working great, BUT during the weekend, contractors are working only on Break-Fix appointments (booked via Appointment Booking) and during the weekend they need to relax the limit. Also, on the day of the service, if a contractor has spare time, they prefer to schedule him more Break-Fixes than defined on the count rule because they prefer him to do less “favorable” jobs rather than staying idle. This means that we need to find a way to relax the rule for TODAY or during the weekend. At the first glance, it seems like Count Rule is not that flexible to handle such a scenario, but after some brainstorming, we came up with the creative idea of having a “flexible” cost model, based on unique appointment window logic.
Solution
Service Appointment Cost Model:
Break-Fix SA without Arrival Window Start (not booked) = 0.1
Break-Fix SA with Arrival Window Start and Arrival Window is today or on Weekend = 0.1
Break-Fix SA with Arrival Window Start and Arrival Window is NOT today and NOT on Weekend = 1
Contractor, normally limited to 3 Break-Fixes per day. Technically there is no room for more than 20 SAs per day.
Scenario 1
Service Appointment is not booked and now costs 0.1 and we do initial Appointment Booking.
What happens with the regular windows (not weekend and not today)? If the technician has 3 Break-Fixes on a given day, adding 0.1 will exceed the limit of 3 (3 + 0.1 > 3) defined on the Service Resource and hence the appointment windows for a given day will be eliminated. If the technician has 2 Break-Fixes assigned, there is room to add a Break-Fixes that costs 0.1. After booking an appointment the cost will be 1.
What happens with in-day or weekend windows? Each Service Appointment booked for the weekend (or today) costs 0.1 so we can easily book up 30 SAs ((29 * 0.1) + 0.1). Anyway, the technician cannot perform more than 20 SAs in a working day. That’s exactly what we need!
Scenario 2
Service Appointment is booked but not for today or the weekend and now has a cost of 1. The customer wants to rebook the appointment, maybe for today, maybe for the weekend.
What happens with regular windows (not weekend and not today)? If the technician has 3 Break-Fixes, adding the additional Break-Fix which costs 1 will exceed the limit of 3 defined on the Service Resource and hence appointment windows for the given day will be eliminated. If the technician has 2 Break-Fixes assigned, there is room to add a Break-Fix that costs 1. The cost doesn’t change after the appointment is rebooked.
What happens with in-day or weekend windows? Adding 1 to other appointments that cost 0.1 will not exceed the limit. Once the appointment is booked it will receive a cost of 0.1.
Scenario 3
Service Appointment is booked for today or the weekend and now costs 0.1 point. The customer wants to rebook the appointment.
Well, it’s pretty much similar to scenario 1. You got it!
Now you need to decide how it will be best to implement the Custom Value (Cost) of Service Appointment. You can use FORMULA field or FORMULA field along with shadow Service Appointment Field.
In our case, the customer also asked to enhance “exceptions” logic to support holidays as defined in Business Hours.
Once the appointment is booked, we use a code to determine whether Arrival Window is set for weekend or holiday and set Schedule_For Weekend_or_Holiday_c=TRUE accordingly.
By being creative and thinking out of the box we made the impossible possible (through simple configuration) and made our customer and his contractors extremely happy!
Are you happy with your current system abilities?
Contact Asperii and challenge us with your unique needs!