Microsoft Dynamics 365 Blog

So you think you want to use Service Scheduling in CRM 3.0 but you’re not sure that it’s up to the task? You’re not the only one. Since well before we launched CRM 3.0 last October I’ve been answering questions on how service scheduling can be applied. There is a huge discipline around scheduling: operations scheduling, event scheduling, job scheduling, project scheduling and each of these sub disciplines have slightly different models for finding availability and resource assignment.


For CRM 3.0 the Service team decided to focus it efforts on a specific set of scheduling problems: repeatable services of known, fixed duration performed by pools of known resources. This covers a lot of scenarios; it includes field service, trade services, personal services and even some professional services like accounting and medical care. It does leave out scheduling models like event scheduling which tend to be variable duration and use ad hoc resources and it leaves out project scheduling which takes place over a long period of time and has jobs tasks that are not repeated (at least not in the context of a single project).


Another way to think about the applicability of the scheduling model is with the Cartesian diagram below. It uses the categories of lead time and complexity in its axes. I’ve shaded the quarters of the diagram to indicate where Service Scheduling in CRM meets the most needs with a lighter color indicating a better fit.



But rather than describe the subtleties of this diagram let me get very specific on where CRM 3.0 does a great job, where you’ll need to write some code and where you should just look for a different solution. The Service Scheduling module is designed specifically to:


  1. Define resource capabilities – Using Resource Groups you can group resources (people or things) by their skills or other qualities e.g. “Level 1 Technicians” or “Repair Bay with Hydraulic Lift”.


  1. Describe Service resource requirements – Service definitions let you indicate how long a given service is by default, Services also let you create rules for the type and number of resources you need to perform that service, e.g. “Two Level 1 Technicians and One Conference Room with A/V”.


  1. Define resource availability – For each resource (User or Facility/Equipment) you can define their Work Hours. Work Hours describe when a resource is are available to work, when they are on break or away from work on vacations. For advanced scenarios, you can also describe the resource capacity to do work (how many units of work can they be scheduled for simultaneously) – e.g. A dentist may be scheduled for 3 teeth cleanings simultaneously since he doesn’t actually do all of them at once, but merely floats between patients.

Match service requests to resources
Once services and resources have been defined the CRM scheduling engine can tell you when you can schedule your service e.g. “Bob, Marty and Repair Bay A are available at 10 AM. Pat, Cynthia and Repair Bay B are available at 11:30 AM.”


For the following cases, you’ll need to extend CRM or may want to rely on some other solution:


  1. Link service appointments (jobs) together – For services where you want one person to work on something followed by someone else you would have to have a scheduler manually schedule two service activities or you could write a call out that queried the scheduling engine and scheduled two different service activities. You would likely want to group those activities under one entity (like a Case or a custom entity) so that you could roll up start and end times for the complete service.


  1. Schedule services that span breaks in availability – Scheduling long running services is a bit of a challenge today: we are currently presuming that services cannot be broken up across breaks or over an evening. For example, an engine rebuild service that takes 24 hours to perform could never be scheduled because no one person is available for 24 hours straight. The work around for this problem is similar to the one above where different service activities would need to be strung together to allow for multiple resources working serially or a single resource working across shifts. Alternatively, you could schedule against a virtual resource “Engine Repair Technician” and make work assignments manually knowing that you won’t exceed the availability of the virtual resources as defined in the system. 


  1. Optimize schedules of existing appointments. – CRM Service Scheduling can provide the best resource for a service request when the request is made but it can’t yet reschedule services to optimize them. This type of schedule optimization is great for cases where there is a loose commitment to customers on when a service is being performed and who is performing it. Microsoft Project does a great job of resource leveling and can iterate on a project schedule but Microsoft CRM 3.0 does not have this capability.

We’re seeing some customer successes with CRM 3.0 and Service Scheduling across field service and in bound trade services including several great customers in auto dealerships. This functionality is opening up opportunities for MS CRM in organizations that normally wouldn’t think of deploying CRM.


Barry Givens

We're always looking for feedback and would like to hear from you. Please head to the Dynamics 365 Community to start a discussion, ask questions, and tell us what you think!