Ms Project Shift Work

Copper Contributor


I am currently changing how I manage our production schedule within MS Project.....

Background - I work at an industrial repair facility, durations are roughly estimated, i use "Work" as an estimate, and our resources work two shifts.
Each department has a different amount of employees per shift I.E machine shop has 5 People on Days 1 on Nights.
Each schedule has different known requirements for working days and times, and some Tasks may hold their own Task Calendar.
I use a resource pool, and a master schedule file
My standard scheduling options are
Fixed Units / 7am- 11pm 24hrs per day 168 hrs per week 30 days per month Tasks are NOT effort driven
I have a few project calendars (Base Calendar 5 Days 8 Hours = M-F 8 hours first shift 8 hours second Shift)
All Resource calendars are listed as a variation of the 24hr schedule, variation includes Lunches and turn over before and after each shift for a total 22 hrs per day of available work.

Issue 1 I add Task 1, with each task having Work 10 hrs, I assign 1 Day shift and 1 Night shift, There seems to be unwanted level loading between the two resources
For example Day shift resource 1 starts at 7am on a 10 hour task which should leave 2.75 hrs left on the task, so the night shift resource will have 2.75 hrs to preform on their shift.
Now, sometimes it is doing the calculation correctly. But, most of the time it will split the 10 hrs of work evenly between the 2 resources. So instead of finishing at 6:30 PM it would instead finish at 9am (Lunch break included)

My work around so far is going into task usage to manually adjust working times. I have hundreds of tasks to schedule so i would really like to avoid the manual adjustments.

Any help with a better way to show shift work would be greatly appreciated!

8 Replies






You have a very complex structure (i.e. multiple files, resource pool and master file). I assume you understand that structure is prone to corruption if not managed with extreme discipline.

With regard to your basic question, Project does not optimize resource assignments. By default Project linearly and equally spreads work among multiple resources assigned to a given task. The fact that it is "doing the calculation correctly" is most likely the result of a unique assignment that just happens to produce the result you want. You may want to take a closer look at that assignment and see if you can apply it to others.

A quick look at the custom resource calendars you show, the 2nd shift appears to have an error. It shows 12:00 AM to 3:30 AM and then a rather long "lunch" from 3:30 AM to 3:00 PM. Maybe that's intended, I don't know.


Thanks for your reply.
I definitely understand that my file is very complex. There are many moving parts and the ability to be agile is a huge barrier in regards to shortened or lengthened durations due to the nature of our repairs.
I will take a look into the assignments and see if there is something i was missing.
What we had done in the past was create individual calendars that would reference the working times 1 shift 5 days 8 hours through 2 shifts 12 hours 7 days and everything in between. Then each department would have multiple resources ( all of which would reference the department and one of the listed calendars)
Assembly 1X5X8
Assembly 1X5X10
Assembly 1X5X12 ...... so on and so forth
The system "Worked" but only in a sense of showing an accurate Start/Finish.... No Over Allocations, Cost, or Hour By Hour views.

Maybe what i am trying to do would be better suited for another program, but i would really like to make MS Project work for me.

As far as the calendar goes... The 12AM to 3:30AM would be the End of Shift from the previous day (2nd Shift) Then pick back up starting at 3:30 PM.

Thanks again.
You're welcome and thanks for the feedback.

Project will do what you need although with the complexity of your structure, it may take more effort than you want/expect. I would definitely limit the number of custom work calendars. Take a close look at what you need to define the work and limit the options for calendars. In my view you're already in deep yogurt, no need to keep piling on the "toppings", so to speak.

Now that I look at your second shift, I missed the fact that it is correct. The order of the work times threw me off.

Good luck
Partially Solved.

This is slightly cumbersome but it does work.

I have created an additional Resource named "Planning". This resource is a modified 24hr Calendar that shows a lunch break per shift.
When the initial schedule is created every task will be assigned to "Planning"
Then, each task will hold its own TASK CALENDAR
Then, using the calculated Start/End times i will assign the correct resources. In the times that there is WORK runover from one shift to the next I assign both day and night resource.... So far there has been no (and I know that this verbiage is wrong) Level Loading.
Each task falls into the anticipated time slot. The only other minor modification that i made was using DURATION instead of WORK..... Understanding that DURATION should be assigned on a day/week level, instead i am using hours. this also correctly changes the total work for the task.

I will update if there are any issues going forward, or if I find a better way to tackle this.
Thanks for the update. A couple of comments.

If you assign your Planning calendar as the Project calendar, all tasks will follow that calendar and there won't be any need for separate Task Calendars, unless specific tasks need to deviate from the Project calendar.

In Project, duration is the time span during which a task is performed. Work is the effort expended to perform the task. Project only has one definition for a "day". With multiple custom calendars you should avoid entering duration in anything other than hours. Hours are hours but days, weeks, and months may vary.
Thanks John,
I agree that for my specific needs Duration is best suited for hours entry rather than days/weeks
I have been messing with the options for [hours per day] [hours per week] [days per month]
Can you please verify something for me.

During the initial build of a schedule if the base calendar is 2 shifts 8 hours per shift [16 total hours with 15 hours of work available due to lunch breaks]
The option would be [16 hours per day] [80 hours per week] [20 days per month]
This would be scaled to the appropriate initial base schedule.
The reason I ask is that it seems to be just very slightly off.

Again, Thank you for your continued support!


I'm not sure what you mean by "scaled to the appropriate initial base schedule" but this is what the options mean: The "day", "week" and "month" options describe working time. They define the value in the Duration field. For example, if you use a normal Standard calendar and you enter 5 days in the Duration field, that represents 5 working days of 8 hours each. If however, you elect the 24 Hour Calendar as the project calendar and leave the definition of a "day" at the default 8 hours, then it will take 3 "days" to cover a full 24 hour time period. So if a plan has a mix of project, task and resource calendars, the definition of a "day" (or "week" or "month") can create real headaches. I recommend Excedrin.


Using hours in the Duration field is always a good bet since an hour is an hour (universal).


Attempting to use months for duration is even worse since Project does not provide for more than one definition. The default 20 days is working days and is a compromise that attempts to cover the actual Gregorian calendar. That's why entering months in the Duration field is fraught with frustration. It is sometimes useful to enter duration in "elapsed time". For example, an entry of "7ed" covers a calendar week, Monday through Sunday, whereas an entry of "7d" will cover Monday through Friday, skip the non-working weekend, and continue with Monday and Tuesday of the next week.


When faced with dates that seem "slightly off" it is often useful to set the general option for date format to include the time.


Hope this helps.