> ## 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.

# Set Up a Work Item Checklist

> Add a checklist to a work item type by creating a custom field and exposing it through the checklist form extension.

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>;
};

<Note>
  To set up a checklist on a document (LiveDoc) instead, see [Set Up a Document (LiveDoc) Checklist](/checklist/guides/setup/documents).
</Note>

## 1. Create the custom field

Create a new custom field of type **Text (multi-line plain text)**. This field will hold the checklist item, whose ID you'll reference in the next step (for example `dod`).

<Frame>
  <img src="https://mintcdn.com/none-17b4493f/1H1NryKwufJWld23/images/checklistCustomField.png?fit=max&auto=format&n=1H1NryKwufJWld23&q=85&s=36ab17a2d8e63901a549e15d03dd040f" alt="Custom Fields admin page for the userstory type, with the dod field's type dropdown open and Text (multi-line plain text) highlighted" lightAlt="Custom Fields admin page for the userstory type, with the dod field's type dropdown open and Text (multi-line plain text) highlighted" darkAlt="Custom Fields admin page for the userstory type, with the dod field's type dropdown open and Text (multi-line plain text) highlighted" className="dark:hidden" width="2338" height="1506" data-path="images/checklistCustomField.png" />

  <img src="https://mintcdn.com/none-17b4493f/1H1NryKwufJWld23/images/checklistCustomField-1.png?fit=max&auto=format&n=1H1NryKwufJWld23&q=85&s=7e82c6935a6858b0df538efe1d7e2e61" alt="Custom Fields admin page for the userstory type, with the dod field's type dropdown open and Text (multi-line plain text) highlighted" lightAlt="Custom Fields admin page for the userstory type, with the dod field's type dropdown open and Text (multi-line plain text) highlighted" darkAlt="Custom Fields admin page for the userstory type, with the dod field's type dropdown open and Text (multi-line plain text) highlighted" className="hidden dark:block" width="2338" height="1506" data-path="images/checklistCustomField-1.png" />
</Frame>

## 2. Expose the field on the work item form

**First**, make sure the custom field is exposed on the work item form, either as part of a **panel** or a **section**. This step is mandatory. The form extension hides the raw field from view, but the field still needs to be present in the form configuration — it is **not** supported to place the checklist field outside of a `<panel>` or `<section>`.

<Frame>
  <img src="https://mintcdn.com/none-17b4493f/DmUJjOTXttZGhiDi/checklist/assets/images/article-setup-new-work-items-checklist-h-6ba97cef.png?fit=max&auto=format&n=DmUJjOTXttZGhiDi&q=85&s=a43d23b6167ef40dc9c5569e66c8273b" alt="Work item layout XML showing the dod field placed inside a section, with the ChecklistFormExtension entries for dor and dod below it" width="1452" height="994" data-path="checklist/assets/images/article-setup-new-work-items-checklist-h-6ba97cef.png" />
</Frame>

**Second**, add the `ChecklistFormExtension` work item extension at the place on the form where you want the checklist to appear:

```xml theme={null}
<extension checklistId="dod" id="ChecklistFormExtension" label="Definition of Ready"/>
```

* `checklistId` refers to the ID of the custom field you created in step 1
* `label` is the title shown above the checklist section in the UI — set it to whatever you like
* `id` must be exactly `ChecklistFormExtension`

<Frame>
  <img src="https://mintcdn.com/none-17b4493f/892YPUCat-q05Sxp/checklist/diagrams/guides/setup/work-items/diagram-1.svg?fit=max&auto=format&n=892YPUCat-q05Sxp&q=85&s=1ffa9c6312e90110a5a6110cf8af832b" alt="diagram" style={{ maxWidth: "660px", width: "100%" }} width="660" height="260" data-path="checklist/diagrams/guides/setup/work-items/diagram-1.svg" />
</Frame>

<Warning>
  **Field must live inside a panel or section**

  Placing the `<field>` for your checklist custom field directly on the form, outside of a `<panel>` or `<section>`, is not supported. Keep the field declaration inside a panel or section even though the extension hides its default rendering.
</Warning>

## 3. (Optional) Set up a summary field

A summary field holds aggregated information about checklist completion, useful for lists, dashboards, and reports.

1. Create a new custom field of type **String (single line plain text)** with the ID `YOUR_CHECKLIST_ID_summary`. For example, if your checklist custom field from step 1 is `dod`, create a custom field called `dod_summary`.
2. Make this field read-only using the read-only fields configuration page (not by permissions).
3. **Required:** tell Checklist to calculate the summary field using **Project Administration > Config Properties**:

```properties theme={null}
nextedy.checklist.userstory.checklistsIdsForSummary=dor,dod
```

This is a comma-separated list of checklist IDs relevant to the `userstory` work item type.

<Tip>
  **Summary fields power reporting**

  Once a summary field is configured, it reflects checklist completion state without opening the work item, which makes it usable in queries, LiveReports, and dashboards. See [Export Checklists and Surface Progress in Reports](/checklist/guides/reporting-and-export) for more on this.
</Tip>

## 4. (Optional) Define a checklist template

To keep the checklist content centrally managed — so changes propagate to every work item using it — define a template using the `workItemTemplateId` configuration property:

```properties theme={null}
nextedy.checklist.requirement.chkApproved.workItemTemplateId=WI-124
```

Here `requirement` is the work item type and `chkApproved` is the checklist ID. You can also omit the type to apply the template to any type:

```properties theme={null}
nextedy.checklist.chkDone.workItemTemplateId=WI-125
```

Full details, including the built-in Polarion template workaround, are covered in [Create a Checklist Template](/checklist/guides/templates/create-a-template).

<Warning>
  **Duplicated checklist items with Polarion's built-in work item templates**

  If you use Polarion's own built-in work item templates (as opposed to `workItemTemplateId`) to seed a checklist, be aware of a Polarion bug (not a Nextedy Checklist bug): when Polarion copies data from a template to a new item, it changes the field's format from Text to Richtext. The workaround is to add a `ChecklistResetToTemplate` workflow function to the type's "init" action with a `checklist` parameter set to your checklist custom field's name — this resets the checklist after item creation and fixes the field type. See [Create a Checklist Template](/checklist/guides/templates/create-a-template) for the full workaround.
</Warning>

## How permissions interact with this setup

Two permission layers apply once your checklist is live:

* Who can **check/uncheck items** — controlled by standard Polarion field permissions (read-only fields or field-based permissions).
* Who can **change the checklist structure** (add/remove items) — controlled by the `nextedy.checklist._TYPEID_._FIELDID_._STATUS_.adminPermission` configuration property, often tied to workflow status so the structure can be frozen after a certain point.

See [Control Who Can Change the Checklist](/checklist/guides/permissions) for the full property hierarchy and evaluation order.

## Verification

You should now see a **Definition of Ready** (or whatever label you chose) section on the work item form, rendered by the checklist form extension, with checkable items instead of a raw text field. If you configured a summary field, it should update automatically to reflect the checklist's completion state once you check items and save.

<Frame>
  <img src="https://mintcdn.com/none-17b4493f/1H1NryKwufJWld23/images/checklistWithItems.png?fit=max&auto=format&n=1H1NryKwufJWld23&q=85&s=952a448a4332e8b25cec338be7b50a59" alt="Checklist With Items" title="Checklist With Items" width="1394" height="1152" data-path="images/checklistWithItems.png" />
</Frame>

## See also

* [Set Up a Document (LiveDoc) Checklist](/checklist/guides/setup/documents)
* [Create a Checklist Template](/checklist/guides/templates/create-a-template)
* [Control Who Can Change the Checklist](/checklist/guides/permissions)
* [Configure Gate Enforcement (DoD / DoR) and Freeze on Status](/checklist/guides/workflow-gates-and-freeze)
* [Export Checklists and Surface Progress in Reports](/checklist/guides/reporting-and-export)

<Accordion title="Sources">
  **KB Articles**

  * Setup new document (LiveDoc) checklist
  * How to create checklist template?
  * Setup new Work Items checklist

  **Support Tickets**

  * [#332](https://support.nextedy.com/helpdesk/tickets/332)
  * [#235](https://support.nextedy.com/helpdesk/tickets/235)
  * [#418](https://support.nextedy.com/helpdesk/tickets/418)

  **Source Code**

  * `proc-checklist-src/com.nextedy.polarion.checklist/src/com/nextedy/polarion/checklist/ChecklistServlet.java`
  * `proc-checklist-src/com.nextedy.polarion.checklist/src/com/nextedy/polarion/checklist/internal/ChecklistAdminService.java`
  * `proc-checklist-src/com.nextedy.polarion.checklist/src/com/nextedy/polarion/checklist/IChecklistService.java`
  * `proc-checklist-src/com.nextedy.polarion.checklist/src/com/nextedy/polarion/checklist/wf/ChecklistFailIfMandatoryUnchecked.java`
  * `proc-checklist-src/com.nextedy.polarion.checklist/src/com/nextedy/polarion/checklist/wf/ChecklistApplyTemplate.java`
</Accordion>

<LastReviewed date="2026-08-31" />
