How do I schedule by calendar days but not end on weekends?

J

Jerry G.

I am setting up a schedule to track contract requirements which are based on
calendar days (per the contract requirements) - e.g. something is due 30 days
after contract start. However the contract also specifies that if the due
day falls on a weekend than it is due the following Monday.

Any ideas on how to implement this in Project 2003?
 
J

Jim Aksel

There is more than one way to solve this. We use deadline dates and let them
fall on the weekend. If they do, we manually adjust them.

Project uses two types of days: days are work days, elapsed days (edays)
are calendar days. Using eDays may land you on a nonwork day as you said.

Most people are tempted to use a "submit" milestone and tag it with a
predecessor "Contract Award + 30ed". However, what you really have is a
Deadline not a true predecessor. The real predecessors are "do some work",
"Create Output", "Send it to contracts for delivery".

Others are tempted to use a Finish No Later Than constraint and key a date.
That doesn't work either because it may allow the scheduling logic to push
the predecessor finish dates past your FNLT date on "submit."

Some use predecessors "Contract Award + 20d" or 22d, figuring 30 days means
"a month and that's about 4 weeks or so". Not a bad way to go. But again,
those are Deadlines not true predecessors.

I posted a similar question on the Developer newsgroup the other day ... how
do I set the deadline date via code. One of the MVPs, Rod Gill, provided the
code below for a Macro. Here is its along with my comments on where you will
need to modify the code to get it to tag out to the next work day. What you
have to do in this code is select the task "submit", have the "contract
award" as the FIRST predecessor with no lag. There will be other "real"
predecessors. When you run the macro it will give you a Deadline date 30
edays after the finish date of the first predecessor.

When scheduling, a red diamond will appear on the "submit" task if it slips
past the deadline date in the task information column.

Here's the code Rod provided with some tweaks I added:

Sub VariableDeadline()
'This macro will place a Deadline Date on the selected task
'based on the finish date of the first predecessor listed in the
'selected task's predecessors.
Dim Tsk As Task
Set Tsk = ActiveCell.Task.PredecessorTasks(1) 'change the 1 to the
desired (devined) predecessor if yo wish
ActiveCell.Task.Deadline = DateAdd("d", 30, CDate(Tsk.Finish)) 'change
30 to number of days desired, these are elapsed days.

'Your new code here---
if (Weekday(ActiveCell.Task.Deadline)=1 or
Weekday(ActiveCell.Task.Deadine)=7) the
'change it to the next work day
'I would use the DateAdd function again depending on the value returned from
Weekday().
End if
End Sub

What the code does is jam the constraint date, and then reset it if it has
to. Not elegant, but it will work.

Unfortunately, you'll need to rerun the macro if other constraints cause the n

--
If this post was helpful, please consider rating it.

Jim
It''s software; it''s not allowed to win.

Visit http://project.mvps.org/ for FAQs and more information
about Microsoft Project
 
M

Mike Glen

Hi Jerry,

Welcome to this Microsoft Project newsgroup :)

Set up a dummy task of 1 minute duration. Make it a successor to the
contract start task: F-S +30ed. Then make the contract requirements task a
successor of the dummy. The trick now comes by making a new calendar with
all Mondays as working days and the rest as non-working days. Now assign
the Monday calendar to the dummy via Task Information. I believe that
should work.

FAQs, companion products and other useful Project information can be seen at
this web address: http://project.mvps.org/faqs.htm

Hope this helps - please let us know how you get on :)

Mike Glen
MS Project MVP
See http://tinyurl.com/2xbhc for Project Tutorials
 
J

Jim Aksel

Mike- Won't that force the successor task to always start on the Monday
following the FS+30ed task? I think your solution will work if he makes the
special calendar with one minute of work available on Weekdays (Mon-Fri).

I think what he wants is that if the FS+30ed lands on a Wednesday then so be
it, the next task starts immediately. If FS+30ed lands on a Saturday or
Sunday, then let it move to Monday (your solution kicks in). So we have to
test for the date being on Sat/Sun.

There is still the logic problem. The submission requirement is not a
predecessor, it is a deadline-- it can be submitted earlier. At least that's
how I understand the question.

Jerry - Please enlighten us!!

Jim
 
M

Mike Glen

Yes, Jim, you're right, I was only thinking of it landing on the week end
:( Well, that gives some options for Jerry to consider.

Mike Glen
Project MVP
 
D

DavidC

Hi,

I also set up these sorts of deadlines. What I do is to set a task "XXXX
deadline" and have the predecessor say "contract start FS+30d". Then as long
as the task calendar does not have weekends as work days, then it always
schedules that task to fall on a weekday. It relies on the task calendar for
the deadline to have the weekend as non working.

Hope this helps.

Regards

DavidC
 
J

Jerry G.

Mike, Glen and David,

Mike - you were right I want the deliverable due date to me a weekday (any
weekday) just not the weekend - so the standard calendar works.

Though I was hoping to avoid adding additional tasks to an already complex
project file I decided to do the following:

I entered a new task for allotted deliverable preparation time using the
Days After Contract Award as the elapsed time for the duration of the tasks.
I did this using a Task Calendar with all days as work days.

I then entered a 1 min duration task (but made it a milestone) for submittal
due - using the standard calendar (Saturday and Sunday are non-workdays.)

Sorry for the delay in getting back on line and checking for your prompt and
helpful feedback.

Regards,
Jerry
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top