Approximate (~=) searches return more useful matches and run faster — LDAP ~= filters and the equivalent REST/GraphQL approximate match now find compound names such as “Michael Schmidt” more reliably, while single-field searches on large directories complete faster. Very short search terms still return no matches to protect large directories from expensive broad scans.
Approximate searches across multiple fields avoid unnecessary full-directory work — Searches that combine approximate conditions across fields configured for substring search now use the faster available lookup with the same result set as before. Fields that are not configured for substring search continue to use the safe compatibility path.
Combined prefix searches across configured search fields are faster — Searches that combine several prefix-searchable attributes with entry name or distinguished name filters now avoid unnecessary full-directory work when only a few entries match. This improves broad search-box queries in large directories while preserving result order and cursor pagination.
Custom attributes missing from equality and prefix indexes — indices.value-match and indices.partial-match settings (and the SCRIBE_INDICES_VALUE_MATCH / SCRIBE_INDICES_PARTIAL_MATCH environment variables) were silently ignored when set. Only the built-in baseline attributes received equality and prefix indexes. Custom equality and prefix indexes are now created as configured.
Abandoned REST count/HEAD and GraphQL requests stop sooner — REST ?include=count, REST HEAD, and GraphQL directory queries no longer keep database work running indefinitely after the client stops waiting. REST count/HEAD requests follow channels.rest.connection-hints.statement-timeout (SCRIBE_REST_STATEMENT_TIMEOUT) when configured and use a 30-second default otherwise; GraphQL requests use a 30-second execution deadline.
Searches preserve requested filters and result shapes more consistently — Directory searches with repeated attribute predicates, sorted filters, multi-type results, continuation pages, and point-in-time lookups now preserve the caller’s filters, connection hints, selected fields, and result column names more reliably.
Cancelled searches release resources more safely — Count-only searches, point-in-time lookups, and streams cancelled while opening a database connection now use the same cancellation, timeout, and connection policy as normal searches, avoiding leaked connections or permits after callers stop waiting.
GraphQL connection responses are more predictable — Connection queries now return requested pageInfo and counts together, support larger configured pagination limits correctly, and handle malformed POST bodies without surprising parsing behavior.
REST/OpenAPI export contracts are documented more accurately — Change events now expose their runtime entry identifiers in the API schema, and search export responses document the supported media types and download headers.
Query diagnostic reports are safer to share and easier to act on — Redacted support exports avoid raw search values, preserve the context Kenoxa support needs, explain when timing evidence is unavailable, and avoid recommending coverage changes that are already satisfied.
Prefix searches recommend the right index setting — Queries that filter by a “starts with” attribute now point operators to indices.value-match instead of indices.partial-match. Attributes that are only ever searched by prefix can be removed from indices.partial-match; combined prefix-and-substring workloads keep both recommendations.
Observe recommendations resolve more consistently — Inbox and query recommendation links now open the matching detail views more reliably, recommendations that point to expired query evidence are hidden, and storage coverage views use the available screen width more effectively.
Ingestion and maintenance edge cases are handled more safely — Interrupted throttling no longer drops a live LDAP entry, reconciliation startup failures clean up active sync work, transient LDAP search interruptions reconnect with bounded warnings, and maintenance scheduling now recognizes threshold-only soft schedules.
Monitoring and deployment bundles start more reliably — Helm health probes, Grafana OAuth passthrough, production replica defaults, monitoring-only datasources, full-stack Compose startup, and shutdown error reporting now match the runnable deployment shapes.
Changed
Single-attribute approximate searches on short common names may return fewer matches — Approximate matching is more selective for short terms against attributes that usually hold a single word, such as givenname. A search like givenname ~= "mic" may return a smaller set than in prior releases. Multi-field approximate searches and approximate searches against attributes that commonly hold multiple words, such as cn or description, are unaffected. Contact support if a specific attribute needs different matching behavior.
Index attributes are fetched automatically — Attributes listed in a transcribe’s indices.value-match, indices.partial-match, or indices.sortable are now fetched and stored automatically. They no longer need to be duplicated in ldap.attributes.
Kubernetes readiness now tracks traffic safety — /readyz and JSON readiness report when the pod can safely receive requests. Scripts that need to wait for initial ingest and required index work to finish should use /observe/convergence. See Endpoints.
Observe recommendations are retained across restarts by default — Recommendation history and query diagnostic reports now remain available after restart. Set monitoring.hints.persistence.enabled = false to keep recommendations memory-only, or monitoring.hints.persistence.clear-on-startup = true to start each run with an empty recommendation history.
Query diagnostics are easier to share — Slow-query rows, coverage evidence, and recommendation links now open a report page that starts with operator actions and can export a Redacted or Full support bundle when Kenoxa support requests it.
Diagnostics and operator signals are easier to interpret — Reports preserve troubleshooting context and count repeated observations consistently, ingest lag severity matches the documented thresholds, and Observe recommendation pruning avoids deleting concurrent lifecycle updates.