Changelog
Follow up on the latest improvements and updates.
RSS
new
improved
fixed
Timefold Platform
Employee Shift Scheduling
Field Service Routing
Further improvements to rolling time windows contract requirements for ESS and several other improvements (v0.40.1)
- Sticky table header for runs overview: When scrolling down your list of runs in the Platform UI, table headers will now stay visible, so it’s easier to know the meaning of the metrics and run properties if you’re comparing lots of runs.
- We have added a new guide explaining the importance of validating and building trust in an optimized plan. The guide explains which features Timefold offers that help with this.
- Further improvements to rolling time windows: We have further improved the rolling time windows feature in contract requirements so that you can now also specify hourly time windows for more rules. See “New and noteworthy” for details. This feature can help formulate constraints like: “Maximum 5 days worked in any 168-hour period”, “Maximum 2 night shifts worked in any 168-hour period” or “Minimum 2 consecutive days off in any 168-hour period”.
- Removed unchanged constraints from the recommendations API response: The recommendations API response no longer includes constraintDiffs entries for unchanged justifications to improve clarity and lower the size of the response.
- We have written a new feature guide about Shift assignments (it goes in detail on the complex task of managing the type and amount of shifts that get assigned).
- Improved break handling: Break end times are now exclusive instead of inclusive. This change removes confusion that could occur when a break end time overlapped with a shift start time.
- Required Breaks API improvement: The way of defining required breaks has been deprecated and has been replaced with a simpler alternative that avoids confusion. See “New and noteworthy” for details and instructions on how to upgrade.
- Removed unchanged constraints from the recommendations API response: The recommendations API response no longer includes constraintDiffs entries for unchanged justifications to improve clarity and lower the size of the response.
- Several bugfixes (including a fix for the visualization).
new
improved
fixed
Timefold Platform
Employee Shift Scheduling
Field Service Routing
New default smart termination, and multiple new capabilities for ESS (v0.39.1)
- New smart termination “Diminished returns” as default: There is now a new smart termination option for runs. It’s enabled for all models by default. “Diminished returns” terminates the solver early if expected improvements are minimal. It is used if no “unimproved time” configuration is set. See documentation for more details.
- Improved troubleshooting script: Improved troubleshooting script and documentation for self-hosted installations to help report version information.
- Smaller bugfixes and improvements, including a fix for filtering on deleted runs, and tags that contain an underscore. Additionally we now show the optimization gain on a run also as a relative percentage, when you hover over the optimization gain in the sidebar.
- Shift rotations: We have added the ability to define rotations for shift types. Use this to make sure that the employee’s shift types rotate in consecutive periods, for example, "morning" shifts on week 1 and "evening" shifts on week 2. See “New and noteworthy” for details.
- Better handling of consecutive days off: We have introduced 2 new constraints for better handling of consecutive days off. This feature allows a minimum of consecutive number of days off per period to be set on contracts. See “New and noteworthy” for details.
- Ability to ensure an "even" start time for all employees: We have added the ability to limit the variation in shift start times. It checks whether the time between the earliest shift start and the latest shift start in this period is larger than the period rule’s shiftStartTimeDifferenceInMinutesMax. See “New and noteworthy” for details.
- Metrics for shift groups: We have added separate metrics to know how many shift groups were assigned and unassigned.
- Demo data updates: A series of updates have been made to the available demo datasets. The BASIC demo dataset has been removed in favour of the CONTRACT_RULES dataset. The CONTRACT_RULES demo dataset has been extended to a full week (7 days, 60 shifts) for 13 employees. The demo data is now more representative of real working rules, including contract patterns, maximum hours worked per day, maximum hours worked per week, preferences, and unavailabilities.
- New smart termination “Diminished returns” as default: “Diminished returns” terminates the solver early if expected improvements are minimal. This termination is the new default. See “Upgrading to the latest versions” for details.
- Removed unchanged justifications from the recommendations API response: The recommendations API response no longer includes matchesDiff entries for unchanged justifications to improve clarity and lower the size of the response.
- New smart termination “Diminished returns” as default: “Diminished returns” terminates the solver early if expected improvements are minimal. This termination is the new default. See “Upgrading to the latest versions” for details.
- Removed unchanged justifications from the recommendations API response: The recommendations API response no longer includes matchesDiff entries for unchanged justifications to improve clarity and lower the size of the response.
new
improved
fixed
Timefold Platform
Employee Shift Scheduling
Field Service Routing
Rolling time windows contract requirements for ESS, input metrics, and several other improvements (v0.38.0)
- See and compare the amount of scheduled entities and other problem size metrics: When viewing details of a single model run, we’ll now also show some metrics related to the input. These metrics indicate the problem size and will give you more context when comparing multiple runs.
- Expiry dates for tenant members: In cases where you want colleagues or partners to have temporary access to your Timefold tenant, you are now able to set an expiry date. You can use this feature to e.g. give Timefold Solution Engineers temporary access to your tenant to help you with a certain project or troubleshooting.
- Ability to self-host the Timefold Platform on OpenShift: We added support for OpenShift deployment for self hosted installations. See updated Installation instructions for details.
- Documentation updates: We have added a guide to help you troubleshoot failing runs for self-hosted installations.
- Support for contract requirements for rolling time windows: We have introduced several rolling window rules that allow you to specify both required and preferred amount of shifts, days, minutes, etc. worked over a rolling time window (instead of e.g. fixed weeks). This feature can help formulate requirements that need to be satisfied over a rolling window of time, for example: Maximum 10 Sunday shifts worked in any 52-week period, Maximum 40 hours worked in any 7-day period, Minimum 11 consecutive hours off in any 24-hour period. See “New and noteworthy” for details.
- Days off per period in range for employees: We have introduced 2 new constraints for better handling of days off. This feature allows a minimum and/or maximum of days off per period to be set on contracts. See “New and noteworthy” for details.
- Rebalanced hard constraint weights: A missing skill or tag in an input dataset was penalized as -1hardresulting in a much smaller penalty than, for example, violating the maximum service end time of a visit. As a result, an infeasible solution that broke a skill or tag requirement was favored over an infeasible solution with all skills/tags but that didn’t finish the service in time by a couple of minutes. See “New and noteworthy” for details.
- We have done a small bugfix to the visualization.
new
fixed
improved
Timefold Platform
Employee Shift Scheduling
Field Service Routing
Configurable justifications in Recommendation APIs for both models, tag exclusion filtering and several other improvements (v0.37.0)
- Support for excluding runs with certain tags when filtering: When filtering the run overview, you can now choose to exclude runs with a certain tag. This gives you greater flexibility in finding and comparing certain runs. (E.g. you could label any simulation runs with a tag, and then exclude it when you want to look at only production runs.)
- Tenant Members with expiry date: It’s now possible to give people temporary access to your tenant by setting an expiration date when adding/editing the members of your tenant. Use this to e.g. give our customer support team temporary access to your tenant for troubleshooting.
- Self-hosted platforms are now single tenant: We’re limiting the ability for self-hosted platforms to create additional tenants. We’re doing to limit the complexity and recommend customers that self host to have multiple installations of the platform instead. More details about self-hosting the Timefold Platform versus using the Timefold Cloud Platform can be found in this comparison guide.
- Rework of run policies: We have reworked the policy limiting the amount of simultaneous runs to check simultaneous threads instead. When you have e.g. 10 simultaneous threads available in your plan, you can use it to do 10 simultaneous runs each using 1 thread, or do 5 simultaneous runs each using 2 threads. We have dropped the policy that checks the maximum runs per hour.
- We have updated the documentation to more clearly explain the different statuses of a run.
- Smaller bugfixes (including using the configuration profile from the run when calling the score analysis API endpoint).
- Configurable justifications in the Recommendations API: When submitting a recommendations API request, you can specify an optional booleanincludeJustificationsquery parameter to control whether constraint match justifications should be included in the response. This is useful for getting more fine-grained information about the constraint matches, for instance to learn which period rule is violated by the recommended employee assignment. See New and noteworthy for details.
- Priorities on Contract Rules: Priorities have been added to contracts. This means some contracts can now have higher priority than others. This feature allows for granular control over how much contracts comparatively weigh in solutions. It comes in handy when there is a contract that defines a certain rule that is more important than another, e.g. Contract A defines rules related to period which are more important than Contract B’s rules related to minimum time between shifts. See New and noteworthy for details.
- Maximum number of unique tags per period per employee: We have introduced 2 new constraints to limit the number of unique tags that can be used to assign shifts to employees. You can use this feature to limit the amount of shift types, routes or skills that will be assigned to an employee. See New and noteworthy for details.
- Significant speed improvements for bigger datasets: By pre-calculating matching rules and shifts we were able to improve the performance of datasets using global rules. We’re seeing improvements anywhere between 10% and 50%.
- Several documentation updates, including new feature guides explaining Alternative shifts, Shift travel and locations, and Shift rules.
- Smaller improvements (e.g. to the demo data sets) and bugfixes.
- Configurable justifications in the Recommendations API: When submitting a recommendations API request, you can specify an optional boolean includeJustifications query parameter to control whether constraint match justifications should be included in the response. This is useful for getting more fine-grained information about the constraint matches, for instance to learn which visits are not completed in time because of the recommended visit (or visit group) assignment. See New and noteworthy for details.
- Smaller improvements (e.g. to the demo data sets and the visualization UI) and bugfixes (e.g. to the termination limit not always being respected).
new
fixed
improved
Timefold Platform
Employee Shift Scheduling
Field Service Routing
Improved timeline for runs, additional ESS KPIs and several other improvements (v0.36.1)
- New “Incomplete” status and statuses visualization (breaking change): We’re introducing a new status “Incomplete”, it will be used when a run ends before the construction heuristics phase of the run finished. Previously these runs were marked as successful, but the output would likely not contain all entities. With this new status users now know this is the case - we recommend setting a longer termination time when this happens. Additionally, we’ve added a timeline view of each of the different stages of a run on the Run Detail page, so it’s clearer how long each stage takes.
- Different API calls for deletion and termination of runs (breaking change): We have separated the endpoints to delete a model run from the platform, and to terminate a run in progress. Now the deletion of a run from storage is no longer done when terminating a run, but is instead done in a separate endpoint. To delete a run from the storage, the run must be in a terminated state (complete, failed or incomplete). Please refer to the OpenAPI specs of the platform for details.
- Improved configuration profiles: We’ve removed the CPU setting from configuration profiles in favour of threads. We’re also indicating the maximum amount of memory per thread more clearly.
- Change to trial process: We’re making a small change to the trial sign-up process - we now ask for some details about your project before approving a trial.
- Documentation: We’ve added a how-to guide to explain how and why to categorize your model runs using tags.
- Several speed improvements and bugfixesincluding a fix for timings of start and active dates when a run was restarted.
- Additional KPI’s: We have added 4 new KPIs to provide more insights into solutions: how many employees were assigned shifts in the schedule, the number mandatory and optional shifts that were scheduled, and the total travel distance.
- Speed improvement for global rules: We have improved the performance and scalability of global rules. There will be speed improvements for 9 related constraints. This improvement will result in finding solutions quicker, especially for large datasets. See New & Noteworthy for details.
- Deprecation of required minimum: A minimum with a REQUIRED satisfiability is now deprecated because it may be the cause of infeasible solutions when there is a lack of shifts in the input. Use the minimum with a PREFERRED satisfiability instead. This update will result in fewer infeasible solutions when using minimums in the listed constraints. See New & Noteworthy for details.
- Documentation: We’ve split up the Employee contracts feature guide into multiple guides, each explaining a separate area of functionality of the contracts feature: Period rules and Shift rules.
- Several smaller improvements and bugfixes, including a fix for when shifts spanned multiple days. See New & Noteworthy for details.
- Several bugfixesincluding a fix for movable visit assignment (Previously, a movable visit could have blocked the assignment of another visit, resulting in the model not being able to assign all visits. A new custom move reassigns the movable visit, increasing the chance of assigning all visits.), a fix for endless loops in visit group recommendations, and fixes for the visualization of the model.
- Documentation: We’ve added a new guide explaining Resource-limited planning and optional visits.
new
improved
fixed
Timefold Platform
Employee Shift Scheduling
Field Service Routing
Optimization gain and metric evolution in Platform and support for limited resources per location and travel configuration per employee in ESS (v0.35.0)
- Added optimization gain & metric evolution to Run Details page: We have added the optimization gain (the difference between the first and the last solution) for every metric on the Run Details page. Hover over the score graph to see the evolution of the metrics to understand the tradeoffs the software is making during optimization. See “Interpreting model run results” for more information. These changes are useful to see the real-world impact (in metrics) of the duration of solving and to understand better how different metrics impact each other (e.g. if assigned visits goes up, this also impacts technician costs and to some extent potentially overtime);
- Showing constraints per group in Score Analysis: The Score Analysis overview of a run on the Run Details page now groups all constraints logically. This way you can see related constraints together to understand the model better. Our documentation site explains the features of a model per constraint group, so this way it’ll be easier to connect the features explained in the documentation to how they behave for a specific model run.
- Export justifications: We have added an export button to the Run Details page that exports the justifications for a run to a.jsonfile. You can use this to understand which constraints aren’t fully satisfied and why.
- Improved maps documentation: We have improved our documentation that explains the maps service. Updates are specifically useful for customers that self-host the platform.
- Expired trials cleanup procedure: Expired trials will now automatically be cleaned up when inactive. Trial users will receive an advance notification and have the option to keep their data.
- Several smaller stability and performance improvements and minor bugfixes (including a fix for a regression when filtering on deleted runs in the Platform UI).
- Allow limiting concurrent shifts per location: We have added the ability to control the maximum number of shifts that can take place at the same time. The feature is useful in scenarios where the shifts use a shared resource with limited capacity. See “new and noteworthy” for more details.
- Allow travel configuration per employee: It is now possible to specify a list of travel configurations per contract, and not just globally. Each travel configuration can limit the distance from the home location to a shift’s location and the time between 2 shifts at different locations, within a certain time period. See “new and noteworthy” for more details.
- Configurable rule matching behavior: Several types of rules (Cost Rules, Period Rules and Global Period Rules) can now be configured with more detail on when they are valid. Previously a rule’s validity period only checked a shift’s start time, but it can now be configured to also take into account the shift’s end time. See “new and noteworthy” for more details.
- Introducing input metrics: The output of a model run now includes an objectinputMetricsthat contains the number of employees, the number of shifts and number of pinned shifts in the input dataset. (See OpenAPI Spec for a description of their meaning.)
- We have updated our documentation for this model with several new feature guides: how to use “skills & risk factors”, how to guarantee fairness in schedules, and how to use the recommendations by the model to better handle real-time changes.
- Introducing input metrics: The output of a model run will now include an objectinputMetricsthat contains the number of visits, the number of visit groups, the number of vehicles, the number of mandatory visits, the number of optional visits, and number of vehicleShifts in the input dataset. (See OpenAPI Spec for a description of their meaning.)
- Improved scalability and memory usage efficiency: We have improved memory usage efficiency, resulting in better scalability over datasets with large numbers of visits.
- Added a new set of KPIs: The following KPIs have been added to the model output and Platform UI: the number of visits assigned, the number of mandatory visits assigned, the number of optional visits assigned, the number of vehicles used in the schedule, and the total amount of overtime required for the schedule. These new metrics will make it easier to compare different runs, e.g. when you are tweaking optimization goals. See our documentation for details.
- We have updated our documentation for this model related to recommendations: we have added pinning in recommendations, and a visit groups recommendations guide.
new
improved
fixed
Timefold Platform
Employee Shift Scheduling
Field Service Routing
Configuration profiles and Shift alternatives for ESS (v0.34.0)
- Configuration Profiles: We’ve introduced configuration profiles for the Timefold Platform. With these profiles you can create reusable sets of constraint weights, model configuration parameters and run settings. These profiles will make it a lot easier to do goal alignment, or model benchmarking. We’ve written documentation on how you can use configuration profiles to tweak optimization goals, and how to use them for the Field Service Routing and Employee Shift Scheduling models.
- Filtering on dates in the Model Runs Overview: It’s now possible to set specific date ranges when filtering on the Model Runs overview page. This should make it easier to find a specific historic run.
- Bug fixes and improvements: We’ve fixed a bug where we showed certain warning messages in the layout of an error message, and where we showed an irrelevant warning about justifications. We’ve improved the handling of events that sometimes caused the status of a run to be incorrectly displayed. And we’ve upgraded the framework that the Timefold Platform is built on (Quarkus).
- Shift alternatives: We’ve added a feature to the model that makes it possible to define a group of shifts and make sure only a specific number of them is assigned. You can use this for instance when you know a certain task needs to be done, but there’s a few options for the shift it should happen in. See New and noteworthy for more information.
- Contractual period rules can limit logged time: The contractual period rules can now specify minimum and maximum logged minutes. This feature can be useful when limiting minimum/maximum shift hours that differ from the scheduled shift start to end interval, e.g. because breaks are not included in the shift working hours. See New and noteworthy for more information.
- Documentation updates: We’ve made sure each of the model’s constraints now has clear descriptions. These descriptions show in the OpenAPI Specs, but also when creating a configuration profile for this model. And we have added a guide that explains metrics and optimizations goals for this model.
- Technician costs KPI is now optional: The Technician costs KPI introduced in the previous version (v0.33.0) is now only computed when a cost structure is submitted as part of the planning problem. We also have made some small improvements to the feature guide.
- Visualization improvements: We’ve done some minor bugfixes to the visualization.
- Documentation updates: We’ve made sure each of the model’s constraints now has clear descriptions. These descriptions show in the OpenAPI Specs, but also when creating a configuration profile for this model. And we have added a guide that explains metrics and optimizations goals for this model.
new
improved
Timefold Platform
Employee Shift Scheduling
Field Service Routing
Webhook improvements, FSR technician costs optimization, and more (v0.33.0)
- Day Light Saving for Employees: We fixed a bug where DLS was not properly applied for employees. For more information, please see: Employee Time Zones.
- Single-day pattern rules updates: We have added a custom move to facilitate matching of PREFERRED patterns. The REQUIRED single-day patterns are now deprecated and will be removed in a future version in favour of PREFERRED patterns with a high weight. More information in “New & Noteworthy”.
- Updated model information page to more clearly reflect its features and link to relevant documentation.
- We have added a guide explaining how to do resource-limited planning.
- Added technician costs optimization: Every vehicle shift can specify a Vehicle Shift Cost that will be used in the optimization by the minimize shift cost constraint. Please see the Technician Costs guide for details. We have added a new KPI representing the total cost of the solution and a new demo dataset that showcases the feature.
- Recommendation calls now validate the input dataset: Similarly to the model run, the recommendation calls now validate the input dataset.
- Visualization UI improvements: We have improved the Visualization UI, with better formatting of dates and coordinates as well as improvements to the color scheme.
- Updated model information page to more clearly reflect its features and link to relevant documentation.
- Webhook filtering options: It’s now possible to define per webhook for which run statuses, names or tags they should trigger. You can use tags to e.g. segment your model runs by region, and then use this feature to trigger different workflows per region. More information about Webhooks.
- Added metadata from the run & model in webhook payload: The payload of a webhook will now contain extra metadata from the run & model. More information about Webhooks.
- Score analysis with justifications is no longer limited to 100 per constraint: Our score analysis API-endpoint now supports downloading the complete set of justifications. We will bring back this functionality to the UI again in a next release.
- Maps improvements: We have improved the maps service on the platform to better handle locations outside of the map’s region and locations on islands.
new
improved
fixed
Timefold Platform
Employee Shift Scheduling
Field Service Routing
Fairness KPI for Field Service Routing and Visualization UI improvements (v0.32.1)
- Visualization UI improvements: Shift tags are now displayed in the visualization.
- Several smaller bugfixes.
- Adding a kpi for the load balancing constraint: We have added a new KPI for the load balancing constraint that we introduced with v0.30.0. See the feature guide for load balancing or the Timefold Platform UI for a description of its meaning.
- Recommended Time Window alignment with visits: We have implementedminStartTime,maxStartTime, andmaxEndTimeto replace the now deprecatedstartTimeandendTime. AddingmaxStartTimeopens the possibility to get recommendations for fixed-start visits (these are visits whereminStartTimeequalsmaxStartTime).
- Documentation improvements: The feature guide explaining Lunch breaks and personal appointments was updated to include how to model “Hotel breaks”, we have added a guide explaining multi-vehicle visits and the Fairness guide has been updated to include examples and images.
- Several smaller bugfixes.
new
improved
Timefold Platform
Employee Shift Scheduling
Field Service Routing
Multi-threaded solving for FSR, tag & name management for runs, and more (v0.31.0)
- New metadata in the model run: Every run will now also have the propertiesactiveDateTimeandshutdownDateTimethat keep track of when the solve-phase of a run started and stopped.
- Enabled multi-threaded solving: We have enabled multi-threaded solving for this model. Based on our benchmarking results, the maximum number of threads is limited to 4 for now. The desired maximum number of threads can be specified by themaxThreadCountattribute in Run configuration. The default is 1.
- Visit can specify preferred vehicles: We have added a capability to specify preferred vehicles for a visit. When set, the visit can be assigned to a shift of one of the specified vehicles if possible. You can specify these asmodelInput.visits[].preferredVehicleswhen submitting a new route-plan. Refer to the OpenAPI Spec for details.
- New metadata in the model run: Every run will now also have the propertiesactiveDateTimeandshutdownDateTimethat keep track of when the solve-phase of a run started and stopped.
- Tag & run name management via UI: You can now edit the name and the tags of a run via the Platform UI (after it’s finished solving). Use this to make specific runs easier to find, or to distinguish between production runs and tests or simulations.
- New API endpointPOST …/{id}/new-run: Each model now has a new endpoint that allows you to re-run a specific dataset. The endpoint will solve the dataset again, but with the new configuration parameters you submit. This endpoint wants to make it easier to tweak configuration parameters to get to the desired result.
- New API endpointGET …/{id}/config: Each model now has a new endpoint that returns all the configuration parameters that were used for a specific run. You can use this endpoint to audit whether different configuration parameters had an effect on the results of different runs.
- Improved search: When you use the search on our documentation website, we’ll now only show results from the product you’re looking at. Previously we also suggested articles from other products, which made finding what you were looking for harder.
- Dark/Light mode switch: Go to the footer of the documentation site to choose between light or dark for the documentation website. By default we’re still using the system setting, but if you prefer to override it for this specific site, now you can.