> ## Documentation Index
> Fetch the complete documentation index at: https://doc.lucidworks.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Fusion 5.9.15

[localhost link]: http://localhost:3000/docs/5/fusion/release-notes/5.9.15-release-notes

[mintlify link]: https://doc.lucidworks.com/docs/5/fusion/release-notes/5.9.15-release-notes

Released on October 16, 2025, Fusion 5.9.15 is a [maintenance release](/docs/policies/lifecycle-policies/lw-version-support-lifecycle#maintenance-release-support-policy) that includes scalability enhancements to LWAI stages, accuracy improvements in the Consumption Dashboard entitlement reporting, expanded monitoring metrics for asynchronous query stages, security fixes, and updated UI behavior.

Upgrading to the latest version of Fusion 5.9 offers several key benefits:

* **Access to latest features:** Stay current with the latest features and functionality to ensure compatibility and optimal performance.
* **Simplified process:** Fusion 5.9.5 and later use an in-place upgrade strategy, making upgrades easier than ever.
* **Extended support:** Upgrading keeps you up-to-date with the latest supported Kubernetes versions, as outlined in the [Lucidworks Fusion Product Lifecycle](/docs/policies/lifecycle-policies/lw-version-support-lifecycle) policy.

<Danger>
  **Security patch available for api-gateway: Netty request smuggling vulnerabilities**

  A patch is available for the `api-gateway` service to address critical Netty request smuggling vulnerabilities (CVE-2026-42581, CVE-2026-42585, CVE-2026-42587). These vulnerabilities allow attackers to smuggle HTTP requests through the gateway, potentially bypassing security controls.

  <Accordion title="Instructions for applying the patch">
    The `api-gateway` service requires the Netty security patch.

    Follow these steps to apply the patched image:

    1. Open your Fusion Helm values file.

    2. Add or update the `api-gateway` image configuration:

       ```yaml theme={"dark"}
       api-gateway:
         image:
           repository: lucidworks
           name: api-gateway
           tag: 5.9.15-SUST-1634-patch
           imagePullPolicy: IfNotPresent
       ```

    3. Save the values file.

    4. For Fusion Cloud Native deployments, run the `upgrade_fusion.sh` script you used for your current deployment. For Helm deployments, run:

       ```bash theme={"dark"}
       helm upgrade --namespace NAMESPACE RELEASE_NAME PATH_TO_VALUES
       ```

       Replace `NAMESPACE` with your Kubernetes namespace, `RELEASE_NAME` with your Helm release name, and `PATH_TO_VALUES` with the path to your updated values file.

    5. Wait for the `api-gateway` pods to restart and verify they are using the patched image.
  </Accordion>
</Danger>

<Danger>
  **Urgent action required by November 26, 2025**

  A patch is required by November 26, 2025 for all self-hosted Fusion deployments running on Amazon Elastic Kubernetes Service (EKS). Certain Java versions used by Fusion components reach end of life on this date. Failure to apply the patch will result in compatibility issues.

  <Accordion title="Instructions for applying the patch">
    The following Fusion services require the `cgroupv2` patch:

    | Service          | Affected Fusion versions | Patch tag                                      |
    | ---------------- | ------------------------ | ---------------------------------------------- |
    | `insights`       | 5.9.4 to 5.9.15          | `lucidworks/insights:5.9-cgroupv2-patch`       |
    | `spark-solr-etl` | 5.9.4 to 5.9.11          | `lucidworks/spark-solr-etl:5.9-cgroupv2-patch` |
    | `keytool-utils`  | 5.9.4 to 5.9.10          | `lucidworks/keytool-utils:5.9-cgroupv2-patch`  |

    Follow these steps to apply the patched images:

    1. Open your Fusion Helm values file. For Fusion Cloud Native deployments, use the values file for your current deployment. For Helm deployments, use the values file you used to create the deployment.

    2. For each service listed in the following table that applies to your Fusion version, add or update the image configuration:

    <Tabs>
      <Tab title="Fusion 5.9.4 to 5.9.10">
        <Tip>Expand the following code snippet for the complete image configuration list.</Tip>

        ```yaml expandable theme={"dark"}
        global:
          keytoolUtils:
            image:
              repository: lucidworks
              name: "keytool-utils"
              tag: "5.9-cgroupv2-patch"
              imagePullPolicy: "IfNotPresent"

        sql-service:
          keytoolUtils:
            image:
              repository: lucidworks
              name: "keytool-utils"
              tag: "5.9-cgroupv2-patch"
              imagePullPolicy: "IfNotPresent"

        reverse-search:
          keytoolUtils:
            image:
              repository: lucidworks
              name: "keytool-utils"
              tag: "5.9-cgroupv2-patch"
              imagePullPolicy: "IfNotPresent"

        solr:
          keytoolUtils:
            image:
              repository: lucidworks
              name: "keytool-utils"
              tag: "5.9-cgroupv2-patch"
              imagePullPolicy: "IfNotPresent"
          zookeeper:
            keytoolUtils:
              image:
                repository: lucidworks
                name: "keytool-utils"
                tag: "5.9-cgroupv2-patch"
                imagePullPolicy: "IfNotPresent"

        kafka:
          keytoolUtils:
            image:
              repository: lucidworks
              name: "keytool-utils"
              tag: "5.9-cgroupv2-patch"
              imagePullPolicy: "IfNotPresent"

        zookeeper:
          keytoolUtils:
            image:
              repository: lucidworks
              name: "keytool-utils"
              tag: "5.9-cgroupv2-patch"
              imagePullPolicy: "IfNotPresent"

        ml-model-service:
          keytoolUtils:
            image:
              repository: lucidworks
              name: "keytool-utils"
              tag: "5.9-cgroupv2-patch"
              imagePullPolicy: "IfNotPresent"

        fusion-admin:
          keytoolUtils:
            image:
              repository: lucidworks
              name: "keytool-utils"
              tag: "5.9-cgroupv2-patch"
              imagePullPolicy: "IfNotPresent"

        fusion-indexing:
          keytoolUtils:
            image:
              repository: lucidworks
              name: "keytool-utils"
              tag: "5.9-cgroupv2-patch"
              imagePullPolicy: "IfNotPresent"

        query-pipeline:
          keytoolUtils:
            image:
              repository: lucidworks
              name: "keytool-utils"
              tag: "5.9-cgroupv2-patch"
              imagePullPolicy: "IfNotPresent"  

        async-parsing:
          keytoolUtils:
            image:
              repository: lucidworks
              name: "keytool-utils"
              tag: "5.9-cgroupv2-patch"
              imagePullPolicy: "IfNotPresent"

        admin-ui:
          keytoolUtils:
            image:
              repository: lucidworks
              name: "keytool-utils"
              tag: "5.9-cgroupv2-patch"
              imagePullPolicy: "IfNotPresent"

        api-gateway:
          keytoolUtils:
            image:
              repository: lucidworks
              name: "keytool-utils"
              tag: "5.9-cgroupv2-patch"
              imagePullPolicy: "IfNotPresent"

        auth-ui:
          keytoolUtils:
            image:
              repository: lucidworks
              name: "keytool-utils"
              tag: "5.9-cgroupv2-patch"
              imagePullPolicy: "IfNotPresent"

        classic-rest-service:
          keytoolUtils:
            image:
              repository: lucidworks
              name: "keytool-utils"
              tag: "5.9-cgroupv2-patch"
              imagePullPolicy: "IfNotPresent"

        fusion-resources:
          keytoolUtils:
            image:
              repository: lucidworks
              name: "keytool-utils"
              tag: "5.9-cgroupv2-patch"
              imagePullPolicy: "IfNotPresent"

        job-config:
          keytoolUtils:
            image:
              repository: lucidworks
              name: "keytool-utils"
              tag: "5.9-cgroupv2-patch"
              imagePullPolicy: "IfNotPresent"

        insights:
          image:
            imagePullPolicy: Always
            name: insights
            repository: lucidworks
            tag: 5.9-cgroupv2-patch
          keytoolUtils:
            image:
              repository: lucidworks
              name: "keytool-utils"
              tag: "5.9-cgroupv2-patch"
              imagePullPolicy: "IfNotPresent"

        job-launcher:
          keytoolUtils:
            image:
              repository: lucidworks
              name: "keytool-utils"
              tag: "5.9-cgroupv2-patch"
              imagePullPolicy: "IfNotPresent"

        job-rest-server:
          keytoolUtils:
            image:
              repository: lucidworks
              name: "keytool-utils"
              tag: "5.9-cgroupv2-patch"
              imagePullPolicy: "IfNotPresent"

        connectors:
          keytoolUtils:
            image:
              repository: lucidworks
              name: "keytool-utils"
              tag: "5.9-cgroupv2-patch"
              imagePullPolicy: "IfNotPresent"

        connector-plugin:
          keytoolUtils:
            image:
              repository: lucidworks
              name: "keytool-utils"
              tag: "5.9-cgroupv2-patch"
              imagePullPolicy: "IfNotPresent"

        connectors-backend:
          keytoolUtils:
            image:
              repository: lucidworks
              name: "keytool-utils"
              tag: "5.9-cgroupv2-patch"
              imagePullPolicy: "IfNotPresent"

        rules-ui:
          keytoolUtils:
            image:
              repository: lucidworks
              name: "keytool-utils"
              tag: "5.9-cgroupv2-patch"
              imagePullPolicy: "IfNotPresent"

        pm-ui:
          keytoolUtils:
            image:
              repository: lucidworks
              name: "keytool-utils"
              tag: "5.9-cgroupv2-patch"
              imagePullPolicy: "IfNotPresent"

        lwai-gateway:
          keytoolUtils:
            image:
              repository: lucidworks
              name: "keytool-utils"
              tag: "5.9-cgroupv2-patch"
              imagePullPolicy: "IfNotPresent"

        webapps:
          keytoolUtils:
            image:
              repository: lucidworks
              name: "keytool-utils"
              tag: "5.9-cgroupv2-patch"
              imagePullPolicy: "IfNotPresent"

        apps-manager:
          keytoolUtils:
            image:
              repository: lucidworks
              name: "keytool-utils"
              tag: "5.9-cgroupv2-patch"
              imagePullPolicy: "IfNotPresent"

        templating:
          keytoolUtils:
            image:
              repository: lucidworks
              name: "keytool-utils"
              tag: "5.9-cgroupv2-patch"
              imagePullPolicy: "IfNotPresent"

        tikaserver:
          keytoolUtils:
            image:
              repository: lucidworks
              name: "keytool-utils"
              tag: "5.9-cgroupv2-patch"
              imagePullPolicy: "IfNotPresent"

        argo:
          keytoolUtils:
            image:
              repository: lucidworks
              name: "keytool-utils"
              tag: "5.9-cgroupv2-patch"
              imagePullPolicy: "IfNotPresent"

        seldon-core-operator:
          keytoolUtils:
            image:
              repository: lucidworks
              name: "keytool-utils"
              tag: "5.9-cgroupv2-patch"
              imagePullPolicy: "IfNotPresent"

        argo-common-workflows:
          image:
            imagePullPolicy: Always
            repository: lucidworks
            sparkSolrEtlTag: 5.9-cgroupv2-patch
            utilitiesTag: 5.9.11
        ```
      </Tab>

      <Tab title="Fusion 5.9.11">
        ```yaml theme={"dark"}
        insights:
          image:
            name: insights
            pullPolicy: IfNotPresent
            repository: lucidworks
            tag: 5.9-cgroupv2-patch

        argo-common-workflows:
          image:
            imagePullPolicy: IfNotPresent
            repository: lucidworks
            sparkSolrEtlTag: 5.9-cgroupv2-patch
        ```
      </Tab>

      <Tab title="Fusion 5.9.12 to 5.9.15">
        ```yaml theme={"dark"}
        insights:
          image:
            name: insights
            pullPolicy: IfNotPresent
            repository: lucidworks
            tag: insights:5.9-cgroupv2-patch
        ```
      </Tab>
    </Tabs>

    3. Save the values file.

    4. For Fusion Cloud Native deployments, run the `upgrade_fusion.sh` script you used for your current deployment. For Helm deployments, run the following command:

       ```bash theme={"dark"}
       helm upgrade --namespace NAMESPACE RELEASE_NAME PATH_TO_VALUES
       ```

       <Tip>Replace `NAMESPACE` with your Kubernetes namespace. Replace `RELEASE_NAME` with your Helm release name. Replace `PATH_TO_VALUES` with the path to your updated values file.</Tip>

    5. Wait for the affected service pods to restart and verify they are using the patched images.
  </Accordion>
</Danger>

<Tip>
  **Looking to upgrade?**

  See [Fusion 5 Upgrades](/docs/5/fusion/operations/fusion-5-upgrades) for detailed instructions.

  Fusion 5.9.5 introduced changes that affect Spark jobs. If you are upgrading from any Fusion version earlier than 5.9.5 to a version later than 5.9.5, Lucidworks recommends first upgrading to Fusion 5.9.5 before proceeding to the target version.
</Tip>

<Accordion title="Upgrade notes for Stage SDK plugins">
  Fusion 5.9.15 upgrades the Stage SDK to v2.0.0.
  Any custom plugins compiled with SDK v1.0.0, such as `query-sample-plugin-stage-0.0.1.zip` and `index-sample-plugin-stage-0.0.1.zip`, will not load after the upgrade.
  Pipelines that reference those stages will be hidden until you install SDK v2.0.0 replacements.

  Take these steps before you begin the upgrade process.

  1. Rebuild your plugins against Stage SDK v2.0.0.
     * Example outputs:
       * `2-0-0-query-sample-plugin-stage-0.0.2.zip`
       * `2-0-0-index-sample-plugin-stage-0.0.2.zip`
       <Warning>
         Do not remove v1.0.0 plugins before installing their 2.0.0 replacements because pipelines still reference the old classes stored in ZooKeeper.
       </Warning>
  2. Use Java 11 to recompile the plugins.
  3. Update your `gradle.properties` file to use v2.0.0 of the Stage SDK. For the Query Stage SDK, use:

     ```bash theme={"dark"}
     queryStagePluginSDKVersion=2.0.0
     ```

     For the Index Stage SDK, use:

     ```bash theme={"dark"}
     indexStagePluginSDKVersion=2.0.0
     ```
  4. Verify that the `queryStagePluginSDKVersion` or `indexStagePluginSDKVersion` variable is used in the `build.gradle` task that builds the SDK stage. The following example uses the Query Stage SDK:

     ```bash theme={"dark"}
     attributes 'Plugin-SDK-Version': "${queryStagePluginSDKVersion}"
     ```

     See the [Query Stage SDK sample stage](https://github.com/lucidworks/query-stage-sdk/blob/master/examples/sample-plugin-stage/build.gradle) for an example.
  5. Audit your pipelines and remove or replace any stages that no longer exist or are changed in the new plugins. If a pipeline still references a removed stage, it will continue to fail deserialization after upgrade.

  <Warning>
    Pipelines using custom stages will be hidden between the moment you upgrade and the moment you install the new plugins.
  </Warning>
</Accordion>

For supported Kubernetes versions and key component versions, see [Platform support and component versions](#platform-support-and-component-versions).

## Key highlights

{/* FUS-7828 - Consumption Dashboard Updates */}

### Consumption Dashboard update

{/* For 5.9.16 FUS-7852 * Temporary pipelines are now excluded from reports. Previously these pipelines were listed in reports and had to be manually unchecked to exclude them. Excluding temporary pipelines decreases report noise and ensures that results only reflect production workloads. */}

{/* FUS-7854 */}

The [Consumption Dashboard](/docs/5/fusion/operations/monitoring-and-reporting/consumption) uses graphs to visually track request and document usage against the allotted consumption for a Fusion license. The hover interaction for **requests per pipeline** graphs now displays a sortable list of pipelines to make it easier to analyze pipeline-level consumption.

Pipelines in a **requests per pipeline** graph can be sorted in the following ways:

* **Value descending**: sort pipelines according to number of requests from most to least.
* **Value ascending**: sort pipelines according to number of requests from least to most.
* **Alphabetically ascending**: sort by pipeline name from A to Z.
* **Alphabetically descending**: sort by pipeline name from Z to A.

<Frame caption="Sortable requests per pipeline graph">
  <img src="https://mintcdn.com/lucidworks/zu0pV9aZMhAFscBD/assets/images/5.9/consumption-requests-per-pipeline-sort.png?fit=max&auto=format&n=zu0pV9aZMhAFscBD&q=85&s=4d8daf117be1a6d81d3bfc90d5ff3954" alt="Requests per pipeline sortable" width="865" height="447" data-path="assets/images/5.9/consumption-requests-per-pipeline-sort.png" />
</Frame>

### Gain deeper insight into asynchronous query performance

Monitoring for asynchronous [query stages](/docs/5/fusion/reference/config-ref/pipeline-stages/query-stages/overview) is expanded to provide performance insights for async workloads, allowing for better optimization and more efficient troubleshooting.

Structured logs and Grafana dashboards for each async stage let you view metrics, including the following:

* Execution time and trends for how long a job or request takes from start to finish.
* Success rates for percentage of requests and jobs that complete without error.
* Number of retries for how many retry attempts were made after initial failures.
* Queue wait times for the time a job or request spends waiting to be processed.
* Resource usage for consumption of compute/storage/network by workload or tenant.

<Frame caption="The monitoring dashboard now includes additional metrics">
  <img src="https://mintcdn.com/lucidworks/zu0pV9aZMhAFscBD/assets/images/5.9/async-monitoring.png?fit=max&auto=format&n=zu0pV9aZMhAFscBD&q=85&s=35d25b7e44172e64b7939c43ef6008bf" alt="Monitoring dashboard" width="3369" height="1427" data-path="assets/images/5.9/async-monitoring.png" />
</Frame>

Prometheus metrics are used across async stages for additional visibility into query behavior, such as query performance comparisons across different filters and per-node monitoring to identify which Fusion node handled a specific query.

Logs can be filtered by:

* Application
* Pipeline
* Profile
* Stage
* Execution status
* Custom time ranges

This visibility makes it easier to detect performance bottlenecks, identify root causes of failures, and tune pipeline behavior across applications and query profiles.

### New Retrieval-Augmented Generation (RAG) query stage

Lucidworks continues expanding RAG capabilities that improve the quality and accuracy of LLM-powered retrieval workflows.
Documents that require chunking tend to be large and cover multiple topics.
Queries return an answer that links to the document, but the answer does not show exactly *where* to find that information in the document.

A [Chunking RAG Bridge Query Stage](/docs/5/fusion/reference/config-ref/pipeline-stages/query-stages/chunking-rag-bridge) is introduced to evolve RAG from document-level retrieval to chunk-level precision.
With this new stage, each cited source that accompanies a RAG answer also provides a link to the relevant document along with a snippet containing information about where to find the content in the document.

<iframe src="https://app.supademo.com/embed/cmgl2bfjg34kvkrn9e1jppfac?embed_v=2&utm_source=embed" title="Chunking RAG Bridge Stage demo" className="w-full h-96 rounded-xl" />

### New Batch Vectorize index stage

Fusion 5.9.15 introduces an [LWAI Batch Vectorize Index Stage](/docs/5/fusion/reference/config-ref/pipeline-stages/index-stages/lwai-batch-vectorize-index-stage) for AI pipelines.
This works the same as the [LWAI Vectorize Field stage](/docs/5/fusion/reference/config-ref/pipeline-stages/index-stages/lwai-vectorize-field) but delivers faster indexing throughput because it processes your documents in batches before sending those documents to the next stage in your index pipeline. The LWAI Batch Vectorize stage can improve document indexing performance up to ten times the rate of the LWAI Vectorize Field stage.

The LWAI Vectorize stage processes documents one at a time.

<Frame caption="Flowchart for single document processing">
  <img src="https://mintcdn.com/lucidworks/zvKMB9iXJuSZcsZs/assets/images/5.9/vectorize-single.png?fit=max&auto=format&n=zvKMB9iXJuSZcsZs&q=85&s=991f3ddee404aae884595c8779fca176" alt="Flowchart for single document processing" width="1152" height="578" data-path="assets/images/5.9/vectorize-single.png" />
</Frame>

With the LWAI Batch Vectorization Index stage, Fusion can send multiple documents per API call, reducing API overhead and improving scalability.

<Frame caption="Flowchart for batch document processing">
  <img src="https://mintcdn.com/lucidworks/zvKMB9iXJuSZcsZs/assets/images/5.9/vectorize-batch.png?fit=max&auto=format&n=zvKMB9iXJuSZcsZs&q=85&s=4c99cd2e80e4af6abbd64c59f6def397" alt="Flowchart for batch document processing" width="1246" height="142" data-path="assets/images/5.9/vectorize-batch.png" />
</Frame>

This stage includes new properties.
A batch is forwarded to the API as soon as it is full or when the wait time elapses, whichever comes first.

<Accordion title="Configurable properties added:" defaultOpen="true">
  <ParamField path="Maximum Batch Size">
    Maximum number of documents per batch (up to 32).
  </ParamField>

  <ParamField path="Maximum Batch Delay">
    Maximum time to wait in milliseconds since the first document is buffered before proceeding.
  </ParamField>
</Accordion>

### Restrictive mode for query pipelines

Fusion 5.9.15 introduces restrictive mode, a new way to safeguard query pipelines against unauthorized or risky changes.

When you enable restrictive mode, Fusion enforces stricter query parameter validation and sanitization, blocking unsafe inputs and limiting potentially expensive operations.
This feature helps you improve security and prevent costly mistakes.

See [Restrictive Mode](/docs/5/fusion/getting-data-out/query-basics/query-pipelines/restrictive-mode) for complete details about how restrictive mode works and how to enable it.

### Fusion stage SDKs updated to support JDK 11

The [Index Stage](/docs/5/fusion/dev-portal/index-stage-sdk) and [Query Stage](/docs/5/fusion/dev-portal/query-stage-sdk/overview) SDKs in self-hosted Fusion now support JDK 11.

<Note>These updates apply only to self-hosted Fusion and are not supported in Lucidworks Search.</Note>

Adding support for JDK 11 does the following:

* Increases runtime success.
* Improves dependency management to build plugins against stable versions.
* Ensures long-term compatibility of critical operational pipelines for plugin developers.
* Enables support for existing search functionality when planning upgrades.

### Fusion Admin UI updates

{/* FUS-7455 - Update UI Label for Ray Jobs */}

{/* FUS-7928 - 5.9.14 UI >> Asynchronous Execution Config checkbox is misaligned with its label in the UI */}

Several updates to the Fusion Admin UI improve safety and usability:

* A description is added to the JSON Facets stage, clarifying its purpose.

  <img style={{ width: "600px" }} src="https://mintcdn.com/lucidworks/zu0pV9aZMhAFscBD/assets/images/5.9/json-facet-description.png?fit=max&auto=format&n=zu0pV9aZMhAFscBD&q=85&s=33aab5e45cea17c01e26926fc5462a73" width="1200" height="552" data-path="assets/images/5.9/json-facet-description.png" />

* UI labels are added for Ray model deployment jobs, grouping them under “Model Deployment Jobs” for clarity and discoverability.

  <img style={{ width: "450px" }} src="https://mintcdn.com/lucidworks/zu0pV9aZMhAFscBD/assets/images/5.9/ml-job-sort.png?fit=max&auto=format&n=zu0pV9aZMhAFscBD&q=85&s=f7a02b1f230ddfac7688333f48679cf3" width="744" height="796" data-path="assets/images/5.9/ml-job-sort.png" />

* The **Asynchronous Execution Config** checkbox for the AI pipeline stages is now properly aligned with its label for better visual consistency and user experience.

  <img style={{ width: "600px" }} src="https://mintcdn.com/lucidworks/zu0pV9aZMhAFscBD/assets/images/5.9/async-checkbox.png?fit=max&auto=format&n=zu0pV9aZMhAFscBD&q=85&s=86c570f6eb8954d34a54d1643dbb7aa6" width="1150" height="650" data-path="assets/images/5.9/async-checkbox.png" />

* An optional red banner can be added across the bottom of all production environments as a visual reminder that you are in a production environment. The banner is static and non-dismissible, reducing the risk of accidental misconfiguration.

  <img src="https://mintcdn.com/lucidworks/zu0pV9aZMhAFscBD/assets/images/5.9/prod-banner.png?fit=max&auto=format&n=zu0pV9aZMhAFscBD&q=85&s=e3bc47906a9418b5f73379367a80aef1" alt="Production banner" width="569" height="223" data-path="assets/images/5.9/prod-banner.png" />

  To enable the banner, add the following to your custom  values YAML  files.

  ```yaml theme={"dark"}
  admin-ui:
    banner:
      enabled: true
  ```

  If you would like to customize the text that shows in the UI, you can add parameters to your custom values YAML file.

  ```yaml theme={"dark"}
  admin-ui:
    banner:
      enabled: true
      text: "CUSTOM_BANNER_MESSAGE"
      backgroundColor: "#ff4444"
      textColor: "#ffffff"
      fontSize: "14px"
      fontWeight: "bold"
      position: "bottom"
  ```

  Configuration parameters:

  * `text` (required): the message displayed in the banner
  * `backgroundColor`: background color; default is red #ff4444
  * `textColor`: text color; default is white #ffffff
  * `fontSize`: font size; default is 14px
  * `fontWeight`: font weight; default is bold
  * `position`: banner position - bottom or top; default is bottom

### Naming conventions for AI-generated fields

Fields generated by Lucidworks AI now include a prefix of `lwai_` when indexed to Solr, making it easier to identify those fields when excluding them or using them for other tasks, such as rules, queries, or reports. Any field names previously generated are still supported and no changes are needed to continue using them.

### Additional Selenium support for the Web V2 connector

For users of the [Web V2 connector](/docs/fusion-connectors/connectors/web-v2) v2.2.1 and later, Fusion 5.9.15 improves support for Selenium Grid. The Selenium service is now installed automatically with the Web V2 connector and removed automatically when the connector is removed, resulting in faster setup and ease of use.

### Smarter hybrid search

Resiliency is improved for searches using the [Neural Hybrid Query stage](/docs/5/fusion/reference/config-ref/pipeline-stages/query-stages/neural-hybrid-query).
When a hybrid query depends on vectorization, failures in the upstream vectorization stage previously resulted in incomplete or unstable search behavior.
Now Fusion automatically switches to lexical-only search if vectorization is unavailable to ensure uninterrupted results.

Clear indicators and improved logging make it easier to understand when the fallback occurs:

* If no vector is produced, you will see the message: `Input vector value is blank, skipping vector processing`.
* If a vector exists but is empty, you will see the message: `Input vector value is empty, {}, skipping vector processing`.

### Ability added for Prediction API

The Prediction API now supports [image metadata enrichment](/docs/lw-platform/lw-ai/lw-ai-apis/lw-ai-prediction-api/image-metadata-enrichment). This API use case generates keywords and categories for images. This information can then be used as metadata for SEO, image-based product discovery, and more.

<iframe src="https://app.supademo.com/embed/cmh52yul62d9ccdwpmb0a8yl3?embed_v=2&utm_source=embed" loading="lazy" title="Image metadata enrichment in the LWAI Prediction API" allow="clipboard-write" frameborder="0" webkitallowfullscreen="true" mozallowfullscreen="true" allowfullscreen style={{  width: '100%', height: '500px' }} />

### Enhanced previews for integrated Lucidworks Platform products

{/* FUS-7813 - Preview pipeline overrides refactoring  */}

A new, system-level API was added to Fusion 5.9.15 that allows Commerce Studio and other Lucidworks Platform products to simulate configuration changes before they are published. This change supports the following improvements:

* **Improved safety:** Test and validate changes without affecting live search traffic, reducing the risk of errors or downtime.
* **Faster iteration:** Experiment and refine configurations in real time, improving development speed and decision-making.
* **Higher confidence in publishing:** Preview query behavior before deployment to increase trust in changes and reduce rollback events.

<Warning>
  Beginning with Fusion 5.9.15, all Commerce Studio integrations must have the `POST:/query/*/preview` and `GET,POST,PUT:/query-pipelines/**` permissions assigned to both the `lwp_user` and  `lwp_service_account` roles in Fusion. Verify that your roles meet the following requirements:

  <CodeGroup>
    ```bash lines highlight={3-4} lwp_user theme={"dark"}
    GET,PUT,DELETE,POST,HEAD:/query/experience-manager/**
    GET,POST:/query/*
    POST:/query/*/preview
    GET,POST,PUT:/query-pipelines/**
    GET:/suggestions/**
    GET:/solr/*/terms
    PUT,POST,GET:/apps/*/query-pipelines/**
    GET:/apps/*/query-profiles/**
    GET,PUT:/apps/*
    GET:/solr/*/admin/luke
    GET:/solr/**
    ```

    ```bash lines highlight={3-4} lwp_service_account theme={"dark"}
    GET,PUT,DELETE,POST,HEAD:/query/experience-manager/**
    GET,POST:/query/*
    POST:/query/*/preview
    GET,POST,PUT:/query-pipelines/**
    GET:/suggestions/**
    GET:/solr/*/terms
    PUT,POST,GET:/apps/*/query-pipelines/**
    GET:/apps/*/query-profiles/**
    GET,PUT:/apps/*
    GET,DELETE,PATCH,PUT,POST,HEAD:/apps/*/query-rewrite/**
    GET,HEAD:/templating/**
    GET:/solr/*/admin/luke
    GET:/solr/**
    ```
  </CodeGroup>
</Warning>

## Bug fixes

{/* FUS-7718 - Datasource Jobs are stuck on "Running" when kafka/connectors crashed.  */}

{/* FUS-7942 - why tika async parser does not index the body field in 5.9.12 */}

* Added a custom module that serializes Nashorn `undefined` values as JSON `null`, preventing serialization errors when such values appear in Java objects. When using the OpenJDK version of Nashorn, an exception was thrown when the context contained keys with undefined JavaScript values. This exception occurred because the class for the undefined values was not visible outside of the OpenJDK Nashorn package. A custom object mapper is added for the class so serialization issues are now resolved when handling `undefined` in JavaScript pipeline to run reliably under Java 17.
* Time zone conversion issues are fixed in the Consumption Dashboard that caused counts to span extra days. The time selector was creating an overlap due to UTC conversion that included counts for both the selected day and the following day. As the API only accepts dates and not times, the time selector was removed to ensure accurate daily totals for entitlement reporting.
* Addressed an issue where jobs are stuck in a running state during an upgrade. Allowing all crawl jobs to complete before performing Fusion upgrades is necessary to maintain data integrity and prevent invalid job states. Now requests to stop jobs during an upgrade process are enhanced to check for invalid states, attempt automatic fixes, and provide detailed status messages.
* Adjusted license checks when apps-manager is unavailable for consistent and predictable license validation behavior. In previous releases, if apps-manager was unavailable or license capabilities could not be verified, the license check could not complete. The addition of broader exception catching when retrieving license capabilities and improved error logging for service unavailability ensures predictable capability behavior while connectivity is restored.
* Fixed a permissions flow in the Fusion indexing path used by V2 connectors. REST calls made from index pipelines using V2 connectors were running without the required permissions. This returned insufficient permissions errors and skipped mapped fields. REST calls in index pipelines now execute as expected when using the required privileges.
* Fixed an error where the Tika asynchronous parser in Fusion 5.9.12 did not index the body field for SharePoint connector documents, such as DOCS, PPTX, and XLSX files. Documents were split into multiple parts, so the body content only ended up in child documents, while the parent document lacked the body field. Now the first parsed part of the document is sent to Fusion using the parent document ID so the body field merges into the expected parent document. This restores expected content extraction and preserves child parts for images and other embeds.

## Known issues

Upgrading to Fusion 5.9.15 moves stage SDKs from v1.0.0 to v2.0.0.
When upgrading, plugins compiled with SDK v1.0.0 do not load.
Pipelines referencing those stages remain hidden until you replace the plugins.

* Before upgrading, rebuild any custom index or query plugins from SDK v1.0.0 using SDK v2.0.0. Also, verify pipelines do not reference stages removed or renamed in the new plugins.
* After upgrading, upload the new plugin ZIP files to the blob store and wait for the installation to complete. At this point, the pipelines will reappear.

See [Upgrade notes for Stage SDK plugins](#upgrade-notes-for-stage-sdk-plugins) above for more details.

## Deprecations

For full details on deprecations, see [Deprecations and Removals](/docs/5/fusion/deprecations-and-removals).

### Deprecated jobs

The following jobs are deprecated in this release and will be removed in a future release:

* [Head/Tail Analysis](/docs/5/fusion/reference/config-ref/jobs/head-tail-analysis)
* [Phrase Extraction](/docs/5/fusion/reference/config-ref/jobs/phrase-extraction)
* [Synonym Detection](/docs/5/fusion/reference/config-ref/jobs/synonym-detection)
* [Token and Phrase Spell Correction](/docs/5/fusion/reference/config-ref/jobs/token-and-phrase-spell-correction)

Lucidworks recommends migrating to [Neural Hybrid Search](/docs/5/fusion/hybrid-search/overview), which achieves superior relevance compared to these legacy machine learning methods.

Rules previously generated by these jobs and promoted to the `_query_rewrite` collection will remain until you delete them.

## Platform support and component versions

### Kubernetes platform support

Lucidworks has tested and validated support for the following Kubernetes platforms and versions:

* **Google Kubernetes Engine (GKE):** 1.29, 1.30, 1.31, 1.32, 1.33
* **Microsoft Azure Kubernetes Service (AKS):** 1.29, 1.30, 1.31, 1.32, 1.33
* **Amazon Elastic Kubernetes Service (EKS):** 1.29, 1.30, 1.31, 1.32, 1.33

Support is also offered for Rancher Kubernetes Engine (RKE and RKE2) and OpenShift 4 versions that are based on Kubernetes 1.29, 1.30, 1.31, 1.32, 1.33; note that RKE2 may require some Helm chart modification. OpenStack and customized Kubernetes installations are *not* supported.

For more information on Kubernetes version support, see the [Kubernetes support policy](/docs/policies/lifecycle-policies/lw-version-support-lifecycle#kubernetes-support).

### Component versions

The following table details the versions of key components that may be critical to deployments and upgrades.

| Component           | Version                                           |
| ------------------- | ------------------------------------------------- |
| Solr                | fusion-solr 5.9.15 *(based on Solr 9.6.1)*        |
| ZooKeeper           | 3.9.1                                             |
| Spark               | 3.4.1                                             |
| Ingress Controllers | Nginx, Ambassador (Envoy), GKE Ingress Controller |
| Ray                 | ray\[serve] 2.46.0                                |

More information about support dates can be found at [Lucidworks Fusion Product Lifecycle](/docs/policies/lifecycle-policies/lw-version-support-lifecycle).
