Custom scheduler from the task tracker: visualizing the task flow of a small team

Custom scheduler from the task tracker: visualizing the task flow of a small team

There are 10 specialists in our development department: 7 developers, 1 web technologist and 2 project managers (PM). The team’s work is organized in a matrix structure: each PM can assign tasks to different developers, and each developer in the plan may have tasks from different PMs. In such an environment, it is especially important that PMs can track the work plan of the specialists. In this post, we’ll show you how we simplified the process of scheduling tasks and developer time using our own custom scheduler.
Direct Line
Who are we

Largest agency
Internet marketing outside the Moscow Ring Road:
1200+ projects
65 specialists
fourteen years on the market
TOP 10
the best online promotion companies in Russia 2020

Commercial offer

We are engaged in the development and technical support of sites. Support includes both large tasks (for example, the introduction of new functionality), the implementation of which takes dozens of hours, and small ones, which take from 0.5 hours. We use Redmine for project management.

Once we tried to change the matrix structure to work in groups. Group –

3-4 developers led by PM. Tasks and projects for different groups do not overlap (except for critical situations and accidents). It turned out that given our scale, this structure does not allow us to be flexible. So, for example, one group could have accumulated a queue of tasks, while another at the same time – a simple one. Therefore, we returned to the matrix structure, where there is a many-to-many relationship between managers and developers. At the same time, a lead developer is assigned to each project. Tasks are given to him with great preference, but this does not exclude interchangeability and the ability to connect another developer.

In such a situation, managers inevitably have questions: what kind of task is a particular developer engaged in? What’s the next challenge? When will a developer take on a specific task? Hence the constant need to visualize the work plan in the form of a calendar or planner.

We did not find ready-made suitable solutions for Redmine.

We have been using Redmine for a very long time. It has been modified specifically for our business processes and has many integrations (various dashboards, reports, client’s personal account, billing, etc.), so we are not going to leave it, even despite the opinion that Redmine “was made by programmers for programmers “. We admit: we have already tried several attempts, but we have not found a more convenient solution.

Scheduler requirements

Before starting work on the scheduler, we formulated the necessary requirements:

  • A visual work plan for each developer for a week, broken down by hours.
  • The ability to quickly find the desired ticket from Redmine and put it to work in.
  • Ability to quickly manage task priorities throughout the day.
  • Displays information about planned and actual labor costs.
  • The ability to reserve time in the scheduler without a task, so that later the PM can put a specific ticket in place of the reserve.
  • Quick jump to a ticket in Redmine.
  • Convenient search for tasks from the ticket system to be added to the scheduler (by status, performer, name and ticket number).


First, we tested the Google Calendar approach for a couple of weeks. There we manually created events for each task. Then we developed a utility in Yii + fullcalendar.js, integrated with Redmine via API. Here’s what happened:

Utility in Yii + fullcalendar.js, integrated with Redmine via API


Each developer has their own scheduler with tasks for the day and week. For a developer, this scheduler is primary: it starts the day with it and moves from it through tickets in Redmine. Managers, in turn, observe the priority in the tasks of each specialist and the planned time to start work on each task. All PMs see the level of the team’s workload. In addition, they can change the order of tasks and put forward a new and more urgent one. The scheduler is especially convenient in case of a conflict for a resource: when a very urgent task comes in, and there is no more resources to complete it today, the manager quickly finds the nearest window in which this task can be put.

Thus, we have implemented all the requirements described above in our scheduler.


At this stage, we plan to make a report with a selection of erroneous tasks or those that require PM’s attention:

  • There is no resource scheduled for the task at all (PM forgot to do this).
  • The time scheduled for a task in the scheduler before the deadline date does not match the task’s grade in hours (PM error or grade change in Redmine).
  • The ticket in Redmine is closed, but the slots planned for it remain in the scheduler (the task was done earlier, which means you can free up extra time).

Such a report will provide an additional mechanism for monitoring the fulfillment of deadlines for tasks and projects and will minimize errors in the planning process.

# Web development
# instruments

Leave a Reply

Your email address will not be published.