There are a few blogs around detailing some issues with checklist items not getting set to status completed, but this issue has recently come up in a few cases and doesn’t seem to have been documented before. As those who have researched these problems would know, the status of the checklist items is stored in the SysSetupLog table.
There was a customisation in method ApplicationVersion::buildNo that added an additional string to the default build number, in this case it was the customer’s internal build details. Within the SysSetupLog table there is a field AppBuild which is 30 chars long. Now, when you click on “Mark as Complete” we are adding records for each item to the SysSetupLog with some details, including the build number that is populated into the AppBuild field. For this issue the build number returned by the method was greater than 30 characters, but when the record was written in the table, the build number was truncated to 30 characters.
It is during the rendering of the HTML page for the checklist we check the item’s status. Within the code we are using the method call SysSetupLog::findEx to find the record for the item, however this wasn’t returning anything. Within this method we try to fetch the checklist item record by matching on some passed-through parameters, but the app build is matched based on the returned value from ApplicationVersion::buildNo, see below:
static SysSetupLog findEx(identifierName _name,
SysVersion _version = xInfo::releaseVersion(),
boolean _forUpdate = false)
if (_name) //description can be empty…
select firstonly sysSetupLog
where sysSetupLog.Version == _version &&
sysSetupLog.AppBuild == ApplicationVersion::buildNo() &&
sysSetupLog.Name == _name &&
sysSetupLog.Description == _description;
The reason that no record was returned, was that that the build stored in the AppBuild field had been truncated, and therefore did not match the build number returned by the buildNo method.
Ensure that the string returned by method ApplicationVersion::buildNo does not exceed 30 characters.