Hello everyone,
The following versions of Totara have now been released:
- 2.9.6.1
- 2.7.14.1
These release replace the 2.9.6, and 2.7.14 releases made earlier this month.
The reason for this emergency release is due to a potential dataloss issue with the upgrade step present in the Face-to-face module, introduced in 2.9.6 and 2.7.14.
For more information please read the following changelogs.
Kind regards
Sam Hemelryk
Release 2.9.6.1 (26th April 2016): Important: TL-8846 Face-to-face upgrade restores the latest non-empty signup and cancellation custom field data The 2.9.6 release contained a fix for TL-6962 which was not acting in a way that all users wanted it to. Given an upgrade step is non-reversible, we have put out an emergency release to allow administrators to choose how they want the upgrade to behave. TL-6962 was fixing Face-to-face signup and cancellation custom field data being lost when the user's signup status changed. The root cause of that issue is that custom field data was being stored against the user's signup status rather than the signup itself. Because a user could pass through multiple statuses, this data was lost in the user interface as soon as the user's status changed. This was most commonly seen if manager approval was turned on, in which case the signup note entered by the user when they signed up would be lost when the manager approved them. The solution was to change this, so that data is stored referencing the signup rather than the signup status. This ensures that the data is maintained throughout a user's signup, regardless of which statuses they pass through. During upgrade we had to remap existing data and a choice had to be made. Either we kept the data consistent with what users had previously seen in the system OR we restored the last non-empty value for the field for each signup. We chose in 2.9.6 to keep the data consistent with what users were seeing prior to the upgrade. Since the release we have had feedback that this is not what all sites expected and that they would prefer to have the last non-empty value restored. We appreciate this request and have come up with a solution that will allow each site to choose, if they wish, which they would like to happen. There is now a special configuration variable that can be defined in PHP to change the upgrade behaviour. The following explains what this upgrade step does and how to choose the alternative behaviour if you want it. Default upgrade behaviour: The upgrade finds the last non-empty value for each Face-to-face signup or cancellation custom field and uses that as the value the user entered. This is consistent with the behaviour you will see AFTER upgrading to this version. It is not consistent with the previous behaviour before upgrading, which was not maintaining the value the user entered. This is the default behaviour so you don't need to do anything except upgrade. Alternative upgrade behaviour: Instead of the default behaviour, restore the latest value recorded for the Face-to-face signup or cancellation field, which may be empty due to status changes, and store that as the user's current value. This is consistent with the behaviour prior to custom fields being fixed. It is not consistent with the current behaviour which ensures the value the user entered is maintained. To get this behaviour you must add the following to your config.php before upgrading to 2.9.6.1:
$CFG->facetoface_customfield_migration_behaviour = 'latest'; If you have already upgraded to the 2.9.6 release the alternative behaviour would have already been applied as this was the only behaviour available in that release. It is possible to change from the alternative behaviour to the current behaviour if you have a backup from prior to the upgrade. If this is you please get in touch with us and we'll provide instructions on how to re-run this part of the upgrade using the data in the backup.
Release 2.7.14.1 (26th April 2016): Important: TL-8846 Face-to-face upgrade restores the latest non-empty signup and cancellation custom field data The 2.7.14 release contained a fix for TL-6962 which was not acting in a way that all users wanted it to. Given an upgrade step is non-reversible, we have put out an emergency release to allow administrators to choose how they want the upgrade to behave. TL-6962 was fixing Face-to-face signup and cancellation custom field data being lost when the user's signup status changed. The root cause of that issue is that custom field data was being stored against the user's signup status rather than the signup itself. Because a user could pass through multiple statuses, this data was lost in the user interface as soon as the user's status changed. This was most commonly seen if manager approval was turned on, in which case the signup note entered by the user when they signed up would be lost when the manager approved them. The solution was to change this, so that data is stored referencing the signup rather than the signup status. This ensures that the data is maintained throughout a user's signup, regardless of which statuses they pass through. During upgrade we had to remap existing data and a choice had to be made. Either we kept the data consistent with what users had previously seen in the system OR we restored the last non-empty value for the field for each signup. We chose in 2.7.14 to keep the data consistent with what users were seeing prior to the upgrade. Since the release we have had feedback that this is not what all sites expected and that they would prefer to have the last non-empty value restored. We appreciate this request and have come up with a solution that will allow each site to choose, if they wish, which they would like to happen. There is now a special configuration variable that can be defined in PHP to change the upgrade behaviour. The following explains what this upgrade step does and how to choose the alternative behaviour if you want it. Default upgrade behaviour: The upgrade finds the last non-empty value for each Face-to-face signup or cancellation custom field and uses that as the value the user entered. This is consistent with the behaviour you will see AFTER upgrading to this version. It is not consistent with the previous behaviour before upgrading, which was not maintaining the value the user entered. This is the default behaviour so you don't need to do anything except upgrade. Alternative upgrade behaviour: Instead of the default behaviour, restore the latest value recorded for the Face-to-face signup or cancellation field, which may be empty due to status changes, and store that as the user's current value. This is consistent with the behaviour prior to custom fields being fixed. It is not consistent with the current behaviour which ensures the value the user entered is maintained. To get this behaviour you must add the following to your config.php before upgrading to 2.7.14.1:
$CFG->facetoface_customfield_migration_behaviour = 'latest'; If you have already upgraded to the 2.7.14 release the alternative behaviour would have already been applied as this was the only behaviour available in that release. It is possible to change from the alternative behaviour to the current behaviour if you have a backup from prior to the upgrade. If this is you please get in touch with us and we'll provide instructions on how to re-run this part of the upgrade using the data in the backup.