2.0.0.509 changes
9/18/26
Fed Submit (Desktop) / RMS Import
Bug Fixes
- Spillman XML without signal files now appears in the WPF import dialog - Release 508 added optional no-`.sig` discovery to background readiness and the legacy selection dialog but missed the separate WPF selection dialog. As a result, **Create from RMS** could become available while opening it reported **No demographics ready for import**. The WPF dialog now uses the same XML candidate selector as the other two entry points (`PopupXMLDemographicsImportFormWPF.xaml.vb`, `SpillmanXmlImportCandidates.vb`).
Deployment Notes
- Updated application binaries required - Install the corrected release; changing the environment-variable value alone does not correct the 508 WPF discovery issue.
- Existing opt-in remains unchanged - Only `FED_SUBMIT_SPILLMAN_XML_NO_SIG=1` enables XML discovery without `.sig` files. When unset or disabled, the existing signal-file requirement remains in effect. Restart Fed Submit after changing its environment; installation does not enable the option automatically.
- Vendor publication requirement still applies - Enable this mode only for the intended XML-import workstation/folder when the vendor atomically publishes complete XML files. Existing parsing, acknowledgments, archival, and age-based cleanup remain unchanged. Separate Spillman NIST/EFT and socket integrations are unaffected.
Documentation / Regression Coverage
- Updated `Spillman-XML-No-Signal-Import.md` with the 508 WPF limitation and verification steps covering background readiness, WPF and legacy selection, import, acknowledgment, and archival.
- Added source-wiring regression guards checking that all three discovery entry points use the shared selector rather than a signal-only search. These checks do not execute the UI or replace end-to-end vendor import acceptance testing.
2.0.0.508 changes
9/18/26
Fed Submit (Desktop) / Camera Capture
Important Regression Fix
- Corrected Canon camera disconnect recovery introduced in releases 505–507 - Camera loss could leave a dead SDK session, display duplicate dialogs, and leave the application unresponsive. Disconnect and internal-error handling now use a shared, guarded session-close path, stop and detach the capture timer, and report a single disconnect notice. Live-view termination is requested before SDK event handlers are removed, with diagnostics if the thread does not exit within five seconds. **Release 508 carries the correction; 504 and earlier are the known-good baseline for this reported incident.** This addresses the identified software regression, not a presumed USB cable defect (`CameraCaptureWPF.xaml.cs`, `Camera.cs`).
RMS Import Improvements
- Optional Spillman XML import without signal files - Set `FED_SUBMIT_SPILLMAN_XML_NO_SIG=1` to discover completed `.xml` files without requiring a matching `.sig` file. The default remains signal-file based. Existing parsing, acknowledgments, archival, and age-based cleanup remain in place; separate NIST/EFT and socket integrations are unchanged.
- Spillman deployment requirement - Enable this option only on the intended XML-import workstation/folder and restart Fed Submit after changing its environment. The vendor must publish complete XML files atomically; the option does not wait for unfinished files to stabilize. Only the exact value `1` enables it, and installation does not activate it automatically.
IDMS / Biometric Matching
Improvements
- All individual fingers enrolled by default - New gallery enrollments now include all valid individual finger positions present in Type-4 and Type-14 records, enabling matching for mobile probes containing middle fingers or other non-index positions.
- Shared gallery-scope configuration - The site-wide `EnrollIndexFingersOnly` setting defaults to false. Set it to true when an index-only gallery is deliberately required to reduce storage; this limits matching to index fingers. The setting replaces the per-process environment-variable selection so IDMS, automatic enrollment, and desktop enrollment use the same policy.
- Existing templates are not automatically rebuilt - The scope change affects new enrollments. Existing subject templates are not revisited automatically, so installing this release alone does not expand older index-only templates to all fingers. Plan any gallery rebuild separately.
Fed Submit Mobile / Administration
Improvements
- Play-distributed sign-in configuration - Added the remaining Google Play App Signing certificate registrations to the Android Firebase configuration.
- More specific tablet-attestation diagnostics - Registration denial messages distinguish hardware-backed key requirements, challenge mismatch, invalid device state, unverified boot state, and an installed APK signer missing from the IDMS allowlist.
- License assignment precedes tablet editing - Mobile Administration now presents the license-assignment action for an unlicensed tablet and reveals the tablet settings editor after a license has been assigned.
Heartbeat / Database Diagnostics
Improvements
- Current transaction-workload snapshots - SQL-backed heartbeats now report queued submissions, unsubmitted records, and outstanding responses with counts and oldest dates. Response tracking accounts for incomplete TFLU response pairs and outstanding requested mobile DPS/RISC destinations, including cases where a legacy closed flag is already set. Measurement failures are recorded without interrupting heartbeat delivery.
- Correct SQL Express capacity warnings - The 10 GB Express data-file limit is now checked only for SQL Express/LocalDB, avoiding false capacity alerts on larger Standard or Enterprise databases. Database size and free-space information remain available for other editions.
- Match-database size reporting - Heartbeats include match-database size information to help assess gallery storage requirements.
Telemetry Dashboard / Monitor
Workload-Aware Activity
- Pending work, not silence alone, drives alerts - Replaces the earlier inactivity-only warning/critical policy. Positively observed queued submissions or outstanding responses become Warning after seven days and Critical after one calendar month, based on the oldest pending transaction. Unsubmitted records may be drafts and remain informational even when old.
- Evidence freshness and safe fallback - Workload snapshots expire after 48 hours or the site's shorter heartbeat-warning interval. Missing, invalid, ambiguous, or stale measurements do not establish empty queues. Without fresh workload evidence, historical submission/response gaps remain informational with actual last-observed dates, rather than being treated as proof of a service outage.
- Useful context for older clients - Existing transaction-window summaries provide dated created/open counts for approximately 30 days. These are historical context, not all-age queue measurements. Fresh empty queues are quiet on the site list and explicitly identified on the detail page; unrelated critical conditions remain visible.
- Rollout requirements - Authoritative workload counts require installation of the updated SQL-backed heartbeat producer and receipt of a new heartbeat. MS-Access measurements remain unavailable, with historical context retained. This feature requires no telemetry reset or schema migration.
Health and Issue Reporting
- Evidence-based current recovery - Recent recovery is evaluated separately from historical daily scores using three clean, advancing heartbeat windows spanning at least two hours, with successful submissions and responses. Freshness and active-issue checks still apply; upgrading alone does not establish recovery or erase historical deductions.
- Consistent attention and issue views - The attention list uses current derived site status, maintenance notices are consolidated rather than repeated as separate incidents, and health-score details show contributing warning/error events with links to their containing heartbeats. Reporting dates and site-local event times are labeled distinctly.
- Stale-response cleanup is informational - Recognized age-based/orphan-response cleanup notices no longer become rejection/error events merely because their transaction metadata contains an MRJ or MNC type. Genuine rejections and unrelated errors remain actionable.
- Installed-version camera advisories - Sites observed running 505–507 receive a Canon regression advisory recommending corrective 508 when available. The advisory clears for installed 504-or-earlier or 508-or-later evidence; staged downloads are not treated as installed versions. Potential release exposure is distinguished from a confirmed camera incident.
Telemetry Operations / Documentation
Improvements
- Optional historical telemetry repair - Added `Repair-StaleResponseTelemetry.sql` to correct narrowly identified legacy cleanup-notice classifications and related derived data. It defaults to read-only preview and requires explicit application after review; it does not modify raw heartbeats or transaction data and is not an automatic release migration.
- Extended mailbox backfill window - The configured telemetry backfill period increased from 259 to 266 days.
- Updated response-time baseline - Expanded DPS/FBI timing analysis with outage context, quickest observed responses, and installed-release comparisons rather than staged-download versions.
- Added documentation for the Canon regression correction, workload-aware activity, and opt-in Spillman XML discovery. Regression coverage was expanded for dashboard recovery/status behavior, workload parsing and SQL eligibility, historical activity context, and XML import candidate discovery.
2.0.0.507 changes
9/16/26
Fed Submit (Desktop) / Services
Bug Fixes
- Keep Create From RMS available during share outages - An unreachable RMS import location no longer hides the configured Create From RMS action. The interface reports the location's unavailable status, and affected import paths handle share-access failures more clearly.
- Prevent cross-thread RMS status crashes - Updating the unreachable-location status from a background timer no longer creates a WPF brush on the wrong thread.
- Dedicated RMS status footer - The RMS-unavailable notice now occupies its own footer row, keeping it separate from other status information in Fed Submit and Card Processing.
- Apply delayed automatic service startup - Service installation and startup-configuration handling now apply the Windows delayed-auto-start setting for IDMS, print, receive, and submit services rather than relying on an ineffective startup-type setting.
- Retry service startup before reporting failure - Startup checks retry missing services up to three times, with five-second waits between attempts, before reporting services that still could not start. Transient startup failures no longer immediately become final failure reports.
- Reconnect between chunked-download retries - Chunk retries re-establish the FTP connection instead of repeatedly using a failed connection, improving recovery from interrupted update downloads.
Fed Submit Mobile
New Features
- Tablet enrollment registration through Agency IDMS - The Settings registration action now connects to the configured Agency IDMS mobile gRPC listener. Registration verifies the operator and the tablet's hardware-backed key and creates a pending, disabled device record. Registration alone does not grant enrollment permission.
- Device-authorized enrollment modes - The tablet obtains available enrollment modes from IDMS. Enrollment specification and submission requests carry signed device proofs, allowing the server to enforce current permissions rather than relying on client-side settings alone.
Bug Fixes
- Recover incomplete registration without replacing the tablet key - A saved registration attempt can be resumed when no usable device record exists. IDMS verifies the original owner-bound, unconsumed challenge and absence of a completed registration before renewing the completion window. Android reuses the existing key and registration identity; completed registrations and changed ownership cannot be overwritten. Older servers reject the new recovery RPC safely. Do not clear application data to retry an uncertain registration.
- Google sign-in account selection - Starting Google sign-in clears the cached Google account first so operators can choose the intended account, including when switching between administrator and operator identities.
Improvements
- More actionable registration failures - Registration UI and IDMS diagnostics provide more specific failure information and distinguish permission/attestation rejection, cancellation, unsupported endpoints, and unavailable services. Operators retain guidance to check existing registration status rather than clearing application data or blindly repeating an uncertain attempt.
Version
- Fed Submit Mobile advanced to **2.0.0.32, build 49**, following the earlier 2.0.0.31/build 48 candidate. Tablet enrollment is reported working in the latest release commit.
IDMS / Mobile Enrollment
Security and Authorization
- Registration on the existing secured mobile listener - Added gRPC registration and capability services to the existing mobile endpoint, without introducing a separate public HTTP service. Customer IDMS and tablets do not call the internal administration website; the legacy Windows Release Verification endpoint remains separate.
- Attestation and proof-of-key verification - IDMS validates Android hardware attestation, approved application signers, certificate trust/status, and possession of the registered key. Shared verification code supports the .NET Framework 4.8.1 IDMS host as well as the administration application.
- Fresh, replay-protected enrollment authorization - Signed enrollment requests bind the method, agency, operator, device, request ID, timestamp, and complete protobuf payload. IDMS transactionally checks customer entitlement, operator restrictions, tablet permissions, and license-slot assignment and consumes the request ID. Replayed requests and unavailable authorization fail closed; explicit operator denial overrides tablet approval.
Deployment Notes
- Opt-in pilot rollout - Enrollment requires `MENTALIX_IDMS_ENROLLMENT_ENABLED=true`, approved signer configuration, appropriate server credentials, and trust setup. Without enrollment activation, search remains available and enrollment remains unavailable.
- Coordinated deployment required - Deploy the complete rebuilt IDMS output and updated Android/admin components together; copying only the IDMS executable is insufficient. The latest commit reports tablet enrollment working; this does not establish acceptance across all devices or customer deployments. The shared-project pilot credential arrangement requires a separate isolation review before distribution to unrelated customer-controlled servers.
Bug Fixes and Diagnostics
- Validate Android attestation against the trusted certificate path - After chain validation against configured approved roots, the verifier binds the received leaf certificate to the validated leaf rather than requiring every transmitted certificate to match the trusted path byte-for-byte. This accommodates Android platform root certificates that differ from the locally configured root while retaining trusted-path, leaf-binding, and certificate-status checks.
- Preserve attestation failure reasons - Verifier failures retain their specific diagnostic reason. Registration logging identifies the failing operation and rejection category, with bounded chain-comparison details; unexpected failures log the exception type without recording credentials or proof material.
Mobile Administration — Pilot
New Features
- Customer enrollment entitlement controls - Administrators can configure enrollment availability, expiry, tablet capacity, and MOBE/TFLU capabilities.
- Tablet license slots and activation - Added numbered slot reservation/release and registered-tablet enable/disable controls. Tablet configuration and entitlement checks govern activation; a pending registration is not automatically approved.
- Reviewed, audited changes - Administration changes retain version checks, explicit review, reasons, and audit records, with additional page logic for device and license-slot management.
Improvements
- Guided tablet license assignment - The administration interface finds the next available license within the customer's capacity instead of requiring manual slot selection. It displays assigned tablets and license usage, identifies exhausted capacity, and reloads the tablet after assignment so configuration can continue. Assignment still requires review and confirmation.
- Clearer activation and expiry guidance - Tablet status and an “Assign license and continue” action guide administrators through activation. An empty tablet expiry defaults from the customer entitlement, and the interface rejects an enabled tablet expiry beyond the customer's expiration before saving.
Build / Shared Dependencies
Bug Fixes
- Prevent shared IDMS dependency overwrites - Aligned package references across IDMS projects that write to the same output directory so a later WCF/service build cannot replace newer gRPC dependencies with incompatible assemblies. Alignment includes `System.Text.Json` 10.0.12 and `Grpc.Core.Api` 2.71.0, with consistent gRPC package references.
- Align attestation dependencies and refine verification - Shared IDMS hosts now explicitly align `System.Formats.Asn1`. Dependency checks resolve the MSBuild-derived FUPI interop version and distinguish direct package requirements from independently resolved transitive dependencies, avoiding false mismatch reports while retaining delivered-assembly and binding-redirect checks.
- Runtime-version reporting build cleanup - Initialized the runtime-version lookup variable to remove compiler warning BC42030 in `GetInstalledVisualCppRuntimeVersion`.
Improvements
- Post-build dependency verification - Added `Test-IdmsSharedDependencies.ps1` and integrated verification into the Windows build workflow. Checks compare resolved packages with central versions, delivered runtime assembly identities, and applicable binding redirects in the shared IDMS output.
- Focused IDMS gRPC build - Added `buildIdmsGrpc.bat` for x64 Release or Debug builds with text and binary logs, output verification, and handling of the existing `fsIdmsGrpc` service state on the build host. It avoids full-world builds, cache/output cleanup, unrelated services, Android, x86, and installers.
Documentation / Regression Coverage
- Expanded customer-site, deployment, registration API, and tablet activation/recovery documentation. The existing mobile TLS listener is the deployment path; the older HTTPS registration prototype is not.
- Added coverage for signed requests, registration recovery, certificate/key validation, device permissions, slot reservation, activation, denial, expiry, replay protection, and administration page behavior. Emulator and synthetic tests do not replace physical-tablet or production acceptance testing.
- Added regression coverage for RMS share failures and bounded service-start retry behavior.
2.0.0.506 changes
9/15/26
Fed Submit (Desktop) / Receive Service
Bug Fixes
- Preserve legitimate older responses - Response cleanup now requires both an expired age threshold and an orphaned response: no submission remains whose TCN matches the response's TCR. Age alone no longer causes a response to be archived and purged. This protects legitimate backlogs after extended receive-service downtime while allowing old responses for deleted submissions to be cleaned up (`ResponseProcessing.vb`, `TransactionProcessing.vb`).
Improvements
- Configurable orphan-response retention - The default threshold remains 90 days. Set `FED_SUBMIT_STALE_RESPONSE_DAYS`, or the shared property `StaleResponseDays` when the environment variable is absent, to override it. A value of zero or less disables orphan-response purging. Settings are cached per process; restart the receive service after a change.
- Traceable orphan-response archives - Archived EFT filenames now include a timestamp and sanitized transaction type, TCN, and TCR instead of the receive pass's temporary filename, making archived responses easier to identify. The existing safeguard remains: if archiving fails, the source response is not deleted.
Telemetry Dashboard
New Features
- Submission and response inactivity indicators - Site summaries and detail pages now show inactivity based on the last observed successful submission and received response. More than seven days without activity produces a warning; more than one calendar month produces critical status. Response inactivity exceeding seven days is also critical when a successful submission was observed within the last seven days.
- History-based status explanations - Indicators include the last observed activity timestamps and contribute to the current site status without downgrading an existing critical status. Missing activity history does not trigger an inactivity alert. These observations indicate a need for investigation, not proof that a service is down, and do not deduct from historical health scores.
Regression Coverage
- Added tests for activity-history lookup, inactivity thresholds, recent-submission escalation, missing history, and preservation of existing critical status (`SubmissionResponseActivityTests.cs`).
2.0.0.505 changes
9/14/26
Fed Submit (Desktop)
Bug Fixes
- Bounded camera live-view recovery - Temporary camera-busy responses are retried, but automatic preview retries stop after ten consecutive busy responses. The operator receives guidance to close and reopen the camera, check power/USB connections, and confirm that the photo was captured. Opening a new camera session resets the recovery state.
- Clearer camera-disconnection reporting - Camera disconnection or power-off is reported once per incident with recovery instructions, including checking USB connections and disabling Auto Power Off. Related exception handling was refined to reduce repeated notices without hiding the capture failure.
Improvements
- Update-download diagnostics distinguish fallback attempts from final failures - Routine FTP, chunked-download, and HTTPS fallback messages no longer appear as individual red errors when another method may still succeed. Exhausted download methods remain visible as warnings.
- More useful SFTP connection diagnostics - Failed connection attempts are cleaned up and summarized after retries are exhausted; recovery after multiple attempts is logged explicitly.
- Site-message retrieval reporting - HTTP failures and timeouts are reported compactly, with repeated notices suppressed until recovery rather than reset by another unsuccessful HTTP response.
- Explicit remote IDMS protocol selection - Configuration Manager now exposes `IDMSProtocol` for direct Release Verification connections. Clients use the configured `Grpc` or `Wcf` transport rather than inferring it from local services or `MTX_USE_GRPC`. Invalid values produce a configuration error. **New/migrated settings default to `Grpc`; existing WCF sites must explicitly select `Wcf` before searching after upgrade and restart the client after changing the setting.** The separate external RemoteID workflow is unchanged.
- Less repetitive transaction-creation logging - Reduced verbose transaction-creation logging while retaining operation-level diagnostics.
Fed Submit Mobile
Improvements
- Mobile release version - Fed Submit Mobile advanced to 2.0.0.30, build 47.
- Clearer MFA sign-in - The SMS verification prompt shows the destination and supports resend and cancel. Returning to the sign-in prompt restores callback handling instead of leaving verification stranded.
- Agency validation before sign-in continues - The app validates the configured agency and offers a correction path when it cannot be used, with clearer lookup and access-denial messages.
- Per-call authentication refresh - Mobile search RPCs use SDK-managed credentials to refresh authentication per call rather than retaining a single token for the entire search.
Bug Fixes
- Contactless licensing failures retain their cause - Capture failures preserve licensing information and the capture SDK error code instead of replacing them with a generic error.
Staged Enrollment Work
- Added enrollment policy checks, tablet-key diagnostics, and registration/recovery support. **Tablet registration is not yet available from the shipped settings screen, and a successful key check does not grant enrollment permission.** Server configuration, trust setup, and coordinated validation remain required.
IDMS / Biometric Matching
Security and Deployment
- Opt-in authenticated mobile listener - Added a separate mobile gRPC listener sharing the existing service and matcher. Its policy verifies Firebase identity and revocation, checks current agency membership/search permission, enforces task ownership, and denies unapproved methods. Legacy Windows access remains on its separate listener. **Split-listener mode is staged and disabled by default; it requires server credentials, explicit agency/address/port configuration, and live cutover validation before activation.**
- Stricter mobile enrollment authorization - MOBE/TFLU authorization checks agency and user capabilities, agency enrollment expiry, and an explicit user denial override. Missing or invalid grants fail closed.
Diagnostics
- Bounded corrupt-EFT warnings - Known corrupt files skipped during gallery startup/search produce bounded warnings rather than repeated exception noise. Unrelated initialization, database, and incomplete-gallery failures remain errors.
- Clearer unusable-print diagnostics - Missing matching templates no longer imply a licensing fault by themselves. Extraction messages identify rejected finger inputs and SDK status and clarify that stored images are unchanged.
Android Components / Fed Submit Mobile Support
Compatibility and Packaging
- 64-bit Android native packages only - Supporting Android packages now ship `arm64-v8a` and `x86_64` libraries, dropping `armeabi-v7a` and 32-bit `x86`. This is a compatibility change for applications relying on the removed 32-bit native libraries.
- Native build targets aligned with shipped architectures - Android native, NFIQ2, and OpenCV build workflows no longer generate the discontinued 32-bit ABIs.
- Native-library staging cleanup - Removed the legacy Android library-copy script and revised packaging to avoid relying on stale contents of `fpdll.Android\libs`.
- Slapshot SDK module restricted to ARM64 - The Slapshot `sdk` module now builds for `arm64-v8a` only. This is narrower than the supporting package ABI set described above.
Telemetry Dashboard / Monitor
Improvements
- Heartbeat-driven application recommendations - Dashboard software notes are evaluated against the latest heartbeat and installed-version evidence. IDMS enrollment-log recommendations identify affected hosts, distinguish retained pre-upgrade messages from new activity, and adapt when signatures persist after installation.
- Evidence-based note retirement - Eligible software recommendations are retired only when the expected fix is installed and sufficiently complete heartbeat evidence no longer shows the issue. Hardware notes and unrelated manual notes are preserved; incomplete or multi-host evidence does not automatically establish resolution.
- Correct staged-update guidance - Update indicators now tell operators to run the installer for a downloaded release rather than implying that restarting installs it. Latest-version highlighting considers both the configured available release and release-history data.
- Mobile administration link - Added a dashboard link to the separate mobile administration application.
Bug Fixes
- Consistent download and receive-network classification - Shared telemetry rules distinguish retry/fallback diagnostics and receive-network failures from unrelated application errors, reducing misleading exception and critical-status reporting while retaining actionable failures.
- Corrupt-file and matcher-total classification - Recognized corrupt-EFT skips are warnings. Matcher error totals are de-emphasized only when matching detailed evidence accounts for them as unusable-input notices; genuine errors and totals with missing or incomplete evidence remain highlighted.
Regression Coverage
- Added automated coverage for application-note behavior, camera disconnections, bounded live-view retries, receive-network telemetry, and update-download classification.
- Added coverage for corrupt-EFT notices, matcher-total highlighting, mobile authorization/listener policies, MFA messages, and enrollment registration/security components.
Mobile Administration — Pilot
New Features
- Separate administration application - Added an initial Mentalix-only web application for authenticated user membership lookup, reviewed updates with a reason and confirmation, audit lookup, and read-back. Supports existing Firebase MFA factors and audited administration policies; Firestore audit timestamps serialize as UTC timestamps.
- Enrollment registration groundwork - Added challenge/proof handling, hardware-attestation validation, trust loading, and registration persistence, with deployment and API documentation. These components remain staged rather than a completed customer enrollment workflow.
- Deployment scope - The administration application is separate from Android and IDMS and excluded from default solution build configurations. Pilot operation does not establish general customer readiness; registration and authenticated-listener rollout require separate coordinated validation.
Telemetry Operations
Improvements
- Reset procedure supports a full re-ingest - `ResetTelemetry.sql` defines a reset procedure that clears telemetry history, derived status/anomalies, published messages, and synchronization state, and reseeds identities. It reclaims unused file-tail space and configures a minimum 4 GB data-file allocation with 512 MB growth increments for backfill. **This is a destructive administrative reset, not an automatic release migration.**
- Expanded mailbox backfill window - The configured telemetry mailbox backfill period increased from 225 to 259 days.
Scheduled Reporting / Mail
Improvements
- Standalone payroll-hours report - Moved payroll-hours reporting out of Batch Job Manager into `fsPayrollReport`, a separate scheduled command-line tool with holiday-calendar support and scheduling documentation.
- Payroll failure notifications - Failed scheduled report runs attempt an operational email notification. When report email delivery fails, the generated report remains available locally; notification delivery still depends on working SMTP.
- CC recipients in Rebex mail - Shared mail sending now supports CC recipients.
Documentation
- Added a DPS/FBI response-time baseline, mobile connection-migration and authorization guidance, mobile administration deployment/API documentation, and remote IDMS protocol validation instructions.
Build / Release Operations
Improvements
- Windows x64-only build option - Added `buildWorldX64.bat` for Release and Debug builds of Windows native and managed components with required packages. This mode skips x86, Android, OpenCV/NFIQ2 rebuilds, workload updates, and installers; existing OpenCV/NFIQ2 binaries are required.
- Build and package failures stop the workflow - Restore, build, package, and staging failures now propagate through the package-build script rather than allowing later steps to continue with missing or stale outputs. Build errors include the relevant log output.
- Conditional scanner SDK packaging - Package generation includes the Jenetric TouchLab package when its SDK is installed, with an explicit warning when it is unavailable.
- Consistent identity-library versions - Aligned conflicting IDMS WCF/service package references with IdentityModel 8.22.0 and updated central package settings.
2.0.0.504 changes
9/9/26
Fed Submit (Desktop)
Bug Fixes
- Adaptive receive polling across multiple databases - Receive processing now retains the shortest required polling interval across all databases processed in a pass, rather than calculating the next interval after the active database has changed. This prevents pending responses in one database from being delayed by another database's idle cadence (`fsWcfReceive.vb`).
- Receive wakeup timeout handling - Submission-triggered receive notifications now handle timeouts as well as communication failures, leaving the periodic receive timer as the fallback when the receive service is unavailable (`fsWcfSubmit.vb`).
- RPIS tab layout and mugshot display corrected - Switching fingerprint and mugshot tabs no longer shifts the area above the tabs; scrolling is confined to the response list. Mugshots now use the correct image binding for viewing and creating transactions, with full-size viewing handled by the active transaction model. Added RPIS layout regression coverage (`RPISTab.xaml`, `RPISTab.xaml.vb`, and `RpisLayoutTests.vb`).
- Correct Neurotechnology version in About - The About dialog now identifies Neurotechnology SDK 2025.2 instead of the outdated VeriFinger 10.0 label. This corrects the displayed attribution; it is not a new SDK upgrade (`About.xaml`).
Improvements
- RPIS viewer supports additional two-finger combinations - Finger tabs now use the actual captured finger positions and corresponding images, supporting middle fingers and thumbs as well as existing index-finger transactions. Added regression coverage for finger mapping and tab display (`RPISTab.xaml`, `RPISTab.xaml.vb`, and `RpisFingerDisplay.vb`).
Fed Submit Mobile
Improvements
- Rapid ID finger-pair choices - Rapid ID now defaults to the right index and middle fingers, with alternatives for the left index and middle fingers, both index fingers, or both thumbs. Capture sequencing, segment mapping, settings, and prompts were updated for these combinations.
- Incremental external-response telemetry - FBI RISC and Texas DPS completion or failure status and turnaround timing are reported independently as each response arrives, rather than waiting for both destinations to finish (`MtxHelper2.java`).
- Mobile release version - Fed Submit Mobile advanced to version 2.0.0.29, build 46.
Bug Fixes
- NFIQ finger mapping and scoring input validation - Quality scoring now uses corrected finger mappings and validates grayscale format, pixel layout, image dimensions, and resolution before calling the scoring engine. Padded and negative-stride image buffers are packed correctly, while unsupported inputs report an unavailable score rather than being scored with invalid data. Added segment-mapping and image-input regression tests.
IDMS / Biometric Matching
Bug Fixes
- Reliable mobile search identity - Durable search-status and timing updates now use the mobile search ID instead of reusable process-local task numbers. This avoids updating an unrelated historical search after a service restart or task-number reuse and improves completion handling when a search finishes before task registration.
- Incomplete galleries cannot produce apparently valid search results - Matcher processing checks that gallery loading has completed and reports a failure when a shard still requires a full reload. Search-result retrieval now preserves recorded failures instead of returning an ambiguous result.
Improvements
- Preserve captured contact fingers in RPIS requests - IDMS now retains valid individual contact-finger records, including middle fingers and thumbs, instead of limiting outgoing contact requests to index fingers. Added coverage for the new two-finger combinations and search reliability changes.
Telemetry Dashboard / Monitor
Bug Fixes
- Suppressed cancellations no longer inflate exception status - Recognized suppressed cancellation messages are excluded from effective subject exception counts, distinct exception-type scoring, daily aggregation, and subject-exception anomaly detection. Genuine exceptions and unsuppressed cancellations remain visible.
- Preserve unrelated alerts - Dashboard filtering of cancellation-only noise no longer clears unrelated maintenance or other genuine anomalies.
- Accurate heartbeat truncation notices - Ingest now counts omitted lines correctly, avoiding negative omitted-line counts and misleading descriptions of omitted content while retaining the heartbeat head and footer.
Documentation and Validation Coverage
- Added telemetry and Fed Submit audit reports, operational recommendations, and regression coverage for classification, scoring, aggregation, and truncation behavior. These changes do not automatically rewrite historical stored classifications or resolve existing anomalies; historical cleanup requires a separate maintenance operation.
Build / Release Operations
Improvements
- Android NDK update - Android components, including Fed Submit Mobile and its supporting modules, now use NDK 30.0.16248370.
- Full rebuild with updated compiler and workloads - All components were rebuilt with the latest compiler and workload updates for this release.
- Portable native build-tool discovery - Native builds now locate `nmake.exe` from the installed Visual Studio/MSVC tools rather than relying on a machine-specific path.
- Preserved native target architectures - Build commands retain each configuration's target ABI and build options rather than forcing ARM64, preserving the intended ARM, ARM64, and x86 outputs.
- Shared package updates - Updated centrally managed NuGet dependencies in `Directory.Packages.props`.
2.0.0.503 changes
9/8/26
Fed Submit (Desktop)
Improvements
- Conservative adaptive receive polling - Receive polling now uses a minimum five-second interval during the initial response window instead of checking every second. This reduces repeated SFTP directory checks and is more considerate of connections to Texas DPS while retaining the existing longer backoff intervals for older pending responses (`fsReceiveWcf.vb`).
2.0.0.502 changes
9/8/26
IDMS / Biometric Matching
Bug Fixes
- Automatic recovery of lost Neurotec licenses - The matcher and extractor now attempt to reacquire required Neurotec product licenses if a license is lost after startup, preventing persistent silent matcher failures caused by transient or externally interrupted licensing state (`LicenseKeeper.vb`, `Matcher.vb`, `Extractor.vb`, `FsMatcherMT.vb`, and `VfingUtils.vb`).
- IDMS startup license retry - The IDMS gRPC service now retries Neurotec license acquisition during startup when the initial attempt fails (`Service1.cs`).
- Matcher failures are no longer silent - Match/enrollment failures now retain actionable diagnostics rather than being reduced to ambiguous or missing results.
Improvements
- License recovery scoped and rate-limited - Recovery attempts are limited to the products required by the active matcher/extractor operation, and repeated environmental/license failures are throttled to prevent heartbeat and event-log bloat.
- Improved matcher diagnostics - Match, enrollment, comparison, and license errors now identify the failing operation more clearly, with updated IDMS environment-variable documentation (`docs/IdmsEnvironmentVariables.md`).
- Separate RISC and DPS turnaround timing in mobile telemetry - Mobile search reporting now records FBI RISC and Texas DPS completion times independently, including terminal failures and missing-task outcomes (`MtxHelper2.java`).
Fed Submit (Desktop)
Bug Fixes
- Camera exception handling and reporting cleanup - `Camera.cs`, `ExceptionHandling.cs`, and `CameraCaptureWPF.xaml.cs` improve handling and reporting of camera initialization/capture errors so expected device faults are handled without obscuring actionable failures.
- RPISC EBTS 11 validation skipped when unsupported - Heartbeat validation no longer attempts to validate RPISC transactions against the current EBTS 11 schema, which does not support that transaction type.
Improvements
- Redistributable library reporting enhanced - Heartbeats now provide improved version reporting for installed redistributable and supporting runtime libraries (`FsfTopLevelForm.vb`).
- Heartbeat long-query logging cleanup - Heartbeat database diagnostics were revised to reduce noisy long-query logging while retaining useful timing and failure information (`Heartbeat.vb`).
- Adaptive receive responsiveness tuned - Newly submitted jobs receive a bounded one-second polling window, followed by five- and fifteen-second backoff intervals, so independently delivered RISC and DPS responses are collected promptly without returning to long-running polling or log noise (`fsWcfReceive.vb`).
Telemetry Dashboard / Monitor
Bug Fixes
- Capture warnings no longer mask real heartbeat errors - Telemetry parsing now keeps capture warnings from overriding or hiding more important heartbeat failures.
- Matcher warning variants classified consistently - Both `MATCH_ENROLL_WARN` and `MATCH_ENROLL_WARNING` are recognized and classified by the dashboard and telemetry monitor.
Improvements
- Neurotec license telemetry refined - License recovery/failure telemetry is parsed with more context and repeated environmental errors are de-emphasized without hiding the underlying failure.
Documentation
- IDMS environment-variable reference expanded - `docs/IdmsEnvironmentVariables.md` documents the new matcher/license recovery and diagnostic controls.
2.0.0.501 changes
9/3/26
Fed Submit Mobile
Improvements
- Mobile release build 2.0.0.28/45 - Fed Submit Mobile version was advanced to 2.0.0.28/45 for this release build.
- Android compile SDK updated - The Slapshot Android modules (`app`, `IBScanCommon`, `IBScanUltimate`, and `sdk`) were updated from Android compile SDK 37.1 to 37.2.
IDMS / TFLU
Improvements
- TFLU response ordering refined in the emulator - The emulator now schedules the MAC acknowledgement before the substantive MID response while preserving independently sampled realistic delays (`ChannelProcessor.cs`).
- IDMS progress logging reduced by default - Routine mobile-search listing and external-response diagnostics remain available through `IDMS_PROGRESS_DIAGNOSTICS` while avoiding unnecessary operational log noise (`GrpcIdmsService.cs`).
Bug Fixes
- Mobile TFLU completion and legacy TXDPS closure handling corrected - TFLU completion now uses the MID response, while established TXDPS closure behavior is preserved for legacy flows (`IdmsBase.vb`, `TransactionProcessing.vb`, `AfisConnect.vb`, and `Submit.vb`).
RISC Channel Emulator
Improvements
- More realistic TFLU response timing - Emulator MAC and MID responses are ordered and delayed independently to better model production response behavior.
Build / Release Operations
Improvements
- Release notification workflow enhanced - `release_manager.ps1` can send a notification for an existing release without modifying release files and now prefers the embedded SMTP credential from `bfutil.vb` before falling back to the legacy password file. This preserves the established SMTP strategy while making post-build notifications more reliable.
2.0.0.500 changes
9/3/26
Fed Submit (Desktop)
Improvements
- Improved SFTP receive reliability - Receive processing now uses isolated RISC staging paths, performs remote cleanup against the correct response location, rate-limits repeated directory warnings, and wakes receive processing only after a submission completes successfully (`AfisConnect.vb`, `FTPRoutines.vb`, `Submit.vb`, `TransactionProcessing.vb`, and `fsWcfSubmit.vb`).
- Receive transaction handling refined - Submission and receive processing now better coordinate response staging, cleanup, and wakeups, reducing the risk of repeated downloads or unnecessary receive activity.
- Mobile response closure handling improved - Mobile dual-leg response processing now updates the submission's closed status only when the identified mobile legs are complete, while preserving the established live-scan closure behavior for other transactions (`IdmsBase.vb`, `TransactionProcessing.vb`, `AfisConnect.vb`, and `Submit.vb`).
RISC Channel Emulator
New Features
- Separate RISC and tenprint SFTP channel configuration - The emulator now supports independent inbound, outbound, delayed-queue, and test-encryption settings for RISC and tenprint traffic through `EmulatorChannels.cs`, `EmulatorConfig.cs`, and the application configuration files.
- More reliable isolated response processing - The emulator's watcher and worker now initialize and monitor channel-specific paths, recover stale claims, clean up received responses correctly, and preserve older response folders. The emulator documentation and HAMM setup instructions were updated accordingly.
Improvements
- Corrected case-sensitive response-directory handling - The emulator maintains the required response-directory compatibility between the paths used for listing and deleting SFTP responses.
- Expanded emulator validation - End-to-end, safety, and test-support code was updated to cover the new channel separation and cleanup behavior.
- Restored realistic response delays - Default emulator configurations again use randomized response delays and the configured additional delay, improving the realism of receive-flow testing (`appsettings.json` and `deploy/HAMM.appsettings.json`).
Documentation
- Updated RISC channel emulator documentation - `README.md` and `HAMM-SFTP-SETUP.md` now describe the separate RISC/tenprint paths and current SFTP setup requirements.
Build / Release Operations
Improvements
- Release-build completion notification - `release_manager.ps1` now sends an email notification when a release build completes.
2.0.0.499 changes
9/2/26
Fed Submit (Desktop)
Improvements
- TechShare and RISC/DPS job scheduling refinements - Further reduced unwanted TechShare submissions and ensured TechShare-disabled configurations do not create unnecessary work. RISC/DPS jobs are protected from excessive delays caused by pending TechShare tasks, including partially received responses (`JobRequest.vb`, `Submit.vb`, `ProcessSubmit.vb`, `TransactionProcessing.vb`, and `fsWcfSubmit.vb`).
- Improved EFT storage startup diagnostics - `FsBoot.vb` now provides more useful diagnostics when EFT storage initialization fails.
- Additional environment diagnostics - Heartbeats now include C/C++ redistributable and Intel library version information, and additional diagnostics were added for the Bastrop J2K load failure investigation (`fpuSession.vb`, `FsfTopLevelForm.vb`, `EventMsg.vb`, and telemetry parsing).
- Fed Submit startup performance improvements - Minutia initialization is deferred, the database-existence check is faster, and a redundant startup call was removed (`FsAppVm.vb`, `mtxMinutiaSession.vb`, `FsBoot.vb`, and `TpInit.vb`).
- SQL connection and adapter cleanup - Connection, result-set, adapter, and report data-access cleanup was applied across Fed Submit, configuration, reporting, search, and form-processing paths to reduce resource-lifetime issues (`BaseSqlDb.vb`, `BaseRset.vb`, `DataLayer.vb`, `Interpret.vb`, `ReportUtil.vb`, and related report/view-model files).
Bug Fixes
- Rolled-print edge coverage - Mobile rolled-print capture now detects when a print runs off the edge of the capture area, with new `RollCoverageTest.java` coverage.
- Signature-pad reporting cleanup - Telemetry classification was refined for signature-pad reporting issues.
- Improved adaptive receive handling for multiple mobile responses - Additional polling and stale-response cleanup prevents excessive waits and log noise when multiple mobile search responses are being received (`fsWcfReceive.vb`, `FTPRoutines.vb`, and `IdmsBase.vb`).
- Receive and IDMS response-handling refinements - Further cleanup in `IdmsBase.vb`, `GrpcIdmsService.cs`, `ProcessSubmit.vb`, and `TransactionProcessing.vb` improves response processing and reduces unnecessary diagnostic output across the receive/search paths.
- Operational logging readability and volume cleanup - Receive, submit, transaction-processing, matcher, and enrollment logs were standardized and unnecessary routine messages were gated behind verbose operational logging (`FsSearch.vb`, `VfingEnroll.vb`, `TransactionProcessing.vb`, `fsWcfReceive.vb`, and `fsWcfSubmit.vb`).
Fed Submit Mobile
New Features
- Watson/FAP 45 capture workflow refinements - FAP 45 capture behavior was refined for certification workflows: the index pair was removed from the dual sequence and the dual sequence is now certification-only. Whole-platen and thumb handling were adjusted to preserve the intended device-provided capture dimensions (`SimpleScanActivity.java` and `MtxHelper2.java`).
- Tenprint image and viewer support - Plain tenprint thumbs are recorded as Type-4 impressions 11 and 12, and the mobile capture/device metadata handling was refined (`SimpleScanActivity.java`, `MtxHelper2.java`, and `nistdump.c`).
- Capture orientation and device labeling - The capture screen returns to portrait orientation after the capture SDK completes, and the capturing device is named using the device information from the 2.067 transaction rather than whichever scanner was previously used.
Bug Fixes
- Improved rolled-print capture usability - Added coverage checking and user-facing handling for rolled prints that extend beyond the capture area (`SimpleScanActivity.java`, `RollCoverage.java`).
- Fingerprint viewer robustness - Unknown finger positions no longer terminate viewer processing; finger position 15 is named correctly (`NistType4Record.vb`, `NistType14Record.vb`, and `fputildefs.vb`).
- Mobile search survives temporary IDMS outage - When IDMS is unavailable, a mobile search is no longer immediately failed and discarded. The app now prompts the operator to discard or retry, allowing the transaction to be retried when IDMS becomes available (`MainViewModel.java`, `MtxHelper2.java`, and `TopActivity.java`).
Improvements
- Mobile app version - Fed Submit Mobile bumped to 2.0.0.27/44.
IDMS
Improvements
- Larger IDMS/gRPC payload support - The related IDMS and mobile capture work supports larger tenprint and FAP 45 payloads; the capture and transaction tooling was updated to preserve the intended record layout.
- Optional IDMS progress diagnostics - IDMS logging was cleaned up, with additional progress diagnostics available through the `IDMS_PROGRESS_DIAGNOSTICS` environment variable (`IdmsBase.vb`, `FsSearch.vb`, `FsMatcherMT.vb`, and `VfingEnroll.vb`).
Bug Fixes
- IDMS SQL connection cleanup - Additional connection and adapter lifetime fixes were applied to IDMS search and related data-access paths, including the `Interpret` and shared result-set/database infrastructure.
- Matcher and enrollment diagnostic cleanup - Reduced noisy logging across `FsMatcherMT.vb`, `VfingEnroll.vb`, `VfingLoad.vb`, `VfingUtils.vb`, and `Matcher.vb`, while retaining the optional progress diagnostics controlled by `IDMS_PROGRESS_DIAGNOSTICS`.
Native / Imaging / EBTS
New Features
- Watson-layout Appendix F extraction - `nistdump.c` can now extract an image set using the Watson layout for FAP 45 transactions.
- Expanded EBTS viewer detail - The viewer can score fingerprints, display finger positions, fill the available window, and handle additional record-position data without failing on unknown positions.
Telemetry Dashboard / Monitor
Improvements
- Telemetry classification cleanup - Added and refined event classification for signature-pad reporting, device/environment diagnostics, and site-status handling.
- Mobile telemetry device-name corrections - Corrected names for two mobile devices in dashboard configuration.
- Configuration cleanup - Updated telemetry dashboard configuration and adjusted critical-site reporting to avoid overly aggressive critical tagging.
Heartbeat Delivery / Operations
New Features
- FTP heartbeat to SMTP conversion script - Added the baseline web-server cron script `ftptoemail.sh` for converting FTP heartbeats to SMTP heartbeat messages.
Improvements
- Heartbeat payload size protection - FTP heartbeat payloads are limited to 20 MB, with the same limit enforced by `ftptoemail.sh` on the web server to prevent failed sends without notification. The script now provides visible operational email notifications for notable conversion or delivery problems to the designated support contacts.
Build / Tooling
Improvements
- Android capture SDK maintenance - Updated the Slapshot Capture SDK from 5.1.10 to 5.3.2, including associated native and Android libraries.
- Diagnostic tooling updates - Expanded `nistdump` capabilities for extracting and inspecting Watson/FAP 45 image sets.
- RISC channel emulator response cleanup - The emulator now cleans up received responses correctly without emptying older response folders (`ChannelProcessor.cs` and `EmulatorWorker.cs`).
- Emulator startup and response handling cleanup - `Program.cs` and `ChannelProcessor.cs` received additional cleanup related to emulator lifecycle and response processing.
- Corrected emulator SFTP response-directory compatibility - The emulator now prepares a case-sensitive `MID_RISC` response directory and maintains the `Out`/`out` compatibility junction so files listed by receive are removed correctly by the test SFTP cleanup path (`Program.cs`).
2.0.0.498 changes
8/29/26
Fed Submit (Desktop)
New Features
- Adaptive receive polling - `fsWcfReceive.vb` and `fsWcfSubmit.vb` now dynamically back off/speed up receive polling based on the number of outstanding submits, improving responsiveness without flooding the log with polling activity.
Bug Fixes
- Mobile search and release-verification search should not trigger JMS export / photo export / TechShare integration, etc. - `SqlAbbrev.vb`, `Submit.vb`, `ProcessSubmit.vb`, and `TransactionProcessing.vb` updated so these non-standard search types are correctly excluded from downstream export/integration side effects intended only for normal agency submissions.
- Cover the agency no-hit paths, and stop reading NFIQ 2 zero as unscored - `NistFieldImage.vb` fixed so a genuine NFIQ 2 score of zero is no longer treated as "unscored," with new `ExternalResponseClassificationTest.java` coverage for no-hit response classification.
- Report an agency non-ident as no match, not as a possible candidate - `MtxHelper2.java`, `Hit.java`, `HitAdapter.java`, `MySearchResponsesAdapter.java`, and `SimpleScanActivity.java` updated so a non-identification response from the agency is correctly surfaced to the user as a no-match rather than being displayed as a low-confidence candidate.
- Clean up printer communication failure noisy log output - `FsPrint.vb` and `Heartbeat.vb` reduce excessive logging on printer communication failures.
- TechShare update response no longer generated for mobile search types - `TransactionProcessing.vb` updated so a TechShare update response is not incorrectly generated for mobile search transaction types.
- Adaptive receive tweak to avoid extended wait on a half-received response - `IdmsBase.vb` and `fsWcfReceive.vb` adjusted so the adaptive receive-polling backoff introduced earlier in this release doesn't stall on a partially-received response.
- TechShare pending tasks no longer cause a huge wait for RISC/DPS jobs - `fsWcfSubmit.vb` updated so outstanding TechShare update tasks don't delay the higher-priority RISC/DPS job path introduced earlier in this release.
Improvements
- Prioritize RISC/DPS jobs over TechShare updates - `JobRequest.vb` and `JobsProcessing.sql` updated so RISC/DPS job processing takes priority over TechShare update jobs in the job queue.
- EBTS 11 XML fixes - `Ebts11.vb` now converts the letter "O" to zero where required for the extended list of SMT (scar/mark/tattoo) types defined in the schema, hard-trims the AKA instance count as required when writing EBTS 11 XML, and logs trimming as a diagnostic.
- EBTS viewer sample improvements - `fsViewSample` now decodes the iris eye label, palm position, and coded Type-14 fields; corrects Iris tab field labels and shows mandatory fields; sizes viewer images to match their field blocks; and shows more record detail generally (`NistIrisRecord.vb`, `NistPalmRecord.vb`, `NistType14Record.vb`, `NistFieldImage.vb`, `NistConst.vb`, and the corresponding `fsViewSample` XAML controls).
- `nistdump` can extract an Appendix F image set from a transaction - `nistdump.c` extended with this capability.
IDMS
Improvements
- Raised the gRPC message size limit on the IDMS service - `Service1.cs` increases the configured max message size to accommodate larger request/response payloads.
- Mobile TFLU response handling made consistent with live-scan TFLU - `IdmsBase.vb` updated so mobile TFLU responses detect closed status using the same MID/MAC/MNC/MRJ combination logic as live-scan TFLU, with the resulting status now properly reflected on the telemetry dashboard.
- Protobuf mobile search interface persists a per-transaction id - `IDMS.proto` (both the Android and server copies), `IdmsBase.vb`, and `GrpcIdmsService.cs` updated so a per-transaction id is persisted server-side and returned to the client, laying groundwork for updating search results/review information after the fact.
- Per-search timing results surfaced to mobile telemetry - `IdmsBase.vb`, `GrpcIdmsService.cs`, and `IDMS.proto` (Android and server copies) extended so per-search timing results are returned to the client for inclusion in mobile telemetry reporting.
Fed Submit Mobile
New Features
- DOB picker and simplified mobile ID demographics - `DemographicsActivity.java` adds a date-of-birth picker (`DobFormatter.java`, with new `DobFormatterTest.java` coverage) and reduces mobile ID demographics entry to name/DOB only; also cleans up a display overlap with the search-progress dialog.
- Contact capture quality/scoring overhaul - Contact captures are now scored with the app's own NFIQ 2 implementation (`Nfiq2Score.java`, `mtxMinutiaSession.java`) instead of the scanner's NFIQ 1 score, scored correctly with a recapture offered on poor quality (`FingerprintDataHolder.java`, `SettingsManager.java`), and padded to the device's preferred capture sizes (`MtxHelper2.java`).
- Full tenprint capture sequence - `SimpleScanActivity.java` adds a full tenprint capture sequence and stores slap captures as a single impression.
- Contact capture screen made field-usable - `SimpleScanActivity.java`, `DemographicsActivity.java`, `SettingsManager.java`, and related resources/manifest/preferences updated to improve usability of the contact capture screen under real field conditions.
- Friendly device name support for mobile telemetry dashboard - `FirestoreMobileTelemetryRepository.cs`, `LiveMobileTelemetryModel.cs`, `DashboardOptions.cs`, and `MobileTelemetryLive.cshtml` now display a friendly device name instead of a raw device identifier, with setup docs updated (`Live-Mobile-Firestore-Setup.md`).
- Watson capture sequences added for Mobile ID FAP 45 - `RapidIdSegmentMapper.java` and `SimpleScanActivity.java` add the FAP 45 (rolled) capture sequences required for Watson rapid-ID searches.
- "Offer both thumbs" capture and named manual capture button - `SimpleScanActivity.java` adds a dedicated "offer both thumbs" capture option and labels the manual capture button.
- Client-visible per-transaction id for mobile search - `MtxHelper2.java`, `MySearchDetailsActivity.java`, and `OperationalTelemetry.java` updated to receive and use the new per-transaction id returned from IDMS (see matching IDMS entry above).
- Slapshot Capture SDK updated from 5.1.10 to 5.3.2 - Updated native/Android capture SDK binaries (`slapshot-core`, `slapshot-capture`, `slapshot-capture-face`, `sciometrics-*`, `opencvlibrary411`, `wsq-android`) and `build.gradle`.
- Per-search timing results included in mobile telemetry - `MySearch.java`, `MySearchDetailsActivity.java`, `MySearchesActivity.java`, `MySearchesClient.java`, `OperationalTelemetry.java`, `IDMS.proto`, and `firestore.rules` updated so "My Searches" and live telemetry reporting include per-search timing data (see matching IDMS entry above), with corresponding dashboard-side updates in `FirestoreMobileTelemetryRepository.cs`, `LiveMobileTelemetryModel.cs`, and `MobileTelemetryLive.cshtml`.
Bug Fixes
- Capture sequence no longer dies on an empty fingerprint list - `SimpleScanActivity.java` and `FingerprintDataHolder.java` guard against a crash when no fingerprints are present in the capture list.
- Capture callback keeps catching `Throwable`, and IB faults are named again - `SimpleScanActivity.java` restores broader exception handling around the capture callback and restores fault naming for IntegratedBiometrics (IB) scanner faults.
- Firestore telemetry update fixes - `MtxHelper2.java`, `MySearchDetailsActivity.java`, `MySearchesActivity.java`, and `OperationalTelemetry.java` received several follow-up fixes to the Firestore telemetry data-update path ("More work on fire store data update", "FIre store telemetry update fixes").
Improvements
- Fed Submit Mobile version bumped to 2.0.0.26/43, then 2.0.0.27/44.
- Whole-platen captures left at native platen size - `MtxHelper2.java` no longer forces whole-platen captures to a fixed size, preserving whatever size the platen provides.
- Preliminary mobile TFLU/telemetry updates - `MySearchDetailsActivity.java`, `MySearchResponsesAdapter.java`, `OperationalTelemetry.java`, and new `TfluResponseClosure.java` add groundwork for TFLU response closure handling on the mobile side, plus `firestore.rules` adjustments.
Telemetry Dashboard
Improvements
- Improved reporting of site download failures - `DashboardRepository.cs`, `TelemetryTextParser.cs`, `TelemetryParser.cs`, `CurrentStatusRepository.cs`, `TelemetryIngestionService.cs`, and `_SiteRow.cshtml` improve how download failures are detected and surfaced.
- Download-failure reporting segregates sporadically-succeeding sites, and the home page reflects the available update version even when the most recent download failed - Further updates to `DashboardRepository.cs`, `TelemetryTextParser.cs`, `HeartbeatFlagRow.cs`, `HeartbeatFlags.cshtml`, and `HeartbeatFlags.cshtml.cs`.
- Mobile telemetry dashboard device report cleanup - `MobileTelemetryLive.cshtml` and `TelemetryDashboardStarter/appsettings.json` cleaned up for the friendly-device-name reporting added earlier in this release.
Documentation
- Added BIA Codex session handoff document - `codex-session-handoff.md` added at the repository root.
2.0.0.497 changes
8/26/26
Fed Submit (Desktop)
Bug Fixes
- Receive service was creating duplicate responses - `ResponseProcessing.vb` now short-circuits when `DuplicateCheck` reports that a response has already been stored, so repeated receive polls no longer insert additional rows into Response Transactions. Also includes a small related adjustment in `fstransaction/Model/ViewModel.vb`.
Improvements
- Telemetry/exception log cleanup - Reduced noisy exception logging and focused diagnostics in `FedSubmit/Application.xaml.vb`, `DesktopNotifications.xaml.cs`, and `View/Required/VitalSubjectData.xaml.vb`.
Fed Submit Mobile
New Features
- Contact fingerprints stored losslessly in certification mode - `MtxHelper2.java`, `SettingsManager.java`, and `fpuNistTrans.java` updated so contact captures are preserved without lossy compression when certification mode is enabled.
- Archived search transactions now preserve the original device submission - `IdmsBase.vb` captures the raw request bytes exactly as received before parsing, and `FsSearch.vb`/`BioSearchTable.vb` now write those original bytes into the archived "searches" copy instead of re-serializing through `WriteCardToNist`, which previously re-encoded lossless mobile imagery down to WSQ.
- Rolled contact captures stamped as `LIVE_SCAN_ROLLED` - `SimpleScanActivity.java` now tags rolled contact captures with the correct impression type instead of the plain live-scan value.
Bug Fixes
- Rapid search with Watson should use combined left/right index rather than separate captures - `RapidIdSegmentMapper.java` and `SimpleScanActivity.java` updated so a rapid-ID Watson search submits a single combined left/right index capture instead of two separate captures, with new `RapidIdSegmentMapperTest.java` coverage.
- Removed long-press save/email/etc. actions that violated PII handling policy - `SimpleScanActivity.java` and `scanimage_menu.xml` no longer expose long-press save/share/email actions on scanned images.
Improvements
- Android project/build cleanup - Manifest and Gradle updates across `IBScanCommon`, `IBScanUltimate`, `app`, and `sdk` modules, plus a Gradle daemon/JVM properties update and a general Gradle version bump.
- Android referenced library updates - Dependency version bumps in `app/build.gradle` and `sdk/build.gradle`.
- Log the size of the EFT the device builds - `MtxHelper2.java` now logs the built EFT size for field diagnostics.
- Fed Submit Mobile version bumped to 2.0.0.25.
Documentation
- New Fed Submit Mobile customer-facing documents - Draft `.docx` collateral added under `docs/`: customer announcement, existing-customer entry configuration, product overview, recommended starter configuration, capability specification, and quick-start overview.
IDMS
Bug Fixes
- Noisy log cleanup - `IdmsBase.vb` trimmed excessive logging identified during field investigation.
Improvements
- Archive search transactions as received, not re-serialized - See the matching Fed Submit Mobile entry above; `IdmsBase.vb` now threads the original request bytes through `FsSearch.MatchInit` to `BioSearchTable.AddToBioSearchTable` so the archived copy matches what the submitting device actually sent.
Native / Imaging
Bug Fixes
- scanlib card/exp13000 fixes - Additional corrections in `card.c`, `exp13000.c`, and `fupicard.c` (checkpoint of in-progress imaging work).
Telemetry Monitor / Dashboard
Improvements
- Hardened ingest service handshake with email retrieval - `GraphMailboxReader.cs` and `Mentalix.TelemetryMonitor/Program.cs` updated to make the mailbox handshake more resilient.
- `appsettings.json` cleanup - Configuration cleanup in `TelemetryDashboardStarter/appsettings.json`.
Build / Tooling
Investigations
- Garland update download failure investigation - Added and iterated on `Investigate-GarlandBlock.ps1`, a new diagnostic script under `release-automation`, to help root-cause a customer update download failure.
2.0.0.496 changes
8/21/26
Fed Submit Mobile
New Features
- FIFO search-queue support for concurrent mobile searches - Added first-in-first-out queuing (`IdmsBase.vb`) so multiple mobile search requests against IDMS are served in the order received, with dedicated `SearchQueueTests.cs` coverage. Refined over several follow-up commits after a bug was discovered during 3x concurrent search testing and later corrected against a HAMM regression.
- Live mobile telemetry via Firestore - The Android app now reports operational telemetry (`OperationalTelemetry.java`) directly to Firestore, and the app is functional end-to-end while streaming this data. See the matching Telemetry Dashboard changes below.
- RPISC displayed in Fed Submit "view transaction" - RPISC results are now shown in the Fed Submit transaction view, alongside a new IDMS environment "demo mode" that limits the number of returned transactions.
- Better contactless vs. contact search time estimates - The mobile progress timer now attempts a more accurate estimate depending on whether the in-progress search is contactless or contact-based (`IdmsBase.vb`, `IDMS.proto`).
Bug Fixes
- Contactless double-calibration, calibration screen rotation, and "My Searches" anomalies when RISC/DPS is off - Multiple fixes applied across `ContactlessCaptureActivity.java`, `MySearchDetailsActivity.java`, and `MySearchesAdapter.java`, with several follow-up rounds of additional fixes.
- Search-complete status overlaying response UI - Adjusted `activity_top.xml` layout so search-progress and search-complete states no longer visually overlap.
- Slapshot title overlay bug - Fixed incorrect title overlay rendering (superseded/expanded from the fix shipped in 2.0.0.495).
- R8 release build was failing - Added the missing ProGuard/R8 keep rules (`ai.onnxruntime.*`, `java.awt.geom.AffineTransform`) that R8 itself flagged as missing, unblocking the minified release build; also removed two unused imports.
- Missing native libraries in installed builds - `libAKXUS.so` and `libuvc.so` for `IBsu.Android` were silently excluded by a blanket `*.so` gitignore rule; the rule was narrowed and the libraries added back for both `arm64-v8a` and `armeabi-v7a`. `build-nugets.bat` now fails loudly instead of silently on an Android build failure.
- Play Store application identity change - Changed the Play `applicationId` to `com.mentalix.fedsubmit.mobile` (the prior identity, `com.mentalix.fsremoteid`, cannot be reused since Play permanently reserves package names). A new Firebase Android app was registered under the existing project so existing user/agency approvals in Firestore are preserved rather than orphaned.
Security
- Firestore approval check now uses authenticated UID instead of e-mail lookup - `SplashActivity.java` now reads `approvedUsers/{uid}` directly (with an explicit `enabled == true` check) instead of querying by e-mail, since Firestore security rules can constrain a document read but not a query. This makes the hardened `firestore.rules` (also newly tracked in source control) enforceable.
- Hardened `firestore.rules` added to source control - The intended production security rules for agency configuration and user approval are now tracked and reviewable. **Note:** as of this release these rules are not yet deployed — production Firestore still runs a permissive `allow read, write: if request.auth != null` rule.
Improvements
- Android build/dependency cleanup - Several low-risk Android deprecation fixes and Gradle build cleanup passes across `app`, `IBScanCommon`, `IBScanUltimate`, and `sdk` modules.
- Fed Submit Mobile version bumped to 2.0.0.22/39, then 2.0.0.23/40.
My Searches — Mugshots and TCN Reconciliation
- "My Searches" now returns mugshots and full response detail from IDMS - Mobile "My Searches" results now display the same response template (including mugshot, when available) as the original search, rather than a stripped-down summary. Required several follow-up fixes (`MtxHelper2.java`, `MySearchResponsesAdapter.java`, `MySearchesClient.java`, `HitAdapter.java`) after the initial IDMS-side attempt did not return results correctly.
- IDMS mobile search results now carry a TCN reference to the agency IDMS candidate - This TCN reference enables EFT lookup and mugshot return in "My Searches" on the client. The same TCN is also honored by the "Free Up My TCNs for reuse" flow.
- Edge-case protection in "Free Up TCNs for reuse" - `PubGlobals.vb` now only updates `MobileSearches` TCN values when the `MobileSearches` table actually exists (it is only created when needed by IDMS), avoiding an error on agencies that have never used mobile search.
TFLU Support (Fed Submit Mobile, IDMS, RISC Channel Emulator)
New Features
- First implementation of TFLU (Terminate-For-Lookup/Unsolicited) handling - Initial end-to-end TFLU support was added across the stack:
- RISC Channel Emulator - `ChannelProcessor.cs` and the new `NistResponseWriter.cs` implement first-pass TFLU handling, returning MID/MAC in the emulator response, with new `NistResponseWriterTests.cs`, `SingleInstanceGuardTests.cs` (and `SingleInstanceGuard.cs`), and `EndToEndScenarioTests.cs` coverage. Refined over several follow-up commits as response handling was corrected.
- IDMS - `IdmsBase.vb` and `GrpcIdmsService.cs` (`IDMS.proto`) received the first cut of TFLU response handling, followed by multiple correction passes ("IDMS TFLU Update", "More work on IDMS handling TFLU responses", "One more IDMS fix on TFLU response handling") as real-world response shapes were validated against the emulator.
- Fed Submit Mobile enrollment - The Android app's enrollment flow (`DemographicsActivity.java`, `MobileTransactionSpecificationClient.java`, `MtxHelper2.java`, `SettingsFragment.java`/`SettingsManager.java`, `TopActivity.java`, `IDMS.proto`) now supports submitting a TFLU-style transaction, with new `ExternalResponseClassificationTest.java` coverage and additional user-facing preference/settings entries.
IDMS
New Features
- `fsIdmsGrpcClientSim` - A new concurrency test harness for exercising the IDMS gRPC service under simulated concurrent load (`ConcurrencyOptions`, `ConcurrencyRunHarness`, `VirtualClientRunner`, `RequestFactory`, `ServerAllowlist`, `LocalOnlyGuard`, plus a `README-Concurrency.md`), used to drive the FIFO search-queue fixes above.
Bug Fixes
- Multiple rounds of IDMS search-queue fixes - `IdmsBase.vb` and `GrpcIdmsService.cs` received several follow-up fixes discovered through concurrency testing and field feedback ("Another attempted fix for IDMS", "More attempted bug fixes").
- Temporary fix for a mugshot regression - A small change to `IdmsBase.vb` addressed a mugshot-handling issue introduced by the search-queue work (superseded by the more complete mugshot/TCN fixes above).
Fed Submit (Desktop)
Bug Fixes
- Diagnostics for a potential lingering-session crash - Lightweight diagnostic logging added to `Application.xaml.vb` to help track down a rare unhandled exception suspected to be caused by a lingering session.
Telemetry Dashboard
New Features
- Live Mobile Telemetry page - New `MobileTelemetryLive` page reads mobile transaction telemetry directly from Firestore (`FirestoreMobileTelemetryRepository`), complementing the existing batch-ingested Mobile Telemetry page. Includes setup/implementation docs (`Live-Mobile-Firestore-Setup.md`, `Live-Mobile-Firestore-Implementation.md`).
Improvements
- Time reports switched from UTC to Central Time - Mobile telemetry dashboard pages (`MobileTelemetry.cshtml`, `MobileTelemetryLive.cshtml`) now display times in Central Time instead of UTC.
Native / Imaging
Bug Fixes
- scanlib crashes on empty/corrupt image loads - `fpOpencvFindAARPrint`, `fpOpencvOcrPrep`, `fpOpencvFindContours`, and `fpOpencvFindCardPrints14` previously had no (or incomplete) checks for a failed image decode, which could crash the process (an unhandled C++ exception unwinding across a P/Invoke boundary). These entry points now validate the loaded image and wrap the call in an exception guard that returns a typed error instead of crashing; a related `FILE*` handle leak on failed scans was also fixed.
Build / Tooling
Bug Fixes
- Wrong Microsoft redistributable bundled into WiX prereqs - `UpdateLocalRedistCPP.bat` was pulling in a Visual C++ redistributable that was not quite the correct one for the WiX prerequisites build; `buildWorld.bat` was updated accordingly, and `UpdateVCVersion.bat` was added to keep the bundled VC++ version current going forward.
Improvements
- More reliable MSBuild/.NET host cleanup during builds - `build-nugets.bat`, `buildWorld.bat`, and `buildall-win32.bat` now do a better job of terminating stray MSBuild/.NET host processes before and after a build.
2.0.0.495 changes
8/13/26
- Title overlay rendering incorrectly on Fed Submit Mobile - `TopActivity.java` was updated to fix an issue with the title overlay display.
- TIFF/JPEG codec support restored in Windows OpenCV build - The `opencv` submodule was bumped to re-enable TIFF and JPEG codecs in the Windows build, which had previously been disabled.
2.0.0.494 changes
8/13/26
- `fsMobileTelemetrySimulator` (new project) - A standalone simulator that generates realistic mobile-transaction telemetry (`NormalScenario`, `LiveMode`, `SimulationModel`, `ModelValidator`, `SqlPersistence`, `StartupChecks`) for testing the new mobile telemetry dashboard without needing live field data. Ships with a database-create SQL script, a `Verify-SimulationRun.sql` verification script, a `README.md`, and a `BUILD_AND_DELIVERY_REPORT.md`. Refined over several follow-up commits (verification pass, simulator implementation updates).
- Mobile transactions dashboard page - A new **Mobile Telemetry** page (`MobileTelemetry.cshtml`) added to the Telemetry dashboard, backed by a new `MobileTelemetryRepository` and `MobileOverviewModel`, giving a first look at mobile transaction volume and status alongside the existing site telemetry.
- Agency filtering on the mobile telemetry dashboard - The Mobile Telemetry page can now be filtered by agency, with an accompanying `MobileTelemetry-AgencyReconciliation.md` doc describing how mobile transactions are reconciled to the correct agency.
- Dashboard timed out opening a site with a very large heartbeat - Sites with unusually large heartbeat files could cause the site-detail page to time out. `DashboardRepository.cs` and the new `TelemetryTextParser.cs` were reworked to parse large heartbeats more efficiently, and a proper error page (`Pages/Error.cshtml` / `.cshtml.cs`) was added so a failure now surfaces a clean message instead of a timeout.
- Repeated/recurring exceptions were inflating telemetry trends and health scores - Telemetry counted every occurrence of a repeated exception rather than counting each distinct exception once. `DailySummaryAccumulator.cs`, `TelemetryParser.cs`, `BatchRepository.cs`, `HealthScoreService.cs`, and `TelemetryIngestionService.cs` were updated to count **distinct** exceptions for both health scoring and telemetry trend reporting, so a single noisy/looping exception no longer disproportionately drags down a site's score or skews trend charts. Redundant/recurring reporting of certain exceptions was also cut down at the source.
- Truncating very large heartbeats to 20,000 lines was losing the summary footer - When a heartbeat file was truncated to the 20,000-line cap, the important summary information at the bottom of the file was being discarded along with the excess middle content. `BatchRepository.cs` now retains the bottom portion of the file (where the summary lives) in addition to the head, when truncating.
- Possible AV interference during image autocrop at Nolan - A site (Nolan) reported an image-processing issue suspected to be caused by antivirus software interfering with file writes. `FsImage.vb` hardens the write/confirm step before autocrop runs and now logs the file name on error, to better diagnose (and reduce the chance of) AV-related write timing issues.
- Ingest history window extended - `TelemetryMonitor`'s mailbox backfill window increased from 180 to 225 days, so ingest history now effectively starts from 2025-12-31.
- IB Scan Ultimate SDK upgraded to 4.4 - Updated native libraries (`libIBScanUltimate.so`, `libibscanultimatejni.so` for both arm64-v8a and armeabi-v7a) and the `iBScanUltimate-release.jar` on Fed Submit Mobile / Slapshot.
2.0.0.493 changes
8/12/26
- InstallShield now packages the Release build configuration (previously Debug for historical reasons) - Installers are updated to package the Release build. Portable PDBs are still included, so full debugging capability is retained; no functional changes.
- Installers were missing DLLs — 2.0.0.491 and 2.0.0.492 installs are broken; fixed here - The FedSubmit, IDMS, and RemoteID InstallShield/WiX packages (`Net481FedSubmit.wxs`, `Net481Idms.wxs`, `Net481Fscp.wxs`, `Net481CardServices.wxs`, `Net481CardWinServices.wxs`) were regenerated after reports of missing DLLs at install time; each of these installers was missing several required files in the 491 and 492 releases. Root cause: `fqboot.vbproj` referenced `Microsoft.SqlServer.DacFx`, which transitively pulls in `Microsoft.SqlServer.Types` (the native `SqlServerSpatial170.dll`, which is architecture-specific). `fqboot` only built `AnyCPU`, so consumers built as x86/x64 (e.g. FedSubmit) ended up pulling in `fqboot`'s `AnyCPU` output along with its `x86\`/`x64\`/`arm64\` subfolder copies of the native DLL, duplicating and in some cases conflicting with the root-level copy expected by the installer harvest step — resulting in the wrong (or missing) `SqlServerSpatial170.dll` being packaged. `fqboot.vbproj` now also builds dedicated **x86** and **x64** platforms (`<Platforms>AnyCPU;x86;x64</Platforms>`) alongside `AnyCPU`, so each consumer references the matching-architecture build of `fqboot` and only the single correct native DLL is copied into its output. All five installer `.wxs` files were regenerated against the corrected build output.
- **If you installed 2.0.0.491 or 2.0.0.492, re-install using this (493) build** to pick up the corrected installer packages.
- New `Telemetry` helper for no-PII Firebase analytics - A new `Telemetry.java` helper class adds structured Firebase Analytics event logging designed to avoid capturing personally identifiable information.
- Telemetry constraints applied and wired to first three call sites - `Telemetry.java`, `Globals.java`, and `MtxHelper2.java` updated to apply the agreed-upon data-collection constraints and instrument the first three call sites. A new `AnalyticsDataCollection.md` doc records what is and is not collected.
- Advertising ID and ad-consent defaults disabled - `AndroidManifest.xml` updated to disable the Advertising ID collection permission and set conservative ad-consent defaults, consistent with the no-PII analytics approach.
- Better heartbeat delivery for infrequently-connecting sites - Sites with infrequent connectivity were sometimes missing their heartbeat window. `FTPRoutines.vb`, `HandleHeartbeatUtil.vb`, `Heartbeat.vb`, and `MentalixMAPI.vb` now retry with explicit TLS when the default negotiation doesn't succeed, and add a backup heartbeat attempt at process exit for very short sessions, giving low-frequency sites a better chance of registering a heartbeat.
- Dashboard health scoring accounts for infrequent-heartbeat sites - `DashboardRepository.cs` / `HealthScoreService.cs` now treat a site with an infrequent-but-healthy heartbeat pattern as healthy in the download/health score, rather than penalizing it for the longer interval.
2.0.0.492 changes
8/10/26
- MOBE transaction support in IDMS - `Submit.vb`, `IdmsBase.vb`, `IDMS.proto`, and `GrpcIdmsService.cs` add support for the new MOBE transaction type end-to-end. MOBE transactions now appear in the transaction view list. Two new engineering docs (`MobeAddSubmissionProof.md`, `MobeEnrollmentImplementation.md`) capture the design and submission-proof trace.
- Mobile enrollment initial integration with contact capture - Checkpointed integration of mobile enrollment with the existing contact-capture flow on Fed Submit Mobile; the end-to-end enrollment flow is now working, including the biometric capture process and transaction handoff (`ExportBiometricCaptureProcess.java`, `MainViewModel.java`, `MtxHelper2.java`, `TopActivity.java`).
- Mobile enrollment as an optional mode in Settings - A new setting on Fed Submit Mobile lets an agency enable/disable mobile enrollment as an available capture mode, with supporting UI in `SettingsFragment`/`SettingsManager`/`TopViewModel` and new strings/preferences.
- Autoenroll coordination and cross-network locking - IDMS-launched autoenroll now waits for in-progress matching to complete before proceeding, and autoenroll locks transactions so multiple autoenroll runs across the network cannot race each other (`VfingEnroll.vb`, `IdmsBase.vb`, `fsIdmsGrpcWS/Service1.cs`).
- Enrollment trace - Additional tracing added around the enrollment flow to aid diagnostics.
- IDMS now pushes TOT specs to the mobile client via gRPC - New gRPC calls (`IDMS.proto`, `GrpcIdmsService.cs`) and a new `MobileSpecReader.vb` deliver transaction-type (TOT) specifications from IDMS to Fed Submit Mobile, backed by a new `MobileSpecTests.cs` unit-test project (`fsIdmsGrpcWS.Tests`).
- **MOBE rule specs added** and mobile spec queries refined over several follow-up commits.
- Demographic field specifications for IDMS-downloaded fields - Additional specification rules for demographic fields downloaded from IDMS to Fed Submit Mobile.
- `MOBE_MOBILE_SPECIFICATION_SOURCE_TRACE.md` - New engineering doc tracing the source of each mobile specification value back through IDMS.
- Ingest service running-state report and uptime - The Telemetry ingest dashboard (`TelemetryDashboardStarter`) now reports whether the ingest service is currently running and its uptime, via a new `IngestServiceMonitor` and `IngestServiceStatus` model surfaced on the dashboard home page (`Pages/Index.cshtml`).
- OrderForm crashed on price-list items marked "Quote" instead of a listed price - Recently added price-list items have a `NULL` `Domestic Price` to indicate the item is quote-only rather than fixed-price. `OrderForm.vb`'s `AddPriceTableRow1` was calling `FormatCurrency` directly on the (null) price, which failed. Both the base price cell and the derived GSA price-with-discount cell now check `IsDBNull` and display **"Quote"** instead of attempting to format a null value.
2.0.0.491 changes
8/8/26
- RISC and TXDPS responses properly received and displayed - `MtxHelper2.java` and `TopViewModel.java` significantly reworked to parse and surface search responses returned from both the RISC and TXDPS paths. A new `ExternalResponseClassificationTest` unit-test suite covers the response-classification logic.
- "Stop Waiting" button - A button is now shown during active searches that lets the operator cancel waiting for a pending external response (RISC or TXDPS) without aborting the entire session.
- DPS submit now conditional on RISC being enabled - The TXDPS submit step no longer fires unconditionally; it is only triggered when RISC is enabled in settings, matching the expected contactless pilot workflow.
- Return-candidate presentation overhauled - `HitAdapter.java` substantially rewritten with new card-style result/source badge drawables, redesigned `hit_item`, `header_item`, and `footer_item` layouts, and color/style tokens for result presentation. The upper-left corner home-screen overlay issue was also addressed.
- IDMS now authenticates Mobile ID clients via Firebase ID token - `GrpcIdmsService.cs` and `MtxHelper2.java` updated so the mobile app sends its Firebase ID token with each gRPC request; the IDMS service validates it before allowing access. This replaces the prior unauthenticated mobile path and ties each mobile search to a verified user identity. The mobile user’s email is now extracted from the token and logged against the search.
- Mobile user email logging fixed - A bug where the authenticated user’s email was not logging correctly for mobile sessions was identified and resolved in `GrpcIdmsService.cs`.
- `MobileSearches` database table - `IdmsBase.vb` and `GrpcIdmsService.cs` add a new `MobileSearches` table that records each authenticated mobile search with its owner identity, start status, and timing. Provides a durable ownership record that survives server restarts and allows the mobile client to reconnect to in-progress or completed searches.
- `ListMySearches` gRPC endpoint - New RPC added to `IDMS.proto`, `IdmsBase.vb`, and `GrpcIdmsService.cs` so the mobile app can retrieve the list of searches belonging to the authenticated user (including status and result summary). `StartStatus` is correctly set to `Completed` when the transaction finishes.
- `GetMySearchExternalResponses` gRPC endpoint - New RPC added to `IDMS.proto`, `IdmsBase.vb`, and `GrpcIdmsService.cs` that returns the durable external responses (RISC, TXDPS) stored against a search, allowing the mobile app to fetch results for searches that completed after the app was backgrounded or reconnected.
- `GetIdmsStatusReply` and search-status message tuning - `IdmsBase.vb`, `IDMS.proto`, and `GrpcIdmsService.cs` significantly updated to carry richer status information (agency status, search status, response timings) in the IDMS status reply. Agency status and search-status display messages refined over several passes.
- “My Searches” screen on Fed Submit Mobile - New `MySearchesActivity`, `MySearchesAdapter`, `MySearchesClient`, and `MySearch` model classes added to the Android app. The screen lists the authenticated user’s past searches with status badges and links to external responses. A new **My Searches** icon and nav entry added to the dashboard.
- `AgencyIdmsQueueTrace.md` engineering doc - New documentation (`docs/AgencyIdmsQueueTrace.md`) added covering the full IDMS queue trace, hybrid state management, and detailed reporting of agency-queue transitions to aid support and diagnostics.
- TCN free-up retried corrupt/missing EFT files on every restart - `FreeUpTcnForReuse` in `PubGlobals.vb` kept retrying TCNs with unreadable or missing EFT files after every service restart because there was no durable record that they had already been identified as bad. Two changes fix this:
- A new **`EftStatus`** column (`VARCHAR(20) NULL`) is added to the `Submission Transactions` table at startup (idempotent `IF NOT EXISTS` guard). When a TCN’s EFT is found corrupt (FPU error codes `-121` buffer overflow, `-122` unexpected EOF, or `-123` corrupt field — `-122` was previously missing from the check) the row is immediately stamped `EftStatus = 'CORRUPT'`; a missing EFT file is stamped `EftStatus = 'LOST'`. Both writes use an independent connection so the mark persists even though the caller rolls back the outer transaction.
- The step-1 candidate query now filters `AND ([EftStatus] IS NULL)`, so already-marked TCNs are excluded from all future restart cycles without accumulating in the in-memory skip sets.
- **`Microsoft.Data.SqlClient` updated to 7.0.2** (from 6.1.2) — Required several consequential project-level changes to resolve compile issues introduced by the new client API. Installer manifests (WiX `.wxs` files) updated accordingly across all six installers (FSCP, FedSubmit, CardServices, CardWinServices, IDMS, RemoteID).
- Broad .NET 10.0.10 package sweep - Multiple packages pinned to `10.0.0` were advanced to `10.0.10`: `Microsoft.Extensions.DependencyInjection`, `System.Collections.Immutable`, `System.Data.OleDb`, `System.DirectoryServices` (and `.AccountManagement`, `.Protocols`), `System.Drawing.Common`, `System.Management`, `System.Resources.Extensions`, `System.ServiceProcess.ServiceController`, `System.Speech`, `System.Threading.AccessControl`.
- **`Microsoft.Xaml.Behaviors.Wpf`** → **1.1.142** (from 1.1.135)
- **`Svg`** → **3.4.8** (from 3.4.7)
- **`Microsoft.SqlServer.DacFx`** → **170.4.83** (from 170.2.70; the conditional `netstandard2.1` override removed — single version now covers all TFMs)
- Installer manifests updated again to reflect the package sweep.
2.0.0.490 changes
7/31/26
- RPISC EBTS transaction assembly - `IdmsBase.vb` `BuildRiscBase`/`BuildRisc` now build an RPISC transaction for the contactless path: a contactless flag and a `TOT_RPISC` constant force `TOT=RPISC`, omit `2.096 RPR`, and exclude Type-10/Type-17 records (an RPISC transaction is Type-1 + Type-2 + Type-14 only). `NSR`/`NTR` remain `00.00` per EBTS 11.2 (1.011/1.012 apply only to Type-4/Type-7; a Type-14-only transaction carries its resolution in 14.009/14.010).
- Mandatory `14.901 FCT` stamped on contactless Type-14 - `FCT=1` is written on each contactless Type-14 record (mandatory when `14.003 IMP=43` per FBI Contactless Fingerprint Pilot spec v1.2 / ANSI-NIST SP 500-290e3). `NistType14Record.vb` preserves the FCT value and copies the permitted RPISC demographics.
- EBTS 11.2 declared in the NIST session domain - `fpuSession.vb` bumps `1.013 DOM` from EBTS 11.0 to the current CJIS standard **11.2** for all .NET-built transactions (required for the RPISC pilot). A new **`EBTS_VERSION`** environment variable overrides the default (e.g. `EBTS_VERSION=11.0`) with no rebuild required, following the existing `WANT_NIST_*` override style.
- RPISC response handling and independent RISC tracking - `IdmsBase.vb` / `TransactionProcessing.vb` now accept `RPISCR` responses and track the contactless RISC path independently of the standard RISC path.
- RPISC validation on both submit paths - `TxdpsRuleSpec.vb` and `IdmsBase.vb` validate RPISC on both the desktop and the IDMS submit path.
- RPISC routing through RISC submit / enrollment-exclusion paths - `Submit.vb`, `VfingEnroll.vb`, and `VfingMatcher.vb` route RPISC through the RISC submit path and exclude it from enrollment.
- RPISC excluded from the matcher - `FsMatcherMT.vb` / `IdmsBase.vb` exclude RPISC transactions from the matcher load and local-candidate filters (contactless pilot submissions are not matched/enrolled locally).
- gRPC endpoint hardening for RISC - `GrpcIdmsService.cs` now validates task ownership and guards against null RISC responses on the gRPC endpoints.
- Contact + contactless capture both working - Contactless and fingerprint-scanner capture are now available on separate buttons, with settings controlling which (or both) appear. A crash when attempting more than one capture/search flow was fixed.
- Agency setting for hardware finger-capture choices - On a contact scan there is no longer a need to select the capture type. The IB logo and SDK version were moved from the contact dialog into the About dialog.
- Settings consolidation - Contactless recalibrate and calibration validation moved into Settings; the clumsy in-capture calibration functions and the contactless-express disable option were removed; contact spoof settings moved to the Settings dialog. Contactless instruction display can now be turned off via a setting, and the settings screens have more detailed explanations.
- **Minimal demographics entry** added to Fed Submit Mobile (unneeded Skip button removed from demographics entry).
- Startup / login flow - New splash screen at startup that shows the login screen if credentials are not yet approved, plus an optional biometric login screen at every startup (with opt-out). Logout now clears data; Reset clears preferences and attempts to return to the initial install state; a new screen shows all preferences at once.
- Navigation & UI polish - Back button now works from the various contexts, the dashboard switched to an icon-based layout with improved icons and a better busy/searching dialog, and search now reports elapsed time alongside total hits at the end.
- IB Scan Ultimate for Android updated to 4.3.0.
- Type-14 index-only enrollment was dropping the right index finger - In `VfingLoad.EnrollNistFile`, the Type-14 loop tested the right index with `<>` instead of `=`, so in index-only mode (the default) it admitted every position *except* the right index; the thumb/index gate then narrowed to left index plus both thumbs, guaranteeing the right index was never enrolled. This affects 1000 ppi contact tenprints (which land in Type-14), not just contactless. The Type-4 path was always correct. Effect was degraded matching (subjects matched on ~half the intended evidence with lower fused scores), not an outright failure — which is why it survived since 2015. Fixed for future enrollments; already-enrolled subjects keep their template set until re-enrolled via `DoEnrollAll2`.
- Uninitialized `deleteType7` in `nistdump GetNistFile` - The y/n prompt condition was inverted: the answer was only parsed when `gets_wrapper()` failed or returned empty, so a real answer never set the flag and `deleteType7` held indeterminate stack garbage. A nonzero garbage value would silently delete Type-7 records from the EFT rewritten to `submit.eft`. The answer is now parsed on success/non-empty and `deleteType7` is initialized to `0` at declaration.
- `NumCompared` undercounted match threads - `FsMatcherMT.vb` now counts every match thread in `NumCompared`, not just threads that found a hit, giving accurate comparison totals.
- Remote ID search aborting on transient failures - Fixed the Remote ID search aborting on transient progress-poll failures; the terminal search-results fetch is now retried, and a splash biometric hang at startup was fixed.
- Contact print capture saved duplicate fingers - Fixed on Fed Submit Mobile.
- TXDPS: ADD and AOL fields reject disallowed special characters - `TxdpsRuleSpec.vb` now allows only spaces (no other special characters) in the ADD and AOL fields per TXDPS specs, addressing a recent Lake Jackson MNC rejection.
- Two RPISC regressions fixed - `IdmsBase.vb` regressions introduced by the RPISC validation and demographics commits were corrected.
- FedSubmit services auto-restart on failure - `bsvc.vb` / `FsSearchItemsInit.vb` add automatic service recovery: the fs services auto-restart on failure and surface an actionable *"not available"* message instead of an opaque error. The same Windows service recovery actions were also applied to the `fsIdmsGrpc` service (`ProjectInstaller`).
- `14.005 TCD` written and TOT/NSR/NTR derived from capture - `MtxHelper2.java` / `IdmsBase.vb` now write the mandatory `14.005 TCD` and derive `TOT`/`NSR`/`NTR` from what was actually captured.
- `buildWorld` restarts the fs services it stopped - `buildWorld.bat` and `buildWorldFast.bat` now restart the FedSubmit services they stopped, including on build failure, so a failed build no longer leaves services down.
- Android WSQ re-certification prep - Fixed the Android WSQ cert harness for the current `adb`, added a pending-cert rollover script, and bumped the ARM64 WSQ implementation number to **53042** for the 16 KB re-cert. Type-14 imagery is now compressed, annotated fingers declared, and all positions relayed.
- RISC channel emulator (in progress) - Early scaffolding for a transparent RISC-channel emulator was added for testing; one-job/database test-design artifacts were removed to reset the emulator to a transparent-channel scope. (Internal test tooling; not part of the shipping product.)
- **Noisy exception / logging cleanup** and multiple dashboard note updates across the release window.
- Release automation: Bitvise remote commands base64-encoded - A recent `release_manager.ps1` change introduced a quoting issue: remote commands containing spaces, quotes, and shell metacharacters were passed directly as native arguments, but Windows PowerShell does not escape embedded double quotes, so the command line handed to `sexec.exe` (and ultimately the remote `bash -c`) became malformed — producing *"syntax error: unexpected end of file"* and Bitvise exit code 1001. Remote commands are now base64-encoded (`echo <b64> | base64 -d | bash`) so the argument crossing the PowerShell → sexec → remote bash boundary contains no quotes or metacharacters.
- Release automation: `-SkipFtpUpload` and `-PublishOnly` resume modes - `release_manager.ps1` gained two switches for recovering a partially-completed release: `-SkipFtpUpload` skips the FTP upload step and runs only the remote `update.sh` against files already on the server; `-PublishOnly` is a resume mode that runs only the Bitvise publish/remote steps (reusing the already-built version with no bump) and deliberately skips git, build, website, WP changelog, the version/changes prompts, and release-log regeneration so it can never create a bogus new version entry.
2.0.0.489 changes
7/24/26
- Slapshot SDK upgraded to 5.1.10 - Full upgrade of the Slapshot capture SDK on the Fed Submit Mobile (Android) app: new `slapshot-core`, `slapshot-capture`, `slapshot-capture-face`, `slapshot-native`, `sciometrics-*`, `opencvlibrary`, and `wsq-android` binaries; refreshed Javadoc; and switched to **Mentalix LicenseSpring key activation** (`ls_activation.lic`) for the SDK. `ContactlessCaptureActivity` and `MainViewModel` were substantially reworked to line up with the new SDK API. Verified end-to-end on device (capture + calibration).
- Additional match diagnostics for multi-modal searches - `Matcher.vb` now emits substantially more diagnostic information for multi-modal (finger + face) match runs, making it possible to trace which modalities and thresholds contributed to a hit or a miss.
- `.iss` silent-install response files were not copied to the FedSubmit web folder - The `release_manager.ps1` change in 487 stages `FedSubmit64.iss` and `idms.iss` next to the built exes for the Help → Update self-installer, but `webtools/update.sh` (which runs on the download server after the artifacts are uploaded) never copied them into the `FedSubmit/` folder or the versioned `FedSubmit/$release/` subfolder — so the self-updater had nothing to fetch. `update.sh` now conditionally copies both `.iss` files into both destinations (best-effort — a missing `.iss` just falls back to interactive install, matching the release-side behavior).
- MAS upload CSV: "Order Date" header now marked required - `OrderForm.vb` was emitting the header as `"Order Date"` without the trailing asterisk that MAS uses to denote required columns. Corrected to `"Order Date*"` so MAS accepts the upload.
- Slapshot 5.1.10 build & capture-licensing crashes fixed - Several issues that prevented Capture Biometrics from working end-to-end on the new SDK:
- Firestore vs. gRPC protobuf duplicate classes - `protobuf-javalite:4.35.1` and `protolite-well-known-types:18.0.1` both shipped `com.google.protobuf.*` classes and resources, causing duplicate-class/duplicate-file build errors. Excluding `protolite` outright broke Firestore (removed `com.google.type.LatLng`). Now depends on a stripped copy of `protolite` (`protolite-wkt-stripped-18.0.1.jar`) with only the overlapping classes/resources removed; `javalite` is a strict superset of what was dropped.
- Missing `ViewModelProviders` - Slapshot 5.1.10 still calls `androidx.lifecycle.ViewModelProviders`, which was removed in lifecycle 2.3+. Added `lifecycle-extensions:2.2.0` (the last artifact shipping it); can be dropped once Sciometrics builds against a modern lifecycle.
- License activation race on first launch - `MainViewModel.init()` was activating the LicenseSpring key on an RxJava IO thread while `ContactlessCaptureActivity.onResume()` created `SlapshotCameraCaptureFragment` in the same lifecycle pass; the fragment's `checkLicenseAndThrow()` in `onCreateView()` is fatal, and first-time activation (~1.2s network round-trip) always lost the race. Capture requests are now deferred until licensing reports its outcome via a new `getInitializedLive()` `LiveData`. Activation exceptions are no longer swallowed; failures surface as *"Error licensing device"* rather than a crash.
- Stale native libs - `app/src/main/jniLibs` was a hand-copied snapshot where 10 of 14 libraries were 3–4 months behind, and `libmtximage.so` collided with the `:sdk` module's copy (AGP was picking the stale one). `jniLibs` now points at the canonical `fpdll.Android` output, and `pickFirst` is used for the library both modules supply.
- Calibration paths now gated on licensing, not just capture - `ContactlessCaptureActivity` was routing capture through the new "wait for license" gate introduced by the 5.1.10 fix above, but the `startCalibration()` and `startCalibrationValidation()` entry points were still fired directly from observer lambdas and could beat activation. Both were extracted into named methods and are now routed through a single `runWhenLicensed()` helper, so any Slapshot UI flow started while licensing is still in flight is deferred (or dropped with a log entry if activation ultimately fails). Verified on device.
2.0.0.488 changes
7/23/26
- Exclude specific finger positions from match - A new `IDMS_MATCH_EXCLUDE_POSITIONS` environment variable lets a site drop chronically troublesome positions (typically the little fingers) out of the matcher. Set the machine-wide variable to a comma-separated list of position names, e.g. `setx IDMS_MATCH_EXCLUDE_POSITIONS "LeftLittle,RightLittle" /M`. Matching for the remaining positions is unaffected.
- Face information included in multi-modal match hits - When a match is produced by combining fingerprint and face modalities, the hit record now carries the face score/details alongside the finger data so downstream review can see both.
- Dashboard home page shows officer count - The dashboard's home page now includes a total officer count alongside the existing summary metrics. Backing data in `Sites.csv` now carries both **officer** and **civilian** counts per site.
- Android app renamed to Fed Submit Mobile - The Slapshot Android app has been rebranded to **Fed Submit Mobile**: new launcher icon and artwork (`Fed-Submit-Mobile.png` / `fed_submit_mobile_icon.png`), updated app label and login/top-screen layouts, and refreshed `strings.xml`. No functional changes to matching or submission behavior.
- TXDPS: alias last name rejected for multiple hyphens - TXDPS enforces "Last name may contain only 1 hyphen" via MNC validation. The earlier fix covered only the primary name field; the alias name field could still submit a value with two or more hyphens and be rejected downstream. `EftsChecks.vb` now applies the same single-hyphen rule to the alias last name when `AppMode = "TXDPS"`, catching the error before submission with the message *"Only a single hyphen is permitted in alias name."*
- Brownsville: DXGI rendering error was masking the real exception - In `Application.xaml.vb`, the DXGI/DirectX exception handler was casting `ex.Exception` (the top-level dispatcher exception) to `COMException` when logging. In the Brownsville-reported case the DXGI `COMException` was actually an *inner* exception, so the outer cast produced an `InvalidCastException` that replaced the real error in the log. The handler now captures the specific inner DXGI `COMException` during the walk of `InnerException`s and logs its HRESULT/message directly, preserving the actual failure detail.
- Batch Job Manager crash on Update: "The ConnectionString property has not been initialized" - `COMMONDB` (the connection string) and `FSCPCommonDB` (the SQL object) are both populated from the same source, but historically the string was set by a racy separate read while the object was set by the async `AsyncFsConnectCommon` startup task. If the object won the race but the string read lost, `New SqlConnection(COMMONDB)` in `GetProcessDetailText` failed deep inside a `Fill` with an opaque SQL error, crashing Batch Job Manager when the operator pressed **Update** before startup finished. Fixed in two places:
- `bsqlcomm.FsConnectCommon` now assigns `COMMONDB = sqlConn` inside the same `SyncLock` that establishes `FSCPCommonDB`, so the string and object can never diverge. `ClearCommonDB` also nulls `COMMONDB` so a `NextDB` switch can't leave a stale value.
- `fsBatchJobManager.DoUpdateManifesto` adds a defensive guard: if `COMMONDB` is still empty when Update is pressed, it forces a synchronous `UpdateCommonDb()`; if it is still empty after that, it throws an actionable `ApplicationException` that the outer handler reports cleanly instead of the opaque SQL error.
- Fed Submit: cleaner message when another user's session is holding the app open - When Fed Submit starts and finds an existing instance running under a different Windows user account, it cannot terminate that process from the current session. Previously it emitted a raw suppressed error. `KillNonResponsive` now returns a `blockingMessage` describing exactly what the operator needs to do (ask the other user to close the program, log off/switch to that user, or restart the computer), and the caller displays it as a clean informational message instead of an exception report.
- Autocloseoff / long-query stability improvements - Additional adjustments in `BaseSqlDb`, `FsBoot`, and `HandleHeartbeatUtil` to keep the "auto close off" state consistent and reduce false long-query reports in the heartbeat path.
- "Edit and Resubmit" now reports the real cause when the EFT file is missing - `FsfViewForm.vb` and `ViewTransactionFormWPF.xaml.vb` previously swallowed a missing-EFT case into a generic *"Error attempting to edit and resubmit"* report. Both now catch `MissingEftException` explicitly and show the operator a clear message including the missing file path: *"Cannot resubmit: the fingerprint image file (EFT) for this transaction is missing from disk."*
- HTTPS downloads: 2-minute read timeout added to bound stalled transfers - `bftp/FTPRoutines.vb` now sets a 2-minute read timeout on the HTTPS download response stream so a stalled server-side transfer no longer hangs the download indefinitely; it fails fast and lets the normal retry path take over.
- Guard against listbox / model desync on Texas offense remove - (carried forward from 487 verification) `OffenseDetail.xaml.vb` bounds-check remains in place.
- TXDPS EBTS 11 schema: add SR (Sex Offender) category - `fbi_ebts.xsd` extended so Fort Worth SOR submissions no longer fail schema validation on the SR record type.
- TXDPS EBTS 11 schema: add MARK / SCAR / TATTOO bare SMT category codes - Requested by TXDPS Collin County; these bare category codes are now accepted by the schema.
- Moved from .NET 9 to .NET 10 builds - Solution and shared build props updated; package references bumped to their .NET 10 targets, plus related dashboard/ingest updates. A follow-up `net10 build cleanup` commit tidied up remaining warnings and stale references.
- `buildWorld.bat` output overhaul - `buildWorld` now writes a reduced, human-readable console/text log alongside a full MSBuild binary log (`.binlog`) for diagnostics, rather than dumping the verbose output to console. A new companion script, `buildWorldVerbose.bat`, restores the prior fully-verbose console behavior when needed.
- `coldbuildall` cleanup / speedup - Redundant steps removed; overall cold-build wall time reduced.
- Java / Android toolchain modernization - Multiple related updates:
- Updated Gradle to **9.3.0**.
- Migrated to the **Gradle daemon toolchain** so builds pick a consistent JDK across all build machines.
- JDK references now go through `JAVA_HOME` (currently JDK 25) instead of hard-coded paths.
- Removed legacy `ANT_HOME` references (unused since ~2015).
- Android: `ANDROID_PLATFORM` corrected to use `minsdk` rather than `latest`; **minSdk raised to 33**, compile/target raised to **37**. Additional Slapshot-specific Android build cleanup.
- Small AI-suggested fix in the (currently unused) A86 build path.
2.0.0.487 changes
7/8/26
- Help → Update Fed Submit self-update button - A new **Help → Update Fed Submit** menu item allows operators to silently install the latest Fed Submit release without running the full interactive installer. When clicked, the application downloads the current installer and the matching silent-install response file (`.iss`) and launches the installer with `/s /f1<Name>.iss`. The `.iss` file is generated per-release (see release-automation notes below) so it always matches the ProductCode of the installer being run, avoiding the dialog that InstallShield shows when the recorded ProductCode doesn't match the exe.
- Crash when opening the password-change form while it is already open (rare multi-user race) - `Magic.vb` uses a `Dictionary` (`MagicFormList`) to track open form view-models by name. `FrbasedAddForm`, `FrbasedShowForm`, and `FrbasedShowDialog` all called `MagicFormList.Add(frmName, ...)`, which throws `ArgumentException: An item with the same key has already been added` if the form was opened a second time before the first instance had finished closing — a race that can occur when two operators are logged on simultaneously and both trigger a password change, or when the form is re-opened in rapid succession. All three call sites now use the indexer (`MagicFormList(frmName) = ...`), which silently overwrites the stale entry instead of throwing.
- `ArgumentOutOfRangeException` crash when removing a Texas offense entry - `OffenseDetail.xaml.vb` removed the offense from the model using `RemoveAt(selIndex)` unconditionally. If the WPF `ListBox` selection index was momentarily out of sync with the model collection (e.g. after a rapid add/remove cycle), `selIndex` could equal `Offenses.Count`, causing an out-of-range exception. The remove is now guarded with a bounds check (`If selIndex < Offenses.Count`) before calling `RemoveAt`.
2.0.0.486 changes
7/2/26
- "Most recent heartbeat" query producing LongQuery log spam at SQL Express sites - The query that locates the most recent successfully-sent heartbeat was structured as a backward `Do While` loop, issuing two `ExecuteScalar` calls per iteration (one to check for a matching `Send Heartbeat` entry, one to step to the next-earlier `HEARTBEAT` row). On sites running SQL Express with `AUTO_CLOSE` enabled, each statement pays a fixed database open/close cost regardless of table size, causing the loop to accumulate ~66 LongQuery entries per heartbeat cycle even though the underlying `[Event Log]` table is only a handful of pages. The loop has been replaced with a single correlated `EXISTS` query: a `TOP 1 DESC` seek on the `IX_elog_Heartbeat` index with a correlated `EXISTS` subquery against `Send Heartbeat` entries that terminates on the first match — virtually always the most recent heartbeat — eliminating the LongQuery noise entirely.
- Compact exception messages incorrectly using the outer (generic) exception text - A prior cleanup to `GetCompactExceptionMessage` in `EventMsg.vb` left the outer exception as the primary text source and appended the innermost exception as a secondary note. For wrapper types like `HttpRequestException`, the outer message is a generic placeholder (`"An error occurred while sending the request."`) while the real cause lives on the innermost exception. The logic is corrected: the innermost exception is now used as the primary source when its message differs from the outer one, with the `"Exception"` suffix stripping and compact formatting applied to the innermost type name.
- Fed Submit now offers to restart itself after configuration is saved - Configuration values are cached in the process-wide `CLocal`/`CShared` singletons at logon and never re-read, so changes made in the configuration form did not take effect until the operator manually exited and relaunched. Fed Submit now prompts `"Restart Fed Submit now?"` after the Done button is pressed and configuration is persisted. The restart is handled cleanly: `RestartApplication()` launches a new instance with the original command-line switches plus `/waitforpid=<pid>`, then exits via `CommitSuicide` (releasing the single-instance mutex); `WaitForRestartPredecessor()` in `App_Startup` makes the new instance block until the old process exits before contending for the mutex, ensuring a deterministic hand-off. If a Create Transaction window is open at the time the operator clicks Done, the automatic restart is suppressed and a manual-restart reminder is shown instead so an operator is never interrupted mid-capture. Non-Fed Submit hosts (e.g. MSDPS) are unaffected and keep the original advisory message.
2.0.0.485 changes
7/1/26
- Epson card scanner (DS-50000 / Expression 13000XL): diagonal sawtooth shear on scanned images - TWAIN memory-transfer strips were copied flat at the driver's DWORD-padded row stride (e.g. 4952 bytes for a 4950-pixel row) into a line buffer laid out at the packed scan-line width, causing rows to drift within each strip and reset at strip boundaries — producing a characteristic diagonal shear pattern that repeated at every strip seam. `EpTwainGetNewImageData` now copies row-by-row, converting the driver stride to the packed stride. The fix is a no-op when the driver does not pad (width already a multiple of 4).
- Epson card scanner: vendor image-processing capabilities re-enabled after pixel-type negotiation (Appendix F compliance) - `ICAP_PIXELTYPE` negotiation causes the Epson TWAIN driver to silently reset its vendor image-processing capabilities (`COLORENHANCEMENT/2`, etc.) back on. The `disableCapabilities` + audit sequence is now re-run after the final pixel-type negotiation in `EpTwainScanSetup`, and the attach-time disable is reordered to run after `EpTwainInquire`. Capability verification now requires a clean read-back (`TWRC_CHECKSTATUS` is no longer treated as success); capabilities that cannot be read back are reported as `"unverified"` rather than silently assumed disabled. This corrects Appendix F compliance failures for the DS-50000 nfir=0 500/1000 ppi certification path.
- Epson scanlib: heap overrun, chunk-seam stripes, and vertical smear in IAFIS chunk smoothing - Three bugs in `sclibutil.c`: (1) the smoothing working buffers were allocated using `IgetWidth` (the full image width) rather than `outwidth` (the crop/output width), causing a heap overrun when `outwidth < IgetWidth`; (2) the previous-row pointer was not carried across chunk boundaries, so the first row of every chunk was smoothed against an all-zero row rather than the last row of the prior chunk, producing faint horizontal stripes at strip seams; (3) the row-swap after each output line was missing, so every row was blended against the same initial row rather than the accumulating prior row. All three are fixed; working buffers are freed in `ScLibImagIAFISCorrectTerm`.
- FTP/HTTPS download: chunked-FTP reconnect failure no longer aborts the update - When the `DownloadBigFile` path failed to reset the FTP connection before attempting a chunked download, it returned `False` immediately without trying the HTTPS fallback. The reconnect failure is now treated as a soft error: the chunked attempt is skipped and execution falls through to `TryDownloadViaHttps`, giving the site one further chance to complete the download.
- FTP/HTTPS download: FTP connection left dead after a successful HTTPS fallback - After `TryDownloadViaHttps` succeeded, the `RebFTP` object's underlying connection was still in the disconnected state left over from the reconnect attempt that triggered the fallback. Any subsequent `DownloadBigFile` call on the same object would immediately fail with "Not connected to the server." The FTP connection is now re-established (connect + login) after a successful HTTPS fallback so that the object is ready for further use.
- DNS `SocketException` errors no longer counted as unexpected exceptions - `SocketException` errors with codes `HostNotFound` (11001), `TryAgain` (11002), and `NoData` (11004) represent DNS resolution failures that self-recover and should be logged compactly, but they were not covered by the existing transient-exception filter in `IsKnownTransientException`. They are now matched by error code (not message text) and routed through the compact warning path alongside other transient network errors.
- Dashboard: sites that have downloaded and installed an update but are not yet on the newest release show ◯ instead of — - Previously the version column used a green ✔ for "running latest" and a muted `—` for everything else. Sites where `Current == EventApp` (the update mechanism is healthy and in sync, but a newer build has since been published) were indistinguishable from sites that are not downloading at all. A hollow circle (◯, grey) is now shown for the "in sync but not newest" state, reserving the `—` for sites where no staged update exists and the installed version is behind. The legend in the page header has been updated to explain all three states.
2.0.0.484 changes
7/1/26
- NullReferenceException crash when clicking Add Criminal Arrest in view mode - When a transaction was being *viewed* (not open for editing), mutating controls such as "Add Criminal Arrest" remained enabled. Clicking them crashed with a `NullReferenceException` because `TransactionCreateModel.NF.t2.CRIM_ARRESTS` is `Nothing` outside of an active edit session. A centralized `IsEditing` / `RegisterEditOnlyControls` mechanism was added to `TransactionUserControl`: Add and non-selection Remove buttons are now registered as edit-only and are disabled whenever no transaction is open for editing. The gate is applied on construction and re-applied on `Loaded`. Affected controls: `CriminalArrestDetail`, `CriminalCourtDispositionDetail`, all `CA*Set` panels, `SmtInfo`, `OptionalBioInfo`, `WisconsinOtherInfo`, `MississippiDrvrEmpResDet`, `CAVitalSubjectData`, `VitalSubjectData`, `CAOptionalBioInfo`, `ApplicantTab`, and `RegistrationTab`. "More…" popup-opener buttons remain enabled so detail is still viewable in read-only mode.
- Image Record Device (2.IMA) Make/Model/Serial subfields displayed without separators - The three IMA subfields (Make, Model, and Serial) are joined internally by the NIST non-printing unit separator and were being displayed run together with no visible delimiter. `EftSetDisplayConverter` (already used on the CA TransConfig screen) has been applied to the IMA binding on both the generic Optional tab (`OptionalTransProcInfo.xaml`) and the RPIS tab (`RPISInfo.xaml`), and `ValidationStep="ConvertedProposedValue"` was added so the Type-2 validator receives the reconstructed EFT value rather than the pipe-separated display string. IMA now displays as "Make | Model | Serial".
- Deleting a transaction with a missing or corrupted EFT blob caused a failing scheduled job with noisy error logging - When a stored transaction could not parse its EFT blob, `NF.t1.TCN` was empty. The delete path in `ViewTransactionFormWPF` passed the empty TCN to a SQL lookup that immediately failed, and a `DoNotRetainDeleteTransactionJob` was still enqueued with a blank TCN — causing it to repeatedly dequeue, fail with an unhelpful error, and retry. Fixed at three points:
- `TransactionCreateModel.DoNotRetain` now skips job creation when the TCN is `Nothing` or empty, logging a brief diagnostic instead.
- `ViewTransactionFormWPF` now attempts a direct DB fallback (`ROW_NUMBER`-keyed query) to recover the TCN when NF parsing yields nothing; if the fallback also fails the delete is aborted with a user-visible message rather than passing an empty string to SQL.
- `DoNotRetainDeleteTransactionJob.Execute` now validates the TCN at job start and calls `MarkFailNoRetry` immediately rather than hitting the database with a guaranteed-to-fail query.
- HTTPS auto-update downloads not retried on transient server errors - The HTTPS fallback download path (`TryDownloadViaHttps` in `FTPRoutines.vb`) previously made a single attempt and returned `False` on any failure, causing the update check to give up immediately on a temporary server hiccup. The download now retries up to three times with exponential back-off (500 ms → 1 s → 2 s). HTTP status codes `503 Service Unavailable`, `500 Internal Server Error`, and `429 Too Many Requests` are treated as transient and trigger a retry with back-off. Network-level exceptions also retry. Final failure (after all attempts exhausted) is still logged as an error as before.
- EBTS 11 XML: `MNU` `PersonIDCategoryCode` reconstructed incorrectly for non-MSDPS transactions - The `NiemPersonOtherIdentification` constructor that splits a NIST `MNU` value into `PersonIDCategoryCode` and `IdentificationID` had the two sub-units swapped. For MSDPS transactions the value is stored as `code` + unit-separator (Chr(31)) + `value`; the old code assigned `items(0)` to `ID` and `items(1)` to `Code` — the opposite of the correct mapping — so the category code ended up in the ID field and vice versa. Additionally, non-MSDPS transactions store the value in hyphen-delimited format (`TX-1234567`), which the old code did not handle at all; it treated the entire string as a single token, producing a blank `Code`. Both formats are now handled correctly: the unit-separator path assigns `items(0)` → `Code` and `items(1)` → `ID`; the hyphen-delimited path extracts the leading two characters as `Code` and the remainder (stripping a leading hyphen if present) as `ID`. This was causing EBTS 11 XML validation errors for BJSO and other non-MSDPS sites.
- EBTS 11 XML: repeating fields capped to schema `maxOccurs` limits - The EBTS 11 schema imposes per-field caps on several repeating elements in `EbtsRecordSubject`. When a NIST record contained more entries than the schema allows, the XML serializer would produce a document that failed schema validation. Excess entries are now silently discarded in the outbound XML using LINQ `Take`; the NIST record in the database is the authoritative store and is never modified. Known caps enforced: `AKA` (PersonAlternateName) = 10, `DOB` (PersonBirthDate) = 5, `CTZ` (Citizenship) = 10, `MNU` (PersonOtherIdentification) = 4, `SOC` (OrganizationIdentification) = 4. This was causing EBTS 11 XML validation failures for Bastrop and other sites with subjects carrying many aliases.
2.0.0.483 changes
6/25/26
- Neurotec license failure no longer disables sequence checking for the rest of the session - If the Neurotec local license server was temporarily busy at the moment the Extractor or Matcher was first initialized (e.g. another process was releasing its license), the failure was treated as permanent: sequence checking was silently skipped for every transaction until the operator logged off and restarted the program. The failure is now treated as transient: after a 5-minute cooldown the license acquire is retried automatically. Once it succeeds, sequence checking resumes normally with no operator action required.
- Neurotec license failure no longer logs a redundant error for every finger - A 10-print scan enrolls all 10 fingers on concurrent threads. With no thread synchronization, all 10 threads simultaneously detected the failure and each independently logged the "extractor unavailable" message, flooding the telemetry log with duplicate entries. A double-checked lock now ensures the failure is detected and logged exactly once, regardless of how many threads call the extractor at the same moment.
- Telemetry ingest service no longer hangs indefinitely on a stalled Azure/Graph/SQL call - Each poll cycle is now wrapped in a hard 5-minute cancellation timeout. Prior to this change, a hung Azure.Identity token refresh (which can block 30–60+ minutes under its internal retry policy), a stalled Microsoft Graph HTTP response, or a blocked SQL call could freeze the ingest service silently and indefinitely until a manual service restart — sometimes going undetected for days. The timeout ensures the service always self-recovers within a predictable window.
- Telemetry ingest service backs off when consecutive failures accumulate - After 5 consecutive poll failures the service logs a `CRITICAL` warning (identifying it as a persistent connectivity issue rather than a transient one) and extends the poll interval up to 10 minutes. This prevents flooding the Windows Event Log with repeated error entries while SQL Server or Graph is recovering. The service logs a recovery notice and returns to normal polling as soon as a cycle succeeds.
- Dashboard home page now reliably auto-refreshes after browsing away - The `<meta http-equiv="refresh">` tag used for the 60-second auto-refresh was silently suppressed by two common browser behaviors: (1) **bfcache** — navigating to a site detail page and pressing Back restores the home page from a frozen in-memory snapshot where the refresh timer is not running, leaving the page stuck on stale data; (2) **background-tab throttling** — Chrome, Edge, and Firefox aggressively throttle or skip meta-refresh in inactive tabs. The meta tag has been replaced with a small JavaScript handler that covers all three cases: a `setTimeout` for normal foreground use, a `visibilitychange` listener that reloads immediately if the page is overdue when the tab regains focus, and a `pageshow` listener that reloads unconditionally on a bfcache restore.
- Dashboard MNC/MRJ reporting significantly enhanced - The site detail page now provides substantially more context when a No-Candidate-Match (MNC) or Match-Rejected (MRJ) result is returned:
- MNC and MRJ events from the past 14 days are listed individually in the site detail panel, with click-through navigation directly to the relevant heartbeat entry.
- The matching heartbeat is automatically highlighted and scrolled into view when navigating from an MNC/MRJ flag. Both the mail subject and the raw log body are searched for the highlight phrase, resolving cases where MNC/MRJ identifiers appear only in the subject line.
- MNC lines are highlighted in purple and MRJ lines in pink in the heartbeat log viewer, making them immediately visible within a long log.
- Badge counts on the dashboard home page now reflect the 14-day rolling window.
- Release Verification: match-comparison dialog opens on double-click of Match Score column (not Subject Name) - The results-grid double-click handler previously selected its action by hard-coded column display index, and a column reorder caused the "Match Score" and "Subject Name" columns to swap. The handler now keys off the column header text, so double-clicking "Match Score" opens the match-comparison dialog and double-clicking any other column opens the transaction — correct regardless of column order.
- Multi-finger fusion diagnostics for Release Verification matching - When the `IDMS_MATCH_DIAGNOSTICS` environment variable is set, the matcher now logs per-candidate fusion detail for identify operations: fused score, probe finger count and positions, how many fingers actually contributed to the fused result, and per-finger mated-minutiae count and rotation angle. This makes it straightforward to confirm that all expected fingers are fusing (vs. only one finger contributing or a missing-finger penalty reducing the score). Off by default; no log output unless the env var is set.
- Neurotec image-dimension error reporting improved - When a fingerprint image exceeds Neurotec's maximum supported vertical dimension the error is now reported with the actual image size and the limit, making it actionable without needing to look up the constraint. The over-size image is also saved to a diagnostic temp file for offline inspection.
- OrderForm release automation script - A new PowerShell script (`deploy_orderform_smee.ps1`) automates the OrderForm deployment to SMEE: backs up the existing installation, copies the x64 Release build, and verifies the result. Supports `-DryRun` for pre-flight validation without touching any files.
- OrderForm automatically copies monthly commission spreadsheet to accounting share - Each time the daily OrderForm close process runs, it now checks whether the current or previous month's commission spreadsheet (`TM-commission-<Mon><YY>.xlsx`) has been posted to the encrypted closing drive (`\\aristotle\encrypt\Closing\<year>\<month>\`) and, if so, copies it to the accounting share (`\\adonis\Accounting\Closing\<year>\<month>\`), creating the destination folder if needed. Repeated runs are idempotent — the copy is skipped if the destination already exists. Errors during the copy are reported in the daily email body without aborting the rest of the close process.
- Canon SDK `INVALID_HANDLE` events silently ignored after camera disconnect - When a camera is powered off or its USB connection is dropped, the Canon SDK can fire a property-change callback on an already-closed handle (`INVALID_HANDLE`). The camera-disconnect event (`INTERNAL_ERROR` or `COMM_DISCONNECTED`) has already been delivered and the operator already notified by that point; the subsequent stale-handle event is now silently discarded in `ExceptionHandling.cs` rather than being logged as a secondary error, eliminating the redundant `INVALID_HANDLE` entries in the telemetry log.
2.0.0.482 changes
6/19/26
- Fixed WCF Release Verification searches spinning at "100% but no results" (regression from 480) - The per-task hardening in 2.0.0.480 removed the old "taskId 0 → current search" behavior. That broke the WCF Release Verification path: its progress poll calls `FindSearchJob`, which now returned nothing, so `IDMSSearchProgress` returned 0, progress never reached the start count, and the search spun at 100% without ever fetching results. The gRPC clients send a real task id (and `IsValidTask` rejects 0), so they were unaffected — which is why this case was missed in the 481 fixes. A deliberately narrow compatibility fallback (`ResolveJob`) was restored, used only by the read-only per-task methods (progress, results, RISC):
- It falls back **only** for taskId 0 — never for −1 (the "busy"/no-job sentinel), and never for a positive-but-missing id, which is genuinely gone and must not resolve to another job.
- It falls back **only** when exactly one job is registered; with more than one job the request is ambiguous, so it returns nothing rather than cross-route to another client's search.
- **Job lifecycle stays strict where it matters.** `IDMSSearchEnd` remains exact (used by the gRPC End path, so a stray `End(0)` can't tear down another client's job); a separate WCF-only variant permits the taskId 0 fallback. Because all current WCF clients guard End with taskId > 0, a zero-task client never calls End, so the results-fetch now removes the job after returning results on the taskId 0 path — closing the resulting leak without a client change and keeping the job table clean so the next zero-task search isn't ambiguous. The `taskId > 0` callers keep their normal End-driven lifecycle, and gRPC ownership validation is unchanged.
2.0.0.481 changes
6/19/26
- Release Verification: a failed IDMS search is no longer reported as "no record found" - The new per-task validation added in 2.0.0.480 (reject when the task/client id don't match) exposed several latent bugs in the Release Verification clients that the old "taskId == 0 → most-recent job" behavior had been masking. For a release-verification system this is the critical one: a service-reported progress/results failure (e.g. "Bad clientID and/or taskID") was being ignored and the search still reported success/no-match. Such failures are now tracked and surfaced as a failed search, and the gRPC results reply's `Failure` field is now checked (previously only the WCF path checked it). Fixed across the deployed fsApps client and fsnet:
- **Task id now reaches the caller (fsnet).** `TransmitAndEnroll` took the task id `ByVal`, so it never propagated back: the WCF path then ran progress/results/End with task 0 (spinning forever, with `IDMSSearchEnd` skipped) and the gRPC enroll error was dropped. It is now passed `ByRef` (matching fsApps), with both the task id and enroll error set from the gRPC start reply, and each request uses the per-search local task id rather than a possibly-stale class-level field.
- **Progress requests now carry ClientID + TaskID** instead of relying on the `clientId = 0` ownership bypass.
- **Failed searches now release the server job.** The `Catch` blocks tore down the transport before the `Finally` ran, so `IDMSSearchEnd` was skipped (and could throw a null-reference) on any failed search. The transport is now left intact through the catches; the `Finally` best-effort ends the task (guarded) and then tears down, so the server job is released whenever the channel is still alive.
- Configurable matcher thread count (`IDMS_MATCH_THREADS`) - The Neurotec matcher's maximal thread count can now be capped via the `IDMS_MATCH_THREADS` environment variable. A non-negative integer overrides the default; an unset, blank, or invalid value leaves the default in place and is noted in the debug log (which also records the initial and applied thread counts). The override is now applied before the matcher is initialized so it takes effect.
2.0.0.480 changes
6/18/26
- Fixed plain/slap prints (FBI 8x8) printing low and clipped at the card bottom - On some Cross Match Guardian captures, a misaligned silicone membrane leaves a thin full-width dark line at the platen edge. The auto-crop's white-trim anchored the crop on that line and never removed the white gap below it, so the print-box height clamp kept *line + white gap + upper fingers* and discarded the lower fingers, jamming the ridges against the card edge. A thin edge-line guard now skips a thin leading artifact (≤ 0.10") followed by a clear white gap (≥ 0.15") and advances to the real content on all four edges, bailing out if sustained content sits at the edge so genuine prints are never trimmed. The fix is ink-density based (robust to threshold noise and a faint line + halo) and is a pure crop with no rescaling, preserving FBI 1:1.
- Print Preview now matches the printed output - Preview rendered slaps with a hardcoded top crop, duplicating the original native bug (membrane line + white gap retained, fingers pushed low). It now uses the same guarded native auto-crop for the four-finger slaps, keeping the existing pinky-side/height clamp.
- Fixed a dead branch in `RenderPDF` where the right-four case re-checked the left-four condition, so the right-four width clamp never ran.
- Fixed Release Verification right-index-only search returning an empty probe - With only the right index captured, the finger image was held in a fixed right slot while finger positions were packed by finger count, so the image was paired with an uninitialized finger-position code (FGP 0). The IDMS server's finger-range filter then dropped that record, producing an empty probe template and a "Failed to create template" error. Finger images are now packed by finger count so image and position stay aligned for any single finger; two-finger and left-only captures are unchanged, and right-only now works. Applied to all three Release Verification clients.
- Fixed stale quality label on the Release Verification Clear button - Clearing a captured index finger cleared the image but left the prior capture's quality label text and colored border, so a cleared finger still showed a stale "Very Good (nn)" indicator. The Clear handlers now reset the label content and revert the border to its pristine state.
- Friendlier message when a probe yields no usable biometric - When the probe produces no extractable biometric, the IDMS service returns a raw SDK string ("Failed to create template: None") that the clients surfaced under an "Unexpected error from IDMS service" header. This is now translated into a plain-English, modality-neutral message ("No usable biometric could be extracted … fingerprint, photo, or iris") across all three Release Verification clients and the Android (Slapshot) client. Modality-specific extraction failures still hit their own branches first, and the full SDK detail still goes to the logs.
- IDMS searches now queue instead of being rejected - The matcher uses process-wide static state, so only one search can run at a time. Previously a second concurrent search was rejected outright. A process-wide search slot now lets a second search wait its turn (bounded at 120s) and then run normally, falling back to an "Another search is in progress" reply only if the wait is exceeded (guarding against a wedged search). The slot is released exactly once on every exit path, and inline enrollment still happens under the slot so the synchronous empty-probe error contract is preserved. Task identity was hardened alongside this: task IDs are now generated atomically, and an unknown/zero task ID resolves to "no job" instead of silently routing to the most recent job (which would be wrong once searches queue).
- Major IDMS search performance improvement - The same per-hit columns (NIST, TOT, name, SID, ID, date) were previously fetched two to three times per hit across the search stages — roughly 4N + 5C individual round-trips per search. They are now fetched once via two chunked, parameterized batch queries (500 TCNs per chunk to stay under SQL Server's parameter limit) and reused by the downstream stages, which now do zero database round-trips. A typical search drops from about 1,770 round-trips to 2, with identical results (TCNs, scores, order, TOT, SID).
2.0.0.479 changes
6/16/26
- Cleared stale palm/finger "UP" annotations on recapture - The live-scan → Fed Submit annotation channel was set-only: the create form's loops only ever called the annotation setters with `setting:=True`, so when prints were skipped (e.g. "Unable to Print" palms) and then recaptured, the recaptured prints were not in the UP/XX lists and nothing ever cleared their flags — leaving the toggles checked even though the prints had now been captured. (The image side already replaced the old print correctly; only the annotation leaked.) `LiveScanTimerWPF` now records every print successfully captured this pass (via an optional `ByRef capturedClean` list, so existing callers are unaffected), and `CreateTransactionWPF` clears UP and XX for each captured print before re-applying skip/partial annotations. Skipped and partial prints are still re-flagged by the existing loops. Full-palm cases (right/left) intentionally remain unaffected, since full palms are never captured or skipped by live-scan.
2.0.0.478 changes
6/16/26
- Fixed exception spam when navigating validation errors (regression from 477) - The Errors-list navigation rework in 2.0.0.477 walked the visual tree as a fallback for any object that was not a `FrameworkElement`/`FrameworkContentElement`. A `Grid` surfaces its `RowDefinition`/`ColumnDefinition` objects as logical children, and those are neither elements nor `Visual`s, so `VisualTreeHelper.GetChildrenCount` threw "… is not a Visual or Visual3D" for each one. The exception was suppressed but still logged, flooding the heartbeat (dozens per click in the error list) and slowing the focus recursion. The visual-tree fallback is now guarded with a `Visual`/`Visual3D` check, so definition objects yield no children and the recursion stops cleanly. Navigation behavior is unchanged — those objects hold no focusable field.
- Fixed live-scan Skip button being silently ignored - The live-scan drivers kept a private `NextButtonEnabled` gate field that was updated per-print in the scan loop, while the visible button (`skin.NextButtonEnabled`) was only set once at task setup. The two could diverge, so a Skip click landing between prints — or on a task that never re-enabled the private field — did nothing. `skin.NextButtonEnabled` is now the single source of truth across all three guarded drivers (EssentialsSDK, LsIb, LsJenetric): the skip handler is gated on it and the visible button is toggled per-print in the scan loop. A dead duplicate disable in the EssentialsSDK/IB `Finally` blocks was also removed.
- fsLiveScan host program cleanup - Several robustness and correctness fixes to the live-scan host:
- Removed an unreachable duplicate `id500` branch in `LiveScanDeviceType`.
- `UpdateSerialNumber` now uses a parameterized `LocalConfigSettings` UPDATE instead of string-concatenating the serial and machine values.
- `StartUpForm` now disposes the single-instance mutex on all paths (only the owner releases it) and guards the directory name before writing `error.txt`, so an early failure can no longer mask the real exception.
- `StartUpForm` now calls `Fpu.Term()` on the non-FSRV path to match the FSRV path, so both capture paths release `Fpu` deterministically.
- `SaveThePrints` now honors `MTX_SAVE_LIVESCAN_PRINTS` on the callback path (previously dead because the TCN was not available there).
2.0.0.477 changes
6/16/26
- Fixed Errors-list navigation in the Create Transaction dialog - Clicking an entry in the Errors list is meant to switch to the offending field's tab and focus that field, but it did not work reliably. Several root causes were corrected: the recursive focus helpers discarded the result of their nested calls (so a match found in a nested container reported failure and the scan kept running), the tab-skip test compared the same property to two values with `And` (always false, so image-only tabs were never skipped and `tiSMTsTab`/`tiSmtsTab` never matched), and focus was set synchronously inside the `SelectionChanged` handler so the ListBox click immediately stole keyboard focus back. The two near-duplicate helpers were replaced with a single recursive routine that propagates its result, selects every tab on the path, and queues the focus via the dispatcher so it survives the click. The search now walks only the logical element tree instead of descending into every control's template, which had made navigation extremely slow.
- Fixed Errors-list focus on double-click and re-click of an already-selected error - `SelectionChanged` does not fire when the already-selected error is clicked again (or on the second click of a double-click), so those cases are now handled explicitly, and field focus is deferred at Background priority so it survives the second click of a double-click.
- Fixed template parsing breaking on a blank line after a comment - A blank line immediately following a comment line no longer breaks parsing of a `.tpl` (or `.crd`) file.
- IMA field now displays separators correctly - The IMA field now renders strings containing `|` characters as the intended separators.
- Fixed FPUTIL_VERSION mismatch (`Expected: 3.3-186, Actual: 3.3-187`) - `Mentalix.FUPI.Interop` carried its own stale copy of `fputildefs.vb` that had drifted from the authoritative `fpbase` copy and the native `fputil.dll`. The duplicate file was removed and the single `fpbase` copy is now linked into the project so the version definitions can no longer diverge. The interop package version is now derived from `FPUTIL_REVISION` (`3.3.<rev>`), so a native-revision bump always produces a new package version and lands in a distinct NuGet cache folder — eliminating the "same 1.0.0, different content" stale-cache mismatch.
- Fixed x64 demo/example deployment in the Fingerprint API Bundle installer - The 64-bit conversion left sample/example installer components shipping stale 32-bit DLLs and missing newly required dependencies, so the prebuilt demos crashed on launch. Each component was reconciled to its real x64 build closure, per-example launcher scripts now prepend `lib\x64` (and the Intel redist dir where needed) to `PATH`, and each example folder's own 32-bit DLLs — which shadowed `lib\x64` and caused `0xc000007b` — were stripped. The reconcile now runs automatically as part of the release build so a normal build can no longer ship a stale component.
- Search Transaction redesigned as a criterion row builder - The drag-and-drop field palette was replaced with an explicit "Add Criterion" row builder. Each row is `[AND/OR | Field | Operator | Value | x]` (the first row reads "Where"), which is more discoverable, keyboard-friendly, and supports OR between criteria while reusing the existing query engine unchanged. This change also includes:
- Date-of-birth range/equality search now works - `DateOfBirth` is an 8-character EBTS string stored as `YYYYMMDD` at most sites but `MMDDYYYY` at some. The column is now normalized to `YYYYMMDD` in SQL and compared against `yyyyMMdd` bounds, so `BETWEEN` sorts chronologically regardless of how the value was stored.
- New "Response Type" search field - Matches the response's Type of Transaction (e.g. `SNF`) via the existing Response Transactions join; results remain the matching submission transactions.
- Template engine: city/state/zip and last-name punctuation tokens (TPL rev 14) - Added two range-relative punctuation tokens to the template `fmt` column so a template can request per-line punctuation without the engine knowing any agency/state field semantics: `csz` (City, State Zip-Xzip) and `lcomma` (comma after the first subfield, e.g. `Last, First Middle Suffix`). Subfield assembly now trims each subfield, drops empty/whitespace-only subfields, and emits a separator only between two non-empty subfields — avoiding a dangling hyphen when X-ZIP is absent, a stray leading comma when the city is blank, and double spaces from empty middle subfields (per the CA BID-9 spec). `FTREV` was bumped 13 → 14; a template declaring rev 14 will not load on a pre-14 engine.
- Template engine: general field-format patterns - Added a pattern language (selected when a field's `fmt` contains `[`) that places arbitrary literals around or between a field's subfields and drops them cleanly when a piece is empty: `%1`–`%9` reference subfields, `[ ... ]` is an optional group emitted only when every `%n` inside is non-empty, and `\x` is a literal character. This resolves empty-subfield ambiguity that `csz`/`lcomma` cannot express in general (e.g. `[(%1)]%2` → `(US)Y` with the parentheses suppressed when no country is present).
- Template engine: `#` character-mask format token - A `fmt` value containing one or more `#` is now treated as a character mask: each `#` is replaced by the next alphanumeric character of the field value and every other mask character is emitted literally. This gives templates a simple way to punctuate fixed-length values such as phone numbers and SSNs (`(###)###-####` → `(123)123-1234`, `###-##-####` → `123-45-6789`). Only letters/digits are consumed (NIST separators, whitespace, and existing punctuation are skipped), literals are held until the next `#` consumes a character so short values leave no dangling separator, and `\#` escapes a literal `#`. No template-column change and no `FTREV` bump.
- Template engine: last-N characters via negative field start - In the substring path, a negative `fieldstart` now counts from the end of the value, so `fieldstart=-N` with `fieldlen=N` prints the last N characters (e.g. the CA SID/CII "print last eight characters" requirement). Positive `fieldstart` is unchanged, and bounds clamping was added so a value shorter than the requested window yields the available characters instead of reading past the end.
2.0.0.476 changes
6/3/26
- Reduced noisy ready-file purge errors during EAR import cleanup - READY files are empty sentinel files and can legitimately already exist in the purge folder from a prior cycle. The purge path now discards the source READY file when the destination sentinel already exists, and uses the quieter purge move helper for EAR/EARACK archive moves. This avoids unnecessary error noise while preserving the retry behavior for meaningful file moves.
- Quieted transient SFTP remote delete permission errors - When an SFTP server reports `Cannot delete remote file` with `Unable to access object permissions` during remote file cleanup, the system now treats it as a transient warning and retries on the next cycle instead of logging a full exception stack. This was observed on Tyler Tech EAR pickup directories.
2.0.0.475 changes
6/2/26
- Fixed manual submit failing to create TXDPS job when a LocalAFIS/JMS job is pending for the same TCN - The duplicate-submission guard used `HasPendingJob(tcn, "Submit")` to block a second submit job from being queued. However, all submit job variants (LocalAFIS, JMS, PhotoExport, TXDPS, etc.) are stored with `JobType = "Submit"` in the jobs queue, so this check would match a LocalAFIS job created by `HandleNonSubmitExports` and incorrectly suppress the TXDPS submission job. The guard has been removed; the TXDPS job is now always queued unconditionally, matching the pattern already used for LocalAFIS and JMS jobs below it.
- Fixed EBTS 11.0 XML write errors for SMT and subject elements - Two classes of EBTS 11.0 serialisation failures were corrected:
- The `PersonPhysicalFeature` element emitted `PhysicalFeatureDescriptionDetail` as a child, which the FBI EBTS schema does not permit at that position (expected `PhysicalFeatureCategoryCode` / `PhysicalFeatureSize`). The element namespace was also wrong (`biom` instead of `ebts`). Both have been corrected.
- The `EbtsRecordSubject` element properties lacked explicit `Order` attributes, allowing the XML serialiser to emit them in an undefined order that could fail schema-order validation. Explicit `Order` values have been added to all properties.
2.0.0.474 changes
5/29/26
- Fixed SiteMessage regex parsing in telemetry dashboard - When a heartbeat contained a blank `SiteMessage:` line (no text after the colon), the regex pattern used `\s*` after the colon, which matched across newlines and incorrectly captured the following line as the message body. The pattern now uses `[ \t]*` (horizontal whitespace only) to prevent cross-line matches. This ensures blank site messages are parsed correctly and do not pull in unrelated heartbeat content.
- Preserved LCM.xml fallback banner when no site message is published - When the site-specific message endpoint returns 404 (no message published for this serial number), the download logic was incorrectly clearing the existing banner by returning an empty string. It now returns `Nothing` so the legacy `LCM.xml` banner can reassert as the fallback. An explicitly published empty string (from the dashboard) is a separate case handled by the JSON payload itself and will still clear the banner as intended.
2.0.0.473 changes
5/28/26
- Fixed heartbeat exception when export responses folder is inaccessible - The heartbeat writer threw an unhandled exception if the JABS export responses folder path did not exist or could not be enumerated. The folder check is now wrapped in a try/catch so a bad path is reported as an informational note (`ExportResponsesCached check failed: …`) rather than crashing the heartbeat write.
- Cleaned up date entry validation in fsExpunge search - The Quick Search date fields now validate input before allowing the search to proceed. If a date field contains text that cannot be parsed, a descriptive warning dialog is shown and focus is returned to the offending field. A start-date-after-end-date condition is also caught and reported. Previously, invalid date text was silently ignored or passed to the query, producing unexpected results.
2.0.0.472 changes
5/27/26
- Fixed RefreshSmts NPE on post-save navigation with empty stran table (INC3201725) - When a freshly installed workstation saved its first transaction, the navigation logic attempted to load RowNumber=0 due to a stale cached TotalRecords value, returned zero rows from SQL, and crashed on a null reference in RefreshSmts. The setter now refreshes TotalRecords synchronously from the database before clamping when the requested value exceeds the cached count, aborts navigation with a diagnostic log entry if the table is genuinely empty, and adds defense-in-depth null guards in RefreshSmts matching the existing RefreshMugshots pattern. LoadTransactionByRecordNumber now logs a diagnostic heartbeat event when a zero-row query occurs, improving incident diagnosis.
- Removed Angle Offset field from SMT capture form - Angle offsets are only valid for FACE-type photos per the ANSI/NIST-ITL 1-2011 spec section 8.10.21 ("This shall only be used for frontal facial images"). The field has been removed from the SMT form to prevent operators from accidentally entering a value that would be rejected by JABS or other downstream systems.
- Fixed noisy exception on null image passed to autocrop after prior failure - When a prior capture failure left a null image reference, a subsequent autocrop attempt threw a secondary exception that polluted the log. The autocrop path now checks for a null image and skips silently.
- Fixed HTTPS update download file name construction error - An error in the construction of the download destination path when fetching updates over HTTPS caused the download to fail. Fixed.
- IDMS connection logging improved - Connection failures and retries to the IDMS service are now logged with more detail and surfaced to the user with a clearer message.
- Noisy camera exceptions quieted further - Additional transient camera exception messages are now suppressed from the log after a prior failure has already been recorded, reducing log clutter during sessions where camera hardware is unavailable.
- Site-specific notes can now be published from the telemetry dashboard and delivered to workstations - Support staff can write per-site notes in the dashboard and publish them to the website. When a workstation checks for updates, it now pulls the site-specific note from the website (based on the workstation's hardware serial number) and displays it prominently in the main window. Notes are stored on the website as the source of truth and cached in the telemetry database. Multi-line messages are supported.
- Workstations poll for site-specific notes every 15 minutes - The application now automatically refreshes site-specific notes from the website every 15 minutes, so recently published notes appear without requiring a manual update check or application restart.
- Dashboard polls for site-specific notes every 15 minutes - The dashboard index page now automatically refreshes site-specific notes from the website every 15 minutes, so recently published notes appear without requiring a page reload.
2.0.0.471 changes
5/22/26
- Fixed non-standard photo dates in FS-XML import - Some FS-XML photo records contained date values in non-standard formats that caused parsing failures during transaction import. The system now handles these edge cases gracefully and normalizes the date values appropriately.
- Fixed site identification issue with dual-location agencies sharing email addresses - When a site operated both juvenile and adult facilities using the same email address for heartbeat reporting, the telemetry system could not reliably distinguish between the two locations, resulting in incorrect site consolidation in the dashboard. Improved site identity matching now correctly separates these cases using multi-factor matching logic.
- Added detection and reporting for special 10M serial numbers - The anomaly detection system now recognizes and flags transactions from devices with special 10M serial numbers that indicate test or evaluation hardware. These transactions are properly categorized and excluded from aggregate statistics as appropriate.
- Display oldest ingest date prominently in dashboard - The site status dashboard now displays the oldest ingestion timestamp at the top of each site row, providing better visibility into data freshness and aiding in troubleshooting stale data issues.
2.0.0.470 changes
5/21/26
- Fixed JABS Booking Agency role initializing incorrectly for the Arrest role - The Booking Agency combo for JABS non-arrest transactions had an incorrect role code of `"A"` (Arresting Agency) instead of the correct blank value. Sites using the JABS booking workflow saw the wrong role pre-selected, which could cause JABS validation failures on submission. Fixed.
- Fixed JABS default first names not loading for Booking Agent, Offence Agency Agent, and Arrest Agent - Three Shared Properties keys were missing an underscore character (`JABS_BAGENTNF`, `JABS_OAGENTNF`, `JABS_AAGENTNF` → `JABS_BAGENT_NF`, `JABS_OAGENT_NF`, `JABS_AAGENT_NF`). As a result, default first-name values configured in Shared Properties were silently ignored and the fields were left blank on new JABS transactions. Fixed.
- Fixed SMT import crash when loading transactions from CardinalTracking/XML - When importing transactions from an XML source (e.g. CardinalTracking) containing SMT photo records, an off-by-one array index (`_Type10_SMTs.Count` instead of `_Type10_SMTs.Count - 1`) caused an `ArgumentOutOfRangeException` immediately after adding the SMT entry, aborting the import. Fixed.
- Improved handling of 4-channel JPEG files - Some cameras produce JPEG files with a 4-channel (CMYK) color space that the image decoder did not handle, causing import or display failures. These files are now converted to 3-channel RGB on load.
- Transaction volume now uses annual average reported in heartbeat - The dashboard previously computed monthly transaction volume by diffing total-transaction counts between two heartbeats approximately 30 days apart. This was unreliable for sites with multiple workstations (each with its own local database) or following a database reset. The dashboard now uses the annual average transaction count reported directly in the heartbeat (`Annual Ave. Transactions: NNNN`), which is computed client-side from the full database history and is immune to cross-workstation and DB-reset artifacts. The 30-day delta method is retained as a fallback for older heartbeats that do not include this field, with a sanity check that discards the fallback if the two heartbeats' annual averages differ by more than 3×.
- Site ingestion handles multi-workstation and split-site scenarios more robustly - The site lookup-or-create logic was rewritten with a three-phase strategy that distinguishes between: a single known site row (updated in place); a multi-row site with a catch-all row that absorbs workstations not explicitly pinned; and a genuinely new machine at a split site (inserted as a new row). This prevents spurious duplicate site rows and ensures customer name, code, hostname, and product name are updated correctly without overwriting good data with blank values.
- Telemetry Ingest can now run as a Windows service - The `Mentalix.TelemetryMonitor` ingest process can now be installed and run as a Windows service. It will be configured to run this way on the CETO server.
- Tables version report notes updated - Additional hardware and Windows 10 notes added to the tables version and site reports in the dashboard.
2.0.0.469 changes
5/19/26
- Fixed MNC errors caused by linefeed control character in Place of Birth field - Transactions were generating spurious MNC errors because a linefeed control character (LF) was being stored in the POB field via a corrupted template default or import. ValidPOB now rejects values containing control characters, and the template-loading path validates the default POB through ValidPOB before applying it.
- Fixed NPE crash in CreateMugshot/CreateSMT save flow - A partially-filled SMT record (missing Photo Type or NCIC code) was silently producing a Type-10 record with a null PhotoType, causing a null pointer exception in NistFile.Smts/Faces getters on post-save reload. The save flow now validates both fields before proceeding and the NF.Faces getter is guarded against a null NF reference.
- Fixed EBTS 11 XML SMT category code mapping - MapSmtToCategory rewritten to use prefix-based matching on the first whitespace-delimited NCIC token rather than substring matching, fixing false positives (e.g. "SC EAR" falling through to MARK) and false negatives (e.g. "RTAT FHD" classified as TATTOO instead of SCAR). Added UTAT, RSC, RTAT, BURN variants. PhysicalFeatureCategoryCode XML namespace corrected from ebtsNS to biomNS.
- Single quote in logon name no longer causes log noise - An errant single-quote character in a Windows logon name was causing a SQL exception that polluted the log.
- Signature pad exception report cleaned up - Noisy ePad load failure exceptions are now reported at an appropriate level, reducing log clutter when no signature pad is attached.
- Iris capture timeout logging toned down - Repeated iris capture timeout messages are now suppressed after the first occurrence.
- SQL compatibility level update now runs on remote servers - The automatic SQL compatibility level upgrade was previously skipped for remote SQL Server instances; it now runs regardless of server locality.
- Heartbeat index improved to speed up most-recent-heartbeat query - A targeted index was added to the heartbeat table to reduce query time for the most recent heartbeat lookup.
- Regular receive check log label corrected - A misleading label in the response receive logging was cleaned up.
- Recent upgrades report added to dashboard - New report page shows which sites have recently received version updates with previous/current version columns.
- Tables version report added to dashboard - New report page shows the database tables schema version across sites.
- Trip/MNC/MRJ errors now badged on site names in dashboard - Sites with active Trip, MNC, or MRJ errors are highlighted with badges on their site name in the main dashboard list.
- TXDPS-only toggle added to telemetry trend charts page.
- Version aging display improved in site list.
- Telemetry ingestion log entries now include timestamps.
- Releases and sites links added to dashboard navigation; site notes updated for latest releases.
2.0.0.468 changes
5/15/26
- Fixed JABS JABS_ABS_VERS field value format - The 2.501 field introduced in release 464 was being written as "FS 2.0.0.xxx" (with a space after "FS"), producing a value one character longer than intended. The JABS ANS spec allows a maximum of 15 characters; the extra space was unnecessary and inconsistent with the field's purpose as a compact version tag. The value is now written as "FS2.0.0.xxx" without the leading space.
- Dashboard site note configurations updated for recent releases.
2.0.0.467 changes
5/14/26
- Restored response receive error logging suppressed by 461 noise cleanup - The log-noise reduction work in release 461 was too aggressive: it gated SFTP directory-not-found and already-removed warnings behind the `suppressExceptionLogs` flag, silently swallowing them even when a real directory error occurred during response polling. These conditions are now always logged as `WARNING` so that receive-side directory problems are visible in the log regardless of suppression settings. A log entry is also now written when a manual receive is triggered, providing a clearer audit trail.
- Transient IDMS connection exceptions no longer flood the log - Noisy transient IDMS connection errors (in both the core utility and the ReleaseVerification view model) are now suppressed at the expected transient level, reducing log noise without hiding genuine connectivity failures.
- Dashboard charts updated with additional data parsing and new chart configurations.
- Dashboard site row display, notes, and help page cleaned up; `appsettings.json` site configuration expanded.
2.0.0.466 changes
5/12/26
- Fixed EBTS11 write error (regression from 462) - Corrected a bug in the EBTS11 output format that was introduced by a fix in release 462. The format now writes correctly.
- FedSubmit log can now be saved to text file - Added a "Save Log..." option to the FedSubmit top-level menu that exports the recent portion of the application log to a `.txt` file. This simplifies troubleshooting by making it easy to share diagnostic information without navigating to the full log directory.
- Out-of-memory log spam suppressed - When the application enters an out-of-memory death spiral, redundant log messages are now deduplicated to prevent log file bloat and reduce I/O pressure during critical memory conditions.
- Heartbeat cold-start query performance improved - Optimized the query that retrieves the most recent heartbeat record on application startup, reducing initial load time.
- Dashboard marks sites not yet in Sites.csv - The telemetry dashboard now visually flags sites that are reporting heartbeat data but are not yet registered in the canonical `Sites.csv` file, making it easier to identify and onboard new deployments.
- Sites.csv updated with 11 new site entries.
2.0.0.465 changes
5/12/26
- Fixed Neurotec licensing failure after extended uptime - The biometric verification service (`vfing`) was calling `NLicense.Obtain()` every time an Extractor or Matcher was constructed, because `Dispose()` decremented the shared counter back to zero without releasing the license. This caused the local license server to be contacted on every ReleaseVerification scan and every restart, making the app vulnerable to transient `NotActivatedException` failures after 10+ days of uptime (root cause of the Burnet County issue). Fixed by replacing the counter-based gate with a boolean flag so license acquisition fires exactly once per process lifetime.
- SQL Server reindex check was incorrectly skipping maintenance - The SQL Server readiness-for-reindex check had a logic bug that frequently caused index maintenance to be skipped unnecessarily, holding off the reindex job until the 7-day expiration elapsed. The check has been corrected.
- GSA order form now enforces 5-digit ZIP codes - The GSA order form previously accepted extended ZIP+4 formats, but only 5-digit ZIP codes are supported by GSA. Validation now enforces this limit.
- Scanner communication break handling improved - Cleaned up how scanner communication interruptions are detected and handled, reducing erroneous error states when the scanner temporarily loses contact with the host.
- Hardware acceleration disabled during scanner visualization - Hardware acceleration is now disabled while the live scanner preview is active, reducing resource pressure and improving stability during capture sessions across all scanner skin variants.
- SQL Server 2026 recognized in heartbeat and dashboard - Added SQL Server 2026 (version 17) to the list of known SQL Server versions reported in heartbeat data and displayed in the telemetry dashboard, including updated compatibility level handling.
- Developer site notes added to telemetry dashboard - A new site notes capability allows developers to attach insight and resolution notes to specific sites in the telemetry dashboard. Notes appear on the site detail page and are linked (with dates) from the main site list.
- Low disk check added to dashboard main page - A one-click low disk check button is now available on the telemetry dashboard main page for quick triage without navigating to a site detail.
- Telemetry charts improved - The charts page has been significantly enhanced with improved data models, release exception point tracking, and site note annotations overlaid on chart data.
- Dashboard and ingestion service updates - General improvements to the dashboard repository, telemetry ingestion service, and mailbox reader for more robust data handling.
2.0.0.464 changes
5/6/26
- Fixed download failures at multiple sites due to last-chunk timeout - Resolved an issue where file downloads were regularly failing at several sites (SPD, Alamo, Cameron, and others) because of a timeout on the final chunk of a download. Downloads now complete reliably.
- FTP download retry on idle disconnect - Added a second attempt on FTP downloads to cleanly handle cases where the FTP connection had gone idle and was silently dropped, preventing spurious download failures.
- **Fixed JABS Type-10 photo POSE/POA handling** *(Refs: INC3201725, JABS Help Desk guidance May 2026)* — Corrected JABS submission failures caused by invalid or missing POSE/POA values on FACE (Type-10) records. Per JABS Help Desk clarification (David Tran, May 2026), `POSE` (10.020) is required for every FACE record and `POA` (10.021) is only valid when `POSE=A`. NPS transaction 65696791 was rejected because a user entered "no" into the Angle Offset field, which violated the required numeric format. The following corrections were made:
- **UI validation**: The Angle Offset field is now disabled unless the selected pose code is `"A"`, preventing entry for non-angled poses. Changing pose code automatically clears any previously entered angle offset, including in Edit-and-Resubmit flows. Keystroke-level input filtering blocks non-numeric input (e.g. "no"), and a range check on focus-loss flags out-of-range values (outside −180 to +180). An inline tooltip documents the JABS spec requirement.
- **Submit-time validation**: At submission, each FACE record is checked to ensure `POSE` is present; when `POSE=A`, `POA` must be a valid integer in `[−180, +180]`; when `POSE` is anything else, `POA` is forced blank to prevent stale values from leaking through.
- **JABS_ABS_VERS field added**: Field `2.501` is now populated with the FedSubmit version string (`"FS " + FileVersion`, truncated to 15 characters per the JABS ANS 5–15 spec), as requested by the JABS Help Desk for support tracking.
- **Version stamping corrected**: Version stamping defaults moved into `Directory.Build.props` so all projects report the correct canonical version. Previously, `FedSubmit.exe` and `fstransaction.dll` were reporting `1.0.0.0`.
- CR43 response export failures handled gracefully - When a CR43 response export to `ResponseExportDir` fails, the job is no longer immediately marked as failed without retry. Instead, the export is silently written to the alternate cached responses export folder, consistent with how other export failures are handled.
- ResponsesExportDir now included in heartbeat output - The configured `ResponsesExportDir` path is now reported in heartbeat data, improving visibility into export configuration across sites.
- Telemetry dashboard now includes an interactive map view of sites, with geo-data added to the site list. Map is no longer limited to TX, and the Plano headquarters address has been corrected.
- Minor noisy log and exception reporting cleanup to reduce diagnostic noise.
2.0.0.463 changes
5/4/26
- Fixed JABS photo crash identified in 461 - Resolved an additional crash in JABS photo handling that was reported after the 461 release.
- Fixed chunked file download failure - Corrected a bug where chunked downloads of two sets of chunks would fail because the end of the first chunk set was not being properly recognized, causing the download to abort prematurely.
- Routine maintenance queries no longer block heartbeat - Long-running maintenance queries are now prevented from spanning and delaying the heartbeat cycle, improving overall system responsiveness.
- JABS transaction retention enforced - Enabled retention for JABS transactions and ensured the retention code is always explicitly set to `'Y'` in JABS mode, guaranteeing records are retained per JABS requirements.
- Heartbeat query performance improvement - Optimized required heartbeat queries to run faster even when indexes are not available, reducing delays in environments with degraded index state.
- Telemetry dashboard updated with per-site download volume by month and improved identification of sites with download problems.
2.0.0.462 changes
5/1/26
- EBTS 11 SMT entry fix - Corrected a longstanding issue (present since 456 and earlier) with SMT (Scars, Marks & Tattoos) record handling in EBTS 11 submissions. The previous attempt to fix this with a hard entry limit was not the correct solution; the underlying problem has now been properly addressed.
- Improved Neurotec latent/sequence match reliability - Cleaned up issues with Neurotec fingerprint matching that could cause sequence match problems; consequential stability improvements in the matching pipeline.
- Improved abandoned transaction reporting - Multiple rounds of heartbeat cleanup to eliminate false reporting of abandoned transactions and improve accuracy of detection.
- Improved login timeout handling - Refined database login timeout logic to better handle slow or delayed SQL Server connections at startup.
- Quieted camera interface errors on exit - Suppressed noisy exceptions logged when the camera/fingerprint scanner interface was still active at the time the user exited the application.
- Quieted scanner not-ready exceptions - Suppressed spurious exceptions logged when a scanner was not yet ready during initialization.
- Reduced noisy index check logging - Extended the index check timeout to prevent log noise from checks that exceeded the previous threshold under normal conditions.
- Quieted Matcher initialization noise - Cleaned up additional spurious log output during fingerprint matcher initialization.
- Additional transient/access error log suppression - Further reduced noisy logging from transient file transfer access errors.
- Telemetry tuning for improved detection and reporting of successful retries on transient issues.
2.0.0.461 changes
4/30/26
- Fixed SQL syntax error introduced in 460 cleanup - A code cleanup change in the 460 release inadvertently introduced a SQL syntax error on exit; this has been corrected.
- Reduced noisy error logging - Suppressed several categories of spurious log noise:
- Exception reports originating from stale callbacks no longer generate unnecessary log entries.
- Corrupt EFT message errors from transient conditions are now handled quietly.
- Transient file transfer errors (FTP/SFTP) are no longer logged as exceptions.
- Improved error message clarity in submission processing.
- Telemetry dashboard now only marks a site as update-ready when the latest version download was fully successful.
- Telemetry ingestion now processes data in reverse chronological order so recent dashboard data is visible almost immediately on startup.
2.0.0.460 changes
4/28/26
- More comprehensive fix for JABS photo pose field handling - Based on updated JABS documentation, expanded the fix for photo pose settings to correctly handle all cases where JABS customers do not permit the photo pose field, preventing submission failures.
- Reduced noisy error logging on application exit - Suppressed spurious error messages that were being logged when the Transaction Manager closed, keeping logs cleaner.
- Added release badging assessment to categorize and track real-world deployment success rates across sites.
2.0.0.459 changes
4/28/26
- Fixed crash during JABS transaction creation - Added null guards in transaction creation to prevent unhandled exceptions that were occurring for JABS customers under certain conditions.
- Reduced changelog refresh interval to 5 minutes (from 1 hour) so newly released versions reset site update status more quickly.
2.0.0.458 changes
4/27/26
- Fixed Auto Close OFF failing due to timeout - The database "Auto Close" disable operation was timing out before completing, causing the process to repeat indefinitely without ever succeeding; the timeout has been corrected.
- Texas: Removed multiple-hyphen allowance in last name - Updated validation to comply with Texas's updated requirement that last names may no longer contain multiple hyphens.
- JABS/Parks: Suppressed photo pose field for incompatible customers - Added a configuration-based option to omit the photo pose field for customers (e.g. JABS/Parks) whose systems reject or are broken by its presence.
- EBTS 11: Enforce maximum of 9 SMT entries per specification - Scars, Marks, and Tattoos (SMT) entries are now capped at the EBTS 11-specified maximum of 9, with a warning logged when the input exceeds that limit.
- Improved HTTPS download reliability - Hardcoded a base HTTPS download location and refined fallback logic to ensure file transfers succeed in environments where other methods are unavailable.
- Improved response export failure reporting - Expanded the error information reported when a response export fails, making it easier to diagnose the root cause.
- Telemetry dashboard updates including search capability, an update-ready indicator on the home page, and segregation of internal/long-expired Mentalix sites from active site prioritization.
2.0.0.457 changes
4/24/26
- Fixed crash when photo/capture date is not set - Resolved an unhandled exception that could occur during transaction creation when a photo date was not populated.
- Fixed duplicate TCN (Transaction Control Number) issue - A regression introduced in 2.0.0.453's double-submission fix was inadvertently generating duplicate TCNs; this has been corrected.
- Corrected WSQ compression error diagnostic cleanup - The cleanup logic for WSQ compression error reporting was not functioning properly; diagnostic information is now captured and displayed correctly.
- Fixed incorrect response message type in transaction log - Miscellaneous transaction responses were being recorded with the wrong message type in the activity log.
- NCIC pre-EBTS11 field name normalization - Added automatic conversion of legacy NCIC field name constants that use the letter "O" to the correct EBTS 11 format using the digit "0", improving compatibility with older data sources.
- Improved recovery from graphics driver / DirectX errors - Enhanced handling of DirectX/Direct2D exceptions caused by outdated GPU drivers or GPU resets, reducing unexpected application crashes on affected systems.
- HTTPS fallback for file downloads - Added HTTPS as a fallback transfer method when primary download attempts fail, improving reliability of automatic updates and file retrieval.
- Reduced noise in error logging - Transient response timeout errors are now recorded as informational log entries rather than full exception stack traces, keeping logs cleaner and easier to review.
- Telemetry dashboard updates including health scoring improvements, site identification enhancements, and report cleanup.
2.0.0.456 changes
4/20/26
- Additional Release Manager Updates for Online Release
2.0.0.455 changes
4/20/26
- Correct automated release management script
2.0.0.454 changes
4/17/26
- Fix problem introduced in 453 release for job submission status logging
- Update IB Scanner driver software
- Add release manager script to automate and speed up complete release process
2.0.0.453 changes
4/14/26
- Fix to ensure the PrincipalContext uses the already-validated user credentials to connect to Active Directory, rather than the machine's potentially stale Windows credentials. This eliminates the spurious "incorrect password" exceptions that were cluttering the logs.
- Attempt to prevent multiple user submissions of a transaction that has not errored.
- Conservative update of database compatibility level when way out of date + limit sql server memory when using full sql version so not to start memory
- Cleanup display of Response forms
2.0.0.452 changes
3/29/26
- Fix lookup column resolution and mode-specific filtering across lookup tables for fields like Sex, Hair Colors, Eye Colors, …
2.0.0.451 changes
3/19/26
- Receiving responses via IMAP had been broken
- XML/XSD correction to XML print files for validation
- Printing TXDPS charges on fingerprint cards had not been updated for recent charges
- Fields that use ‘|’ to split into subfields did not validate correctly
2.0.0.450 changes
3/4/26
- Citizenship import fixes
- Cleanup multiple display of XML import errors/warnings
- Add TRN to more reports
- Print Operator number on blank CR45d form
2.0.0.449 changes
3/4/26
- New version of matching SDK
- Attempted fix of failed sequence check / obtain license blocking user from continuing operation
2.0.0.448 changes
3/2/26
- Add TRN to Completed Transactions report.
2.0.0.447 changes
2/24/26
- Print Preview didn't allow going to a previous page
- Mugshot interface fixes for recapture
- Move stale TXDPS responses (older than 90 days) to local archive and purge them so we don't get future repeated messages for them.
2.0.0.446 changes
2/9/26
- row information was not correctly written by fpuCardWrite()
- Texas_CTZ did not import from file creating tflu transaction
2.0.0.445 changes
1/29/26
- Fixed problem with lost OCA and ORIA fields in a TFLU import
2.0.0.444 changes
1/26/26
- New matching SDK required additional files
2.0.0.443 changes
1/26/26
- The fpuCardNewStandard() did not create the bar chart, step tablet, printer and scanner information in the correct area
- Import from Fed Submit XML did not work correctly for some fields
- Add a fast fail on FileExists checks for UNC paths where the path isn't reachable
- New version of matching SDK
2.0.0.442 changes
1/15/26
- 2026 copyright messages
- Fix for problem with fsReceive service when transient network issue arises
- Fix minor issues with blank CR-45 print form
2.0.0.441 changes
1/5/26
- OpenMP fix for problem introduced by Microsoft
- EFT files incorrectly assessed as Virigina for EBTS 11 XML validation checks
- Double-click import fix
- When freeing TCNs for reuse, skip not only missing EFT, but also bad EFTs
2.0.0.440 changes
12/4/25
- Update PNG support to version 1.6.50
- Update zlib support to version 1.3.1
- Add support for importing .png mugshot photos
- Update build environment to Visual Studio 2026
- Camera exception cleanup
- Fix problem with NFIQ support on some machines
- EBTS11 writer did not handle multiple SMT properly
- Check for errant entry of spaces within social security number
- Add import from FTP/SFTP server to xml import
- Fix multi-click issues on import
2.0.0.438 changes
11/13/25
- Fix for problem scanning palm cards
- Fix for problem writing XML NIST files
2.0.0.437 changes
11/6/25
- Fix for problem with signature pad.
2.0.0.436 changes
11/3/25
- Fix for receive problem introduced in 435 release.
2.0.0.435 changes
10/27/25
- Fixes for JABS create transaction.
2.0.0.434 changes
10/17/25
- Attempt to fix problem in the Iris interface reported in the 433 release.
2.0.0.433 changes
10/16/25
- Attempt to fix problem in the Iris interface reported in the 432 release.
- Fix for problem saving transaction introduced in 430 release.
2.0.0.432 changes
10/14/25
- Attempt to fix problems in the Iris interface reported in the 431 release.
2.0.0.430 changes
10/10/25
- Make sequence checker and quality check update results as progress made + clean up sequence checking including skipping unnecessary checks when prints not available.
- Attempt to silence transient SftDirToLocalDir exception
- IIDS transactions have an object reference not set error when attempting to save the transaction
2.0.0.429 changes
9/27/25
- Fix for matching medium sized photos
- Fix for Mugshot issue in Create
2.0.0.428 changes
9/27/25
- New matching algorithm version.
2.0.0.427 changes
9/18/25
- Fixed problem importing an RMS file.
2.0.0.426 changes
9/18/25
- Memory issue fix potentially affecting Release Verification Match display and Print Preview
- Release Verification was limiting results to 1 match
- Segmentation fix for poor quality card scan prints
2.0.0.425 changes
9/17/25
- Mid-Willamette fixes
- Edit and Resubmit fix
2.0.0.424 changes
9/16/25
- Memory leak cleanup/speedup
- Fix fingerprint tab issues + improve test to only go to 4-4-2 tab on 4-4-2 transactions + wait for sequence/quality and display in test
- Fix EAR import/cancel/import issue
- Various FBI Application Mode fixes
- Add MAP-EXP for Mid-Willamette Valley transactions
2.0.0.423 changes
9/4/25
- Fix problem downloading TXDPS responses intruded in 422 release
- Fix flatbed scanner problem intruded in 421 release
2.0.0.422 changes
8/27/25
- Fix rare race condition in Progress bar display
- Attempted improvements in Camera error handling - retry on potential transient errors + improve messaging + improve cleanup
- Attempt fix paper bin combo crash when conflict with underlying driver mutating list
- FBI mode view fix
- Fix RemoveAt in ascending loop in most common IRIS-related exception
- OpenCV 4.12
- Add staging area in SftpDirToLocalDir to prevent consumer/producer partial completion problems
- Downsample imported mugshot/smt to limit of 2048 maxWidth to prevent out of memory on absurd large files
- Handle camera take photo double-click + adjust retry count more sensibly based on error type
- Upgrade to Integrated BIometrics SDK 4.2.1
2.0.0.421 changes
8/19/25
- Upgrade to latest Barcode library
- When default print template resides in TXDPS folder, users can't print from View form with an applicant template
- In some situations the Texas Offense description selection didn't work properly
- EBTS11 fixes
- Fix for issue that occurs when using ImportReady before a TOT is assigned
- T2_CTZ fields were not properly imported from Fed Submit XML when not in Texas mode
2.0.0.420 changes
8/7/25
- Some RMS fields were not properly imported
2.0.0.419 changes
8/3/25
- Fix for problem where imported FBI number has a value of 0
- Imported empty SMTs resulted in blank SMT entries in NIST file
2.0.0.418 changes
7/31/25
- FBI numbers were not properly imported into Fed Submit from EAR files
2.0.0.417 changes
7/30/25
- In some situations SMTs were not saved to the NIST file.
2.0.0.416 changes
7/23/25
- Improved handling of SMTs for view and create
2.0.0.415 changes
7/20/25
- Fix problems with Texas SOR transactions
2.0.0.414 changes
7/17/25
- Fix problems changing tabs in View form
2.0.0.413 changes
7/17/25
- Fix various problems with Edit and Resubmit
- Fix parsing problems with new Texas SNF responses
2.0.0.412 changes
7/16/25
- Removing an offense on the Texas Offense tab was broken
- Edit and Resubmit did not work properly if the Offenses had been viewed in View Transaction
- After saving a transaction, next create transaction was broken
2.0.0.411 changes
7/15/25
- View dialog displayed AON instead of AON_Desc
2.0.0.410 changes
7/14/25
- Rebuild Index code broken / runs every time in thumbnail generation and not really necessary with ServerDB level reindex approach
- Create Transaction broken in 409 release
2.0.0.409 changes
7/11/25
- The PhotoSource, PoseSource on both the SMT and Mugshot images were inadvertently tied together.
- Fix view problems for transactions with more than 1 offense.
- Use ComboBox filtering for the AON field
2.0.0.408 changes
7/8/25
- Creating transaction from RMS import didn't work with new validation strategy
- Edit and Resubmit of TFLU didn't allow new offenses to be added
2.0.0.407 changes
7/8/25
- Remove validation from the AON description field
2.0.0.406 changes
7/8/25
- MNC check for invalid 12345678 texas drivers license number
- Switch to a simpler field validation check to improve performance and reduce memory leaks
2.0.0.405 changes
7/6/25
- In Texas mode, only first offense had an optional DOO
- Misc fixes to Texas offense handling in Create transaction
- Improve reporting of J2k read errors
2.0.0.404 changes
6/27/25
- Camera error handling improvements
- ComboBoxes didn't work properly for lookup when typing more than 1 character
- Cleanup at end of Create caused problems with subsequent Create bindings
- Fix rare Fed Submit close popup issue
2.0.0.403 changes
6/24/25
- Remove VB6 style string parsing (.trim$, etc.)
- LDA value was not saved properly for Texas Offenses
2.0.0.402 changes
6/23/25
- Fix for issue caused by repeated double-clicking a transaction in transaction manager
- Fix memory leaks in fpuJ2kLoadFile when error occurs an image is not read successfully
- Add SQL server memory logging to heartbeat and attempt setting minimum to 1GB of memory
2.0.0.401 changes
6/21/25
- Fix for MRJ issue on FBI values where bogus values were imported from an RMS
- Fix for rare Delete Transaction dangling TCN issue.
- Don't allow type 10 records with a width or length less than 100 pixels
- Add wait cursor when waiting for the view form to be displayed after double-clicking on a transaction manager/release verification/search transaction
- Fix for errant Texas_ADA entries for years < 1753
- Improved performance of reading/displaying fixed table information
- Fixed issue importing UTF-16 style XML files
2.0.0.400 changes
6/5/25
- SMT images were not properly imported from XML files
2.0.0.399 changes
6/5/25
- GRPC Idms server startup improvements
- Better handling of failed Neurotech license situation
2.0.0.398 changes
5/31/25
- Prevent multiple fsLiveScan instances from starting
- Button color fix
2.0.0.397 changes
5/30/25
- Improve error reporting when importing mugshot and smt images
- Right little segmented slap image mistakenly was displaying copy of right index
- Fix on DOB vs DOO check following a resubmit
- Button color fix
2.0.0.396 changes
5/28/25
- DoNotRetain setting should not prevent transaction from submitting.
- In some cases flatbed scanner initialization took too long, resulting in message pump errors
- Release Verification searches that were Iris or Photo-based, did not properly save
- More robust handling of GRPC IDMS startup
- Reduce memory footprint
- When printing CR43 to PDF from view dialog and user selecting output file, print should be done in client not queued for print service that might not even have chosen output file name accessible
- Enroll error with exception diagnostic not necessary after vfing init failed
- In TXDPS mode, delete responses from server that are not ours and more than 6+ months old
2.0.0.395 changes
5/13/25
- Fix display of livescan interface
2.0.0.394 changes
5/13/25
- Create Transaction did not display mugshot angle offset
- Improvements in auto-logoff
- check for latest LiveScanEssentials version at runtime
- Properly report situation where wrong HID scanner is selected in configuration
- Show PalmTab when selecting "Scan Palms"
- Fix sizing of fsLiveScan Window for some high definition resolutions
- Fix issue where user saves without selecting a PhotoType or Pose of a mugshot image
2.0.0.393 changes
5/9/25
- Add auto-logout functionality add for case where another user logs into machine and current Fed Submit session is not creating a transaction.
- Reworked Mugshot and SMT photo interfaces to display resolution and dimensions
- Fix problem where bacpac files from previous release were not overwritten with new version.
2.0.0.392 changes
4/30/25
- Cleanup ugly abbreviated names in user interface (e.g. Soc. Security Number)
- Write the OCA value to the 2.009 field instead of the TRN value at TXDPS’s request
- PhotoCrop errantly used View image instead of larger original image to crop resulting in very low resolution cropped images
- Improved ComboBox failed entry reporting
2.0.0.390 changes
4/28/25
- Fix for killing another Fed Submit session at startup
- Remove index creation option that wasn’t compatible with older SQL versions
2.0.0.389 changes
4/24/25
- Fix broken (in 388) Texas Decrypt
- SMT photos should not have a 10.013 field
2.0.0.388 changes
4/22/25
- Apartment state fix for Codes table update
- Fix for SQL remote server determination
- For Fed Submit XML import, check for cached copy of import (image) when available rather than going back to xml specified server copy
- Additional tuning of camera failure retries
- Fix heartbeat broken issue during first 10 minutes after program start
- Fix for MNC based on LIY + 2 years over current year
- Update Epadink signature pad SDK to latest version
2.0.0.386 changes
4/9/25
- Accept DOO value as blank since that is valid. For errant DOB or DOO, don't throw exception, just log error as reported to user
- Do not abort creation of TCN column in JobsQueue when the serialized job is corrupt
2.0.0.385 changes
4/9/25
- For TXDPS, filter out type 17 records from a submission when none of the type 17s where able to be successfully captured.
- Improved handling of running Fed Submit while another Fed Submit process is already running.
- Improved IDMS startup
- Previously heartbeats might not report all events if the heartbeating program terminated while the heartbeat was generated.
2.0.0.383 changes
4/6/25
- Camera error cleanup
- Attempt to fix MNC: on Critical Err: Date (ER2_DOO) ''12301899'' must be greater than or equal to the comparing date (EH_DOB) ''09031989'' plus 10 years
- Attempt to cleanup handing of reported MNU related exception after JMS import
- EBTS 11 supports multi-part MiddleName and does not support PersonFourthImportanceName and PersonFifthImportanceName from EBTS 10 and earlier
2.0.0.382 changes
3/17/25
- Fix problem receiving responses
- New Crystal Reports engine
2.0.0.381 changes
3/17/25
- Fix broken JobsQueue stored procedure updates
- Fix problem upgrading indexes at startup
- Fix for problem when sftp connection is closed by server
- Shared property handling - rewrite to try to reduce chance of contention issues, ensure thread safety, update cache with new property changes
2.0.0.380 changes
3/11/25
- Fixed problems adding TCN column to JobsQueue table when JobsQueue table is large
- Do not attempt retry of print jobs when NIST file is corrupted (ERR_NISTREAD_FIELD_ID or ERR_NISTREAD_BUFFER_OVERFLOW)
2.0.0.379 changes
3/7/25
- Fixed problem creating SOR transactions in TXDPS mode
2.0.0.378 changes
3/2/25
- Add TCN column to JobsQueue table to speedup TCN recycling
2.0.0.377 changes
2/27/25
- Chunked download support for new releases where large downloads are prohibited
- EBTS 11 XML output improvements
- In Transaction Create, enforce character type restrictions for type-2 fields
- FBI mode was errantly using JABS ruleset
- If a TXDPS transaction had an invalid ORI in the 410 field, editing and resubmitting did not fix the problem
- In WDOJ mode, partial Additional DOBs were incorrectly added during edit and resubmit
2.0.0.376 changes
2/21/25
- Speed up for TCN recycling
- Transaction Manager transactions should be ordered by Date and not NIST number
2.0.0.375 changes
2/18/25
- Fix problem with ftp exceptions after failed recursive download of empty folder
- EBTS 11 schema fix
- Operator could not see offense text when typing
2.0.0.374 changes
2/14/25
- Heartbeat cleanup
2.0.0.373 changes
2/13/25
- EBTS 11 fix
- Attempted database performance improvements
2.0.0.372 changes
2/9/25
- Techshare cleanup
2.0.0.371 changes
2/7/25
- Update Techshare endpoint for CCSO Juvenile
2.0.0.370 changes
2/6/25
- For Texas transactions, View Transaction did not properly show Ethnicity values of Unknown
- Remove old unused SQL indexes
2.0.0.369 changes
2/5/25
- mtxtwain.dll was missing from the 368 release
2.0.0.368 changes
2/4/25
- SQL Indexing improvements
- Better attempt to prevent multiple Fed Submit instances from different users
- Improved TCN recycling
- New SFTP/email library version
2.0.0.367 changes
1/20/25
- NFIQ 2.3
- Increase timeouts for TCN recycling
2.0.0.366 changes
12/19/24
- Don't change the ORI to end with "H1" for APR transactions where the agency ORI does not end with "00"
2.0.0.365 changes
12/5/24
- Fix problem with Citizenship ComboBox in OPM and JABS mode.
2.0.0.364 changes
12/3/24
- Fix for rare ComboBox problem (Non-static method requires a target)
- EBTS11 read/write fix for 1.004 field
2.0.0.363 changes
11/21/24
- Fix for error that occurs when the Transaction Manager date range combo box is changed
2.0.0.362 changes
11/18/24
- New barcode library version
- Fix for Microsoft problem introduced in 361 release
2.0.0.361 changes
11/14/24
- Added downgrade script for Firewire L Scan Essentials customers.
2.0.0.360 changes
11/12/24
- L Scan Essentials 8.2.3
2.0.0.359 changes
11/11/24
- L Scan Essentials 8.2.2
2.0.0.358 changes
11/7/24
- L Scan Essentials 8.2.2
2.0.0.357 changes
10/25/24
- Various accessibility improvements for ComboBoxes, TextBoxes, Tab Order, etc.
- Update .NET Framework to version 4.8.1
- Logon Window attempts to start as topmost window.
2.0.0.356 changes
10/17/24
- Improved keyboard navigation throughout product
- Miscellaneous accessibility improvements
2.0.0.355 changes
9/23/24
- Fix to prevent reindexing tables after a tptables update, when reindexing tables is not allowed.
- Ebts 11 XML support
2.0.0.354 changes
8/6/24
- Attempted fix for domain name issue with GRPC version of IDMS service
2.0.0.353 changes
8/2/24
- Fix for domain name issue with GRPC version of IDMS service
- Fix problems with old TABLESDB path in clientdbs.xml
2.0.0.352 changes
7/9/24
- Switch output form from BMP to TIF for FSCP Scan to File flow
2.0.0.351 changes
7/4/24
- Attempt to fix problem recycling tcns for CCSO
2.0.0.349 changes
6/6/24
- Fix for OSBI AST improperly set for a Municipal offense
- Fix for issue with failed Azure tptables updates
2.0.0.348 changes
6/3/24
- Fix for OSBI LVN AST requirement
- Remove municipal statute dropdown in OSBI mode
- IDMS improvements
2.0.0.347 changes
5/31/24
- Support new OSBI LVN workflow
- In OSBI mode, add statute dropdown for municipal statutes
2.0.0.346 changes
3/25/24
- Fix OPM problem with OPM_CRI validation
2.0.0.345 changes
3/22/24
- Fix OPM problem adding a new SON/SOI/IPAC value
2.0.0.344 changes
2/29/24
- Fix installation issues with gRPC version of IDMS service
2.0.0.343 changes
2/29/24
- Fix issues with simultaneous IDMS searches
- Editing old TXDPS transactions could result in Demographic Check failures on the DOA field
2.0.0.342 changes
2/26/24
- Fix issues with certificates used by Grpc IDMS service
2.0.0.340 changes
2/22/24
- Active Directory support didn’t work in FSCP mode
- Release Verification did not work correctly after importing a NIST file and then importing a left or right index
- Initial support for Grpc version of IDMS Service
- Update IB support to version 3.9.4
- Update Rebex support
- Avoid writing to \temp, \tmp, or \local folders
- Don’t retry SaveFile errors when attempting to save to a local file
- Eliminate segmentation debug files except when environment variable is set
- In some cases, Rebex email did not work
2.0.0.339 changes
2/5/24
- Search command didn't work properly with new FilterTotCondition
2.0.0.338 changes
1/26/24
- Rebex license fix
2.0.0.337 changes
1/26/24
- In FSCP, using ScanToFileFlow – usbe barcode from prescan as final barcode
- In FSCP, using ScanToFileFlow – allow barcodes anywhere on the card.
2.0.0.335 changes
1/18/24
- The 2.005 (retention code) setting was not properly initialized from settings.
- The 2.005 field was not properly written to the NIST file in many "N" settings
- Fed Submit is NIGC certified
2.0.0.334 changes
1/16/24
- View Transaction did not reload and display data in some situations
- New FTP/SFTP/Email API version
- NIGC support for Web Services transaction submission
- Submit Transaction Form could go into an infinite loop after submitting a transaction
2.0.0.333 changes
1/2/24
- FSCP error message improvements when batch scanning with missing demographics files
- Display of Type 7 front/back images didn’t work in FSCP
2.0.0.332 changes
12/27/23
- Photo Report on the View Transaction Mugshot tab was broken
- Display of Type 7 front/back images didn’t work in FSCP
2.0.0.331 changes
12/18/23
- Barcode fix for new barcode new version
- FSCP fix issue with batch processing form
2.0.0.330 changes
12/7/23
- Barcode fix for new barcode new version
- FSCP fix issue with batch processing form
- Allow Municipal charges with a GOC values in OSBI mode
2.0.0.328 changes
12/4/23
- New barcode recognition version
- Optimizations for slow SQL connections
- Allow GOC selection in OSBI mode for Municipal charges
- Detect/report issue with double-click in transaction manager
2.0.0.327 changes
10/21/23
- In Release Verification, return an error when attempting a search before the IDMS server has finished priming.
- Table update problem fix.
- Fix problem with certain reports
- Fix synchronization problem creating work table
2.0.0.326 changes
10/19/23
- Fix column name issue for two new columns in shared config table
2.0.0.325 changes
10/17/23
- Startup optimizations
- IDMS service fix error that occurs when db transaction doesn’t have all type 1 fields
- The ReleaseVerification, SearchTransaction, and TransactionManager "Generate Report" functions were broken
- Fix issue showing first transaction before selected transaction in View form
2.0.0.324 changes
10/2/23
- Texas SIDs can now begin with a ‘2’
- Some DOB issues were not properly conveyed to user during demographic checks
- Improved barcode rectangle display for FSCP
- BatchLog scrollbar did not appear on FSCP batch scanning dialog
2.0.0.322 changes
9/15/23
- Fixed problem with R3 usage in FSCP
- When opening J2K files (for example opening mugshot thumbnails) some temporary files were errantly not cleaned up
2.0.0.320 changes
8/22/23
- When deleting a transaction, its template should be deleted from the Match database
- Updated KBI batch scan flow to support a prescan to determine barcode/template before final scan
- Exception processing flow for KBI batch scans
- New report for KBI batch scans
- FSCP reports were broken
2.0.0.319 changes
8/3/23
- OPM FAUF and FANC transactions should not have a TSR field (2.043)
2.0.0.317 changes
7/25/23
- Suppress corrupt NIST errors while freeing up TCNs
- Add configuration switch to control whether or not database reindexes should be performed
- Move database reindex to asynchronous thread during heartbeat
2.0.0.316 changes
7/18/23
- Attempt to reduce problems on machines with low memory and not in WDOJ mode.
- Attempt to handle exceptions when preack file cannot be moved to purge folder due to permissions.
2.0.0.315 changes
7/4/23
- EAR file renaming should not occur during EAR import.
2.0.0.314 changes
6/26/23
- Avoid exception when DOO isn’t entered in Texas DPS mode.
2.0.0.313 changes
6/23/23
- Double-clicks were not properly ignored on some buttons (e.g. Import from RMS)
2.0.0.312 changes
6/21/23
- Signature Pad OCX was not properly registered.
2.0.0.311 changes
6/14/23
- Reduce heartbeat error messages for OSBI failed connections when VPN isn't active
2.0.0.310 changes
6/6/23
- FSCP Batch Scan form now displays crop boxes and barcode boxes during scan
2.0.0.309 changes
5/31/23
- Palm tab was not visible after Create from RMS in OSBI mode
- Allow palm capture for Handgun application in OSBI mode
2.0.0.308 changes
5/25/23
- Fix for problem with Edit and Resubmit introduced in 306 release
- Camera exception fix.
2.0.0.307 changes
5/22/23
- Fix for problem that occasionally occurs during Azure tables update
- Fix for problem with bacpac table import
- Attempt to better handle double clicks in Create From RMS
- When Create Transaction button was pressed in livescan mode, the wrong TCN was passed to the livescan program, and a usage error dialog was displayed.
2.0.0.306 changes
5/15/23
- Fix for some Camera exceptions when shutting down
- Various WDOJ fixes
- Miscellaneous FSCP fixes
- FSCP ScanToFile flow for KBI
2.0.0.305 changes
4/26/23
- Increase timeout for downloading new Fed Submit releases
- Texas OLS, LIS, IDS, ADS fields should be limited to state codes
- In Texas mode if a Class C offense has the DMV flag set, then the disposition must be 235.
- Attempt to eliminate more double click problems when importing demographics
2.0.0.304 changes
4/18/23
- Add diagnostics to Camera application to resolve issues at certain sites
- Add handler for errors during display of Create Transaction form
2.0.0.303 changes
4/07/23
- Remove requirement for DatabaseMaintenance script to install with sysadmin SQL rights.
2.0.0.302 changes
4/05/23
- Reduce general memory usage in FedSubmit by not loading Matcher and Extractor until (and unless) needed
2.0.0.301 changes
3/29/23
- Updated barcode library
- Prevent double-click issues when starting release verification
- Prevent double-click issues when clicking on “Create from RMSâ€
2.0.0.299 changes
3/16/23
- Fix for compatibility with new Integrated Biometrics API
2.0.0.298 changes
3/15/23
- Fix for compatibility with new Integrated Biometrics API
2.0.0.297 changes
3/14/23
- Reindex/Reorganize all tables in heartbeat process
- Reindex/Reorganize codes table after update
- New version of Integrated Biometrics API
2.0.0.296 changes
3/10/23
- various printing fixes, including updated TXDPS offense codes, TXDPS ORIs and Print to PDF fixes for ORI and offense codes
2.0.0.295 changes
3/5/23
- Faster query to load code table information – should reduce occasional SQL timeouts
2.0.0.294 changes
3/2/23
- 292 release created problems for customers that had previous WSQ -306 errors
2.0.0.292 changes
2/27/23
- Properly check Agency Case Number length in TXDPS mode
- Add additional checks for invalid Identification card number in TXDPS mode
2.0.0.290 changes
2/17/23
- Updated matching engine
- Updated WSQ library to fix -306 issue with nearly white images
- Updated mail/ftp/sftp engine
2.0.0.289 changes
1/19/23
- Fix TXDPS rules check for juvenile age to compare with Date of Offense to determine age at time of offense
2.0.0.288 changes
1/11/23
- Force DOB to save in YYYYMMDD format for NIGC mode
2.0.0.287 changes
1/06/23
- DMV fixes in Expunge
- Fix TXDPS rules check for juvenile age to compare with Date of Offense to determine age at time of offense
2.0.0.285 changes
11/01/22
- Failure to enter a DOO in JABS mode on a criminal transaction throws exception
- Fix for problem after cancelling an RMS import
- Fix exception that can occur for first transaction in a database
- For EAR flow, change PREEARACK name to PREACK to avoid confusing New World
2.0.0.284 changes
10/24/22
- Fix for problem with Edit & Resubmit that was introduced in the 283 release
- DesktopNotifications fix
- Editing the ORI in the Iris interface errantly change the type 1 ORI field
- Possible fix for problem checking demographics when an APR transaction is created and then a CAR transaction
2.0.0.283 changes
10/10/22
- Many palm scanning fixes for FSCP
- SQL connections are now encrypted
- Consistent quality scoring from Livescan interface to View interface
- Segmentation improvements
- Yaml path fix for NFIQ2.1
- Failure to find barcode did not properly return error code
- Wisconsin Offense Modifier fixes
- Wisconsin STI initialization did not work correctly
- Fix problem with scanning back images in FSCP
- Thread safety fixes in low level C code (e.g. ImageDespeckle)
2.0.0.277 changes
7/6/22
- Fixed rare problem with WSQ decompression (-306 error)
- Fixed issue with attempt to stop WIA service when service isn’t running and user doesn’t have rights to stop service
2.0.0.276 changes
6/14/22
- Fixed problems when switching between State and Municipal charges in OSBI mode.
- Fixed rare problem when transaction with 1000 ppi prints is edited and resubmitted with 500 ppi prints.
2.0.0.275 changes
5/27/22
- Fixed issues with thumbnails, expungements, and release verification related to TCN recycling.
2.0.0.274 changes
4/28/22
- Fixed issue with ack file introduced in 272 release
2.0.0.273 changes
4/21/22
- Fixed issue with ‘Skip’ button when scanning palms
- Allow Palm capture with TFLU transactions
2.0.0.272 changes
4/6/22
- Updated Techshare endpoint location to CCSO in house site
- Change RMS ack file creation time for FS-XML and EAR to the time transaction is saved
- New Barcode library
- Updated tptables to include latest Texas Offense codes and WDOJ Offense codes
2.0.0.271 changes
3/9/22
- Updated Techshare endpoint location
2.0.0.270 changes
3/6/22
- Fix problem with Desktop Notification
2.0.0.269 changes
3/6/22
- Fix problem printing court forms to PDF
- Fix exception that occurs when no /temp folder exists
2.0.0.268 changes
3/3/22
- Add button to View Form to print court forms to PDF
2.0.0.267 changes
2/25/22
- Fixed memory leak when capturing back images with the R3
- Print to PDF and Print Preview did not always display Signature or Mugshot images
- NIGC mode fix for DOB format
2.0.0.266 changes
2/14/22
- Wisconsin Account Number support was missing
- Various fixes for WDOJ LESB/LEAP transactions
2.0.0.265 changes
2/11/22
- Add indexes to Offense Code tables to address timeout issues on machines with minimal memory.
- Various fixes for WDOJ LESB/LEAP transactions
2.0.0.264 changes
2/4/22
- Auto-crop improvements
- Better handling of rotated barcodes
- Auto-card finding improvements
- Remove some incorrect 2†slap height limitations during auto-crop
- Some Oklahoma date checks could improperly fail during save of transaction
- Switch to Visual Studio 2022
- Improved crop of Ipevo images
- Various improvements for VSP mode in FSCP
- Improper max size check for AutoCrop of certain palm images
- Palm images were not displayed on Front/Back image tab
- Remove palm tab for Create when scanner doesn’t support palms or TOT does not support palms
2.0.0.262 changes
1/15/22
- APR transactions should not have a 2.412 field
- SkewTolerence is no longer needed for DATAMATRIX barcodes
- Support recognition of more than 1 barcode on a form
- Active Directory support did not work correctly if ConfigShared table fields were NULL
- Share data read from tptables between View and Create structures to remove need to continually reread tptables
- During AutoCrop allow heights of slap prints to be up to 3 inches
- Add diagnostic code to check for WSQ error during compression, and preserve original image, if problem exists
2.0.0.261 changes
1/4/22
- Fix for printing palm cards with missing palm images
- Avoid writing too many EventLog messagings when using SFTP to download demographics
2.0.0.260 changes
12/13/21
- Add Print to PDF capability
- Fix problem printing more than 1 annotation on fingerprint card
- Fix rare problem during autocrop
2.0.0.259 changes
11/10/21
- Add ActiveDirectoryUsers and ActiveDirectoryAdmins fields to Shared Config table to allow juvenile and adult systems to support different sets of users/admins.
2.0.0.258 changes
11/4/21
- Auto stop WIA service before using card scanner
- Fix various formatting problems with CR43Js
2.0.0.257 changes
10/22/21
- Reduce camera exceptions in heartbeats
2.0.0.256 changes
10/18/21
- Fix errant heartbeat exceptions relating to Camera use when window manager close is clicked
- Enforce maximum of 12 AKAs in Texas mode
- Import of SMT photos was broken for FS XML files
2.0.0.255 changes
10/14/21
- Fix printing problem introduced in version 254.
2.0.0.254 changes
10/13/21
- AKA format was not properly checked during save, causing occasional MNC responses.
- Certain operations could cause an exception when running with an empty database.
- Add warning and error message notifications for certain camera events.
2.0.0.253 changes
9/29/21
- Fix infinite loop problem that could occur when CrossMatch scanners have sequence check issues due to low quality prints
- Fix exception that could occur with TechShare integration
2.0.0.252 changes
9/21/21
- Camera interface did not work for older cameras
- Print to PDF did not handle strings with carriage returns
- Change the PrintCR43 button on the View interface to print to both PDF and printer, if both auto-print options are configured.
2.0.0.251 changes
9/15/21
- Fix issue (introduced in release 250) with DOA for SOR transactions
2.0.0.250 changes
9/13/21
- Fix another problem with DOA in TXDPS mode introduced in 247 release
- Fix problem in Release Verification introduced in 244 release
2.0.0.249 changes
9/12/21
- Fix problem with DOA in TXDPS mode introduced in 247 release
- Add many new demographic checks in WDOJ mode
2.0.0.248 changes
9/8/21
- WDOJ DOA fixes
- Only add unique AKAs when importing a FS XML file
- Limit AKAs to a maximum of 12 when importing a FS XML file
- Only add unique DOBs when importing a FS XML file
2.0.0.247 changes
9/2/21
- Correct typos on Configure form
- Avoid exception with swipe card reader when height is “â€
- Suppress additional camera exceptions
- DOA check was not working correctly when saving a transaction
- Unhandled exception was being thrown while viewing a transaction in WDOJ mode
- In non-TXDPS mode entry of 01/01/1980 for DOB didn’t work properly
- DOA initialization only worked correctly in JABS and TXDPS modes
2.0.0.246 changes
8/27/21
- Fix for checking all zero TRN when not running on a domain.
- Correct many typos on the Configure form.
2.0.0.245 changes
8/26/21
- Don’t allow TRNs with all zeros in Texas mode.
- Reading responses in WDOJ mode could throw an exception and discard the response.
- Certain jobs would crash with a 1 character SID
- Avoid overwriting demographic import files from an SFTP source
- Avoid exception when DOB is less than 8 characters
2.0.0.244 changes
8/20/21
- NFIQ2.1 startup fix for problem introduced in release 243
- Fix for conflicting TCN problem in release verification
2.0.0.243 changes
8/18/21
- Release Verification Transactions did not properly show photos
- Fixes related to DOB usage in demographic checks
- PhotoExport and XMLExport did not properly log/retry failed exports
- TXDPS Version 18 Offense codes
2.0.0.242 changes
7/24/21
- FD258 printing improvements including printing signatures
- Fix problem with Edit and Resubmit in FBI mode
- Restart Fingerprint Scan only displays warning if prints have been scanned
- Properly clear displayed fingerprint images when Restart Fingerprint Scan is selected.
2.0.0.241 changes
7/24/21
- Fix for problem cancelling transaction in livescan interface
2.0.0.240 changes
7/24/21
- Change functionality of Edit and Resubmit to not create a new TCN, if the transaction had not been submitted
2.0.0.239 changes
7/23/21
- Window manager close of livescan, prevented subsequent save of created transaction.
2.0.0.237 changes
7/17/21
- While doing a card scan, if user selected save before scan was complete, it was no longer possible to save transaction
2.0.0.236 changes
7/17/21
- Fix for Iris scanning problem introduced in version 228
2.0.0.235 changes
7/17/21
- In TXDPS mode, allow users to print CR-43s without all responses if warning is accepted
2.0.0.234 changes
7/16/21
- In OSBI mode, palm print check at time of save was not correct
2.0.0.233 changes
7/10/21
- Prevent creation of extra WORKDB in clientdbs.xml when creating new database
2.0.0.232 changes
7/8/21
- OCA MNC fix for SOR transactions
2.0.0.231 changes
7/3/21
- Display error message if no TOT is selected from Create popup
2.0.0.230 changes
7/1/21
- Camera interface did not detect/handle second camera interface running in another application
2.0.0.229 changes
6/30/21
- Camera interface did not correctly handle window manager close
2.0.0.228 changes
6/25/21
- XmlPurge did not properly handle permissions problems
2.0.0.227 changes
6/24/21
- Fix performance issue with NFIQ 2.1
2.0.0.226 changes
6/24/21
- Fix issue with WDOJ Edit and Resubmit combo boxes
2.0.0.225 changes
6/13/21
- Fix improper check for AON 13999999 with ADN of 233
2.0.0.224 changes
6/9/21
- Create from JMS errantly called GetNextTcn twice resulting in the wrong TCN being written to .ack file
2.0.0.223 changes
6/2/21
- WDOJ applicant response special handling
- WDOJ Bugfix for Arrest segment
- AutoPrint setting fix for Create Form
- Don't allow special characters in WDOJ OTP field
- Allow slap prints of 3" height in livescan interface
2.0.0.222 changes
5/27/21
- WDOJ fixes for Offense information selection
2.0.0.221 changes
5/26/21
- Don’t check quality for slap prints during Save Transaction
- By default, do not retry failed SFTP transmission as an FTP transmission
- Fix another EBTS Texas DOB check
- Remove unused JMS options
2.0.0.220 changes
5/25/21
- Fix problem launching Signature Pad capture
2.0.0.219 changes
5/20/21
- Fix NFIQ labeling errors in livescan interface
- Various fixes in livescan UI interface
2.0.0.218 changes
5/17/21
- Do not permit submission of TX transactions with ADA > DOA if local time is between 2345 and 0015
- Try to add compatibility for multiple monitor support for scan interface (especially, to enable testing using second, smaller monitor)
- Avoid slow heartbeat during exit
2.0.0.217 changes
5/13/21
- UI improvements in Livescan interface
- US not valid OLS for Texas
- Fix EBTS XML fie generation to properly handle multiple CRI values in Record-separated list
- Bugfix for false warning with existing CRI value in FAA mode and TechShare null SID issue
- Bugfix for verifying and validating AND
- Add code to upgrade FedSubmit database indexes at login time (hold ctrl key + yes to confirm).
- Bugfix to check for missing OCA / TRN
- Improved handling of unconfigured court forms printer
216 changes
5/10/21
- Scan interface support for 2 monitors
- Techshare fix for transaction without SID
- ReleaseVerification search initiated in background thread. Multiple clicks on 'search' could cause overlapped search operations initiated causing enroll crash.
- Clean up release verification live scan cancel handling
2.0.0.215 changes
4/28/21
- Updated NFIQ2.1 release
- Detect/Log certain matching failures
- Bugfix to allow processing of 16 year old Juvenile offenders in Texas
- Larger livescan window (dependent on screen resolution)
- Only display zoom/recapture buttons on livescan interface when usable
2.0.0.214 changes
4/22/21
- Incorrect quality code order for left slaps on livescan interface
- Fix WDOJ TOT error for MAP – LESB and LEAP transactions
2.0.0.213 changes
4/20/21
- POB bugfix
- JABS create bugfix
- TXDPS DOB issue should not allow user to continue
- Fix for incorrectly import date field in TXDPS mode
- WDOJ initialization fix
- Increase matching threshold to reduce false matches that were occurring for facial recognition
- User and scanner fields were not initialized for WDOJ non-CAR transactions
2.0.0.211 changes
4/5/21
- NFIQ2.1 support
- New Canon camera SDK
- OPM fixes for OCA and RFP
- Add netTcpBinding option to fsIdms
- Adjust DOB print area for CR-6 form
- Fix DataTemplates problem for Remote ID
- Improved diagnositics for Remote ID
2.0.0.210 changes
3/11/21
- WSQ support working for Android x86 mode
- Update IB Support to IB ScanUltimate 3.7.1
- Bugfix for date picker
2.0.0.209 changes
2/26/21
- Fix for DOB in WDOJ mode
2.0.0.208 changes
2/25/21
- PDF response files are now written to ResponseExportDir
- WDOJ Bugfixes
- Update to latest SecuGen libraries (4.0.3)
- Update Matching engine to 12.1
- Fix for matching enrollment of grayscale mugshot images
- Card scan slap images now allowed to be up to 3 inches in height
- Various WDOJ FSCP Bugfixes
- Remove erroneous debug slap/segmentation image saves to %tmp%
- Fix issue with tab change (Create/View Transaction)
2.0.0.207 changes
1/20/21
- Fix for TabControl Exception
- Update Closed fixes – including closing “DO NOT SUBMIT†transactions
- IB active finger display fix
2.0.0.206 changes
1/16/21
- Fix type checking issue with Edit and Resubmit
2.0.0.205 changes
1/13/21
- Print preview fixes
2.0.0.204 changes
1/12/21
- FBI and NIGC mode did not allow importing or Edit and Resubmit capabilities
2.0.0.203 changes
1/7/21
- Update OpenCV to version 4.5
- Bugfix for Wisconsin Offense selection
- Do not allow 00/00/0000 entry for DOB in TXDPS mode
- Updated email/ftp/SMTP library
- Sequence Check did not properly force recaptures for IB scanners
2.0.0.202 changes
12/11/20
- New version of Canon SDK
- Fix problem printing CR43s
- Only release 64-bit versions of Fed Submit
- After creating a transaction set current view transaction to that transaction
2.0.0.201 changes
12/9/20
- PSP fix
2.0.0.200 changes
12/7/20
- Alias DOB fix
2.0.0.199 changes
12/7/20
- DOB fix
- IB 3.6 SDK
2.0.0.198 changes
12/3/20
- PSP DOC field fix
- DOB > 2000 fix for TXDPS
2.0.0.197 changes
12/3/20
- DOA fix for TXDPS
- PSP OCA width 30 support
- When printing or previewing, slap prints should not extend into rolled print area
- PSP changes to handle latest requirements
2.0.0.195 changes
11/25/20
- Add support for printing CR43s in PDF format
2.0.0.194 changes
11/20/20
- ComboBox Performance improvements for WDOJ Offense field
- Improved cropping of flat prints greater than 3.2 inches
- Better segmentation of inked prints
2.0.0.193 changes
11/19/20
- WDOJ fix for populating NCIC code automatically
- DOB printing fix
- Resolution fix for J2K saves, which fixed batch processing issue for FSCP
2.0.0.192 changes
11/18/20
- TXDPS DOA fix
- Improved generalized date printing
- Improved crop function for live scan flat prints
2.0.0.191 changes
11/16/20
- Fix for scanning back of card with R3
- DOB printing fix
- Improved display of fingerprints for card scan transactions
2.0.0.190 changes
11/11/20
- Fingerprint segmentation fixes
- Fix problem restarting livescan palmprint scan
2.0.0.189 changes
11/10/20
- Add diagnostic information for -306 WSQ error images
- Livescan fix for capturing all prints
- Force DOB format for TXDPS sex offender transactions
- TRN/OCA fix for TXDPS sex offender transactions
- FSCP Transaction Manager fix
- RFP enabled for FBI mode in create transaction
- Wrong fingers shown for right hand after segmentation
- Fix issue with Re-Scan button in livescan interface
- Fix for left slap magnify button in livescan interface
2.0.0.188 changes
11/3/20
- Livescan startup form minimization fix
2.0.0.187 changes
11/2/20
- Left four slap magnify button wasn’t enabled in livescan interface
- Inked fingerprint segmentation improvements
- FBI support for WPF Fed Submit
2.0.0.185 changes
10/27/20
- New feature showing quality check information for segmented fingers
- Fingerprint segmentation fix
- Fixes for new livescan interface
2.0.0.184 changes
10/16/20
- Fix for problem automatically cropping fingerprint images
- Magnify fix in new livescan interface
2.0.0.183 changes
10/16/20
- Recapture for sequence checking fix in new livescan interface
2.0.0.182 changes
10/15/20
- Recapture single finger fix in new livescan interface
- Hit count fix for Release Verification
- Filter out RelVer and RPIS transactions for Release Verification
- IB device fix for new livescan interface
- Add support for 4-4-2 captures in new livescan interface
- Improved error messages for failed startup of services
2.0.0.181 changes
10/12/20
- Release Verification re-livescan UI fix
- TXDPS SOR transaction fixes
- New livescan interface with NFIQ scoring information
- Fix for impression type setting in type 4 records for card conversion
- Fix for RPIS task type
- Fix issue with blank RPIS tab on view transaction
- Fingerprint names were mis-labeled on RPIS transactions
2.0.0.178 changes
9/11/20
- Rescanning a single print that was previously skipped did not correctly set the annotation flag
- For livescan captures with all rolled prints marked as annotated, the slap print was errantly excluded from results
2.0.0.176 changes
9/10/20
- Fix for fingerprint bounding boxes when creating new transaction
- Right ring finger was errantly displayed in right little finger window in livescan interface
- Configure form fix
2.0.0.175 changes
9/3/20
- Fix for TechShare null SID
- Create LocalPhotoExport folder if it doesn’t exist
- Secugen 64-bit fix
- Add Subject/Operator signature pad options to the FSCP configure form
- Refresh segmentation data on restart of livescan or cardscan
2.0.0.174 changes
8/25/20
- Quality check label fixes
- Segmentation improvements
- OSBI quality check
- UI improvements for Fingerprint tab
- 1000 ppi card scanning fixes for Fed Submit in WPF mode
- Add quality check display for individual slap fingers and thumbs
- Add quality check for cardscan transactions
- Check fingerprint quality when saving a transaction
- Support TXDPS DOBs for ages up to 125 years
2.0.0.173 changes
8/10/20
- Add support for NIGC mode in Fed Submit WPF
- JABS mode fixes
- Configure form fix for JABS mode
2.0.0.172 changes
8/5/20
- Rotation fix for some cameras
2.0.0.171 changes
8/4/20
- Fix error message when connecting a Cross Match 3.0 USB device to a USB 2.0 port
- When importing a NIST file, preserve T2_IMA field values
2.0.0.170 changes
7/31/20
- Fingerprint segmentation improvements
2.0.0.169 changes
7/28/20
- Use RebEx SDK to send single-part Mime messages
2.0.0.168 changes
7/20/20
- Add support for Tables updates via Azure
2.0.0.167 changes
7/20/20
- Jenetric scanner support
2.0.0.166 changes
7/17/20
- 12000XL support fix for non-R3 situation
- Bacpac connection string fix
2.0.0.165 changes
7/9/20
- WDOJ support in Fed Submit WPF
2.0.0.162 changes
6/26/20
- Bacpac link table fix
- Memory leak fixes
2.0.0.1615 changes
6/22/20
- Fix for tpl files that reference XML files
- Add format support to printing for formal dates (e.g. 27th of April, 2020)
- Support printing field values with underline or italics attribute
- Print preview window is based on the card definition height
- Add 4-4-2 template for printing
2.0.0.161 changes
6/22/20
- Add support for printing characters like §
- Fix for ORI lookup during printing
2.0.0.160 changes
6/12/20
- New matching engine version
2.0.0.159 changes
6/10/20
- New Canon SDK
- Store image thumbnails in J2K format to reduce size of Thumbnails table
- Threading issue fix for J2K load/save
- Memory leak fix
2.0.0.158 changes
6/1/20
- JABS T2_TAA fix importing existing transactions
- Distribute Tables file in .bacpac format removing need for Access Database Engine (ADE)
2.0.0.156 changes
5/27/20
- Blank palm templates could cause an exception for customers that don’t use palms
- Switch to Microsoft.ACE.OLEDB.16.0 JetDatabaseAccessEngine
- Camera fixes for unhandled exceptions
2.0.0.152 changes
5/12/20
- Fix for Must Create DependencySource on same thread as the Dependency Object problem
- Bringing up the Camera dialog and closing (i.e. not taking a picture) could cause an exception
2.0.0.151 changes
5/11/20
- OSBI special print card/form support
2.0.0.150 changes
5/7/20
- Camera interface fixes
- 64-bit support fixes
2.0.0.149 changes
5/5/20
- Permanently disable LVN and LVC transactions for OSBI
2.0.0.148 changes
5/5/20
- Add Subject/Operator Signature checkboxes to configure (replacing SignaturePadEnabled)
- Fix issue with Fingerprint tabs in View Transaction
2.0.0.147 changes
5/2/20
- Top Level Form did not correctly display the serial number
- Auto opening configure form caused problems
2.0.0.146 changes
4/30/20
- Don't display warning messages at startup for services that are not installed.
- Remove TPInit failed message
- Don't do license check during TpInit
- Fix Sequence check bug introduced in adding 4-4-2 support
- Set default DPR field properly
- TXDPS OCA fix
- Hide angled offsets while capturing mugshots
2.0.0.145 changes
4/27/20
- Fix for various required TXDPS fields
- 4-4-2 fingerprint capture support
- Add configuration switches to require: DPR, DOB, Operator, and OCA
2.0.0.144 changes
4/24/20
- Memory leak fixes
2.0.0.143 changes
4/23/20
- Handle exit problems in Camera control program
2.0.0.142 changes
4/20/20
- 64-bit Fed Submit support
2.0.0.141 changes
4/17/20
- Card scanner fixes for palm scanning
- Orientation fixes for card scanning
- Documentation link fix
2.0.0.140 changes
4/16/20
- User Guide fix
- Quality check fix
2.0.0.139 changes
4/16/20
- Various documentation fixes
- New xml parser
2.0.0.138 changes
4/15/20
- Compression ratio fix for Configure form
2.0.0.136 changes
4/10/20
- Exclude RelVer transactions from Release Verification search results
- MRJ response handling fix
2.0.0.135 changes
4/9/20
- correctly import JPEG files with EXIF rotation information
- Fix for sequence check
2.0.0.134 changes
4/7/20
- Sequence check fix
- Remove T2_DPR check for JABS
2.0.0.133 changes
4/6/20
- Remove ER2 segment from APN transactions
2.0.0.132 changes
3/27/20
- Delete encrypted files during autoimport
2.0.0.131 changes
3/26/20
- fsLiveScan control file writing fix
2.0.0.014 changes
12/14/18
- New Neurotec matching engine
- Modify USB scanner open code to only use StillImage service if WANT_STILLIMAGE environment variable is set. The NO_STILLIMAGE environment variable is now deprecated.
- USB Scanner open code now attempts to open specific address, and if that fails tries all addressed until it finds desired device. Note that this code may not work as desired if multiple instances of the same scanner are connected.
- Updates and various bugfixes for OSBI
- Fix issue with edit and resubmit not reading fingerprints from original transaction
- Fix issue with OSBI_AST and add exception handling for Texas offense
2.0.0.010 changes
12/4/18
- Fix for scanning issue where FingerprintCard structure is freed by garbage collector while still being used by asynchronous thread
- Improved handling of failure to open Arduino Port
- UI Bugfix for TexasWaiverForm
- Visual Studio 2017 (ToolsVersion="15")
- Bugfix for AKAS popup going off-screen
2.0.0.007 changes
11/19/18
- Fix exception reading blank zip code with swipe card reader
2.0.0.06 changes
11/15/18
- Bugfix for non EDSDK cameras issue introduced in v221
2.0.0.005 changes
11/15/18
- Bugfix for OSBI Offense Literal
2.0.0.004 changes
11/14/18
- Remove references to older Windows 10 SDK versions 10.0.16299.0, 10.0.17134.0 and replace with 10.0.17763.0
2.0.0.003 changes
11/8/18
- Fix bug introduced in 2.0.0.0 release updating TPL/XML path in database
2.0.0.002 changes
11/7/18
- New fsIdmsRemoteID UI
- Limit maximum remoteid hits to 25
- Fix bug introduced in 2.0.0.0 release updating TPL/XML path in database
- R3 back image crop fix for case where back door doesn’t open
3.2-000n.2.0.0.0 changes
11/6/18
- OSBI fixes for printing No hit responses, applicant cards, and the OSBI criminal card
- Allow printing .tpl templates in Fed Submit
- Better R3 error handling
- Add hierarchy to templates so that TXDPS customers don’t need to see OSBI templates, etc.
224 changes
11/1/18
- Use Adaptive Threshold to convert CalDOJ front and back images to lineart
223 changes
10/24/18
- Fix CDOJ CardType codes
222 changes
10/23/18
- Fix bug when saving multipage tiff file and original file is compressed tiff image
221 changes
10/23/18
- Eliminate BitmapSourceToFpuImage() for Mugshots and SMTs while saving
220 changes
10/22/18
- Fix and improve insensitivity of buttons in Batch San Form (FSCP)
219 changes
10/17/18
- display message when no scan is attempted with no cards
218 changes
10/16/18
- Reduce warnings for EWS receive (New London)
217 changes
10/14/18
- Second scan with R3 didn't work
216 changes
10/12/18
- GOCA list fix
215 changes
10/9/18
- fixes for WDOJ response handling
214 changes
10/6/18
- Fix for FSCP CDOJ Submit Transaction
212 changes
10/1/18
- Case entry not needed for Ohio Card Conversion + Update Ohio EFT file generation
211 changes
9/20/18
- New FSCP Configure Form WPF
210 changes
9/17/18
- Fix problem introduced in release 208, restricting print templates to .tpl versions
209 changes
9/16/18
- CDOJ FSCP Updates (Add JobType and CardType)
208 changes
9/11/18
- Updates on FSCP (Alternate UI for Skip, Next, Discard etc)
207 changes
8/27/18
- IIDS Bugfix
206 changes
8/27/18
- More robust palm type detection
205 changes
8/23/18
- Fix Tab Indexes for CDOJ UI
204 changes
8/23/18
- Various CDOJ + OSBI Updates
200 changes
8/8/18
- TFLUS did not have an ORIA field
199 changes
8/8/18
- OSBI changes for Filing and Disposition reports
198 changes
8/1/18
- Back images were not saved in FSCP using R3 (because NoteScanComplete had a threading problem)
197 changes
7/27/18
- FSCP Bugfixes
196 changes
7/26/18
- Updated IIDS spec info
195 changes
7/21/18
- Fixes for various Iris image issues
194 changes
7/20/18
- Fix for exception when doing an Iris capture from the camera
193 changes
7/20/18
- OSBI bugfixes + missing ORI bugfix for Type 10/17 records
192 changes
7/19/18
- FSCP + CDOJ Updates
191 changes
7/17/18
- Iris Serial Number was not properly written to NIST file
190 changes
7/16/18
- CDOJ Updates (More data sources) + Various bugfixes
189 changes
7/15/18
- Attempt to add support for ERRB responses
188 changes
7/14/18
- Fix various Iris DME issues
187 changes
7/13/18
- Fix issue with image lock on Mugshot/SMT/Iris tabs.
186 changes
7/12/18
- Fix problem downloading TXDPS IIDS responses
185 changes
7/12/18
- Attempt to fix problem downloading TXDPS responses without IIDS folder
184 changes
7/12/18
- Various Bugfixes (Batch Form, UI, Mugshot SAP...)
183 changes
7/11/18
- Back out change suggested change to avoid reading all Nist data during view
182 changes
7/11/18
- Fix problem with initialization of auto print after create of transaction
181 changes
7/10/18
- Fix exception "SqlException: String or binary data would be truncated." when adding invalid arrest information into the work table
180 changes
7/8/18
- Another attempt at handling bug introduced by memory leak fix
179 changes
7/7/18
- Attempt to gracefully handle incorrectly formatted EAR files from CRIMES
178 changes
7/5/18
- The Ls object should only be used inside of the fsLiveScan process
177 changes
6/26/18
- Attempt to update help documentation for TXDPS
176 changes
6/21/18
- Fix issue with DOB (00/00/0000) while doing Edit and Resubmit WPF
175 changes
6/20/18
- CDOJ Updates (Finish IDN Tab)
174 changes
6/19/18
- Support importing .png and .jpeg images for Release Verification
173 changes
6/14/18
- Properly handle CCSO TRNs that begin with 'C' (WPF)
172 changes
6/14/18
- Add Iris Search (IIDS) TOT in TXDPS
171 changes
6/11/18
- Add Iris DB variables
170 changes
6/09/18
- .Net Framework 4.7.2
169 changes
6/04/18
- Fix for scanning certain heights with the Epson Expression 12000XL
168 changes
5/30/18
- Fix printing problem in Access version
167 changes
5/27/18
- Fix FSCP issue with configure form
166 changes
5/10/18
- CDOJ Updates
165 changes
5/8/18
- DPS no longer wants "SR" at the end of ORIs for SOR transactions
164 changes
5/7/18
- Fix to check for Incorrect card/template path in Configure Form + Initialize AppDbDir in WPF (i.e. fix for downloaded demographics problem at Howard)
163 changes
5/3/18
- Remove MDoEvents calls on WPF Forms
162 changes
4/28/18
- New icons for Fed Submit, etc.
161 changes
4/12/18
- Check SQL Server Status before attempting a connection
160 changes
3/24/18
- Fix for problem in OSBI mode (Access) where entering a literal for a Municipal charge could result in the statute being erroneously populated.
159 changes
3/20/18
- Fix for OSBI Offense literal
158 changes
3/20/18
- Fix 'Receive Service' checkbox's binding in Configure Form WPF
157 changes
3/15/18
- Attempt to fix Access Is Denied error when checking if Camera process has exited.
156 changes
3/12/18
- Added debug to detect old RemoteID client with new IDMS service
155 changes
3/11/18
- Fix scale bug for 16-bit data
154 changes
2/28/18
- Updates on Configure Form WPF (Added NMDPS, WDOJ, CBI, Utah, JABS, NIGC, FAA, MT Tabs)
153 changes
2/19/18
- Make TRS field editable in WPF interface
152 changes
2/13/18
- Configure form bugfixes and improvements
151 changes
2/9/18
- Configure form fix
150 changes
2/9/18
- Retarget C projects to VS 2017
149 changes
2/2/18
- OSBI Bugfixes for Palm annotations in Access
148 changes
1/30/18
- Do not use ‘C:\temp’ folder – which can result in print jobs repeating (Garfield) infinitely
147 changes
1/25/18
- Test Release for Sachse
146 changes
1/23/18
- Test Release for Sachse
- Launch Camera Interface in its own process
145 changes
1/21/18
- Applied FTP download fix recommended by RebEx for Sachse
144 changes
1/18/18
- OSBI Offense ComboBox update (WPF)
143 changes
1/12/18
- New OSBI Offense Code Table
142 changes
1/12/18
- Test release for Sachse FTP problem
141 changes
1/11/18
- Update Intel Redistributables, and Visual C++ Redistributables in release
140 changes
12/29/17
- Miscellaneous OSBI Bug fixes (WPF)
139 changes
12/20/17
- Fix: Missing Fingerprint AMP/UP/XX Code Issue
138 changes
12/18/17
- Fix MNC errors in WPF for last names containing a space
137 changes
12/16/17
- New WPF Submit Form
136 changes
12/12/17
- Improved autocomplete for WPF comboboxes (e.g. Offense Codes)
135 changes
12/9/17
- In AD mode, Create From JMS was never enabled.
134 changes
12/8/17
- Fix for card scan error on create transaction
133 changes
12/3/17
- Attempt to remove heartbeat messages where there is a timeout downloading from TXDPS SFTP site
132 changes
11/29/17
- Add capability to rules to restrict special characters in fields and report conflicts in validation
131 changes
11/27/17
- Attempt to reduce likelihood of two services trying to simultaneously heartbeat
130 changes
11/20/17
- First cut at adding XML export as an option
129 changes
11/18/17
- Added L Scan Essentials check for replace pad warning that Guardian 200 scanner can produce, and treat all device warnings as warnings, allowing user to continue
128 changes
11/16/17
- Camera interface was not compatible with 127 release fpuInit changes
127 changes
11/14/17
- Do not heartbeat prior to calling FpuInit
126 changes
11/13/17
- Avoid exception during heartbeat at startup checking NIST XML
125 changes
11/8/17
- R3 photo back image capture functional in FSCP
124 changes
10/31/17
- OSBI Auto OTN generation fix (WPF)
123 changes
10/25/17
- Partial support for R3 camera
122 changes
10/18/17
- First Visual Studio 2017 build
121 changes
10/16/17
- TXDPS ETH bugfix in WPF version