Saturday, 18 February 2012

Capacity Scheduling in MS Dynamics CRM 2011 - part 2

Capacity Scheduling can also be used to provide a limit to the number of activities a resource can achieve in a set period of time. Say for example, that a utility company needs to carry out a safety inspection on its customers' gas installation once a year. The average time per safety check is 15 minutes, but there’s traveling time, which on average is also 15 minutes. The thing is the utility company does not hand out 15 minutes slots to customers. The customer gets a 4 hour window and the engineer turns out whenever he well damn pleases (At least that is how it feels to the customer), but how to manage all this, from the company’s point of view?

We know that the average safety check takes 15 minutes and the average travel time between destinations (customer premises) is 15 minutes, so we could say that the total time per safety check is 30 minutes and there are 8 such blocks in each 4 hour window.

In this example, engineers are unlikely to have access to Dynamics CRM so rather than setting them up as users, they will be set up as Facility/Equipments, see my previous post, if you need instructions on how to set up a new facility/equipment.

I set the Work Hours to be two four slots and assigned a capacity of 7 to the first slot and 8 to the second slot. The reason for this is that engineers need to have a lunch break, in this case a 1/2 hour lunch break. It would be possible to set a break in the Work Hours for each engineer, but since the engineers already get a lot of flexibility, remember, that they are only told visit eight, or seven, customers within a 4 hour window, it makes sense to give them the flexibility of taking the lunch break when they want.

In total, I have set up 4 engineers, with different Work Hour Patterns, so that an 08:00-20:00 range can be offered to the customer, in slots like this: 08:00-12:00, 12:00-16:00, 16:00-20:00 and made them all members of a new resource group called Engineers. Although, I will not be modelling it here, resource groups could be used to provide geographical groupings, so that engineers don't have to travel hundreds of miles unnecessarily. Sites could also be used to model geographical areas too.

Create a new service with the following settings, see my previous post for more details:
  • Name: Safety Check.
  • Default duration: 4 hours.
  • Start Activities every: 4 hours.
  • Beginning At: 08:00
  • Required Resources: Choose 1 (Least Busy) from the same site from Engineers (Resource Group)

I can now book multiple appointments for each engineer, see my previous post for more details. It is interesting to note that you can see resource availability, though not capacity, in the service calendar view, as can been seen in the screenshot below. Jill Engineer has no work pattern set from 08:00-12:00, notice the white background against Jill for that period, whereas Joe Engineer has no work pattern set from 16:00-20:00.
The service calendar after 6 service activities have been booked to the 12:00 -16:00 slot:
As mentioned in the previous post, it makes sense to create a custom entity that holds the customer information and link to it a service activity. This way a report containing the appointments details (customer name, address, date and time) can be produced and emailed to engineers every day or week. Not to mention using a custom form in say, Silverlight, for booking the appointments, which can be embedded in the form.

No comments:

Post a Comment