Posts Tagged ‘enhancement request’

12.1.1 New features in Service

Tuesday, May 5th, 2009

Would this be it? I logged enhancement request 6878526 with the idea of Scheduler taking into account the rank of the territory when scheduling. The RCD of 12.1.1 has this in it: “Sort Winning Territory Resources by Absolute Rank”. Meaning my previous post would be solved? I notice it says Casema wanted this feature… ;-) So yeah, I’m thinking this might be it! I still wonder whether costs are assigned to rank… without higher costs for lower ranks Scheduler might still choose a resource from a lower ranked territory because the travel time is lower. Questions, questions.

Other than that, Oracle also has done some significant optimization on the Scheduler part. When scheduling tasks to resources, Scheduler will firstly sort the tasks to their geographic proximity. This means travel times will be more optimized. I wonder how much better this works when you don’t use plan windows, but we’ll have to test that. I mean, sorting on geographic proximity is quite worthless if you want to optimize the promised time (as opposed to a window), but in that case you find the promised time more important than the reduction in travel time. Which might be very valid for your business case. Nevertheless, this feature could be very useful.

The other major feature in Scheduler is the long awaited cross-engineer-optimizing. Scheduler used to optimize single trips only, but R12.1.1 now optimizes across trips / across engineers. Basically this is what you want. If you have 100 engineers to schedule every day, you can’t verify manually if Oracle really optimized all schedules. Optimizing all individual trips would still not tackle the case in which some of the tasks at engineer 1 would be lower in cost when assigned to engineer 2. This new feature promises to solve this issue. You might want to schedule this Optimization Program (it comes as a concurrent program) a few times a day, so you don’t have engineers doing nothing at the end of the day (because optimization might reschedule the tasks to less engineers).

Oracle Territory Management and Scheduler

Tuesday, April 28th, 2009

With two customers I have worked for with Field Service, both of them had the following requirement: “schedule tasks to internal employees first and if there’s no capacity, pick an external technician”. This requirement cannot easily be met. In the most simple way, plan your tasks in two steps

  1. schedule all tasks to employees, reject the ones which don’t meet all the criteria, set a reject-status;
  2. schedule all rejects to external technicians.

To do this, you need to define two territories, one with all employees, one with all external technicians. Add a match criterium “task status = reject” to the second one. For rejected tasks, Scheduler will choose the second territory to pick all the external technicians and evaluate the skills, capacity and other parameters.

This might work fine if you can afford to batch schedule all of your tasks. If you’re working in a real-time environment, this is harder. If your business has a high volume of appointments per day, appointments that need to be scheduled while the customer is on the phone, the call center agent needs to be able to promise something. Promises are sacred. Scheduler has a window to promise option that will give the call center agent windows to pick from. When Scheduler selects the right resources to turn into windows, it takes only the employees, not the external ones (because of the match criteria). This is logical, because you want to optimize internal resoruces first, before turning to external technicians. The thing is, when you run out of employees, you run out of windows. How are you optimizing now?

One possibility would be to put all internal employees and external technicians into one territory, create a second and a third territory with a match criterium and put all of the employees in the second, and all the external technicians into the third:

  1. All resources
  2. Internal employees, match criterium: task status = from_call_center (or whatever you choose)
  3. External technicians, match criterium: task status = reject

The call center agent would be able to get its windows / capacity from all of the resources, i.e. territory one. The Planning Desk or Dispatchers would then reschedule all planned tasks, which have the status from_call_center. This way all internal resources are ‘optimized’. Dispatchers might want to check the result and when it is satisfactory, they’ll schedule all of the tasks which have been rejected by the previous run. All the rejects will now be scheduled to external engineers.

This should work. And yes, you’re still batch scheduling your resources, something you rather don’t.

A common misunderstanding is that the Rank in Territories is considered by the Scheduler, this is not the case! Rank only plays a role in selecting a resource as input for the Scheduler. Scheduler then discards all ranking and evaluates all resources as equals. Would be nice when Rank did play a role, especially for real time scheduling, wouldn’t it? Enhancement Request 6878526, please add your “I want it too”  remark.

Oracle Field Service

Wednesday, January 28th, 2009

I’m neck-deep in a Field Service implementation. I’ve got a sort of love-hate relationship with this module. For companies Oracle Field Service is hardly ever the reason to choose Oracle EBS, but mostly it’s good enough to use. That’s something I have to live with and explain a lot. Usually companies choose Oracle EBS for financials, for CRM or just because everyone in the (vertical) market uses it. Field Service is then usually used because of its integration possibilities. You have to admit: integration is one of the better aspect of this module.

In a previous project I tried to think of as much reasons why Oracle Field Service was NOT the module they should use – some of them were:

  • absolutely no way of assigning tasks in bulk to external engineers without creating dummy engineers and still keep an eye on availability of these external engineers
  • the incredibly hard way for employees to trade shifts
  • the inability called Gantt chart (I can write a book about the inabilities of the Gantt)

In the current project, the business case is totally different. A lot less field employees, a lot of different skills and tight travel schemes. And actually I’m thinking: this project might be a very good fit for Field Service. Yes, there are external resources, but they need to have very specific skills and they have to do some kind of intake before they are allowed to be hired (I guess). But still there are some aspects that Oracle can’t handle. For example: Oracle can’t handle flexible constraints like “max of 10 hours a day of work+travel” or “if there are still internal resources available, use them instead of external resources”. The latter seems possible, but the scheduler first qualifies all the resources based on territory criteria and then checks availability. There’s no cost factor for external resources (enhancement request / bug nr = 6878526) unfortunately.

Talking about enhancements: I’ve logged enhancements for two ‘opposites’: the opposite of skills called inabilities (bug no 8203169) and the opposite of preferred resources, with the very inspiring name ‘unpreferred resources’ (bug no 8203096). Both sound very logical to me, because how else to deal with employees with allergies? Or employees who messed up at a customer, meaning sending that person again would lower customer satisfaction?

Now I’m thinking hard on how to optimize the current implementation, not only in the application but also in the organization. And I’m looking forward to 12.1 which promises more advanced scheduler optimization possibilities (RCD metalink note 561580.1). Yes, Field Service takes up a lot of my time, even while not working billable hours. Guess that’s a good thing, or is it? ;-)