Chapter 9. Migrating from TaskJuggler 1.x to 2.x

Achieving compatibility

Are you also frustrated by tools that can't read the data of their earlier incarnations? After all, those files contain your valuable data and the first impression of the wonderful new version is its failure to read your old files. With TaskJuggler we like to spare you such situations as much as possible. But TaskJuggler 1.x was written to solve the problems that we encountered. By releasing it to the general public we learned that TaskJuggler is also very useful to many other people. Some contacted us to tell us that it would be even more useful to them, if TaskJuggler could have this or that new feature. In many cases we added these new features but we learned more and more that some parts of the original TaskJuggler design were not flexible enough to support some new features. For TaskJuggler 2.x we decided to change TaskJuggler to a more flexible design even if this meant that some syntax constructs would no longer be supported.

As TaskJuggler uses plain text file as its main data format, you will always be able to read in your old files. But in some cases, you need to change certain syntax constructs to the new syntax. When TaskJuggler processes a file with deprecated syntax it will generate an error message. This usually contains a hint, how the statement should look like in the new syntax. The following sections discuss the conceptual changes and what statements need to be changed.

Syntax changes

TaskJugger 1.x could only handle two scenarios with the fixed name plan and actual. TaskJuggler 2.0 can now handle any number of scenarios. Scenario specific task attributes have to be prefixed with the scenario ID followed by a colon. The attributes starting with 'plan' or 'actual' have been deprecated.

HTML reports are now a lot more flexible. New CSS elements are used and the table elements are customizable now. Old stylesheets will no longer work, since the attribute names have changed. An HTML report contains CSS attribute class specifications if you provide a custom stylesheet definition with rawstylesheet.

The scenario name is no longer displayed by default if more than one scenario is included in a report. A column scenario must be explicitly added if the scenario name should be reported for each line. The attributes 'showactual' and 'hideplan' have been deprecated. The scenarios attribute now controls which scenarios should be shown.

The format of numbers and currency values can now be specified with numberformat and currencyformat. The old keyword currencydigits has been deprecated.

workinghours and currency are no longer global properties. They are now optional attributes of the project property.

Container tasks in export reports no longer have fixed start and end dates, if they have their subtasks exported as well.

The functions for Logical Expressions are now using capital letters to improve their readability. The all lowercase versions are still supported, but the recommended versions are now the ones with intermixed uppercase letters. isTaskOfProject was added as new query function.

Support for a new XML format has been added. The old format is still supported. TaskJuggler can read both old and new format XML files but will use the new XML format for output.

Scheduler changes

Length and duration tasks with resource allocations are no longer trimmed to the first and last resource allocation. This can lead to different schedules.

'length' based tasks now use the global working hours and global vacation settings as a criteria of what is a working day. The tasks now always end during working hours and not at midnight.

The maximum allocation of a resource for a task is no longer limited by default. maxeffort now defaults to 0 (unlimited) instead of 1.0 (8 hours per day). To have the same behaviour as in TaskJuggler 1.x, you need to specify maxeffort 1.0 before any resource definition. This change was made since many users were confused when after increasing the daily working hours resources were still only allocated 8 hours per day.