Service Contracts & Service Scheduling in Microsoft CRM 2011
Another cheat sheet, this time covering Microsoft CRM’s rarely used features of Service Contracts and Service Scheduling…
Contract Templates are defined under Settings \ Templates (where Mail Merge Templates are also maintained)
On the Contract Template you indicate whether the Contract provides for a fixed number of Cases, a fixed number of Hours or covers a number of days. And I guess that provides fairly good cover. If I think of support contracts my employer offers they tend to fall into one of those 3 categories.
You can also define the hours and days of the week that the Contract covers (that’s what the little green dots are about in the screenshot below) – but settings these limits seems to have no effect:
Contract Templates cannot be edited once created, if a change is required you need to create new Contract Templates. You don’t seem to be able to delete or deactivate unwanted Contract Templates once they have been used at least once.
When you go to create a Service Contracts CRM acts slightly differently from normal, it pops a dialog and asks you to select a Contract Template, you chose one and only then does the Service Contract form appear. So, the Contract Template is not just a data entry shortcut, it drives the behaviour of Service Contracts.
On the Service Contract you specify the Customer the Contract is for and you enter the start and end date of the contract. This date range is validated against later when you try and charge Cases to the Contract:
The price of the Contract and the level of service provided for that price is defined one level down, on the Contract Line. The only real important field on the Contract Line is the “Total Cases/Minutes” field. This is what the Customer is buying from you – whether it be 20 Cases, or 3000 minutes (50 hours). It is this amount that will be get deprecated when you charge Cases to the Contract in the future:
There’s a bunch of other fields on the Contract Line, you can specify a Product and enter pricing details. And of course you can create multiple Contract lines under a Contract if you want.
To activate the Contract so that Cases can be charged to it you need to click the “Invoice Contract” button. It doesn’t create an Invoice record, it just changes the status of the Contract to Invoiced.
When creating a Case you can charge the Case to the Contract so long as the current date falls within the Contract’s Start and End dates and the Contract status is Invoiced:
Invoiced Contracts can be put on hold via the “Hold Contract” button, this temporarily prevents Cases from being charged to the Contract (I guess you might use this if payment lapsed).
The “Allotments Remaining” balance on the Contract Line is deducted only when the Case is resolved. There’s a field in the Case Resolution window where you can record the number of minutes to be charged to the Contract (for Contracts of that type):
I think that about covers it for Service Contracts. If your requirements don’t fit within these parameters then I recommend a cautious review of the suitability of this out of the box design. You may find adopting some custom entities and/or building out your own business logic extensions might be a better approach. Like all CRM scenarios you need to measure the gap and look at the unique characteristics of the CRM entities and screens and decide whether those characteristics are of benefit or are in the way.
UPDATE: Just noticed that cancelled Contracts can be Renewed via a “Renew Contract” button. This will create a duplicate Contract with a Status of Draft.
Here is more details on Contract Statuses, listed in the order of the Contract life cycle:
Draft – after a contract is created, it is automatically assigned a Draft status. This indicates the contract is still under development. Draft contracts can be edited but they cannot be linked to a case.
Invoiced – changing the contract status from Draft to Invoiced indicates your organization and the customer have agreed to the contract terms. A contract must have at least one contract line to be invoiced. A contract with a status value of Invoiced cannot be edited or deleted, it can only be cancelled or put on Hold.
Active – once a contract is invoiced, it remains in an Invoiced state until the contract start date is reached. At that point, the contract’s status will be automatically updated to Active. You can link cases to a contract once the contract is in an Active state. A contract with a
status value of Active cannot be edited or deleted, but new Contract Lines can be added (to allow extensions to the Contract).
On Hold – an active contract can be placed on hold. A contract in an On Hold state cannot be edited, cancelled, or deleted, and it cannot be associated with cases. It can be reactivated by releasing the hold.
Cancelled – an active contract can also be cancelled. When a contract has a status of Cancelled, it cannot be associated with cases. A cancelled contract can be renewed.
Expired – a contract remains active until it reaches its end date, at which time its status is changed to Expired. Expired contracts can be renewed.
Setup steps for the Service Scheduling module need to be completed under Settings: Business Management.
Start by defining your Resource Groups. Create a Resource Group for each types of Resource that you will need to schedule – e.g. if you are scheduling surgeries you might have the following Resource Groups: Doctors, Nurses, Surgeries and Anaesthetists:
Next identify each Resource under those Resource Groups. Resources can be CRM Users, Teams, or Facilities/Equipment records. Continuing with the Surgery example I would add My CRM Users that are Doctors to my Doctors Resource Group and then do the same for Nurses and Anaesthetists. Finally, I would create new Facilities/Equipment records for each Surgery and add those to the Surgeries Resource Group:
Next define the geographic locations where your Resources can be utilised. You create these as Sites. Under each Site you select the Resources that are valid for that Site. Later when scheduling you will take a customer request for a Service and the scheduling engine can optionally apply a Site constraint to ensure only Resources listed for the Site are scheduled.
Next step is to define the Services that you will be selling to your Customers. Stay in the Business Management area of CRM and go to Services, add a New record. Give the Service a name, indicate the duration the Service should be scheduled for – e.g. 1 hour, 2 hours, etc. and set when the first appointment can be scheduled each day:
Next you need to define the resource requirements for the Service. CRM has a unique UI for this bit, here’s an example where I say for the “Tummy Tuck” Service we need an Anaesthetist, a Doctor, a Surgery and 2 Nurses:
I’ve specified Resource Groups here but you can specify specific Resources instead if required – e.g. for the Tummy Tuck maybe you have to use Surgery A, or the Doctor has to be Ben Hanks.
You will see that Sites are mentioned as well, this is where you can limit the pool of resources by their Site associations (to prevent you scheduling resources from distant locations).
Next, we need to define when our Resources are available. Call up your first User and click on the Work Hours link. A calendar will appear. By default the Work Hours defined for Users equates to 24x7x365 availability – i.e. no constraint is imposed. The same is true for Equipment/Facilities records. This might be ok for Equipment/Facilities records but is unlikely to be ok for Users. So, click on one of the days and then click the Delete button to remove the default work hours definition. Click the Setup button and then select either the Weekly Schedule or Daily Schedule. Then define the working hours for that resource:
There are options here to vary the working hours by day or have them the same each day. You indicate which days of the week the User works and whether they should be considered unavailable on days where we have indicate the business is closed (e.g. on public holidays). The Set Work hours link takes you to a sub-screen where you can define start and end times and any breaks:
You can also define any restrictions the Resource has in regards to performing certain Services at certain times. e.g. perhaps our User here refuses to perform Tummy Tuck surgeries in the morning:
Last step is to define those business closures. There’s a screen for that under Business Management, it’s pretty obvious how you create records there:
Ok, that’s everything setup. CRM can now start assisting us with the scheduling of Services. We will give CRM requests like “Mr Smith wants a Tummy Tuck in Auckland one morning next week” and CRM will use all of the setup configuration we have fed it to determine which applicable resources are available. HOWEVER, CRM does not go as far as auto-scheduling. You still need to pick from CRM’s search results the resource you want.
This scheduling is done from the Service Calendar. On the Calendar you can chose to view a Day, Week or Month at a time, the view won’t typically fit on the screen, scrollbars allow you to scroll left to right to see the entire time period:
The “Type” dropdown above the calendar view allows you to choose the record type to display down the calendar.
To schedule a Service you can click the Schedule button on the Ribbon and CRM will pop first a Service Activity form and then pop over top of that the Schedule Service Activity screen. The Schedule Service Activity Screen is essentially an availability search screen that helps you assign Resources to the Service Activity record.
Select the Customer, select the Service they are requesting, optionally select the Site where the Service is to be performed and then enter the customers scheduling preferences – e.g. they might want the Service scheduled for one afternoon next week:
You will notice that I’ve changed scenarios with my screenshot. I got to this point with my Surgery example and hit the limitations of the Service Scheduling module (which I admit I had forgotten). What I found was the grid at the bottom listed out all of available timeslots for all of the resources that met the requirements of my Service, however CRM doesn’t bundle these for you – it doesn’t say “hey next Thursday at 2pm you could go with Bob, Adan, Jill, Nina and Surgery A”. It doesn’t even allow any useful sorting abilities to allow you to do this yourself. And worse still, you cannot actually select more than one Resource on this screen. The CRM scheduling screen just doesn’t support multiple-resource bookings. So I changed my scenario to something a lot simpler.
My new scenario is Air Conditioning Servicing. I offer a single Service: “A/C Service” and this Service requires 1 Technician for 1 hour. Here I enable a prioritisation feature I didn’t mention earlier which will see the search results filtered based on who has the least number of appointments scheduled:
With this scenario the Schedule Service Activity screen works ok. I scan the search results and click on line 3 to book Bob in for 1pm on the 8th July. I click the Schedule button at the bottom of the form and the screen closes, passing that selection back to the Service Activity form that has been sitting in behind the search screen:
I enter a Subject and then Save & Close, I now see that hour of Bob’s time blocked out on the Service Calendar:
If later I need to reschedule this Appointment I can select the calendar item and then click the Reschedule button on the Ribbon. This will pop the Service Activity record and the Schedule Service Activity screen over top of it and automatically execute a search against Bob’s availability to give me new slots to pick from:
To see all the jobs scheduled for a certain timeframe you can switch the Service Calendar from showing Resources to show Service Activities instead:
To tick these Service Activities off as they are Completed you can use the Change Status button on the Ribbon (these are Activity records so they shouldn’t remain open):
You can manually schedule/reschedule appointments in which case CRM becomes more of a validation engine then an availability search engine. You will see alerts like the below which you can chose to ignore:
The Service Calendar supports Service Activity and Appointment records. I think Microsoft’s idea is that Appointments are periods of blocked time around which Service Activities can be scheduled – so they might be internal meetings / training or personal appointments. When scheduling availability is validated against both of these calendar item types. The Conflicts button on the Ribbon will highlight any scheduling conflicts with a red border:
I think that about covers it for Service Scheduling. In summary, it doesn’t handle multi-resource bookings well. It does an ok job with simple single-resource scheduling offering some good search abilities. A couple things I haven’t mentioned is the Service Calendar needs to be manually refreshed when you change an existing calendar item, that’s not ideal. A big concern to me as an implementer is neither the Service Calendar or the Schedule Service Activity screen can be customised. This leaves me very uncomfortable, I normally have customisation options I can discuss with a customer – here the only answers are “Sorry, I can’t change anything” or “Sorry, we would have to build a custom version of this screen to give you that”.
I think what you get with CRM’s Service Scheduling module is one of three things:
- It is a simple service scheduling tool that you can adopt and use as is (if you can fit your requirements into its functional breadth), or
- It is a sample application indicative of what you could build using CRM as a rapid development platform. It can be used as a pilot or during design workshops to help you establish your requirements and design the solution that your business needs, or
- It is a validation engine for service scheduling. You setup the rules and then schedule manually or via your own custom user interface and it will let you know when you break the availability rules.
UPDATE 1: I just spotted an almost useful tip in the Microsoft Coursewear on Service Scheduling – you can access the Service Calendar directly via a URL like…
… which makes better use of the available screen real estate:
(but this is suitable only as a read-only view as without the ribbon appearing you cannot schedule new activities)
UPDATE 2: Something else I missed, Customers can have Service Preferences defined on their Customer record – e.g. Preferred User, Preferred Day:
These preferences appear in the form assistant and are considered by the search engine. I suspect the “Least Busy” / “Most Busy” setting on the Service is given a higher priority by the scheduling engine then the customer preferences but the preferences are still part of its algorithm:
UPDATE 3: I forgot to mention Capacity. You can define the Capacities of each Resource (Users and Facilities/Equipment records). You enter this against their Work Hours (you have to click through to the work hours detail and then click the Show Capacity button):
This is where you can indicate that a particular Conference Room has a Capacity of 50 seats. Then when you define your Services you can define what Capacity the Service requires – e.g. a “Room Rental (small)” might require a Capacity of 40:
Then when requesting available resources/times these requirements and constraints will be taken into account.
I’m keen to hear where you have found CRM’s Service Scheduling module of use. Please use the Comments feature below.