Feature #2161

Time tracking code should respect weekends as "no work" days

Added by Matthew W about 9 years ago. Updated about 5 years ago.

Status:ClosedStart date:2008-11-11
Priority:NormalDue date:
Assignee:Jean-Philippe Lang% Done:

0%

Category:Issues
Target version:2.2.0
Resolution:Fixed

Description

I imagine this is a common requirement for a lot of companies - we don't work at weekends! (at least, by default we don't work at weekends).

It would be nice if the Gantt chart, the calendar, and the code which sets start and due dates on the basis of issue dependencies etc, treated weekend days by default as "non-work" days.

I imagine this would have implications along these lines (Forgive me any mis-assumptions as I'm not 100% clear on how your time-tracking logic works at present):

- Issues are never automatically scheduled for weekend start dates
- Weekend days during the time scheduled for a ticket, are not counted towards the length of time spent on that ticket
- This would mean that (amongst other things), when an issue is pushed back so that it spans a weekend, the due date is pushed back by an additional 2 days to account for the fact that no actual work will take place over that weekend
- Any logic which exists to fill out due dates on the basis of estimates, should not by default count weekend days towards time spent

Related issues

Related to Redmine - Feature #7142: Calendar/Gannt skip weekends New 2010-12-21

Associated revisions

Revision 10747
Added by Jean-Philippe Lang about 5 years ago

Ignore non-working days when rescheduling an issue (#2161).

Weekly non-working days can be configured in application settings (set to saturday and sunday by default).

Revision 10748
Added by Jean-Philippe Lang about 5 years ago

Filling locales (#2161).

Revision 10749
Added by Jean-Philippe Lang about 5 years ago

Non working days is an array of strings (#2161).

Revision 10750
Added by Jean-Philippe Lang about 5 years ago

Display non working days on gantt according to settings (#2161).

Revision 10751
Added by Jean-Philippe Lang about 5 years ago

Display non working days on gantt image according to settings (#2161).

History

#1 Updated by Eric Davis about 9 years ago

  • Category changed from Time tracking to Issues

-1

This makes a lot of assumptions and raises several issues, mostly about how would the system know what a weekend is (e.g. many people work Saturday and Sunday)

#2 Updated by Matthew W about 9 years ago

It would need to be configurable I imagine.

To be honest, I think that any scheduling code needs to exceed a certain level of functionality before it realistically adds anything over manual scheduling in practical use.

At present the gantt chart functionality hasn't reached that level for us, as I end up needing to manually edit start and due dates in almost every case. The weekend thing is just a part of that. Some other issues are:

  • It isn't using the estimate in hours, to determine a due date (assumptions could be configurable but default to 8 hours per man day, 1 man at a time working on any given ticket)
  • It would be nice to enter an estimate in working days, as well as hours, and have it use that, potentially avoiding the need to make assumptions about number of working hours per day
  • It will only do dependency-based scheduling at the 'day' level of granularity based on start and due dates. It would be nice to schedule, say, hour-long tasks with dependencies too
  • Sometimes when I move start dates, I have to manually move the start dates of dependent tickets too (I think this just happens when I move them earlier).

I don't mean to be picky, and do realise a full-blown scheduler is a pretty complex piece of constraint satisfaction programming. I guess it's a decision for you on where you want to take the project, but that's just my perspective on things as they stand.

Regardless, even without any scheduling I'm happy with redmine as a great ticketing system with basic dependency tracking.

Cheers,
-Matt

#3 Updated by Yannick GALLY over 7 years ago

Did someone work out something about "no work" days' configuration ? (Plugin ? Patch ? or something else ?...)
Thanks for the work.

#4 Updated by Greg Parker almost 7 years ago

+1 - I need this in order to start to make the gantt useful.

#5 Updated by Sascha Herrmann almost 7 years ago

+1

I agree that improving scheduler will be a lot of work, but it will make a huge effort for redmine users! To be honest, the implementation of the "do not include weekends" feature Matthew W requested will make a use of MS-Project more obsolete! This will significantly increase the number of potential redmine users.
I agree to Matthew, that the best way to implement this feature is to ask the user for a working or a holiday calendar. Whenever the scheduler updates due dates it could take a look at the workday/holiday calendar and skip the off days when updating the due dates of related issues.

Additional I agree to the idea of having an extra information about "days needed to complete issue". E.g. the net time to solve an issue might be 8 hours, but due to working conditions you are not able to solve the issue in one day (maybe you start a calculation process, wait for results, and then create a report). To schedule issues correctly it is only necessary to have one of days needed and due date information. Perhaps we should request this as an additional feature, as it is independent of the weekend feature!

Cheers, Sascha

#6 Updated by Guus Raaphorst almost 7 years ago

+1

It would be a lovely feature to have!

And as stated in Feature #7142, it would probably be better to not use it only for weekends, but instead to specify the working hours for every user (maybe a default for all and the possibility to add exceptions on this for a some of the users). For instance, I work for 36 hours at the office where we use Redmine and these hours are divided among four days (9 hours a day from Tuesday to Friday). If we can incorporate this into the Gantt chart, we could loose the separate planning tool that we have now (where we can fill in working days, holidays, etc).

#7 Updated by Chris Darts over 6 years ago

+1

I really feel this feature alone would help elevate Redmine to the status of a fully functional scheduling system which can be used for effective project management. With all the recent changes to the Gantt chart etc. it is definitely on the verge of making this step up.

For my organisation, just being able to define a working week and day calendar (as MS Project allows) would resolve this issue.

#8 Updated by Tomislav Nakic-Alfirevic over 6 years ago

+1

Redmine seems to be aiming towards project management with the Gantt and Calendar views, but I find it difficult to imagine how it should support use cases I find fairly basic. Don't misunderstand me: Redmine is generally a joy to use, but I'm talking about planning features in particular at the moment so I'll explain what I mean.

Use case

A project leader leads a team of 5 and schedules a few dozen tasks for the next three weeks, complete with task dependencies so that when one task is delayed, all the subsequent tasks are automatically rescheduled. Because a lot happens during a week, we discover and create new issues, some of them impacting the plan for the next three weeks.

Introducing these new issues into the plan delays existing issues, but the only way I can delay existing issues is by re-visiting each and every one of them and updating their dates because the tool schedules them for weekends, holidays and such. Since the plan is a live status snapshot (reviewed twice a week), this happens a lot and takes a huge chunk of time.

So, am I going about it completely wrong? How do others plan using Redmine? Would you agree that automatic rescheduling based on dependencies is a key feature?

My suggestion

Make it possible to define global and per-user unavailability, e.g. Jan 1st would be a global day off applicable to all users and Jul-1st to Jul-16th would be a specific user's vacation. Redmine should allow users to define when users are available and reschedule tasks following those constraints.

While this might not be the simplest extension to implement, in my mind it would make it possible to lean on Redmine as the main PM tool for current and future projects care-free.

#9 Updated by Etienne Massip over 6 years ago

  • Target version set to Candidate for next major release

#10 Updated by Fernando Hartmann over 6 years ago

+1
This is a very useful option to use Gantt in real live projects !

#11 Updated by Giovani Spagnolo over 6 years ago

+1

configurable setup for "non working days" per project would be a good start.

#12 Updated by Anonymous over 6 years ago

+1

#13 Updated by Steve Shaffer about 6 years ago

+1

If anyone's working on this, via contributions to the source or as a plugin, please let me know. I'm looking at leveraging RedMine to develop a project management application for a client (who has nothing to do with software development). Outside of the software development community (at least in my country, the US) no one works on weekends by default.

So I'm going to need to get this to happen for my client one way or another. I'd rather do it in as much of a community-focused way and as close to the trunk as possible (especially considering the amount of code a plugin might have to interact with to make it happen).

#14 Updated by Adam Klinkosz about 6 years ago

+1
It would be great to have calendar in which the admin can select holidays which later would be considered as no working days.

#15 Updated by Terence Mill about 6 years ago

+1

#16 Updated by Marcelo Mira about 6 years ago

+1

#17 Updated by Cyril Dubus about 6 years ago

+1

#18 Updated by Sylvain Guimond about 6 years ago

+1 I'm totally agree and looking for this feature too.

#19 Updated by Carlos Serrano about 6 years ago

+1 It is not necessary is mandatory

#20 Updated by Gokay Gok almost 6 years ago

+1

#21 Updated by Claudio T almost 6 years ago

+10000K

#22 Updated by Alexey Kuleshov almost 6 years ago

Guys, I implemented this recently in my plugin, you might want to check it [http://www.redmine.org/plugins/redmine_better_gantt_chart]. So far it supports only weekends as 'no work' days, no custom calendar added yet. Let me know if it works for you.

#23 Updated by Dieter Egert over 5 years ago

+1 @Alexey Kuleshov: Your plugin works fine, thank you, it is a really needed 'first aid' regarding this issue.

Hopefully I don't ask too much, but I think we'll need:
  • a default calendar for all projects containing weekends (maybe not holidays..!)
  • one calendar per project with project specific holidays. In the project configuration of the calendar there is a pulldown box to choose the behaviour regarding the default calendar: 'link' (use dynamically), copy (just once, then 'unused') or 'unused' regarding all entries of the default calendar.
  • 2 checkboxes on each issue for regarding (or not) global working days and project specific working days.

Reasons:
1. Depending on the country of project partners there are different weekends and holidays (see China or arabic countries)
2. There are issues for automatic testings or other jobs that will be continued without any manpower, so independently of weekends.

#24 Updated by Guillaume Dumont over 5 years ago

+1

I'd also like to see this in the versions due dates.

#25 Updated by Aleksey Dubov over 5 years ago

+1

#26 Updated by Jean-Philippe Lang about 5 years ago

  • Target version changed from Candidate for next major release to 2.2.0

#27 Updated by Luis Serrano Aranda about 5 years ago

Hi Jean-Philippe, which of all the features explained in the post are planned for version 2.2.0 ?

Thanks in advance

#28 Updated by Christophe Prevotaux about 5 years ago

+1 on this one. Indeed very useful but it should selectable , sometimes people do work exceptionally on weekends.

#29 Updated by Jean-Philippe Lang about 5 years ago

Luis Serrano Aranda wrote:

Hi Jean-Philippe, which of all the features explained in the post are planned for version 2.2.0 ?

2.2.0 will implement the basic feature as requested by the author of this ticket: a global setting to define non working week days (eg: saturday, sunday). The issue planning code will be aware of that, eg. rescheduling an issue will take into account its duration in working days.

#30 Updated by Paulo Pinto about 5 years ago

But, why not add a tool for the management of the free days on the calendar?,+ that can specify also something like holydays, vacations or another kind of free days, globals or per user.

In Gantt Project we can define the weekends, but also can define ranges of free days. Just as a example...

#31 Updated by Sebastian Hucke about 5 years ago

+1 ... or even more (from a project manager's point of view)!

I am happy that Redmine will support the definition of weekly non working days soon. It helps a lot. I'd like to mention that the management of free days - like proposed by some guys before - would be an even greater improvement. ;-) It would be great to define holidays in general and vacation on a per user basis.

If 2.2.0 only implements a basic feature set, does someone know if a ticket that describes "free days management" already exists? Otherwise one should move the relevant parts of this discussion in a new ticket.

#32 Updated by Jean-Philippe Lang about 5 years ago

  • Status changed from New to Closed
  • Assignee set to Jean-Philippe Lang
  • Resolution set to Fixed

2.2.0 will implement the basic feature as requested by the author of this ticket: a global setting to define non working week days (eg: saturday, sunday). The issue planning code will be aware of that, eg. rescheduling an issue will take into account its duration in working days.

This is done in r10747.

Sebastian Hucke wrote:

If 2.2.0 only implements a basic feature set, does someone know if a ticket that describes "free days management" already exists? Otherwise one should move the relevant parts of this discussion in a new ticket.

Yes, it is already discussed in #7079.

#33 Updated by Sebastian Hucke about 5 years ago

Jean-Philippe Lang wrote:

Yes, it is already discussed in #7079.

Thx @ JPL, but I am not sure if the above mentioned ticket covers the whole topic. It seems that ticket #7079 describes only a subset of features: support for holiday/vacation entries in the calendar. The topic discussed here (and what me and my team would love) incorporates the automatic rescheduling of issues. And that is not a part of ticket #7079. I will create a ticket later this day.

Another suggestion: I think a feature like #2024 (gantt chart editing) would lower the effort of rescheduling issues... and could therefore be a good interim solution to enhance planning capabilities of Redmine.

Also available in: Atom PDF