Changelog

Presage Desktop
2/3/2026

Windows Fixes:

This update solves several major issues introduced by Microsoft in recent updates to Windows that affect how common controls display. Namely 2 issues:

  1. Large edit boxes get blurry on tabs. (Technical info: a windows update to ClearType Font rendering seems to have caused multi-line edits in property pages to stop redrawing correctly)
  2. Editable fields look read-only on tabs after recent windows update:

UI Improvements

The following improvements have been made to the look and feel of the ITrack controls as well to match the Windows 11 control themes:

  • Editable dropdowns now show the themed blue border when the user has clicked 'in'
  • Editable text in list controls now show the themed blue border when the user has clicked in
  • Editable dropdowns in list controls now show the themed blue border when the user has clicked in
  • Multi-line text fields in list controls now do much better about 'growing' correctly to fit the text to display to the user.

Browser changes

The embedded browser in ITrack has been switched from one based on Internet Explorer to one based on MS Edge. This improves speed, security, and the ability to render modern web technology. However, this drops support for some older computers. Users on these older machines should still be able to use ITrack but may see a warning box on the home screen instead of the usual browser area.

Other fixes

  1. Web browser pages should no longer leave MSEdgeWebView2.exe processes running on the system after the application closes in some circumstances.
  2. The embedded edge browser now writes its data into the windows temp directory instead of the Presage installation directory. This helps for situations where the user doesn't have write privileges to Program Files (x86).
2/19/2026

General

  • Fixed: an issue where looping across reports to update had a bug in release mode, causing a query error.
  • Changed: the application is now explicitly not High-DPI aware. On some systems this helps to ensure that ITrack looks correct when windows scaling is above 100%.
  • Fixed: audited every file for dialog font settings and standardized on MS Shell Dlg, which seems to be an alias for the operating system's dialog font, which seems to resolve to Microsoft Sans Serif(8). This was previously mixed with MS Sans Serif, which resolved correctly on some machines but not others, resulting in missing fonts, leading to some inconsistent looks on some windows 11 machines.
  • Fixed: minor improvements to the choose folder dialog and some error reporting messages.
  • Added: property pages (tabs) now automatically change the font any multi-line edit controls when it initializes, overwriting the operating system preference for ClearType and turning it off. This is because a recent windows update now causes weird blurring to occur in multi-line edit boxes inside of property pages. Its still unclear why Microsoft did this.
  • Fixed: an issue where the background of a property page would not be the correct style if it did not contain a static text area or a button.

Installer

  • Added: (EE-1039) the version of ODBC packaged in the installer has been updated to be 8.0.27. This is the newest version that supports TLS 1.3 that still supports old TLS 1.0 and 1.1. This allows us to support a wide range of server security protocols.
  • Fixed: the uninstaller now removes ODBC entries.
  • Fixed: an issue where the ODBC registry entries were written to "SOFTWARE\WOW6432Node\WOW6432Node\ODBC" instead of "SOFTWARE\WOW6432Node\ODBC". This didn't seem to interfere with operation, but it isn't technically correct. This seems to be because it was a 32 bit installer.
  • Removed: the (now) unused Microsoft redistributable package 2013, which was only included for ODBC 5. The new version uses the shared 2015-2022 package.

Database

  • Added: The total unit conversion factor between two products is now inclusive of the start product's unit conversion factor. This allows a single product to have conversion factor to an imaginary parent unit, simplifying configuration.
  • Fixed: an issue where a logging trigger was logging twice.
  • Added: supplierid column to sample table (With FK and related logging)
  • Added: showsupplier column to workordertype table (With related logging)
  • Changed: PS-740: the defaults for all graphing URLs have been updated to match the current configuration expectations.
  • Changed: (PA-778) for the newly added showsupplier field, existing workordertypes should now default to off, but new workordertypes will default to on.
  • Changed: (PA-775) adds support for supplier tag based option restrictions to ftestoption_restrictions
  • Added: Version 702 - Add CONFIGURATIONCANCONFIGURE_PRINTERS permission
  • Added: Grant printer config permission to all users who can use report viewer

Graphing

  • Updated: (case EE-222) to use the new embedded web browser. (No longer supports IE)

Home

  • Updated: (case EE-222) to use the new embedded web browser. (No longer supports IE)

ITrack Online

  • Updated: (case EE-222) to use the new embedded web browser. (No longer supports IE)

ITMySQLConnection

  • Added: support for some more specific SSL configuration errors when the user has a SSL path set, but it is incorrect. The user is prompted to go into the configure connection settings page to fix this.
  • Added: the configure database connection popup now lets the user configure the "Use SSL" checkbox along with the directory to find the SSL certs and the (optional) prefix for the cert and key.

Sampling

  • Fixed: an issue where the date range sample criterion on saved searches or new searches could result in query errors on MySQL 8 servers.
  • Updated: (case EE-222) to use the new embedded web browser. (No longer supports IE) *
2/6/2026

Installer

  • Added: if the user runs the installer in silent mode, default database credentials should now be written to the host.ini and odbc connection correctly.
  • Removed: Visual C++ 2008 redistributable package now that our application is built with newer tools.

General/Shared

  • Tooling: the application is now built with newer version of visual studio and newer platform SDKs. This should mean faster and more secure applications in general, and it also means that we can drop the need for the visual c++ 2008 redistributable package that was in the installer previously.
  • Fixed: an inconsistent crash that could sometimes happen when closing a screen containing a property sheet.

Database

  • Removed: some specific references to the latin1 character set in recent versions so that databases running in utf8 won't have errors.
  • Changed: logging triggers for many tables has been rebuilt to include newly added fields.
  • Removed: logging triggers for valuecalculation table, as it is mostly unused.
  • Added: logging to useraccount.apitoken for security purposes.
  • Fixed: An issue where fgetnext_schedule could throw a database error if the dayoffset or monthoffset were 0 when they should not be. Now they'll be assumed to be 1.
  • Changed: the wording of the email that is sent when we could not check if the data clone report could not be run. It is now clearer that this does not mean that the data clones failed, but instead that we couldn't check whether they failed or suat all.
  • Changed: new deployment now creates plant 1 in UTC timezone instead of SYSTEM
  • Changed: new deployment now creates several default plant tags and assigns them to plant 1 by default.
  • Added: function NORMDIST which computes a normal distribution.
  • Removed: explicit latin1 in fBINTO_UUID
  • Added: explicit HEX of binary columns in logging triggers for useraccount tables
  • Added: analysisoptionvalueproduct.created for tracking when an ingredient was added to a recipe batch.
  • Removed: earchivechangelogs no longer does any actual archiving. This is because mysql 8 can't use ARCHIVE engine anyway, so moving rows from log tables to ARCHIVElog tables just makes them harder to find and both tables are just row_format=COMPRESSED innodb tables anyway. If this ends up leading to large hard drive consumption, we should add row deletion to this event, but probably on a much longer time limit.
  • Added: (PA-502) the clone data stored procedure now supports several new settings that control whether work orders are cloned with dates relative to the current moment or the original scheduled date. The second new setting controls whether samples that would be scheduled in the past will be skipped or not. Both settings default to continuity with previous behavior.
  • Added: v650: some new fields that will allow the user to specify a secondary unit for each product and a conversion between the primary and secondary unit. These are both optional fields.
  • Added: new stored function for computing total conversion factor for product units.
  • Added: analysis option fields for controlling sections
  • Fixed: useraccount.name can no longer be NULL, any existing null values have been updated to unique values to avoid collisions.
  • Added: (v652) added fdecimalto_fraction, a function that can turn most decimal numbers into a reduced fraction string.
  • Added: (v653) updated logging triggers to tables product, analysisoption. Added logging triggers to productbatch table.
  • Added: (PA-547) new schema for transactionalizing release date on ingredient lot usage on recipes.
  • Added: group.externalid and useraccount.externalid are now logged in the audit logging triggers
  • Fixed: (PA-558) fixed an issue where the time of day was not being properly copied when cloning work orders. This was due to the time being copied in UTC, which would not consider daylight savings time. We now copy the time of day in the local timezone, so that daylight savings time is considered.
  • Added: an update that will reset any current settings for the 4 SPC settings that enable option correlation calculations on active databases. This is computationally expensive, and it is not supposed to be on by default, but was incorrectly activating on new deployments. If a company wishes to enable this system, they will need to set calculation periods again after this update.
  • Added: (case PA-598) enum options for push notification support.
  • Added: an index to the alertqueue table to hopefully keep lookups for unread alert queue messages fast.
  • Modified: alert queue stored procedures to handle specific "Push" type alert queue messages.
  • Fixed: pbackuptable now assumes the current database instead of backup if none is specified. Also, ROW_COUNT() is no longer used to see how many rows were moved between tables as this seems to behave inconsistently on some systems. Instead, we run the select on the source table to figure out if we're out of rows now.
  • Added: parchivetabledata, which uses pbackuptable internally to move rows between tables. However, it does it more performantly by going in primary key order in a specific way. In general, on very large tables, I've found it gets very expensive to do LIMIT X, Y with no WHERE clause on a good index to jump across millions of rows. So this version ORDERs the results by the primary key and finds ranges of the primary key to filter by and passes a WHERE clause into pbackup_table to keep each chunk constant-time across the archive process.
  • Added: archive process now adds data to an ongoing log. Also, added optional 'start from' id.
  • Added: UnArchiveLogs script, which attempts to show a series of queries that I ran against Polar to both combine some erroneous (case sensitive) versions of their archives as well as merge their archive logs back into their live logs without locking up their system. I had to monitor their hard-drive space while I was doing it, but it worked without locking things up, and did require a new stored procedure to not take exponential time for 700million rows. For them, it probably took like 10 total hours, but I had a lot of missteps and had to write new procedures and stuff, and they needed probably 46GB of free space all said, but IDK if some of that was mysql logs.
  • Added: an index for lot # lookup
  • Added: query for changes to modernize userpushsubscription
  • Added: logging triggers to the userpushsubscription table.
  • Modified many stored procedures, functions, and a couple triggers to use "NOT" instead of unary operator "!" to avoid warnings in mysql 8.
  • Added: a query to more specifically set analysis option inventory mode to 'Single Lot' for everything on a recipe to assist users updating to v6 to have data continuity with the system before the update.
  • Added: Added new script as per PA-648
  • Added: Rejected to productbatch.status enum
  • Added: schema for the shared dashboard system
  • Added: dashboard permissions to go with the recent dashboard schema
  • Changed: recently released database version 656 to have foreign keys on the dashboard tables that will be more likely to not have issues on customer systems.

Configuration

  • Changed: SYSTEM is no longer a valid timezone for new plants by default. But if any existing plant has SYSTEM or any other unknown timezone saved, it will be shown correctly.

CrystalReports

  • Fixed: (PA-562) the edit->reports page file upload dialog now shows an error box if it failed to read the file in windows.

Data Management

  • Fixed: an issue where data being converted during an import could sometimes be blank string and sometimes NULL, depending on how the user mapped the field (mapped to a blank column vs mapped to a fixed blank value) which was leading to difficulty in conversion scripts.
  • Changed: when an import is being performed, if a field token is unmapped or otherwise completely invalid, it will now be replaced with NULL instead of deleted. This will allow queries to sometimes complete in a reasonable fashion instead of resulting in syntax errors.
  • Added: the auto-map process that happens when the user loads or refreshes an import CSV now considers the sub-field sources' names. This allows more specific creation of import templates for auto-mapping purposes. The auto-map process is now multi-pass where exact (case-insensitive) matching is preferred, but a second pass is performed where matches are allowed where fields/columns that 'start with' the other are matched. Any previously mapped fields are excluded from the auto-map process.

Investigation

  • Fixed: an issue where the Result column on an investigation could include too many (non-failure) options/values.
  • Fixed: (PA-595) an issue where the work order type dropdown on the investigation configuration screen was not correctly showing plant specific options.

Login

  • Fixed: some initialization operations were happening twice when the user would launch the application, which could cause slightly slower startups.

SamplingHistory

  • Fixed: a crash that could occur when the user checked/unchecked the 'show modified values icon' option in the right click menu if they had multiple samples loaded with different numbers of options on them.

TransactionList

  • Changed: (case EE-889) exporting from the transaction list now pays attention to the users sorted columns before export.
  • Updated: (EE-922) Tooltips for when permissions are bad for saving
  • Added: (EE-922) Checks for the new permissions

PS Reports Change log version 6.15

Reports

REVISION 24639–25115

Certificate of Analysis (CertificateOfAnalysis.rpt)

  • Fixed: (case PA-323) logo logic to pull from the correct plant

Control Chart (ControlChart.rpt)

  • Fixed: (case PA-397) control lines not stretching to the ends of the graph
  • Fixed: (case PA-397) language parameter being ignored in some places to always print Spanish
  • Changed: (case PA-620) minor change, gave language parameter a default within the report file
2/19/2026

Breaking Changes

  • Presage 6.0 no longer relies on a special MySQL plugin for sending alerts to the client. This is now handled exclusively by the Presage API. This means this functionality requires the Presage API to be running for a client. If you do not receive alerts after this update, please contact Presage support.

Installer

  • The installer has been rebuilt and modernized. Unnecessary dependencies have been removed, and some components updated to newer versions.
  • Added uninstaller
  • Uninstallation now removes install/release key
  • Removed instantVNC
  • Fixed: downloading TSC_Lastest tag printer installer now works again

Controls/Tools

  • Fixed: a potential crash that could occur when modifying visibility of a button.
  • Added: support for easily toggling sorting and/or drag and drop on and off on a list control since in some places, sort order can be saved, and therefore must be disabled when the list is read only.
  • Added: stored procedures that should be able to accurately restore records for any table from audit logs.
  • Fixed: (EE-237) a subtle and rare bug that could cause a tree control with a footer to sometimes be shorter than it was supposed to be. Changes from the list control from 2018 have been adapted to the tree control to bring the two in line for their behavior.
  • Fixed: an issue where some popups would not be tied to the application correctly. This meant that the user could sometimes use alt+tab to access the application still even though a popup was present. This also fixes an issue where auto-refresh timers were not being halted while these popups were visible. Now they will pause correctly.
  • Changed: the way popups center on their parent window now works in a way that doesn't require breaking how popups are tied to the application.

Database

  • Added: an index to the analysisoptionvalue table on the date a value was filled out to make some dashboard queries faster.
  • Added prestoretablefromlogs a generalized version of restoring a table from the logs.
  • Added some handling of temporal columns default functions like NOW or CURRENT_TIMESTAMP
  • Migrated all previous prestorexx procs to use prestoretablefromlogs
  • Added prestoreeveryrowintablefrom_logs, which makes easy a rarely performed function where every historical record in a table will be restored from logs. This can be useful if a table was accidentally emptied.
  • Removed: It was noted that Presage had foreign keys on the table reportprinter (which is shared between products) unlike the other systems. These foreign keys were preventing the use of the value of 0 for userid or siteid to denote 'global' so they had to be removed
  • Deprecating: a couple of unused tables as part of an effort to make deployment size smaller.
  • Added: some enhancements and formatting to prunforeachtable that was introduced in another product
  • Changed: numbers table is now innodb to match all other schema
  • Fixed: an issue where the overnight option correlation calculator was failing.
  • Fixed: an issue where the expire sessions event could fail during daylight savings changeover.
  • Fixed: an issue where the event that ensures that data clones ran successfully would incorrectly email an error when running 2 hours after a daylight savings changeover.
  • Added: new tables keyvaluepair and userpushsubscription, used for push notifications
  • Fixed: when the scheduleinstance table had startdate changed from DATETIME to TIMESTAMP, mysql automatically added 'on update' to it so that the datetime would be set to NOW whenever anything changed, which is not desirable
  • Fixed: misspellings of occurrence in pscheduleinstance_populate
  • Fixed: an issue where a schedule with an end date would not stop at the passed in end date for instance generation
  • Fixed: added three different protections against infinite loops in pscheduleinstance_populate to protect against runaway schedules
  • Added: sample.due, sample.scheduled, analysisoptionchoice.productbatchid, and workorder.productbatchid were all not being logged and now are
  • Added: table/column comments to some tables that didn't have them.
  • Minor change to an unreleased index to assist both dashboards and reports
  • Added: (PA-332) several indices to improve the speed of common load operations and reports for large clients.
  • Added: database index for workorder.scheduled to improve load speed for some mobile applications.
  • Added: a couple more indices to the workordertype and sample tables to help speed up some common operations.
  • Added: (PA-351) changes to many tables to add the multiple lot tracking/inventory subsystem.
  • Added: eprocessalert now checks a setting to see if the API is configured to send alerts. This allows us to transition alert emailing from the database UDF to the API.
  • Added: field for supplier item number on sample value inventory.

Analyses

  • Added: (FB-48673) a prompt to delete the current analysis option rule if all tags have been removed from it.
  • Fixed: typo
  • Fixed: an issue with analysis option choices/thresholds where deactivated products or products that were not in use at a plant would stop showing on historical choices/thresholds.

Configuration

  • Added: The settings page now refreshes global and site level settings when the user visits this page. This should help avoid issues where the user sees 'old' information in this popup that was changed by another user or in the database directly.
  • Added: (EE-141) the system will now close all historical user sessions if a user is locked or deactivated.

Crystal Reports Printing

  • Added: print jobs now have a title set based on the user friendly name of the report, plus a file extension. Testing revealed that this causes some PDF printers to name the default file equal to this title, making printing to PDF slightly easier.

ITMySQLConnection

  • Fixed: a minor issue where, if ca-cert.pem is completely missing, requiring SSL might not throw an error when connecting.
  • Added: comment /RECONNECT QUERIES CHANGED FOR CONNECTION "X", RUNNING NOW:/ to the start of the queries run by mysql every time we reconnect to the database.

Locations

  • Fixed: an issue where adding an image and switching maps without saving might stop showing the image.
  • Fixed: an issue where top-level images, text, and boxes wouldn't save in some scenarios.

Login

  • Added: when the user logs out and back in, global settings are now refreshed from the database to avoid situations where they have out of date information until they restart the application.

Master

  • Changed: suppressed a database error that could be thrown from help->about if the database did not have a version in it.

Products

  • Fixed: an issue where address lookups on the supplier address area were throwing a query error when doing a city/zip lookup.
  • Fixed: an issue where the user could experience crashing or other random behavior if they hit the reset/refresh button before adding new product specifications.
  • Fixed: an issue where deactivated products/ingredients (or those not in use at the plant) no longer showing in dropdowns on recipes/steps that reference those products/ingredients.

Report Viewer

  • Added: (EE-164) the user can now see the "Delayed until" column in the print queue history tab. In addition, there are now filters for all job statuses and a filter to display only jobs with a delay until date.

Sampling

  • Added: (PA-226) the approved on column now shows the time as well as date.
  • Added: when loading thousands of samples, the sample values are loaded for 1000 samples at a time. This is to avoid issues in the database from loading too many samples' values at once. (Technical note: It was noted that MySQL didn't like to use an index anymore when the sampleid IN clause grew greater than 13313)

Work Orders

  • Fixed: (PA-274) a crash that could occur if the user viewed a change log of a WO where the product batch had changed.
  • Fixed: an issue where the testing WOs page would show a bunch of "N/A" columns if there were only recipes on the WO. Now, only displayable samples will factor into computing what columns to show.
  • Fixed: (FB-39027) if a recipe has its production volume changed, all options/steps will have their acceptability recalculated. This avoids an issue where per-batch thresholds were not recomputing after the batch volume changed.
  • Changed: sample sequence ID will now save as NULL instead of 0 when it is not a scheduled sample.

PS Reports Change log version 6.0 REVISION 24235-24577

Reports

1.1 x 2.4 Sample, no barcode (1.1x2.4_Label.rpt)

  • Changed: (case PA-332) improved efficiency by changing IFs to ORs in the WHERE clause for both queries

1.1 x 2.4 Sample Barcode Only, barcode contains sampleid (1.1x2.4_LabelwithBarcodeOnly.rpt)

  • Changed: (case PA-332) improved efficiency by changing IFs to ORs in the WHERE clause for both queries

Barcodes (Barcodes.rpt)

  • Fixed: (case PA-323) report was pulling the wrong store logo
  • Changed: (no case) removed bounding box to prevent scanners thinking it was part of the barcode, modified barcode conditional resizing to allow for longer barcodes without getting cut off.
  • Fixed: (no case) additional barcode resizing and layering another barcode to prevent a gap at the smallest font size.

Certificate of Analysis (CertificateOfAnalysis.rpt)

  • Fixed: (case PA-188) rebuilt the report fresh to remove strange line showing up in specific situations
  • Added: (case PA-212) 2 new parameters (with associated settings) to add additional comments at the top and bottom of the report

Investigation Overview (InvestigationOverview.rpt)

  • Added: (case PA-248) Investigation Comments, Root Cause, & Root Cause Comments

Sample (0.66x2.1) (0.66x2.1_Label.rpt)

  • Changed: (case PA-332) improved efficiency by changing IFs to ORs in the WHERE clause for both queries

Sample (1.1x2.4con) (1.1x2.4con_Label.rpt)

  • Changed: (case PA-332) improved efficiency by changing IFs to ORs in the WHERE clause for both queries

Sample Barcode (1.1x2.4_LabelWithBarcode.rpt)

  • Changed: (case PA-332) improved efficiency by changing IFs to ORs in the WHERE clause for both queries

Sample Barcode (0.66x2.1) (0.66x2.1_LabelWithBarcode.rpt)

  • Changed: (case PA-332) improved efficiency by changing IFs to ORs in the WHERE clause for both queries

Sample Barcode (1.1x2.4con)(1.1x2.4con_LabelWithBarcode.rpt)

  • Changed: (case PA-332) improved efficiency by changing IFs to ORs in the WHERE clause for both queries

Testing Barcode (0.5x2.4LabelWithBarcode.rpt)

  • Changed: (case PA-332) improved efficiency by changing IFs to ORs in the WHERE clause for both queries
2/19/2026

General

  • Added: (case FB-55284) support for copy and paste right click options in all list controls. Copy is always allowed, paste is only allowed if the user right clicks on a cell that they can edit.
  • Changed: all usage of libcURL from version 7.61.1 to 7.88.1. This update allows all of our HTTPS operations (including connecting to the auto-updater) to support TLS 1.3.
  • Changed: all usage of libMySQL from version 6.1.11 to 8.0.27. This update allows connection to the newest versions of MySQL server, as well as supporting TLS 1.3.
  • Changed: all usage of openSSL from version 1.0.2 to 1.1.1w. This is used both by the new version of libcURL as well as the new version of libMySQL to handle newer security.
  • Changed: all usage of zlib 1.2 to 1.3. This handles compression in mysql and libcURL.
  • Fixed: many queries have been updated to escape certain column names that will cause issues when using MySQL 8.

Database

  • Fixed: the nightly event that extends schedule instances for schedules in the system now cleans up old records at least a year old on the first of every month. The scheduleinstance table is also optimized to avoid issues encountered at one location.
  • Changed: (case 60014) the event that sends emails if a data clone failed to happen now looks to see if changes were made to the dataclone rule between when the item should've been cloned and now. If a log entry is found, the email is not sent, assuming that a user change prevented the rule from executing as expected.
  • Added: (case 60642) a stored procedure to re-rank analysis options to remove gaps. Credit goes to Gwyn.
  • Added: (case 60229) new field group.member_emails, which is a text column kept up to date as a semicolon separated list of work emails of all members of the group. This is useful for building alerts that are sent to an entire group.
  • Added: (case 60745) some indices for faster lookup of samples by date ranges.
  • Changed: (case 60914) move all alert subscriptions with no user over to the support user. Then make it so that column does not allow NULL values.
  • Fixed: (case 61034/case 61025) the query inside the stored procedure prefreshallsampleacceptability was examining all analysisoptionvalue records, which slowed the query significantly. This was apparently caused by using a LEFT JOIN to sample instead of a JOIN to sample. Since all optionvalues must have a sample, JOIN is correct and is faster because it allows the query to use indices.
  • Changed: (case 60632) reportsubscription and reportsubscriptionparameter tables to be able to handle a scheduled report that will run a query and either email or save it to a directory.
  • Changed: reportqueue and reportqueueparameter tables now have a sourcetype and sourcequery columns to handle distinguishing between reports that just run a query and send a CSV or those that run a crystal report and send a PDF. All existing entries with a destinationtype of CSV have been converted to sourcetype Query and have had their query value moved from the reportqueueparameter table to the reportqueue.sourcequery field.
  • Changed: the event eschedulereports that generates reportqueue records from reportsubscription records now knows how to handle the new sourcetype field. Error handling is now specific to the sourcetype.
  • Fixed: fgetallancestorid was putting spaces after the commas. This is nice for human readability, but it breaks usage of FINDINSET, which I think sucks, so I changed it.
  • Fixed: an issue where fgetvalueacceptability could throw an error if a non-existant product id was passed in. This function now computes the tree path of products using the shared fgetallancestorid and checks for a value in it using FINDIN_SET, making it more standard.
  • Changed: saved search XML now allows 16 million+ characters instead of 65k characters, as some very large saved searches exceeded this.
  • Added: indices for speed to the lastmodified datetime on the analysisoptionvalue table as well as the name column on analysisoption. These will make certain common API operations faster.
  • Added: (PA-15) a useful stored procedure, pformatanalysis_results
  • Fixed: description for the API Token permission to note that the user needs the permission at Global level.
  • Fixed: an issue where negative 'hour offsets' was not working on alert rules. Negative offsets were supposed to mean 'hours after' expiration/due.
  • Fixed: PA-88: an issue where negative hour offsets in alert subscriptions would not process those alerts.
  • Fixed: PA-88: several issues where a document whose due date fell directly on a 5 minute multiple such as 11:00:00, it might get sent twice or not at all in some scenarios.
  • Fixed: PA-89: an issue where work orders that were done being collected (but not yet closed) would still send alerts for 'due date approaching'. Verification due date approaching type alerts can still be sent in this situation.
  • Fixed: (PA-107) an issue where 'bad' characters in the email address of an alert could cause collation errors when the database would attempt to process the event. This only happened if the character set of the tables and the character set of the stored procedures differed. pedocumentreplacetabletokens now does an explicit CONVERT operation to cast table values into the connection character set to avoid this. We will also audit customer databases to ensure that all character sets match.
  • Fixed: (issue PA-114) an issue where edataclone_scheduler might fail to clone data during daylight savings if the server timezone was set to SYSTEM and a clone record was one hour behind the system timezone. This was due to a conflict between server DST and destination plant timezone DST causing an hour to be skipped during 'fall back'
  • Fixed: some historical updates have been made MySQL 8.0 compatible.
  • Fixed: several stored procedures and functions have been modified to be MySQL 8.0 compatible.
  • Added: (issue PA-85) log workorder.productbatchid

Analysis

  • Added: as per request by advanced users, the 'verify' step of the 'test default value formula' popup dialog now has a button that allows the user to ignore mysql errors and save anyway if they know what they're doing.
  • Added: (FB-19614) there is now a 'show only applicable thresholds' checkbox in the inspect acceptability popup. This dialog can be launched either from the edit analysis screen or the sample detail page on sample history or WOs. This checkbox defaults to checked. When checked, any filter that is not currently marked as "Applicable" (IE one that is for a different plant, product, batch, severity, etc) will be hidden, making it easier to understand how the applicable thresholds applied.
  • Fixed: an issue where the severity dropdown in the inspect acceptability popup wouldn't display values until the plant was changed.
  • Fixed: an issue where the "N/A" option was mixed into the middle of the products and severity lists.

Common Resources

  • Fixed: (case 60722) if the user is entering thresholds/choices and they change the option from text to number/integer/date, on save the system will attempt to 'reformat' the saved value based on the new value type. This avoids issues where users would enter text values like ">.25" as text, then switch to numeric. Previously, ">.25" would be saved, which would not work correctly. Now ">.25" will be reformatted to ".25" on save, which will work better.

Configuration

  • Changed: user creation now allows user names up to 320 characters in length to facilitate logging in using email addresses, which can be quite long.
  • Changed: new users in the Pending Activation stage now default to a password encoding of PBKDF2 to avoid the (soon to be deprecated) MySQL Password option.

Investigation

  • Added: (case FB-22730) investigation # is now displayed in the investigation history search.
  • Added: (case FB-22460) all of the 'long text fields' now allow themselves to grow to show a lot more text instead of a max of 10 lines. The height of the box will now be bounded by the size of the list.

ITMySQLConnection

  • Fixed: (case 53807) an issue where, if a mysql connection was closed due to inactivity or server shutdown, the connection would silently auto-reconnect, but the first query run on the fresh connection would return no results.
  • Changed: minor updates to avoid features being deprecated by MySQL.
  • Changed: previously, if "usessl" in the configuration was set to False, the connection would stay in "SSL Preferred" mode, which would still attempt to negotiate an SSL connection, if possible, falling back on unencrypted connections. Now, if usessl is off, the connection will not even attempt to establish a secure connection.

Locations

  • Fixed: (FB-22777) if the user gets a query error due to too long of a location during save, they will now see a user friendly error message.
  • Added: (FB-22777) before attempting to save, the location system will now compute the full location string for each item in the tree. If this value is too long to save, the user will be shown an error message telling them which location(s) need modified and save will be aborted.
  • Added: full locations are computed and set before save, making save operations faster.

Login

  • Removed: support for old, insecure password encoding methodology that we have been moving away from for many years. Updating to support MySQL 8 require dropping support for this insecure password methodology.
  • Added: if a user attempts to log in to the application using the deprecated password encoding methodology, they will be shown an error message telling them that they cannot log in this way anymore and must now perform a password reset or contact someone who can reset their password.

Master

  • Fixed: an issue where the logout vs close value wasn't being sent correctly. This was causing weird popups in some screens.

Product Management

  • Changed: (case FB-25174) the product name and category fields are much wider.

Sampling History

  • Added: (case FB-56863) a sample count at the bottom of the sample list.

Work Orders

  • Fixed: (case 60707) an issue where the "this sample has created an investigation" icon would not show up if that investigation had not created any follow up samples yet.
  • Added: (case FB-52365) the user's selection on the date range filter on the 'automatic WOs' area is now remembered.
  • Added: (case FB-52352) newly scheduled WO clone schedules automatically copy WO title into schedule description.
  • Added: if the user makes a change to the filters while in the Automatic Work Orders area, they will be reset to the first page of results.
  • Added: (case FB-56863) a sample count at the bottom of the sample list.
  • Fixed: (PA-142) an issue where 'calculate once' defaults that came back as NULL or a blank string would not be put into any defaults that reference that value as NULL like expected. It was going in as blank string instead, causing some inconsistent behavior.
  • Fixed: an issue where 'calculate once' defaults that had been overridden with a user-entered value would not use the user entered value in the formulae for dependent defaults.

Reports

Alerts (Alerts.rpt)

  • Added: (case 59905) time zone adjustment
  • Added: (case 52029) bottom corner logo

Analyses By Activity (AnalysesByActivity.rpt)

  • Added: (case 59905) time zone adjustment
  • Added: (case 52029) bottom corner logo

Analysis Change Log, Users/Groups Change Log, Investigation Trigger Change Log, & Product Change Log (ChangeLog.rpt)

  • Added: (case 59905) time zone adjustment
  • Added: (case 52029) bottom corner logo

Certificate of Analysis (CertificateOfAnalysis.rpt)

  • Added: (case 59695) time zone adjustment
  • Added: (case 52029) bottom corner logo
  • Added: (case PA-75) three new parameters to toggle whether to show location, product, and scheduled in Basic Sample Information. These new parameters have associated settings to set defaults.

Choices & Thresholds (ChoicesAndThresholds.rpt)

  • Added: (case 59905) time zone adjustment
  • Added: (case 52029) bottom corner logo

Contact Tracing (ContactTracing.rpt)

  • Added: (case 59905) time zone adjustment
  • Added: (case 52029) bottom corner logo

Control Chart (ControlChart.rpt)

  • Added: (case 59905) time zone adjustment
  • Added: (case 52029) bottom corner logo

Correlations By Analysis (CorrelationsByAnalysis.rpt)

  • Added: (case 59905) time zone adjustment
  • Added: (case 52029) bottom corner logo

Failed Results (FailedResults.rpt)

  • Added: (case 59695) time zone adjustment
  • Added: (case 52029) bottom corner logo
  • Fixed: (case PA-62) added an IFNULL to the section of the query that filters by “My Plants”

Investigation (Investigation.rpt)

  • Added: (case 59905) time zone adjustment
  • Added: (case 52029) bottom corner logo

Investigation Overview (InvestigationOverview.rpt)

  • Added: (case 59905) time zone adjustment
  • Added: (case 52029) bottom corner logo

Location Analysis Barcodes, Analysis Barcodes, Product Analysis Barcodes, Location Product Analysis Barcodes (Barcodes.rpt)

  • Added: (case 59905) time zone adjustment
  • Added: (case 52029) bottom corner logo

Location And Analysis Barcodes (LocationAndAnalysisBarcodes.rpt)

  • Added: (case 59905) time zone adjustment
  • Added: (case 52029) bottom corner logo

Percent Positive (PercentPositive.rpt)

  • Added: (case 59905) time zone adjustment
  • Added: (case 52029) bottom corner logo

Product Ingredient Report (ProductIngredient.rpt)

  • Added: (case 59905) time zone adjustment
  • Added: (case 52029) bottom corner logo

Product Log (ProductLog.rpt)

  • Added: (case 59905) time zone adjustment
  • Added: (case 52029) bottom corner logo

QA Scorecard (QAScorecard.rpt)

  • Added: (case 59905) time zone adjustment
  • Added: (case 52029) bottom corner logo

Sample (0.66x2.1) (0.66x2.1_Label.rpt)

  • Added: (case PA-51) time zone adjustment

Sample (1.1x2.4_Label.rpt)

  • Added: (case PA-51) time zone adjustment

Sample (1.1x2.4con) (1.1x2.4con_Label.rpt)

  • Added: (case PA-51) time zone adjustment

Sample Barcode (0.66x2.1) (0.66x2.1_LabelWithBarcode.rpt)

  • Added: (case PA-51) time zone adjustment

Sample Barcode (1.1x2.4_LabelWithBarcode.rpt)

  • Added: (case PA-51) time zone adjustment

Sample Barcode (1.1x2.4con) (1.1x2.4con_LabelWithBarcode.rpt)

  • Added: (case PA-51) time zone adjustment

Sample Completion (SampleCompletion.rpt)

  • Added: (case 59905) time zone adjustment
  • Added: (case 52029) bottom corner logo

Samples By Analysis (SamplesByAnalysis.rpt)

  • Added: (case 59695) time zone adjustment
  • Added: (case 52029) bottom corner logo
  • Added: (case 59939) two new parameters & settings to set parameter defaults, allowing for inclusion or exclusion of Location and Product columns. Exclusion allows room for up to 9 options. optionheader and optionvalue subreports are both more dynamic.

Screening (Screening.rpt)

  • Added: (case 59905) time zone adjustment
  • Added: (case 52029) bottom corner logo

Suppliers By Ingredient (IngredientSupplier.rpt)

  • Added: (case 59905) time zone adjustment
  • Added: (case 52029) bottom corner logo

Testing Barcode (0.5x2.4LabelWithBarcode.rpt)

  • Added: (case PA-51) time zone adjustment

User Status (UserStatus.rpt)

  • Added: (case 59905) time zone adjustment
  • Added: (case 52029) bottom corner logo

Verification Information (VerificationInformation.rpt)

  • Added: (case 59905) time zone adjustment
  • Added: (case 52029) bottom corner logo

Work Order (WorkOrder.rpt)

  • Added: (case 59905) time zone adjustment
  • Added: (case 52029) bottom corner logo

Work Order Barcode (0.66x2.1) (0.66x2.1_WOLabelWithBarcode.rpt)

  • Added: (case PA-51) time zone adjustment

Work Order Barcode (1.1x2.4_WOLabelWithBarcode.rpt)

  • Added: (case PA-51) time zone adjustment

Work Order Barcode (1.1x2.4con) (1.1x2.4con_WOLabelWIthBarcode.rpt)

  • Added: (case PA-51) time zone adjustment

Work Orders Summary (WorkOrdersSummary.rpt)

  • Added: (case 59905) time zone adjustment
  • Added: (case 52029) bottom corner logo
  • Fixed: (case 59905) x of y counter formula issues
2/19/2026

General

  • Minor changes to lists to attempt to work around the crash reported in case 54051.
  • Various improvements to the installer file to modernize and fix many issues with dependencies and SSL certs.
  • Changed: when parsing column widths saved in the database, if values outside of a rational range (currently -1500 to 1500) will be ignored, and the default will be used instead. This is important because there was a short period in which random values were being saved as user column width preferences, which could make some lists hard to view/use when those preferences were loaded.
  • Fixed: an issue where column order/width would not correctly save for lists with a lot of columns.
  • Changed: users with very large list controls were finding it very slow to drag and drop items. To improve this behavior without removing precision, the longer the user drags a row in a list in the same direction, the faster the scroll will be.
  • Fixed: there was a report that tooltips were not working inside popups. The tooltips would only show if you alt+tabbed away and back, forcing the main window to be focused instead of the popup. This has been fixed
  • Fixed: several improvements made to screen based tooltips, including piercing through transparent overlapping windows.
  • Added: all top level windows in the application will now respect the windows user's 'dark mode' vs 'light mode' setting with regards to the title bar.
  • Added: the Icon Button and Split Button now properly render if the user has windows high-contrast themes on.

Database

  • Fixed: an issue reported by users where a database error could be thrown if a particularly large list control attempted to save its column order/widths to the columnorder table. Maximum column width increased from 200 to 1024.
  • Fixed: (case 54020) an issue where investigation rules of the form "at least x failures in 24 hours" might result in more than one value being shown if the user entered values contained commas. Now, a less common separator is used to tell where one user value ends and the next begins.
  • Fixed: an issue where pfindapplicable_documents could throw a mysql error if an invalid productid were passed in as an argument. Now it handles this case correctly.
  • Changed: psetsetting is now compatible with NULL values being passed in for the cascade argument since this flag is not really used.
  • Fixed: (case 57019) an issue where pgetsubtree might not work right if a CSV of inputs were passed in.
  • Removed: (case 57497) audit logs no longer log changes to useraccount.passwordsalt or passwordkey because when the database is utf8, we can't put binary data into the log tables.
  • Fixed: (case 58262) a minor adjustment to tuseraccesspre_update trigger to no longer check for firing events when a user keeps a session alive, as it causes unnecessary work.
  • Fixed: minor issue where analysis print quantity overrides referenced the idea of global values which was not implemented.
  • Added: (case 59566) support for alert subscriptions of type 'Sample' with timing 'Expiration Approaching' to send alerts a given number of hours before sample due date occurs.
  • Added: (case 59810) two new permissions for controlling access on the new configure subscription alerts UI.
  • Added: pclonedata now accepts a TIMESTAMP argument that represents the effective moment of cloning. This is useful so that calling code can clone data effectively in the past, depending on schedule needs. This allows re-running a previous scheduled clone and have a WO be back-dated appropriately.
  • Added: (case 59840) pclonedata now forward/back dates all cloned data using the UTC timezone to avoid any errors or time ambiguity that could occur due to daylight savings time changeovers.
  • Added: (case 30668) new permission for the feature of bulk-closing of WOs.

Common Resources

  • Fixed: (case 54879) an issue where entering a new analysis option choice value, then selecting a new option or analysis immediately could lead to a crash.
  • Fixed: (case 55162) an issue where value defaults that 'cascade' through a chain might not show the right values if the user changed a root value that cascades through default calculations.

Analysis

  • Added: store specific analysis fields now display with an "*" in the label.
  • Fixed: an issue where sampling/testing print quantities were not being permissioned to the plant correctly. They now follow the same editability of the In use at plant column.
  • Fixed: a minor issue where a plant code could've been cut off in the "Show X analyses not in use at plant XXXX"
  • Changed: the editability of the "global" checkbox used to be controlled by whether the user had Global level permission to edit analyses. Now, they simply have to have permission to edit the analysis at all plants that analysis is currently in use. This more closely matches the modern view of analysis editability.
  • Fixed: an issue where the "All" option was missing from the analysis dropdown in the "recalculate sample values" popup.
  • Fixed: an issue where the "All" options were not at the top of the analysis/plant/location dropdowns in the recalculate sample values popup.
  • Fixed: an issue where the "Test thresholds" button would not allow the user to choose a value from the dropdown if they were testing a "Choice" type option.

Configuration

  • Fixed: an issue where the user's selection of default analysis on work order types would not be remembered when they left the field.
  • Changed: (case 58984) in the edit users area, previously one could see/edit other users if the admin's plant list overlapped at all with the other user's plant list. Now, the other user's plant list must be a subset of the admin's plant list. This prevents an administrator from being able to modify other administrators who have access to other sites. If the user has the configure users permission at the "Global" level, this restriction is ignored, same as before.
  • Removed: some unused duplicate resources from this extension that were conflicting with the WOs dll.

CrystalReportsExtension

  • Changed: to avoid confusion, the "Favorite" checkbox in the "Choose report to print" popup has been replaced with a star icon. This dialog appears if there is more than one report option when performing a print job. This will make it clearer that the user is simply choosing a favorite, not checking which report to print.

Documents

  • Fixed: an issue where picking an analysis in the analysis dropdown of the associations page would switch back to "All Analyses"

Investigation

  • Fixed: (case 59536) an issue where investigation configuration did not show a "All" option in the dropdown for plants.

Locations

  • Merged: a fix for boxes and text not associated with a location not deleting correctly.
  • Fixed: (case 59688) an issue where the locations screen might crash if the user did not have 'view map' permission at any plants and clicked the edit tags area.
  • Fixed: (case 59688) an issue where the user could click the + add map button if they did not have access to any plants' maps. Additionally, the edit and delete buttons now grey out if no map is selected.

Login

  • Fixed: an issue where users were allowed to proceed with password recovery on accounts that had no recovery email set. The grace period on this has ended, if any account has not had a recovery email set at this point, to recover their password they must talk to support or administration at their own company (depending on security settings).
  • Added: the password recovery email template now has information about the computer/install at which the reset attempt was initiated from to make it more trackable if a malicious third party is locking accounts by beginning a recovery attempt on them.
  • Added: if the security setting "Passwords: minimum count of online breaches to restrict passwords at" is set to "N/A" or a negative value, the user will be warned but not restricted on this system.
  • Changed: the password recovery popup has had several labels reworked to make the password recovery process more obvious.

Master

  • Fixed: an issue where clicking the 'close application' box would prevent change detection messages from appearing for any open screens.
  • Removed: an old "Are you sure you want to close" confirmation popup on application close that had been broken for awhile.
  • Added: if the user has windows dark mode turned on, the application title bar will now show dark.
  • Added: a file with additional manifest settings to be merged into the application manifest. This added explicit compatibility sections, which is supposed to enable some windows features.

Product

  • Fixed: (case 54115) an issue where products/ingredients hidden based on the current filters might keep the system from warning about duplicate items. Also, now the popup will say whether the duplicate is a product or an ingredient.
  • Fixed: (case 54115) top-level products and ingredients now collide on duplicate name.
  • Changed: duplicate products and/or ingredients now only alert the user to the duplicate if one of the records has been modified.
  • Fixed: (case 59042) an issue where copying a product tree before opening the Specifications tab would cause associated specifications to not be copied.
  • Fixed: a possible crash if the user deleted a product with specifications without opening the Specifications tab first, then navigated to that tab.

Reports

Analyses By Activity (AnalysesByActivity.rpt)

  • Fixed: (case 58544) SQL: analysiscatopt parameter name corrected to analysiscat

Control Chart (ControlChart.rpt)

  • Fixed: (case 54248) report now filters out any empty strings that find their way into the numeric analysis options it handles
  • Added: (case 56491) a new parameter that can exclude chart datapoints more than standard deviations from the center. The excluded points are not excluded from tests.

Failed Results (FailedResults.rpt)

  • Added: (case 57986) an option to show "my plants" to the plant parameter

Sample (1.1x2.4_Label.rpt)

  • Added: (case 54938) a new setting to control which date is displayed
  • Changed: (case 54938) adjusted date display setting, and report now respects the date format setting

Sample (0.66x2.1) (0.66x2.1_Label.rpt)

  • Added: (case 54938) date display setting

Sample (1.1x2.4con) (1.1x2.4con_Label.rpt)

  • Added: (case 54938) date display setting, and report now respects the date format setting

Samples By Analysis (SamplesByAnalysis.rpt)

  • Added: (case 55253) a new setting to include lot. Lot replaces the 7th option when 'True'

Work Order Copy Barcode (Label) (1.1x2.4_WOCopyBarcode.rpt)

  • Changed: (case 54132) conditional size formatting to the barcode based on barcode length

Work Order Copy Barcode (1.1x2.4con) (1.1x2.4con_WOCopyBarcode.rpt)

  • Changed: (case 54132) conditional size formatting to the barcode based on barcode length

Sampling

  • Fixed: (case 58477) an crash that could occur when loading a saved search created in an outside system that contains filters the screen does not know about.
  • Fixed: (case 58647) an issue where searching by schedule name was potentially returning more results than desired.

Updater

  • Added: the Updater.exe is now built with the same manifest settings as ITrack.exe, namely assembly identity and explicit operating system compatibilities.
  • Added: (case 59196) the updater now detects the current windows operating system version as part of updating to detect available windows features.

Work Orders

  • Added: the plant specific "In use" column is now denoted with a * to show that its plant specific.
  • Added: support for passing a new argument to pclonedata for effective data clone time. It defaults to the current date/time.
2/19/2026

General

  • Changed: all application files are now versioned, which allows keeping track of whether any given files were loaded that were built for the wrong application version.
  • Added: the help->about box now shows the database version as well as the product version.
  • Added: the help->about box now shows the product version each file in the application were designed for and ones that don't match the product version are shown in red with an attention icon.
  • Changed: the Help->About dialog no longer looks for a file called ITrack.exe and instead reads the product version from the main module itself in memory, in case the application ever uses a renamed entry point file.
  • Changed: if the user closes the application or it fails to load before its visible, the application will no longer overwrite the 'last' size/position of the application in settings.
  • Added: during loading extension modules, the product version of each file is now checked. If the major version of a loaded module does not match the master module, it will be put in a popup for the user to alert them to this (potentially) erroneous state.
  • Added: so that users can avoid seeing this popup on every launch, the popup has a "don't show this message in the future" checkbox. If checked, all those specific files at those versions will be remembered for that user. If any new files (or existing files at new versions) are seen later, they will be shown to the user again. The user can choose to continue loading all modules (previous behavior) despite the version mismatch, load only those modules whose version matches (skip bad files), or close the application.

Database

  • Changed: (case 51314) investigations should no longer trigger on values that are blank, either explicitly entered by the user or implicitly created.
  • Changed: (case 51314) alert subscriptions that 'require acceptable' no longer trigger on values that are blank, either explicitly entered by the user or implicitly created.

Analysis Management

  • Changed: the list column size/order is now stored differently for the analysis management screen from the recipe management screen. Before, resizing or hiding columns on one affected the other.
  • Fixed: showing/hiding columns is now remembered when the user closes and reopens the screen.
  • Changed: recipe columns no longer show as 'hidden' columns that can be unhidden for environmental/Q&A analyses and vice versa.
  • Changed: as per user request, minimum automatic resize for the analysis name column has been made 50% larger.
  • Fixed: an issue where opening both the analysis management screen and the recipe management screen at the same time might cause column order to not save correctly.
  • Changed: if the selected option is not 'Choice' the 'required option' column in the thresholds page cannot be unhidden.

Home

  • Performance: to show information on the home tabs, sample values are no longer loaded. This speeds up load operations, especially at plants with very large work orders.

Products

  • Changed: the list column size/order is now stored differently for the analysis management screen from the recipe management screen. Before, resizing or hiding columns on one affected the other.
  • Fixed: showing/hiding columns is now remembered when the user closes and reopens the screen.
  • Changed: recipe columns no longer show as 'hidden' columns that can be unhidden for environmental/Q&A analyses and vice versa.

Reports

Analyses By Activity (AnalysesByActivity.rpt)

  • Added: (case 51616) a new report that lists analyses that were last sampled on or before a specified cutoff date

Work Orders Summary (WorkOrdersSummary.rpt)

  • Added (case 51715): a new report to show an overview of work orders, similar to the Verification List page

Work Orders

  • Fixed: an issue where saving values that caused more than one follow up (investigation) document would not correctly display all document ids.
  • Added: double-clicking items in the scheduled WOs list now opens that WO's detail on the WO screen.
  • Changed: double-clicking items in the template/favorite WOs list now opens that WO's detail on the WO screen instead of scheduling that WO. This will make it easier to review document details.
2/19/2026

General

  • Fixed: the about box could show an error if the 'credits' url in the host.ini file was blank. This could lead to bad behavior in particularly corrupted or empty ini files. Now the user will be taken to the default URL.
  • Fixed: a possible crash that could occur in a list control if going to the bottom of the current page of results if they didn't fill the screen.
  • Fixed: a crash when Resizing a column outside of the boundary of the column count.
  • Fixed: an issue where release builds were linking against mysql 6.1.5 instead of 6.1.11
  • Fixed: an issue where blank Time-only list control cells would be automatically turned into 'current time'.
  • Fixed: another issue where midnight "12:00 AM" would not be handled correctly in time-only list control cells.
  • Fixed: (case 51470) an issue where popups were being restricted to the primary monitor instead of the monitor of the window that launched them. Now they should be centered by default over the window that created them.
  • Fixed: (case 51470) an issue where popups that 'remember' their last position could not restore a location that was on a secondary monitor correctly.
  • Added: Column Tree Controls now support column header tool tips.
  • Fixed: (case 51708) an issue where dropdowns in a list control on windows 11 might not look quite right. In addition, dropdowns in the first item might flicker unnecessarily.
  • Fixed: a rare issue where, when a list edit/dropdown/date picker/etc disappears, the list cell behind it might not draw correctly.
  • Fixed: date/time controls in list controls would 'revert' their input when the user hit escape, but would not hide correctly. Now the date control will be hidden correctly.
  • Added: the 'filter' box in the configure global settings popup now uses a timer to wait for the user to stop typing before searching.

Database

  • Fixed: some databases failed to run an update from version 2.1 because they had negative values in the work order type table. These values have been set to 0 and the update reapplied.
  • Updated: right-click graphing template should no longer encounter a JS error if loading the google charts library takes too long.
  • Fixed: several queries that failed to run during 3.8 for some systems have been re-released and updated.
  • Fixed: an issue where the nightly event that extends schedules into the future would not correctly handle the expiration of a schedule (when set).
  • Fixed: the stored procedure that extends a schedule into the future now aborts if the start date of a schedule is invalid, this should avoid invalid rows being created.
  • Added: (case 50599) support for work order types to control whether location descriptions are shown on WOs and sampling history.
  • Fixed: an issue where duplicate import commands were allowed.
  • Added: (case 50708) many new features to automatic follow up retests on investigations.
  • Added: (case 50709) support for choosing a severity class on plant-specific investigation trigger rules.
  • Added: (case 50709) automatic investigation triggering now supports severity classes for restricting triggering sites as well as population considered for general electric rule computation.
  • Added: drawmap.active and drawmap.useforinvestigationexpansion. Active will support hiding old versions of maps, and 'use for investigation expansion' will allow toggling whether specific maps will be considered when computing 'nearby locations' when expanding investigations to nearby sites.
  • Fixed: (case 51013) an issue where cloned WOs that also cloned values might cause the 'value modified' pencil icon to appear erroneously when blank values initially got filled out. Now, the date filled out will not be set on blank values that get cloned.
  • Added: (case 51244) fexpandlocation now ignores all location(s) on the same map(s) that have a different severity class assigned. This means retest locations will be restricted to nearby locations that share a severity class with the original sample location.

Crystal Reports

  • Added: (case 51309) a popup dialog that appears during printing if the chosen printer does not seem to be valid. The user is told what error windows returned and are presented with the list of valid printers to choose between. The user is allowed to 'remember' this selection for future prints. This is important because previously, if the user had an invalid printer name saved as a default, print jobs might fail, but no error message would be shown.

Data Management

  • Fixed: crash when going to a page of results other than the first.

Analysis Management

  • Fixed: (case 48997) an issue where saving a newly created Rule on an option, then switch analyses and switching back might lead to a situation where the tags on the rule would appear duplicated.
  • Fixed: (case 48998) an issue where the active checkbox on option rules would not save or load the current value correctly. This lead to all rules always being active, and the user had no way of deactivating them except deleting them. Now, this column will correctly reflect whether it is active.
  • Added: (case 48962) a resizer bar for the scheduled analysis plans page for giving more or less room to the schedule management and location scheduling tabs.
  • Removed: (case 48962) A copy button that was part of the design but was never implemented.

Common Resources

  • Added: (case 50599) support for work order types to control whether location descriptions are shown on WOs and sampling history.

Configuration

  • Added: (case 50599) support for configuring a new field on work order types that controls whether location descriptions are shown.

Graphing

  • Added: some extra code to the right-click graphing template that will keep waiting to render the chart until the google charts library finishes loading.

Home

  • Fixed an issue where the auto-refresh boolean was not initialized, which could cause home pages' auto-refresh behavior to be slightly random.

Investigations

  • Added: (case 50708) support for several new features on automatic follow up retests on investigations.
  • Added: (case 50709) when an investigation rule is selected, there is now a severity class dropdown, which supports limiting the location that triggers investigations to just ones that have that severity class.
  • Added: on investigation triggers, locations and severity classes are mutually exclusive, and UI should now reflect that.
  • Added: support for severity class in automatic investigation descriptions.
  • Fixed: an issue where using the pagination controls might not stop you if you got to the last page.

Locations

  • Fixed: an issue where the product proximities and process zones were loaded after locations, causing the location tree to sometimes not have the correct names in the location tree for those columns.
  • Changed: description edit now has line-wrap on.
  • Added: a small text prompt next to the add image box that tells the user that double-clicking is now required to select background objects such as images.
  • Added: the ability to toggle the visibility of background objects on the map, as well as hide locations that have no samples on the visualization tab, and hide locations that aren't currently being animated on the visualization tab.
  • Fixed: a possible crash on the visualization tab if the user had grouped results and then toggled the "hide results with no locations" checkbox.
  • Added: selection on the visualization tab will no longer be lost if the user changes group by or toggles hiding results with no locations.
  • Changed: animation on the visualization tab now selects the next result in the next group if the user started with a result selected. If the user starts animation with a group selected, it will continue to select each group in turn.
  • Added: support for showing/hiding locations based on the user's choice of 'show locations with no results' and 'show only focused animation location'.
  • Changed: if the user cannot add background items, the 'tip' text in that area is now hidden; and the other buttons are now moved into that area.
  • Changed: when the add background images controls are hidden, the other controls are scrolled into their place.
  • Changed: the show/hide options that were related to the visualization page have been moved from the main "Show Map Items…" dropdown into a new dropdown on the visualization page.
  • Added: the visualization page is now a scrollable page since there can be a lot of controls on this page.
  • Changed: the 'color results based on selection only' and 'hide results with no location' options are in the visualization options dropdown.

Image Handling

  • Added: Crop function for cropping images to a given client rectangle.
  • Added: ZoomInArea function for cropping to a zoomed in zone and scaling it to a given bounding rectangle.
  • Fixed: ScaleTo did not update the dimensions of the image after scaling it.
  • Changed: ScaleTo no longer performs any operation if the sizing did not change.

Draw View

  • Added: images now use the OpenIL image library to interpolate/scale images when the user stretches or zooms. This causes the images to be much easier to view when zoomed out.
  • Added: rendered images are now cropped to the currently visible viewport. This reduces total image drawing, and should hopefully lower memory consumption and speed up the screen.
  • Changed: by default, single clicks will no longer select 'background objects' such as an image. Double-click can now be used to select these items which are less commonly chosen.
  • Changed: if the user clicks and that click could either be the currently selected item (or its tracking box) or another object, it will always prefer the currently selected item. This should make dragging items easier once they've been selected.
  • Fixed: an annoying issue where attempting to resize or move objects via the tracking box would sometimes deselect the current object instead of tracking the object.
  • Added: draw objects now have a shown flag that can be toggled.
  • Fixed: a minor issue where invalidating a rectangular object, sometimes a pixel of data might not get redrawn correctly on the edge.
  • Added: support for suppressing background objects.

Login

  • Fixed: an issue where the login dialog would not correctly follow the main window to other screens.

Reports

Failed Results (FailedResults.rpt)

  • Fixed: (case 51159) Include Invalid parameter to filter the correct thing.

Testing Barcode (0.5x2.4LabelWithBarcode.rpt)

  • Added: (case 48818) settings for adding scanner wedge preamble & postable to barcodes
  • Changed: (case 50500) updated new preamble/postamble setting to plant level

Sample Barcode (0.66x2.1) (0.66x2.1_LabelWithBarcode.rpt)

  • Added: (case 48818) settings for adding scanner wedge preamble & postable to barcodes
  • Changed: (case 50500) updated new preamble/postamble setting to plant level

Location Analysis Label (0.66x2.1) (0.66x2.1_LALabel.rpt)

  • Added: (case 48818) settings for adding scanner wedge preamble & postable to barcodes
  • Changed: (case 50500) updated new preamble/postamble setting to plant level

Work Order Copy Barcode (0.66x2.1) (0.66x2.1_WOCopyBarcode.rpt)

  • Added: (case 48818) settings for adding scanner wedge preamble & postable to barcodes
  • Changed: (case 50500) updated new preamble/postamble setting to plant level

Work Order Barcode (0.66x2.1) (0.66x2.1_WOLabelWithBarcode.rpt)

  • Added: (case 48818) settings for adding scanner wedge preamble & postable to barcodes
  • Changed: (case 50500) updated new preamble/postamble setting to plant level

Sample Barcode (1.1x2.4_LabelWithBarcode.rpt)

  • Added: (case 48818) settings for adding scanner wedge preamble & postable to barcodes
  • Changed: (case 50500) updated new preamble/postamble setting to plant level

Work Order Copy Barcode (Label) (1.1x2.4_WOCopyBarcode.rpt)

  • Added: (case 48818) settings for adding scanner wedge preamble & postable to barcodes
  • Changed: (case 50500) updated new preamble/postamble setting to plant level

Work Order Barcode (1.1x2.4_WOLabelWithBarcode.rpt)

  • Added: (case 48818) settings for adding scanner wedge preamble & postable to barcodes
  • Changed: (case 50500) updated new preamble/postamble setting to plant level

Sample Barcode (1.1x2.4con) (1.1x2.4con_LabelWithBarcode.rpt)

  • Added: (case 48818) settings for adding scanner wedge preamble & postable to barcodes
  • Changed: (case 50500) updated new preamble/postamble setting to plant level

Location Analysis Label (1.1x2.4con) (1.1x2.4con_LALabel.rpt)

  • Added: (case 48818) settings for adding scanner wedge preamble & postable to barcodes
  • Changed: (case 50500) updated new preamble/postamble setting to plant level

Work Order Copy Barcode (1.1x2.4con) (1.1x2.4con_WOCopyBarcode.rpt)

  • Added: (case 48818) settings for adding scanner wedge preamble & postable to barcodes
  • Changed: (case 50500) updated new preamble/postamble setting to plant level

Work Order Barcode (1.1x2.4con) (1.1x2.4con_WOLabelWIthBarcode.rpt)

  • Added: (case 48818) settings for adding scanner wedge preamble & postable to barcodes
  • Changed: (case 50500) updated new preamble/postamble setting to plant level

Location Analysis Barcodes, Analysis Barcodes, Product Analysis Barcodes, Location Product Analysis Barcodes (Barcodes.rpt)

  • Added: (case 48818) settings for adding scanner wedge preamble & postable to barcodes
  • Changed: (case 50500) updated new preamble/postamble setting to plant level

Location Analysis Label (LALabel.rpt)

  • Added: (case 48818) settings for adding scanner wedge preamble & postable to barcodes
  • Changed: (case 50500) updated new preamble/postamble setting to plant level

Location And Analysis Barcodes (LocationAndAnalysisBarcodes.rpt)

  • Added: (case 48818) settings for adding scanner wedge preamble & postable to barcodes
  • Changed: (case 50500) updated new preamble/postamble setting to plant level

Work Order (WorkOrder.rpt)

  • Added: (case 48818) settings for adding scanner wedge preamble & postable to barcodes
  • Changed: (case 50500) updated new preamble/postamble setting to plant level

Sampling

  • Added: show/hide settings for location map are now stored separately from the same preferences on the location screen, since visualization preferences on these two screens have different purposes.
  • Fixed: an issue where the product batch dropdown didn't properly respect the chosen plant(s) for what was available in the dropdown like the other dropdowns.

Work Orders

  • Fixed: tab order issue with the verification due date.
  • Added: support for copy/paste in all date or date/time controls.
  • Fixed: an issue where mass-setting samples to cancelled could lead to lockups on large work orders.
  • Added: cancelling samples now locks them similar to closing them. In addition, closing a WO will no longer mark cancelled samples as Closed.
  • Added: historically, if an option was inactive but had already been filled out, it would be visible. This is now true again. An option that is inactive but is filled out will be shown, but be read-only.
  • Fixed: an issue where saving values that caused more than one follow up (investigation) document would not correctly display all document ids.
2/19/2026

Shared

  • Performance: removed a lot of the 'guard rails' on list control operations. This was taking as much as 40% of the time to load a bunch of stuff onto Presage' sampling history.
  • Performance: skipping some invalidation of the list control when redrawing is locked. This speeds up intensive load operations somewhat.
  • Performance: optimized several high-traffic areas in the list control.
  • Added: Property Sheet now has support for icons/bitmaps in property page tabs
  • Added: if the user uses a hotkey to activate a property page, it should now correctly set focus into that page. This only happened in some scenarios before.
  • Fixed: depending on where the user's focus was, hitting a hotkey (alt + ) to activate a property page or button might not work correctly. This would occur in situations with 'nested' property sheets, when the user's focus was in a child sheet. Now those hotkeys should 'float up' to be handled by parent sheets and forms.

Database

  • Fixed: (case 47532) an issue where fgetattachment_data would not work for attachments larger than 16 MiB. Now it should work on files up to 4 GiB.
  • Added: an index to help improve the speed of in import as a vanilla index.
  • Added: a unique index on option name was missing on many customer databases.
  • Fixed: (case 47667) an issue where analysisoptionvalue.filledout was not correctly set on historical option values due to a mistake in an update trigger. The trigger has been corrected, and a set of queries run that should correct historical data.
  • Fixed: (case 48138) analysis option restriction rules where more than one tag had to be Present were incorrectly firing if at least one of the tags were present, but not all of them. Now, all the required tags must be present for the rule to be triggered.
  • Fixed: (case 29098) blank option values (not filled out) are now treated as 'acceptable' instead of comparing it to user thresholds. Previously, numeric values that were not yet filled out would be considered '0' and could be unacceptable or out of bounds due to that.
  • Fixed: an issue with fgetvalue_acceptability not returning 'Allowed' when no rules were matched.
  • Added: (case 48703) when a WO is cloned, if any samples on the template were from a 'scheduled sample plan', the copied samples will randomize their locations on the same scheduled sample plan. This means that each sample will pick a random location in the list of required locations that has not yet been sampled in the current schedule period (day/week/month/etc). If all locations have been sampled in the current period, locations will be randomized across the entire sample plan. However, the system will avoid randomly choosing the same location more than once on the same WO.
  • Added: two new permissions for whether a user can view or edit plant maps. These permissions have granted new granularity to what used to be controlled by the configure locations permission. Both of these permissions default to whether a user was allowed to open the location screen, as it historically had modification access.

Common Resources

  • Fixed a column only allowing 50 characters even though the database has been expanded to allow 100.
  • Fixed: a crash that could occur if you close the settings page with nothing selected.
  • Added: calling Set Readonly on a EditTagsPage before it has been initialized will now be 'remembered' until the page is initialized.

Analysis

  • Fixed: an issue where the location tree in the analysis scheduling page would show locations at all plants instead of the currently selected plant.
  • Fixed: an issue where viewing the analysis scheduling page with 'show expired schedules' unchecked would still show expired schedules.
  • Fixed: a possible crash that could occur when deleting a schedule if there were scheduled locations for that schedule at more than one plant.
  • Fixed: an issue where the 'location count' in the scheduled analysis list might show a count at all plants instead of just the current one.
  • Added: the 'schedule management' and 'scheduled analyses' pages have been combined into one for easier schedule management. This tab is now called 'Scheduled Analysis Plans'.

Crystal Reports Extension

  • Changed: (Case 48271) the printer name dropdown in the advanced print dialog is wider now to facilitate very long printer names.

Data Management

  • Fixed: an issue where, after doing an import, the user might be presented with a negative number of unchanged rows if the number of new/updated rows exceed the number of rows in the input file.
  • Fixed: an issue where doing an import against a table that had a column name or column comment with the reserved word 'constraint' would cause the import to fail.

Investigation

  • Fixed: an issue where sending investigations to the location map would not work correctly

Locations

  • Fixed: (case 48439) an issue where the attachments buttons were not working.
  • Changed: the location map has been moved into a property page on that screen so that it can be more easily embedded in other screens.
  • Added: flag ALLOW DRAW, if absent, the ability to enter RECT or TEXT mode are suppressed and drawing new objects is removed.
  • Added: flag ALLOW MOVE VIEW, if absent, the ability to enter MOVE or pan the window around is suppressed.
  • Added: flag ALLOW RESIZE, if absent, the ability drag objects around or resize them is suppressed.
  • Changed: the middle mouse entered a standard 'pan' view mode before, but it was flakey, so it has been suppressed. Now, while the user depresses the middle mouse, they temporarily enter the 'move/pan' mode and can drag the window, no matter which mode they're in.
  • Fixed: an issue where right clicking and moving the mouse while in zoom mode might break the ability to zoom out with right click.
  • Fixed: an issue where the zoom cursor was not displaying correctly.
  • Changed: if the draw view is in readonly mode, the 'tracker' boxes around an object will no longer display resize boxes on the corners.
  • Added: if the draw view is in readonly mode, the pop up edit box for clicking into a text object will no longer be editable.
  • Fixed: an issue where the zoom cursor was not displaying correctly.
  • Fixed: an issue where selecting no location object was not clearing the location and tag detail information.
  • Added: tab icons to the various tabs on the screen.
  • Added: support for being in a 'readonly' mode in the location screen. This allows viewing locations without being able to edit location information or drawn objects.
  • Fixed: typing to filter the location tree would remove the user's selection. Now it persist between refreshes.
  • Fixed: a potential crash when visiting the page with no plant selected.
  • Fixed: an issue where sending samples from multiple plants to the visualization page might not correctly load up location names
  • Added: when the user clicks on a sample in the visualization page, the correct plant will now be selected for that sample. This is important for multi-plant result sets.
  • Added: when the user clicks on a sample in the visualization page, the most recent map at that plant that contains the location will automatically be selected.
  • Added: if plant is changed and no default map is set in the user preferences, the most recent map at that plant is automatically selected.
  • Fixed: an issue where the wrong initial plant might be selected.
  • Changed: the maximum animation delay has been reduced from 10s to 2.5s.
  • Changed: the label on the animation speed slider has been changed to animation delay to make its use more accurate.
  • Added: if the user deselects all items on the visualization page, any selected locations on the map will be deselected.
  • Added: the location screen now looks at two new permissions: "can view location maps" and "can edit location maps". The list of plans on the location management screen is now based on what plants the user can view location maps at instead of what plants they could edit locations at. When a plant is selected, if the user does not have map edit permission, all draw map controls are locked down, but it can be viewed and visualization can be done. If the user doesn't have configure locations permission, the location editing area will be readonly.
  • Changed: the copy locations button is now usable if locations at a plant are readonly to facilitate copying from a plant that is read only.
  • Changed: the copy/delete/cut locations buttons now grey out if nothing is selected.
  • Fixed: several crashes related to load order.
  • Fixed: issues with no plant or no map being selected if items were sent to visualize as the screen was opened.
  • Changed: minimum animation delay on the visualization tab has been decreased to 100 ms, and each 'tick' is now a quarter second to allow finer control.
  • Fixed: an issue where switching maps could cause locations shared between two maps to be deleted from other maps.
  • Changed: the 'toolbar' popup now has a maximum and minimum size so that the user cannot accidentally make the box very large by changing settings.
  • Changed: animation speed bar changed to allow up to 5s delay between steps (up from 2.5s) and each 'pip' is now back to 1/2s instead of 1/4s.

Report Viewer

  • Fixed: an issue where the parameter list would annoyingly scroll to the side when the user clicked in a value field if there are enough parameters for a horizontal scroll bar.

Reports

Analysis, Users/Groups, Investigation Trigger, Product) Change Log (ChangeLog.rpt)

  • Added: (case 47874) analysisoptionrule and analysisoptionruletag logging to the Analysis mode of the change log report. Tag is displayed in the choice/threshold column when present.
  • Changed: (case 47875) major query revamp for improved performance. Fewer conditional JOINs, CASE, and conditional WHERE clauses; more UNION ALL.
  • Fixed: (case 48718) a query error causing the Category: Analysis parameter to be ignored in some report modes, including Analysis Change Log

Location Analysis Label (LALabel.rpt)

  • Changed: (case 47200) made barcode respect the align barcode setting

Sampling

  • Added: when results are being loaded, each referenced plant will have all its locations loaded to prevent queries being run for every result's location.
  • Changed: (case 48456, case 46289) the 'rule' test queries are now run in batches of 1500 because MySQL can throw errors if there are lots of UNIONed queries in one request for some reason.
  • Fixed: several speed improvements to sampling history loading, particularly when building large numbers of queries to test option visibility rules.
  • Performance: (case 48452) made several passes at sampling history search to improve load speed. These changes cut out as much as 50% or more of load times.
  • Performance: optimized sample history searches, gaining as much as 50% of load time on large searches.
  • Changed: column addition/removal now happens before item loading for speed.
  • Fixed: an issue where unchecking 'show options and values' did not correctly hide labels in situations where there was more than one analysis type loaded.
  • Added: a new icon for the sampling history screen.
  • Fixed: issues where the saved search page was cleared and re-filled on every search, slowing down searches slightly and causing unnecessary flickering.
  • Added: user's selection in the saved search page will now persist between refreshes, and the first saved search will automatically be selected on load. This helps keyboard navigation, as the user can arrow to the desired quick search and hit enter to perform it.
  • Moved: Sample Detail and Graphing have been moved from children of the sample history page to top-level tabs, giving them more space when active.
  • Renamed: Sample Detail to Search Detail, and added a hotkey to the "D" for quick navigation back and forth.
  • Added: when a search is performed, the user is automatically moved to the sample detail page, and their focus is put into the first item in the list, so they can quickly navigate with the arrow keys and hit enter to open the sample in question.
  • Fixed: several issues where tab-order of controls was out of order, causing complication when using the keyboard to navigate the page.
  • Changed: the 'search criterion' has been moved below the quick search page.
  • Added: the 'drag bar' between quick search and criterion now remembers its last position as a user preference.
  • Added: accelerator hotkeys to the Quick Search (alt + Q) and Search Criterion (alt + C) tabs to make keyboard navigation easier. Also added a hotkey to the Sample Search tab as well (alt + S), which makes coming back from the Search Details page to perform a new search easier with the keyboard.
  • Added: the location map page to the screen. This shows the same location map as the locations screen, but in readonly mode.
  • Changed: the visualization page is now first on the location map screen.
  • Fixed: a potential crash related to the location map screen.
  • Added: after a saved search is executed, if the location tree tab is visible, the visualization tab will be made active.
  • Added: support for automatically displaying all current sampling results on the visualization tab.
  • Removed: the clear and search samples buttons are now hidden in the location map.
  • Added: clearing search now correctly clears search results and items on the location map.
  • Added: clear search button to the search results page. Clicking this will take the user back to the perform search page.
  • Added: alt + c accelerator hotkey to clear current search results, for easier keyboard navigation.
  • Added: now, every time a search is performed, focus is put into the search results list. Previously, the user's focus might stay on another control, making it hard to navigate search results with keyboard only. Now, the user should be able to successfully perform a search, select items, clear a search, and perform another one with the keyboard only.
  • Fixed: an issue where restoring a saved search filter would not be able to select the correct analyses if "show testing analyses" or "show production analyses" were unchecked. Now, when a sample filter is loaded, if a production analysis is involved, "show production analyses" checkbox is checked; if a testing analysis is involved, "show testing analyses" checkbox will be checked.
  • Fixed: resizing issues with the 'previous/next page' area underneath the sample list. This should now resize to not overlap any other controls. Also, if the user's resolution is small enough that the next/prev buttons cannot fit with the labels, the labels are hidden.
  • Fixed: an issue where clearing a search when the user was on the second page of results would not correctly hide the prev/next page controls until after the next search was performed.
  • Fixed: an issue where adding a new sample via the sampling history UI, then immediately performing a new search could cause a crash.
  • Fixed: an issue where the 'copy locations' button would still be visible on the configure locations area even when the screen was embedded in 'view only' mode.
  • Fixed: timing with how items were loaded onto the map, which could lead to item selection or color issues.
  • Fixed: an issue where location colors could persist after a new search had been performed or search results were cleared.
  • Added: every time a search is performed, the next time the user goes to the location map screen, focus will automatically be set to the visualization page. This makes keyboard-only navigation much easier, as the user can immediately arrow through the results upon arrival.
  • Changed: the animate button on the location visualization screen is now a 'push style' checkbox. This means it is more obvious that the button is 'depressed' while animating.
  • Added: 'show items with locations only' in the location visualization screen. Checking this box hides all sample values that are not associated with any locations to make the list trimmer and easier to navigate.
  • Fixed: a crash related to clearing results from the location map.
  • Changed: visualization page now tries harder to ensure the animate button and animation delay slider are visible on smaller resolution screens.
  • Fixed: a crash related to doing a second search with no results after sending results to the map.
  • Added: if the user hits 'save' to modify any samples on the sampling history screen, the items on the location map are refreshed to reflect the new location/value/acceptabilities.
  • Fixed: an issue where, if the user swapped between maps while animating results, location colors would not refresh correctly.
  • Fixed: an issue where performing a search might clear out the search criterion before displaying results.
  • Fixed: a crash that could occur if the user's focus was in a 'new' added sample (unsaved) then a new search is performed.
  • Added: as the user clicks on different locations in the location visualization page (or through animation) the desired location is now centered in the view, if possible.

Work Orders

  • Fixed: (case 47881) an issue where the time of day column incorrectly showed 12:00 AM on all previously saved WO schedules. This could cause incorrect saving if the user made any changes to other fields on the row.
  • Fixed: an issue where manually adding samples to a WO with a analysis/location combinations that were part of a scheduled sample plan, the sample would not 'count' towards that plan. Now if that location has not been sampled in the current period, it will correctly mark the location as tested in the schedule.
  • Fixed: tab order issue with the verification due date.
  • Added: support for copy/paste in all date or date/time controls.
2/19/2026

Requirements

  • MySQL: at least 5.7.15
  • Windows: Vista or later
  • Resolution: 1280 x 1024 or higher
  • Crystal Reports: 12 X2
  • ODBC: MySQL ODBC 5.1 or 5.3
  • ports for auto-updater
  • permissions to install

Database

  • Added: fgetallancestorid, which is like fgetancestor_id, but returns all ancestor ids.
  • Fixed: (case 46621) an issue where 'choice' options would calculate as out of bounds if the value was blank.
  • Fixed: (case 47425) if there were draw map objects tied to the wrong plant, they have been corrected. This was caused by a bug in the location screen that is resolved in this version.

Attachment Views

  • Fixed: an issue where resizing the application or an attachment view would not resize the currently visible attachment within it.
  • Added: (case 46397) all attachment pages now automatically select the first attachment in the list for display. This matches the behavior that already existed in some attachment 'popups' like on the document screens.

Analysis Management

  • Fixed: a misspelling of a menu option.

CommonResources

  • Fixed: (case 46049) an issue where performing 'clone analysis' to an analysis with 'rules' applied to the options would 'move' those rules to the new analysis instead of copying them.

Investigation

  • Fixed: (case 47331) an issue where the investigation rules page would not show the correct page size on the previous/next page buttons. Also, these buttons are now correctly centered on the screen.

Location

  • Fixed: (case 47425) an issue where the user could get a database error if they created draw objects for one plant tied to a similarly named map at another plant.
  • Fixed: (case 47424) an issue where drawing a new box could create the object under the wrong map if there were similarly named maps at more than one plant and the user switched between those plants.
  • Fixed: (case 47442) an issue where creating a location by drawing a new box wouldn't tie the new location to the new box on save, causing them to be unrelated.

Work Orders

  • Changed: (case 46066) 'calculate once' style defaults now continue calculating their defaults until a 'valid' (not blank) result is returned. This resolves issues where the initial calculation returned an invalid value because dependent fields had not yet been filled out.

Reports

Certificate Of Analysis (CertificateOfAnalysis.rpt)

  • Added: (case 45889) a parameter to show the plant address in the header, with the sample, both, or neither. Running the report for all plants overrides showing address in the header.
  • Fixed: (case 45889) updated plant logo query to allow the report to display results even if no plants have logos
  • Added: (case 44212) the ability to show/hide verification information in the basic information subreport per a new parameter/setting

Failed Results (FailedResults.rpt)

  • Added: (case 47175) new parameters for including/excluding marginal results, including/excluding invalid results, and specifying which date field to filter by and display.
  • Changed: (case 47175) improved logo fetch query

OSHA Forms 300 & 300A (equivalent) (OSHA300300A.rpt)

  • Added: (case 41152) OSHA equivalent forms, including a mode which automatically fills in data from analysis option values, and a blank mode. These will appear as two separate report entries.

Sample Barcode (0.66x2.1) (0.66x2.1_LabelWithBarcode.rpt)

  • Fixed: (case 46372) date and datetime results when selected as the printed option via setting
  • Changed: (case 46372) even though a maximum of one option will print, the report can now understand a list provided by the setting so differently named options can be printed for samples from different analyses

Sample Barcode (1.1x2.4_LabelWithBarcode.rpt)

  • Fixed: (case 46372) date and datetime results when selected as the printed option via setting
  • Changed: (case 46372) even though a maximum of one option will print, the report can now understand a list provided by the setting so differently named options can be printed for samples from different analyses

Sample Barcode (1.1x2.4con) (1.1x2.4con_LabelWithBarcode.rpt)

  • Fixed: (case 46372) date and datetime results when selected as the printed option via setting
  • Changed: (case 46372) even though a maximum of one option will print, the report can now understand a list provided by the setting so differently named options can be printed for samples from different analyses

SampleCompletion.rpt

  • Changed: (case 39494) fgetsetting to fchecksetting where required for dynamic report functionality

User Status (UserStatus.rpt)

  • Changed: (case 44507) expanded parameter functionality, cleared saved data, and made minor aesthetic improvements
  • Changed: (case 44507) report filename, updated from Rough Draft
Newer Older