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

# Enable Editing of Upstream Columns

> Make upstream linked item columns editable so users can modify properties of linked requirements, hazards, or other upstream work items directly from the Nextedy RISKSHEET grid.

export const LastReviewed = ({date}) => {
  if (!date) return null;
  const formatted = new Date(`${date}T00:00:00Z`).toLocaleDateString("en-US", {
    year: "numeric",
    month: "long",
    day: "numeric",
    timeZone: "UTC"
  });
  return <p className="mt-10 text-sm text-gray-400 dark:text-zinc-500 not-prose">
      Last reviewed on {formatted}
    </p>;
};

## Understanding the Default Behavior

Upstream columns are **read-only by default**. This protects linked items from accidental modification. To allow editing, you must explicitly override this on each column.

<Steps>
  <Step title="Set readOnly to false">
    Add `"readOnly": false` to the upstream column definition in your sheet configuration:

    ```yaml theme={null}
    {
      "columns": [
        {
          "id": "reqTitle",
          bindings: "requirement.title",
          "header": "Req. Title",
          "readOnly": false,
          "width": 250
        }
      ]
    }
    ```

    <Warning title="Case Sensitivity: readOnly, Not readonly">
      The `readOnly` property is case-sensitive. You must use `"readOnly": false` with an uppercase `O`. Using `"readonly": false` (all lowercase) has no effect and the column remains read-only. This is the most common configuration mistake when enabling upstream editing.
    </Warning>
  </Step>

  <Step title="Apply to Multiple Upstream Columns">
    When you have several upstream columns to make editable, add `readOnly: false` to each one individually:

    ```yaml theme={null}
    {
      "columns": [
        {
          "id": "reqId",
          bindings: "requirement",
          "header": "Requirement",
          "type": "itemLink",
          "width": 150
        },
        {
          "id": "reqTitle",
          bindings: "requirement.title",
          "header": "Req. Title",
          "readOnly": false,
          "width": 250
        },
        {
          "id": "reqPriority",
          bindings: "requirement.priority",
          "header": "Priority",
          "type": "enum:priorityEnum",
          "readOnly": false,
          "width": 100
        }
      ]
    }
    ```

    | Column                   | Editable?    | Reason                                            |
    | ------------------------ | ------------ | ------------------------------------------------- |
    | `requirement` (itemLink) | Yes          | Link columns allow linking/unlinking by default   |
    | `requirement.title`      | No (default) | Nested properties are read-only unless overridden |
    | `requirement.priority`   | No (default) | Nested properties are read-only unless overridden |
  </Step>

  <Step title="Understand Read-Only Overrides">
    Even with `readOnly: false`, certain columns remain non-editable:

    * Columns with a `formula` property are always read-only
    * Columns with a `serverRender` property are always read-only
    * System fields (`id`, `status`, `type`, `project`, `outlineNumber`, `author`, `resolution`, `created`, `updated`) cannot be made editable
    * Cells where Polarion permissions deny modification remain read-only at the cell level

    <Tip title="Toolbar Delete vs. Keyboard Delete">
      The toolbar delete button removes the entire row from the grid. To clear only the content of a cell (including in upstream columns), use the keyboard Delete key instead.
    </Tip>
  </Step>

  <Step title="Control the Link Column Separately">
    The link column itself (e.g., `bindings: "requirement"` with `type: "itemLink"`) controls the association between the risk item and the upstream item. To allow linking but prevent creation of new upstream items:

    ```yaml theme={null}
    {
      "id": "reqId",
      bindings: "requirement",
      "header": "Requirement",
      "type": "itemLink",
      "canCreate": false,
      "width": 150
    }
    ```

    Setting `canCreate` to `false` keeps the cell active for linking and unlinking existing items while preventing new item creation.
  </Step>
</Steps>

## Verification

Save the configuration and reload your Risksheet. You should now see the upstream columns without the read-only visual indicator (gray background). Click on an upstream property cell to verify it opens for editing. Make a change, save, and confirm the linked work item is updated in Polarion.

## See Also

* [Configure Upstream Traceability Columns](/risksheet/guides/columns/upstream-traceability) -- set up upstream columns
* [Add a Basic Column](/risksheet/guides/columns/add-basic-column) -- general column properties
* [Configure Permissions](/risksheet/guides/administration/permissions) -- Polarion permission settings
* [Configure Enum Columns](/risksheet/guides/columns/enum-columns) -- enum type configuration
* [Use Undo and Redo](/risksheet/guides/advanced/undo-redo) -- revert changes

<LastReviewed date="2026-06-24" />
