Only this pageAll pages
Powered by GitBook
1 of 79

Ketryx Documentation

Loading...

Manuals

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Work Instructions

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Integrations

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Reference

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

HOW TO GUIDES

Loading...

Loading...

Loading...

API

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Introduction

Welcome to the documentation of Ketryx Platform, a system to build validated software, supporting FDA software compliance and compliance with standards like: ISO 13485, IEC 62304, and ISO 14971.

This documentation is structured as follows:

  • Manuals provide a high-level description of different areas of Ketryx Platform.

  • Work Instructions provide detailed, step-by-step guidance for how to perform certain tasks in Ketryx Platform.

  • Integrations provide instructions for how to set up and work with connections to various other systems.

  • Reference provides in-depth technical information.

  • API documents how to access Ketryx Platform programmatically, for integration with other tools and systems.

Google Workspace

MAN-13 Data Export

Manual for project data export, particularly related to 21 CFR Part 11 data retention policy compliance

1. Introduction

1.1. Purpose

The purpose of this manual is to guide users through the process of exporting all project data from Ketryx, ensuring data continuity by providing the ability to back up project information.

1.2. Scope

The scope of this manual is the data export mechanism from Ketryx.

2. Exporting all data from Ketryx

21 CFR Part 11 outlines requirements for electronic records and signatures, mandating that electronic records and signatures be trustworthy, reliable, and equivalent to paper records and handwritten signatures, with specific data retention requirements mirroring those for paper records. Ketryx ensures continuity for users by providing the ability to export all data — backing up complete project information. Ketryx offers two options for exporting your data.

2.1. Project export mechanism

Ketryx provides the capability to generate an archive containing all relevant project data in JSON format. This mechanism is ideal for creating a complete backup or fulfilling internal data retention policies related to compliance guidance, such as 21 CFR Part 11.

To enable this functionality, please .

2.2. API access

Ketryx provides programmatic access to manage configuration items and records, including data export. Please refer to the for further guidance.

Group API

API to manage groups in Ketryx

Ketryx exposes an API to manage groups programmatically. See also the documentation on authentication and API keys.

Groups

GitLab

Guide on integrating GitLab with Ketryx

1. Introduction

This section provides an introduction to the integration of GitLab with Ketryx. Our focus is on outlining the process of setting up this integration, utilizing Personal Access Tokens and Project Access Tokens, to enhance your software development practices. This guide will walk you through the steps required to establish a connection between GitLab and Ketryx.

Chrome extension

Guide on the Ketryx Chrome extension

1. Introduction

The Ketryx Chrome extension provides a seamless way to navigate between TestRail and Ketryx, enhancing your workflow efficiency. This extension allows you to:

  • Quickly access Ketryx records directly from TestRail

Azure DevOps

Guide on integrating Azure DevOps with Ketryx

1. Introduction

This section provides an introduction to the integration of Azure DevOps with Ketryx. Our focus is on outlining the process of setting up this integration, utilizing Personal Access Tokens (PAT) to enhance your software development practices. This guide will walk you through the steps required to establish a connection between Azure DevOps and Ketryx.

Source Code

Guide on working with source code and Git repositories in Ketryx

1. Introduction

1.1. Purpose

This guide provides an introduction to working with Git repositories in Ketryx. The focus is on outlining the process of setting up repositories. This guide will walk you through the steps required to establish a connection between Git and Ketryx.

Jira

Guide on the Ketryx integration with Jira

1. Introduction

Ketryx provides a uniquely deep integration with Atlassian Jira Cloud,

  • configuring it to align your Jira setup with standards such as ISO 13485, IEC 62304, and ISO 14971,

Authentication

Authentication for Ketryx API endpoints happens via API keys.

API keys can be configured at the organization level under Organization > API keys:

Each API key can have the following permissions, controlling what a caller using an API key can do with the API:

  1. Create project: whether new projects can be created

1.2. Tools

Tools used to develop and release a product with Ketryx Lifecycle Management are provided in MAN-01 Ketryx Lifecycle Management. The release process is described in detail in MAN-02 Software Release Process, while setting up code repositories is described in MAN-03 Supply Chain Management.

Ketryx does not support Code Change Reviews with GitLab at this time. We are working on adding this feature in the future. Please reach out if you this feature is a priority for you.

2. Repository access

The integration process with GitLab varies slightly depending on whether you are working with public or private repositories. Here's a breakdown of the key differences:

2.1. Public Repositories

  • Accessibility: Public repositories are open to the public, meaning that anyone can view the repository content and its history.

  • Integration Setup: For public repositories, the setup process for integrating with Ketryx is generally straightforward. You do not need to use an access token for basic integration tasks, such as SOUP dependency analysis.

2.2. Private Repositories

  • Accessibility: Private repositories restrict access to authorized individuals or collaborators. Only those with permission can view and interact with the repository.

  • Integration Setup: When integrating with private repositories, you typically require an access token. This token ensures secure and authorized communication between GitLab and Ketryx for tasks like SOUP dependency analysis.

It's important to consider your repository's visibility when setting up the integration, as public and private repositories have distinct access requirements. The integration guide provides specific instructions based on the type of repository you are working with, ensuring a seamless and secure integration experience.

3. Access tokens

3.1. Creating a Personal Access Token for GitLab

Please see GitLab's documentation. The scope read_repository scope should be selected.

3.2. Creating a Project Access Token for GitLab

An alternative to the Personal Access Token is the Project Access Token. Steps on how to create one can be found in GitLab's documentation. For the scope, read_repository scope should be selected. For the role of the token, Reporter should be selected.

4. Related features

4.1. Using the Code Change Review feature with GitLab

Ketryx does not support Code Change Reviews with GitLab at this time. We are working on adding this feature in the future. Please reach out if you this feature is a priority for you.

Configure custom TestRail instance URLs for self-hosted environments
  • Maintain a consistent workflow between both platforms

  • This guide provides step-by-step instructions for installing, configuring, and using the Chrome extension.

    2. Installation and Setup

    To install and set up the Ketryx Chrome extension:

    1. Open the Chrome Web Store and search for "Ketryx" (or use this link)

    2. Click "Add to Chrome" to install the extension

    3. Click the extension icon in your Chrome toolbar

    4. Click on the options page

    5. Configure your settings:

      • Enter your Ketryx instance URL

      • (Optional) Enter your custom TestRail instance URL if using a self-hosted version

      • Save your settings

    3. Using the Extension

    3.1. Basic Navigation

    When viewing a TestRail test case, test run or testplan:

    1. The extension automatically detects the current TestRail record

    2. A "See in Ketryx" button appears in the TestRail interface

    3. Click the button to open the corresponding record in Ketryx in a new tab

    3.2. Configuration Options

    The extension provides the following configuration options:

    • TestRail Instance URL: (Optional) Custom URL for self-hosted TestRail instances

    4. Frequently Asked Questions

    4.1. Q: How do I update my TestRail instance URL?

    1. Click the extension icon in your Chrome toolbar

    2. Click "open options page"

    3. Update the TestRail Instance URL field

    4. Click Save

    4.2. Q: The extension isn't detecting my TestRail records. What should I do?

    • Ensure you're logged into both TestRail and Ketryx

    • Verify that your TestRail instance URL is correctly configured

    • Check if your Ketryx project has been correctly synced

    4.3. Q: The extension opens the projects page

    This can happen when we don't find the item, make sure you are in a project that is being synced to Ketryx, and force the sync to make sure you have all the latest items.

    5. Security and Privacy

    The Ketryx Chrome extension:

    • Only stores configuration data locally

    • Does not collect or transmit personal information

    1.2. Tools

    Tools used to develop and release a product with Ketryx Lifecycle Management are provided in MAN-01 Ketryx Lifecycle Management. The release process is described in detail in MAN-02 Software Release Process, while setting up code repositories is described in MAN-03 Supply Chain Management.

    2. Supported platforms

    Ketryx supports Git repository data fetching for repositories hosted on GitHub, Bitbucket, GitLab, and Azure Repos. If you need support for other protocols like SVN, etc., please contact our support.

    3. Adding your repository to Ketryx

    On the project creation, or for existing projects on their settings page, you can add a repository:

    • To pull the Code Change Reviews (CCR)

    • For SOUP dependency analysis

    • Use Git-based configuration items

    The URL of the repository is required, and you can also add authentication information for the repository. This is required for private repositories, and for public repositories if you want to fetch CCR data.

    Additionally, the analyzed branch can be set, which is the branch that is used for SOUP dependency analysis, CCR data fetching or configuration items syncing. The default is main or, in lieu of that, master.

    Instead of a branch, you can also set a tag, which will be used for SOUP dependency analysis, CCR data fetching or configuration items syncing. This is useful if you want to analyze a specific release version, e.g., refs/tags/v1.0.0.

    You can also define a release ref pattern. The naming pattern used to detect release branches or tags. These can be version-specific. Use # as a SemVer-compatible version placeholder. For example, release/# will match release/3.2.1, release/3.2, or release/3 (considered in this order of precedence) for a version with version number 3.2.1. The default is refs/tags/#.

    3.1. Private repositories

    For private repositories, you need to add authentication information. This is done on the project settings page, where you can enable repository authentication. You can set a username and password, which will be used to authenticate with the repository.

    For more information about specific hosting services, see the guides for Bitbucket, GitHub, and GitLab.

    4. Related features and guides

    Please see MAN-03 Supply Chain Management: Software Dependencies for more information on how to use the SOUP dependency analysis feature.

    Please see MAN-09 Git-Based Configuration Items for more information on how to use Git-based configurations items.

    Please see the guide on Code Change Reviews using Ketryx for more information on how to use that feature, which is supported for GitHub and Bitbucket.

    Please see the documentation of the builds API and how to set up GitHub Actions for integration with CI/CD systems.

    synchronizing data between Ketryx and Jira to maintain proper electronic records,
  • enhancing the Jira user interface with widgets for visualizing traceability and approvals, and

  • enforcing workflows based on electronic signatures.

  • This guide provides answers to common questions around this integration.

    2. Setting up the integration

    To install the Ketryx app in Jira Cloud, you need to have administrative privileges on the Jira organization and the Manage connections permission in Ketryx (which, by default, is only assigned to organization owners). Then you can do the following:

    1. Log into Ketryx

    2. In Jira, install the Ketryx Connector for Jira app from the Atlassian Marketplace

    3. Complete the installation process of the Jira app by pressing Get started and Complete installation in Ketryx

    4. In Ketryx, confirm the connection by pressing Connect Jira organization

    Once the connection between your Ketryx organization and your Jira instance is established, you can create Ketryx projects that are connected to individual Jira space (formerly project).

    Note that each Jira instance can only be connected to one Ketryx organization, and each Jira space can only be connected to one Ketryx project (and vice-versa).

    3. Frequently Asked Questions

    3.1. Q: Do I have to use the provided Ketryx scheme for work types?

    Ketryx maintains four predefined work type schemes for common use cases, based on the full schema with all the Ketryx item types. If this does not fit your use exactly, you can either copy a Ketryx work type schema and tweak it, or use a completely custom work type scheme. When using a custom work type scheme, you will usually want to configure a custom mapping from Jira work types to Ketryx items, using the advanced setting Issue mapping.

    3.2. Q: Why does Ketryx introduce custom relation fields rather than using Jira's native links?

    There are two main reasons for this:

    1. Native links can go from any work item to any other work item, so you can't restrict the target of a particular relation. For instance, a has parent relation might point to any other item, while the Parent requirements fields can be restricted to only contain other Requirements as options.

    2. You can edit native links even when a ticket is otherwise read-only, i.e. even when the work item is already Resolved or Closed.

    That being said, Ketryx also recognizes native Jira links as long as they match the Ketryx relation names. These names can also be configured using the advanced setting Relation names. If you prefer to work with Jira links, you can use these, and potentially remove certain relation fields using the advanced setting Item fields.

    3.3. Q: How can I rename fields in the Ketryx schema?

    To rename fields, you can use the advanced setting Field names in the Ketryx organization configuration.

    Note that fields with custom names are created as custom fields in Jira, rather than using the fields provided by the Ketryx Jira app. Previous field values might have to be migrated from the previous field to the new field in Jira. This is why it is recommended to define the desired field names before starting to work with those fields in Jira.

    When switching from one custom name to another custom name (not for the initial switch from the default name to a custom name), you can also use the advanced setting Superseded field names to effectively rename the existing field rather than creating a new one, to avoid having to migrate field values from one to the other.

    contact our support
    Ketryx Item API documentation
    Create version
    : whether new versions can be created
  • Delete project: whether projects can be deleted

  • Delete version: whether versions can be deleted

  • Get generated document: whether documents can be generated and downloaded

  • List projects: whether a list of projects can be retrieved

  • List versions: whether a list of versions can be retrieved

  • Manage project settings: whether project settings can be retrieved and changed

  • Report test results: whether new builds and test results can be reported to Ketryx projects

  • Retrieve release status: whether the release status of project versions can be checked

  • Immediately after creating an API key, a secret token is displayed and can be copied and pasted into a secure location. This token can be used as the Authorization header in direct HTTP requests to the Ketryx API, in the following form:

    API keys can also be used as the api-key parameter to the Ketryx GitHub Action.

    Creating a new API key
    Authorization: Bearer KXTK_...
    1.2. Tools

    Tools used to develop and release a product with Ketryx Lifecycle Management are provided in MAN-01 Ketryx Lifecycle Management. The release process is described in detail in MAN-02 Software Release Process, while setting up code repositories is described in MAN-03 Supply Chain Management.

    Ketryx does not support Code Change Reviews with Azure DevOps at this time. We are working on adding this feature in the future. Please reach out if you this feature is a priority for you.

    2. Repository access

    The integration process with Azure DevOps varies slightly depending on whether you are working with public or private repositories. Here's a breakdown of the key differences:

    2.1. Public Repositories

    • Accessibility: Public repositories are open to the public, meaning that anyone can view the repository content and its history.

    • Integration Setup: For public repositories, the setup process for integrating with Ketryx is generally straightforward. You do not need to use an access token for basic integration tasks, such as SOUP dependency analysis.

    2.2. Private Repositories

    • Accessibility: Private repositories restrict access to authorized individuals or collaborators. Only those with permission can view and interact with the repository.

    • Integration Setup: When integrating with private repositories, you typically require an access token. This token ensures secure and authorized communication between Azure DevOps and Ketryx for tasks like SOUP dependency analysis.

    It's important to consider your repository's visibility when setting up the integration, as public and private repositories have distinct access requirements. The integration guide provides specific instructions based on the type of repository you are working with, ensuring a seamless and secure integration experience.

    3. Access tokens

    3.1. Creating a Personal Access Token for Azure DevOps

    Please see Azure DevOps's documentation.

    3.2. Creating a fine-grained Personal Access Token for Azure DevOps

    Make sure to choose the right organization as the Resource owner. On the screenshot below, fine-grained Personal Access Token will grant certain permissions only on the repositories owned by the Ketryx organization. In your case, the Resource owner will most likely be your organization (the company you are working for).

    The following Read-only permissions are required for the integration with Ketryx:

    • Code

    When creating the personal access token please make sure to select all necessary permissions for your application.

    Creating a new personal access token

    This token will serve as the authentication method to fetch the Git repository for SOUP dependency analysis from Azure DevOps.

    When entering the authentication credentials in Ketryx, the username has no effect, but the password should be the PAT.

    4. Related features

    4.1. Using the Code Change Review feature with Azure DevOps

    Ketryx does not support Code Change Reviews with Azure DevOps at this time. We are working on adding this feature in the future. Please reach out if you this feature is a priority for you.

    Bitbucket

    Guide on integrating Bitbucket with Ketryx

    1. Introduction

    This section provides an introduction to the integration of Bitbucket with Ketryx. Our focus is on outlining the process of setting up this integration, utilizing App Passwords and Repository Access Tokens, to enhance your software development practices. This guide will walk you through the steps required to establish a connection between Bitbucket and Ketryx.

    1.2. Tools

    Tools used to develop and release a product with Ketryx Lifecycle Management are provided in . The release process is described in detail in , while setting up code repositories is described in .

    2. Repository access

    The integration process with Bitbucket varies slightly depending on whether you are working with public or private repositories. Here's a breakdown of the key differences:

    2.1. Public Repositories

    • Accessibility: Public repositories are open to the public, meaning that anyone can view the repository content and its history.

    • Integration Setup: For public repositories, the setup process for integrating with Ketryx is generally straightforward. You do not need to use a access tokens for basic integration tasks, such as SOUP dependency analysis.

    • Data Retrieval: Accessing publicly available data from Bitbucket, like pull requests or code changes still requires a Repository Access Token to access Bitbucket's API.

    2.2. Private Repositories

    • Accessibility: Private repositories restrict access to authorized individuals or collaborators. Only those with permission can view and interact with the repository.

    • Integration Setup: When integrating with private repositories, you typically require an access token. This token ensures secure and authorized communication between Bitbucket and Ketryx for tasks like SOUP dependency analysis and Code Change Reviews.

    Ketryx supports SOUP dependency analysis using an App Password for private repositories. However, we recommend using a Repository Access Token for this purpose, as this type of token can be restricted to a single repository, while an App Password has access to all repositories in the account. Additionally, only by using the Repository Access Token can you access Code Change Reviews.

    It's important to consider your repository's visibility when setting up the integration, as public and private repositories have distinct access requirements. The integration guide provides specific instructions based on the type of repository you are working with, ensuring a seamless and secure integration experience.

    3. Access tokens

    3.1. Creating a Repository Access Token for Bitbucket

    A guide on how to create such a token can be found .

    The same authentication method is used to fetch the Git repository (for SOUP dependency analysis) as well.

    The repository access token needs to have at least the following permissions:

    1. Repository: Read

    2. Pull requests: Read

    When entering the authentication credentials in Ketryx, set the following:

    1. Username: x-token-auth (as a verbatim value, as documented )

    2. Password: (the access token)

    3.2. Creating an App Password for Bitbucket

    Please see for information on how to create an App Password.

    When entering the authentication credentials in Ketryx, the username has no effect, but the password should be the App Password.

    Ketryx supports SOUP dependency analysis using an App Password for private repositories. Only by using the Repository Access Token can you access Code Change Reviews as well. See for more information.

    4. Related features

    4.1. Using the Code Change Review feature with Bitbucket

    For information on how to use the Code Change Review feature, please see the .

    Webhooks

    Webhooks to receive API notifications upon certain events in Ketryx

    Webhooks can be used to receive programmatic notifications upon certain events in Ketryx.

    Webhooks are configured via the advanced setting Webhooks. The following events are supported:

    • recordApproval: Approval of an item record

    • releaseApproval: Approval of a version/release

    • milestoneApproval: Approval of a milestone

    • documentApproval: Approval of a document in the EDMS

    • testPlanApproval: Approval of a release test plan

    • vulnerabilityApproval: Approval of a vulnerability

    Each event can be configured to trigger a webhook call via an HTTP POST or GET request. When using a POST request (the default), a JSON payload will be sent with the request, containing the following data:

    Event
    Fields in JSON payload

    All IDs are specified as Ketryx ID strings (e.g., KXREC1N91YGN3JB8PVT4DDFVF4Y64YT).

    Note that webhooks are also triggered for partial approvals, i.e., any time a user makes an approval, even if the approved object is not fully approved yet. To distinguish fully approved objects, use fields such as isControlled, isReleased, and isFullyApproved. If the approval resulted in a new (controlled) record, that record will be indicated by the field newRecordId.

    Webhooks are delivered asynchronously. The result of webhook calls can be inspected in a project's History > System logs.

    Item API

    API to manage configuration items and records in Ketryx

    Ketryx exposes an API to manage configuration items programmatically. See also the documentation on authentication and API keys and webhooks.

    These API endpoints generally use pagination, based on the query parameters startAt and maxResults. The maximum number of entries to return at once is 1000. The effective values of startAt and maxResults is also returned as part of the API response.

    Items

    Item records

    The fields query parameter allows you to selectively include additional data in the response. You can specify one or more fields as a comma-separated list (e.g., fields=approvalState,otherField). Available fields include:

    • approvalState: Returns detailed approval information including approval steps, approving users, and approval blockers

    Query project records

    The fields query parameter allows you to selectively include additional data in the response. You can specify one or more fields as a comma-separated list (e.g., fields=approvalState,otherField). Available fields include:

    • approvalState: Returns detailed approval information including approval steps, approving users, and approval blockers

    Use this API to query records based on a query.

    Project API

    API to manage projects, versions, and documents in Ketryx

    Ketryx exposes an API to manage projects programmatically. There is also a formal OpenAPI specification defining this API, and a separate page about authentication and API keys.

    Projects

    Project

    Versions

    Version

    Generated documents

    Use this API to generate and download the SBOM document for a given project. Optionally, a certain version ID can be specified:

    • If no versionId is specified, the document for the "current draft" state (corresponding to the main analyzed branch, not specific to a certain version) is downloaded.

    • If a versionId is specified, the document is generated for the given version (and its corresponding release ref).

    By default, the response is an Excel file in binary form (xslx). Optionally, a format parameter with value cyclonedx can be used to generate and download the SBOM document in CycloneDX JSON format (specifically, ).

    MAN-11 Approval Rules

    Manual for approval rules in Ketryx

    1. Introduction

    1.1. Purpose

    The purpose of this manual is to instruct users on the different configuration options available for approval rules in Ketryx.

    Custom Relations

    Reference of the custom relations feature in Ketryx

    Ketryx provides flexible traceability management through Custom Relations, enabling you to define specialized relationships between configuration items that go beyond the standard relation types.

    This feature enables:

    • Tailored traceability for your specific product development workflow (e.g., software-hardware dependencies, threat-vulnerability links, feature dependencies)

    • Controlled linking with target item KQL filters that prevent invalid (according to your process) connections

    Project Settings

    Project settings in Ketryx

    Project settings in Ketryx are used to configure various aspects of a project, such as design verification, test management, release controls, and more. These settings are used to customize the behavior of Ketryx for a specific project, particularly to opt in or opt out of various computational controls enforced by Ketryx.

    Design verification

    Design verification settings are used to configure the design verification process for a project.

    Integrations Overview

    Integration architecture and synchronization reference for third-party systems

    Ketryx provides enterprise-grade integrations with existing development and quality management tools, enabling organizations to maintain their current workflows while achieving regulatory compliance. The platform acts as a central orchestration layer that connects disparate systems, enforces standardized processes, and maintains comprehensive audit trails across the entire software development lifecycle.

    Project updates

    A core premise of Ketryx is that it is a connected system, and that data is automatically synchronized between Ketryx and other systems. This is achieved through a combination of manual and automated triggers, as well as through the Ketryx API.

    Manual Triggers:

    Quality Management Documents

    Guide on using Google Docs for quality management in Ketryx.

    1. Introduction

    Ketryx offers a Google Drive integration to sync folder content to Ketryx at either the project or organizational level. Organizational-level syncing is particularly useful for Quality Management documents that govern all projects within your Ketryx organization. To enable org-level documents, please contact Ketryx support.

    Glob Pattern Matching Algorithm

    Reference of the Glob Pattern Matching Algorithm

    The glob pattern matching algorithm describes the rules and behavior for matching file paths against on the Ketryx Platform, specifically for restricting dependency file locations and detecting Git-based items for repositories.

    Examples

    Glob Pattern
    Meaning

    Guest Role: Users with Read-Only Access

    Guide on adding users to the organization with Read-Only access

    New in 2.13

    Overview

    Ketryx supports three types of user roles to accommodate different access needs:

    Require controlled design inputs before a design output can be approved

    If this is activated, an item can only be approved once all its design inputs are in a controlled state.

    Require re-verification of affected items after change control

    If this is activated, after an item is changed and enters a controlled state again, Ketryx will automatically unclose any other items affected by the change, i.e. transition any design outputs of the changed design input that are currently Closed back to Resolved, so they will need re-verification before entering a controlled state again themselves.

    You can see all affected items using a filter on the items screen called Re-verify affected items.

    Create re-verification flags for affected design outputs when design inputs change

    When enabled, Ketryx will automatically create re-verification flags for design output items that may be affected when a design input item completes change control (re-transitions to a controlled state after being modified). More information can be found here.

    These flags serve as reminders to review and verify that the design output items are still valid and up-to-date, given the changes to their related design inputs.

    Flags can be dismissed explicitly by clicking "Dismiss" or can be dismissed implicitly by the flagged item completing change control (re-transitioning to a controlled state after being modified).

    You are able to filter for flagged items using the KQL filter (which can be used in settings like the Invalid items filters or Custom KQL filters):

    is:flagged

    Test management

    The test management settings are used to configure the test management process for a project to customize the behavior of Ketryx for a specific project.

    Require a manual test execution for each effective automated test execution

    If enabled, a manual Test Execution item has to be created for the latest automated test execution, before the test is considered passing.

    This provides a way to enforce that each automated test is reviewed and electronically signed by itself, in addition to signing the overall testing report.

    This applies to automated test executions associated with a Test Case, not to automated tests that are directly associated with a Software Item Spec or other item.

    Require automated tests to be associated with test cases

    If enabled, automated tests reported to Ketryx are only considered if they are directly associated with a Test Case item. Automated tests associated with Software Item Specs or other items are not considered part of the test plan and testing report.

    Allow controlled failed test executions

    If this is activated, failing test executions do not block a release, as long as they are in a controlled state.

    Inherit excluded tests

    If this is activated, Test Executions from the previous release will be considered effective for Test Cases that have been excluded from a version's release test plan.

    Require test executions after controlled test cases

    If enabled, a Test Execution will only be taken into account if it was created after the Test Case entered a controlled state.

    Automatically update release test plan based on external test plan(s)

    If enabled and there are external test plans items defined for a version, the overall Ketryx release test plan for the version will be updated automatically to include the tests from those external test plans items.

    Release controls

    The release control settings are used to configure the release control process for a project to customize the behavior of Ketryx for a specific project. This enables you to enforce certain controls on the release process, or disable them if they are not needed.

    Require controlled dependencies

    If this is activated, a release can only be approved if all dependencies are in a controlled state.

    Require controlled items

    If this is activated, a release can only be approved if all items are in a controlled state.

    Require a controlled test plan

    If this is activated, a release can only be approved if the test plan is in a controlled state.

    Require generated release documents

    If this is activated, a release can only be approved if all required release documents are generated.

    Require uploaded build documents

    If this is activated, a release can only be approved if all required build documents are uploaded.

    Require up-to-date release documents

    If this is activated, a release can only be approved if all required release documents are up-to-date.

    Require approved release documents

    If this is activated, a release can only be approved if all required release documents are approved.

    Require full traceability

    If this is activated, a release can only be approved if all items are fully traceable. See the Traceability Configuration reference and MAN-07 Traceability for more information.

    Require controlled milestones

    If this is activated, a release can only be approved if all milestones are in a controlled state.

    Training

    Require training

    If this is activated, users will be required to complete training before they can approve items. For example, if a group has assigned training, Members must perform that training, or they will not be able to perform actions (i.e., approvals) as part of the Group.

    Risk management

    The risk management settings are used to configure the risk management process for a project to customize the behavior of Ketryx for a specific project.

    For even more fine-grained control over risk management using the advanced settings, please see MAN-08 Risk Management.

    Require harm and initial severity selection

    If enabled, users are not able to set a custom harm or initial severity value. Instead, they may only select a pre-defined harm, and the associated initial severity of that harm is enforced.

    Require derived risk analysis fields

    If enabled, users are not able to modify the derived risk analysis fields (i.e. initial and residual risk evaluation, risk acceptability).

    Require hazard selection

    If enabled, users are not able to set a custom hazard. Instead, they may only select a pre-defined hazard.

    Require hazardous situation selection

    If enabled, users are not able to set a custom hazardous situation. Instead, they may only select a pre-defined hazardous situation.

    Deleting a project

    If a user wants to delete a project in Ketryx, click the 'Delete project' button at the bottom of the project settings. Doing this will require the user to type the name of the project they are currently attempting to delete and provide their security key. After checking the 'I confirm I want to delete this project' box, the user will be able to delete the Ketryx project. Once a Ketryx project is deleted, there is no way to recover it.

    recordApproval

    userId, itemId, recordId, isControlled, newRecordId

    documentApproval

    userId, itemId, recordId, isControlled, newRecordId

    vulnerabilityApproval

    userId, itemId, recordId, isControlled, newRecordId

    releaseApproval

    userId, versionId, isReleased, releaseDate

    milestoneApproval

    userId, milestoneId, isFullyApproved

    testPlanApproval

    userId, versionId, testPlanId

    MAN-01 Ketryx Lifecycle Management
    MAN-02 Software Release Process
    MAN-03 Supply Chain Management
    here
    here
    Bitbucket's documentation
    2.2. Q: How do I create a Repository Access Token for Bitbucket?
    guide on Code Change Reviews using Ketryx

    Automatic two-way visibility that displays both forward and reverse relations when you link items

  • Integration with the traceability widget for easy link creation directly from item pages

  • Use custom relations when the default relation types (fulfills, tests, etc.) don't capture the specific dependencies and connections in your system architecture or development process.

    This guide explains how to configure and use custom relations in your Ketryx organization.

    NOTE:

    • Adding custom relations should only be performed by your Ketryx organization owner.

    Getting started

    The following will explain the full workflow for configuring a custom relation in Ketryx. In this example, we'll create a relation called "uses HW" that allows Software Item Spec items to link to Hardware Item Spec items.

    Configuration in Ketryx

    1. Navigate to Organization > Advanced

    2. Add your custom relation to the Custom Relations setting

    Field Descriptions:

    • Key (SW_USES_HW): A unique identifier for this relation. This key must be unique across all custom relations and should be descriptive.

    • direction: Either "upstream" or "downstream". Defaults to "downstream".

      • "downstream" means the relation points forward (e.g., Software → Hardware)

      • "upstream" means the relation points backward

    • fieldName: The human-readable name shown when viewing the source item (e.g., "Uses HW component")

    • reverseFieldName: The human-readable name shown when viewing the target item (e.g., "Is used by SW component")

    • relationName: The short name for the relation in the forward direction (e.g., "uses HW")

      • Warning: This value becomes permanent once the relation is used to link items (see Limitations section below).

    • reverseRelationName: The short name for the relation in the reverse direction (e.g., "is used by SW")

      • Warning: This value becomes permanent once the relation is used to link items (see Limitations section below).

    • sourceItemTypes: An array of item type names that can use this relation. Can include both system item types (e.g., "Software Item Spec", "Requirement") and custom item types (e.g., "Folder")

    • targetItemFilter: A KQL filter that defines which items can be targeted by this relation (e.g., "type:HW" for Hardware Item Spec items or "type:FOL" for custom Folder items)

    • traceabilityWidgetAddLabel: The label shown on the button in the traceability widget (e.g., "Add used HW component")

    1. Click Save changes and confirm

    At this point, every project in the Ketryx organization is ready to use the custom relation between Software Item Spec and Hardware Item Spec items.

    Limitations

    1. Relation Names are Permanent: Once a custom relation is used to link items, relationName and reverseRelationName become permanent. These values are stored in the backend database, and changing them will break existing traceability links.

      1. Best Practice: Choose your relation names carefully the first time. Plan your naming convention before implementation and test with a pilot relation before creating multiple relations.

    2. Reverse Relations Cannot Be Created from the Traceability Widget: Relations must always be created from the source item type. For example, for the SW → HW relation above (Software uses Hardware):

      1. You can create the link from the Software Item Spec

      2. You cannot create the link from Hardware Item Spec

    The reverse relations ("Is used by SW component") will be visible on Hardware Items, but new links must be created from the Software Item side

    Workaround: Always navigate to the source item type to create custom relation links. The reverse relation will automatically appear in the target item's traceability widget once created.

    !**

    Matches no files

    **/test.js

    Matches any file in the given root directory and its sub directories matching test.js

    test/**

    Matches any file in the test directory and its sub directories

    **/*.[jt]s

    Matches any file with .js and .ts extensions

    spec-[1-4].md

    Matches files spec-1.md, spec-2.md, spec-3.md, and spec-4.md

    **/*{.js,.ts,.jsx,.tsx}

    Matches any file with .js, .ts, .jsx, and .tsx extensions

    Recipes

    Match everything but exclude a certain file

    If you want to match all files but exclude dev/requirements.txt, you can use the following glob patterns:

    The first pattern ** matches all files. The second pattern !dev/requirements.txt negates the match for dev/requirements.txt, effectively excluding it.

    Ignore package-lock.json but keep package.json

    If you want to match all files but exclude package-lock.json while keeping package.json, you can use the following glob patterns:

    The first pattern ** matches all files. The second pattern !package-lock.json negates the match for package-lock.json, effectively excluding it. Since package.json is not explicitly excluded, it will still be matched by the ** pattern.

    As a result, package.json will be included in the analysis, while package-lock.json will be excluded. This way, Ketryx would only pick up the versions declared in package.json and ignore the lock file and the locked versions.

    An alternative glob pattern to just select package.json would be:

    This pattern will match any package.json file in any directory, compared to the previous pattern that matches all files except package-lock.json in the root directory.

    Matching a file path when multiple glob patterns have been provided

    • Matching occurs from the first defined pattern to the last defined pattern

    • During the matching, it keeps a match / no match state that is updated based on the current matching result of each glob pattern

    • The given file path is matched against each glob pattern

    • As soon as a non-negated glob pattern matches the file path, the matching state would be true

    • From there on, negated patterns (starting with !) matching the file path may set the matching state back to false

    • Following negation, subsequent matches of non-negated patterns can revert the matching state back to true, allowing for toggling between inclusion and exclusion of files or paths

    • Alternating matches of negated and non-negated patterns can toggle the matching state, allowing fine-grained control over which files or paths are ultimately selected

    • The final matching result will be returned, i.e. "the last match wins", and whether the file is included in the analysis is based on whether that match is negated or not

    **

    glob patterns

    Matches any file in the file path

    {
      "SW_USES_HW": {
        "direction": "downstream",
        "fieldName": "Uses HW component",
        "reverseFieldName": "Is used by SW component",
        "relationName": "uses HW",
        "reverseRelationName": "is used by SW",
        "sourceItemTypes": [
          "Software Item Spec"
        ],
        "targetItemFilter": "type:HW",
        "traceabilityWidgetAddLabel": "Add used HW component"
      }
    }
    **
    !dev/requirements.txt
    **
    !package-lock.json
    **/package.json
    1.2. Scope

    The scope of this manual is the configuration of approval rules within Ketryx.

    2. Project-level approval rules

    The most common way of configuring approval rules for a project and its configuration items is to use the project-level approval rules. These rules are applied to all items in the project and are configured in Project Settings > Approval Rules.

    2.1. Approval options

    There are four different approval options available:

    1. Separate owner approval: When activated, the approval by the owner of a configuration item only counts as the owner approval, regardless of which approval groups the owner might also be a member of.

    2. Separate group approval: When activated, each approval only counts for one approval group, namely the first group that the approver is a member of and that has not approved the item yet.

    3. Enforce approval order: When activated, approvals need to happen in the order defined by the approval steps. Furthermore, the owner of the item must approve first.

    4. Enforce initial owner approval: When activated, the owner of an item must be the first to approve. Any approvals afterwards may happen in any order. If Enforce approval order is enabled, then the owner has to approve first regardless of this setting.

    Approval options configuration

    NOTE: Out of the above four, the first two are only relevant for group-based approval steps.

    2.2. Approval steps

    Approval steps can be configured for all of the project's approval types, which are based on a combination of the project's work type schema, the organization's enabled modules (e.g. ALM, SBOM) as well as the custom document types and custom item types configured in the organization's advanced settings.

    Approval steps configuration

    Approval steps can be based on either groups or users. Every project will have a default set of approval steps based on the default groups configured in the organization. For group-based approval steps, it is also possible to define the minimum number of approvals required for each group.

    NOTE: If a specific user is selected as an approval step, their approval will only apply to that step and will not count toward any groups they belong to. Additionally, if the selected user is also the owner of the item, their owner approval will automatically fulfill their individual approval step.

    An example of the above would be:

    User-based approval step example

    In the above example configuration, Test User's approval will only ever count for their own approval step, even if they are a member of R&D Leads or Quality Managers. Additionally, if Test User is the owner of any Anomaly item in the project, their owner approval will fulfill their individual approval step. This is also reflected on all approval-related widgets in Ketryx by only showing the owner approval step for any Anomaly items owned by Test User.

    2.3. Release document rules

    By default, Ketryx applies the "Release" rule to all release document approvals.

    However, this behavior can be overridden by creating custom rules for specific system document types. This is done using the Add new release document rule dropdown.

    Add new release document rule dropdown

    These custom rules can be removed at any time, reverting the behavior back to the default "Release" rule.

    NOTE: These rules do not affect user-uploaded documents or custom release documents.

    2.4. Advanced settings

    The project-level approval rules can be configured further using the following advanced settings:

    • Approval rules

    • Approval workflow

    3. Item-level approval rules

    Users with the Manage item-level approval rules permission can configure approval rules for individual items in a project. This is an organization-level permission.

    Permission for item-level approval rules

    The configuration of item-level approval rules happens on the Record details page of an item by clicking on the Edit approval rules button.

    Edit approval rules button

    This will open a dialog that allows the user to configure the approval rules for the item.

    Edit approval rules dialog

    NOTE: There are a few specific limitations/behaviors related to item-level approval rules:

    1. Editing an item-level approval rule always requires MFA to be enabled.

    2. Editing an item-level approval rule will result in the creation of a new record.

    3. Editing item-level approval rules is only possible when the item is not in a "Resolved" or "Closed" state. An exception to this is Git-based items, which can be edited even when the item is in a "Resolved" state.

    4. The item-level approval rule will get reset whenever the item is transitioned out of a "Closed" state.

    5. The "Approval rules" and "Approval workflow" advanced settings will not have an effect on items that have item-level approval rules configured.

    4. Milestone-level approval rules

    Users are able to configure approval rules for individual milestones in a project, similar to the item-level approval rules.

    The configuration of milestone-level approval rules happens on the Milestones configuration page.

    Milestones configuration page

    When a milestone has a milestone-level approval rule configured, the rule will apply to both the milestone itself and all of its documents.

    NOTE: The milestone-level approval rule will not be applied to the milestone's items (in case of a configuration item milestone).

    Action
    Scope
    Systems Affected
    Purpose

    All Items page sync

    Partial

    All but Git

    Identify modified items and relations

    SBOM page sync

    Partial

    Only Git repos

    New commits and commits that haven't been synced in 7 days

    Save project Advanced settings

    Full

    All but Git

    Apply new settings to all work items

    Save project Configuration

    Full

    All but Git

    Apply new settings to all work items

    Save organization Configuration

    Automated Triggers:

    Schedule
    Type
    Target Systems
    Purpose

    Every hour at :20

    Partial

    All but Git

    Incremental updates on a schedule

    Every hour at :15

    Targeted

    Git repositories

    Code Change Review updates

    Daily at 3AM UTC

    Full

    TestRail

    API:

    Furthermore, data can be ingested via the Ketryx API, as is done, for instance, by the Ketryx GitHub Action which uses the Build API to report automated test results.

    2. Setting up the integration

    Set up domain-wide delegation for Ketryx’s Service Account

    1. Log into Ketryx.

    2. Navigate to Connections in the organization settings menu.

    3. Find the Google Workspace section and take note of the Client ID and Client Email. You will need both in subsequent steps.

    1. Follow these instructions to set up domain-wide delegation for Ketryx’s Service Account.

      1. This is a one-time setup for each Google workspace.

      2. Use the Client ID from the previous step.

      3. Grant the non-sensitive scope https://www.googleapis.com/auth/drive.file

    Prepare a Google Drive folder

    1. In your Google Drive, either create a new designated Shared Drive or select an existing one.

    2. Create or select a designated folder in the Shared Drive (e.g. containing your QM documents)

    3. Share the folder with the Ketryx Service Account using the Client Email found on the Ketryx Connections page, and grant at least Editor access.

    1. Open the folder and copy its ID from the URL, e.g., given the URL https://drive.google.com/drive/folders/1G7X8jRTKjCmyIaZE-fnIznRNHFD8DjQq, the ID is 1G7X8jRTKjCmyIaZE-fnIznRNHFD8DjQq

    Configure Ketryx to read in the Google Drive folder

    1. In Ketryx, create a new folder in your organization or a project, to which you want to sync documents from your Google Drive. Copy the name of that folder (e.g. GDrive)

    1. Navigate to the Advanced settings of your organization or a project for which you want to enable the integration.

    2. Find the External EDMS mapping setting and enable Google using the Google Workspace folder ID and Ketryx folder name copied earlier:

    Syncing documents & turning them into Ketryx configuration items

    1. In Ketryx, navigate to the folder you have configured to sync to Google Workspace and click on “Import new documents”.

    1. To pull in changes made to a document in Google Drive, open the details view of the document in Ketryx and click “Sync”.

    1. If you want to turn a document into a configuration item, please follow the steps in this guide.

    Owner

  • Member

  • Guest

  • The Guest role provides read-only access to your Ketryx organization. Users with the Guest role (hereafter, guest) can view content within the organization and its permitted projects, but cannot make any changes or modifications. This role is ideal for staff who need context without editing capabilities, external auditors requiring system access, or stakeholders who need visibility into your quality management system.

    Guest Capabilities

    What a Guest CAN do

    • The user can view any data, including audit trails.

    • The user can trigger a synchronization of Ketryx with external systems.

    What a Guest CANNOT do

    • The user cannot create, edit, or delete any data, configuration, or files.

    • The user cannot take any action that would alter the audit trail (e.g., acknowledging documents, approving items).

    Guests are prohibited from editing any data under any circumstances. Even if a guest is given edit permissions on a project, they will still not be able to exercise this permission. To achieve granular permissions, use the member role and groups. The Guest role can be seen as a security feature for users who should never, under any circumstances, get write access to Ketryx (e.g., auditors).

    Note: UI elements that trigger data modifications appear greyed out and disabled for Guests. For example, the "Create Item" button will be visible but non-functional:

    Setting Up Guest Access

    Inviting New Guests

    Organization Owners can invite Guests:

    1. Go to Organization

    2. Navigate to Members

    3. Use the Invite Member button

    4. Enter the following information:

      1. User's full name

      2. Email address

      3. The role the user has at your company

      4. Ketryx user role: Change Member (default) to Guest

      5. [Optional] Add a rationale for inviting this member. For example: "External auditor for internal audit"

    5. Use the Invite button

    6. The invited user should receive an invitation email.

    Change Role of an Existing User to Guest

    Organization Owners can change an existing user's role to Guest:

    1. Go to Organization

    2. Navigate to Members

    3. Find the user you want to change to Guest

    4. Use the Make guest button within the Action column of the table

    5. Confirm the user role change

    View Guest Status

    Organization Owners can view which users have Guest access:

    1. Go to Organization

    2. Navigate to Members

    3. Find the user within the table

    4. Look for Guest in the Role column

    KQL
    CyclonedX version 1.5

    Working with SPDX

    Manual for submitting dependencies via SPDX files using Ketryx Software Supply Chain Management

    1. Introduction

    The SPDX (Software Package Data Exchange) specification is a standard format for documenting the components, licenses, and copyrights of software packages. It is designed to facilitate the exchange of software bill of materials (SBOM) information between parties, enabling the identification and tracking of dependencies in software projects. The specification for SPDX version 2.3 can be found here.

    The following manual serves as a comprehensive guide for utilizing SPDX, specifically focusing on the submission of dependency lists (SBOM) in the SPDX JSON format through the Build API. This document aims to provide users with the necessary knowledge to effectively leverage SPDX for managing dependencies within software projects.

    1.1 Purpose

    The purpose of this manual is to equip users with the understanding and proficiency required to utilize SPDX for submitting dependency lists in the SPDX JSON format via the Build API. By following the guidelines outlined herein, users can streamline the management of dependencies in their software development processes.

    1.2 Scope

    This manual encompasses detailed instructions for utilizing SPDX in conjunction with the Build API to submit dependency lists in the SPDX JSON format. Topics such as project setup, API authentication and SBOM and vulnerability management are covered in different manuals, guides and references and are linked to in this document.

    2. Terms and definitions

    Acronym
    Definition

    3. Project setup

    To submit dependencies via the Build API using SPDX in JSON format, three prerequisites must be met:

    1. A project must be set up in Ketryx

    2. Either:

      1. A version must exist within the project, or

      2. A commit must be associated with the project

    If you don't have a project set up, follow the instructions in .

    Once a projects exists, either a version must be created if one does not yet exist or a repository with commits must exist within the project. A version can be created on the Releases page of the project. To add a repository to a project, please see .

    To submit dependencies, you need to have the project ID, and version ID or name, or commit SHA handy. Project ID and version ID can be found in the URL when you navigate to the project or version in Ketryx. The version name is the one shown on the Releases page, while the ID is the one in the URL. The commit SHA can either be found on the History > Commits page of the project or in your version control system.

    As a last step, an API key is required to authenticate the requests. Steps to creating an API key can be found in the API documentation.

    Once you have a project set up, you can start using the Build API to submit dependencies in SPDX JSON format.

    4. Supported SPDX formats

    Ketryx supports SPDX files in JSON format. Version 2.2 and 2.3 of the SPDX specification are supported.

    Such SPDX files can be obtained or generated with a variety of tools, including, in no particular order:

    Please note that sfyt before version did not generate a package record for the artifact described by the SPDX file. Ketryx uses this entry to properly identify top-level packages. If you are using syft to generate SPDX files, make sure to use version 0.86.0 or later.

    GitHub currently does not – as of March 27th 2024 – export the relationships between packages and the artifact described by the SPDX file. This means that Ketryx will not be able to properly identify top-level packages. As a result, all packages will be considered top-level packages.

    5. Submitting dependencies

    Ketryx provides two ways to submit SPDX files. Once the SPDX file has been submitted, the SBOM Review page in Ketryx will show the submitted dependencies for the version it was submitted for.

    5.1. Via the Build API

    To submit dependencies via the Build API, you first need to to the /build-artifact endpoint, followed by a POST request to the /builds endpoint. The request should include the project ID, version ID or name, or commit SHA, and the SPDX JSON payload. More details can be found in the documentation.

    5.2. Via the Ketryx GitHub Action

    When using GitHub Actions, instead of using the Build API directly, you can use the Ketryx GitHub Action to automate the submission of SPDX files. The GitHub Action is available in the .

    5.3 After submission

    After submitting the SPDX file, the dependencies will be processed by Ketryx. The dependencies will be displayed on the SBOM page of the project. Unless configured otherwise, the SBOM page shows the top-level packages contained in the SPDX file. Direct and indirect dependencies of these packages are shown on the Dependencies tab of each individual dependency's detail page.

    Ketryx uses the SPDX file's relationships list to determine the relationships between packages. If the SPDX file does not contain this information, Ketryx will not be able to determine the relationships between packages and will treat all packages as top-level packages.

    Ketryx currently supports the following relationship types:

    • DESCRIBES, used to describe the relationship between a package and the artifact described by the SPDX file. Mandatory if relationships are defined. Otherwise documentDescribes

    For Ketryx to display the transitive dependencies, the submitted SPDX file must contain transitive dependencies in the packages list and the necessary relationships in the relationships list (see note above) for each dependency. If these are missing, Ketryx will not display the transitive dependencies.

    5.4. Advanced configuration

    Ketryx allows for advanced configuration of the SPDX processing. This includes the ability to have Ketryx treat direct and indirect dependencies of top-level packages as top-level dependencies. In effect, this means that all dependencies of a top-level package are shown as top-level packages on the SBOM page. As a result, all dependencies will have to be approved and put into a controlled state before a release can be approved.

    This can be desireable if you want to ensure that all dependencies are controlled, not just the top-level packages. In case of some ecosystems, such as npm, this can however also result in a large number of dependencies being shown as top-level packages.

    For more information, please refer to the documentation.

    6. Cybersecurity

    By default, Ketryx will parse the SPDX file and create corresponding dependencies as defined within these files. It extracts crucial information about software packages, including version, license, and advisory information (introduced in SPDX version 2.3), which pertains to any vulnerabilities associated with the software packages.

    Ketryx will also check direct and indirect (transitive) dependencies for vulnerabilities. If a vulnerability is found, it will be displayed on the SBOM > Vulnerabilities page of the project. The Vulnerabilities tab of each individual top-level dependency's detail page will show the vulnerabilities found in that dependency and its dependencies.

    To learn more on how to create a vulnerability impact assessment and generate a vulnerability report for a project, see the manual.

    For a list of supported ecosystems that Ketryx can analyze for vulnerabilities, please refer to .

    Starting with SPDX version 2.3, advisory information can be included in the SPDX file via the of category SECURITY and type . Ketryx will extract this information and display it on the SBOM > Vulnerabilities page of the project. The Vulnerabilities tab of each individual top-level dependency's detail page will show the advisories found in that dependency.

    GitHub

    Guide on integrating GitHub with Ketryx

    1. Introduction

    1.1. Purpose

    This guide provides an introduction to the integration of GitHub with Ketryx. Our focus is on outlining the process of setting up this integration, utilizing Personal Access Tokens (PAT), to enhance your software development practices. This guide will walk you through the steps required to establish a connection between GitHub and Ketryx.

    1.2. Tools

    Tools used to develop and release a product with Ketryx Lifecycle Management are provided in . The release process is described in detail in , while setting up code repositories is described in .

    2. Repository access

    The integration process with GitHub varies slightly depending on whether you are working with public or private repositories. Here's a breakdown of the key differences:

    2.1. Public Repositories

    • Accessibility: Public repositories are open to the public, meaning that anyone can view the repository content and its history.

    • Integration Setup: For public repositories, the setup process for integrating with Ketryx is generally straightforward. You do not need to use a Personal Access Token for basic integration tasks, such as SOUP dependency analysis.

    • Data Retrieval: Accessing publicly available data from GitHub, like pull requests or code changes still need a Personal Access Token to access GitHub's API.

    2.2. Private Repositories

    • Accessibility: Private repositories restrict access to authorized individuals or collaborators. Only those with permission can view and interact with the repository.

    • Integration Setup: When integrating with private repositories, you typically require a PAT. This token ensures secure and authorized communication between GitHub and Ketryx for tasks like SOUP dependency analysis and Code Change Reviews.

    It's important to consider your repository's visibility when setting up the integration, as public and private repositories have distinct access requirements. The integration guide provides specific instructions based on the type of repository you are working with, ensuring a seamless and secure integration experience.

    3. Access tokens

    3.1. Creating a Personal Access Token (classic) for GitHub

    Please see or follow the following steps to create a PAT:

    1. Go to your GitHub account settings

    2. Navigate to Developer settings and then Personal access tokens

    3. Click on Generate new token (classic)

    4. Give your token a relevant name and select the desired scopes for access, but at least:

    This token will serve as the authentication method to fetch both Pull Request data and the Git repository for SOUP dependency analysis from GitHub.

    When entering the authentication credentials in Ketryx, the username has no effect, but the password should be the PAT.

    3.2. Creating a fine-grained Personal Access Token for GitHub

    Please see for more information on how to create a fine-grained PAT.

    Make sure to choose the right organization as the Resource owner. On the screenshot below, fine-grained Personal Access Token will grant certain permissions only on the repositories owned by the Ketryx organization. In your case, the Resource owner will most likely be your organization (the company you are working for).

    The following Read-only permissions are required for the integration with Ketryx:

    • Contents

    • Metadata

    • Pull requests

    It should look like this:

    This token will serve as the authentication method to fetch both Pull Request data and the Git repository for SOUP dependency analysis from GitHub.

    When entering the authentication credentials in Ketryx, the username has no effect, but the password should be the PAT.

    4. Related features

    4.1. Using the Code Change Review feature with GitHub

    For information on how to use the Code Change Review feature, please see the .

    4.2. AI-powered code analysis

    New in 2.14.4

    The Ketryx Assistant can now remotely analyze your GitHub repositories and provide intelligent code insights without requiring local cloning. This powerful capability enables comprehensive analysis of your codebase for compliance, security, and quality.

    Authentication Requirements

    For the Assistant to analyze your private repositories, ensure you have:

    1. Added your GitHub repository to your Ketryx project (see section 3)

    2. Configured a Personal Access Token with appropriate permissions:

      • For classic tokens: repo and read:user scopes

    The same authentication used for Code Change Reviews enables AI code analysis.

    Security & Privacy

    The code analysis feature is designed with security-first principles:

    • No local storage: Code is analyzed remotely via GitHub's API; no repository data is stored on Ketryx servers

    • Scoped access: The Assistant can only access repositories you've explicitly added to your project

    • Audit trail: All analysis activities are logged for compliance purposes

    For more information about the Ketryx Assistant's capabilities, see the .

    Authentication

    Guide on integrations with user authentication providers

    1. Introduction

    Ketryx supports different ways of authenticating users, including custom authentication providers specific to some organizations. This guide describes how to configure authentication providers at an organization level, as well as authentication options from a user perspective.

    2. Supported authentication methods

    By default, Ketryx supports the following authentication methods:

    • Login via email (by clicking a "magic login link" in an email)

    • Login via Google

    • Login via GitHub

    Individual organizations may also configure additional authentication methods, including:

    • Login via Okta

    • Login via any -compliant authentication provider (based on OAuth 2.0)

    If you care about other authentication methods, please .

    2.1. Custom authentication methods based on company domain

    to configure a specific email domain for your organization. In your request, provide the name of your Ketryx organization and a link to one of your Ketryx projects.

    Once Ketryx Support verifies and configures a specific email domain for your organization, users trying to log in with an email address under that domain can use authentication methods defined specifically for your organization. Moreover, any new user logging in with a matching email address will automatically join your organization as a member.

    Custom authentication methods include as well as any -compliant authentication provider. Organizations may also enable or disable authentication via email ("magic login links") as described for the advanced setting.

    Once a custom authentication method is configured (e.g., for an organization with an email domain of example.com), the login process would look like the following:

    1. User enters [email protected] on the Ketryx login page and presses Continue with email

    2. Custom authentication methods are determined based on the email domain example.com

    3. If there is only a single authentication method, that is initiated immediately without further user interaction (e.g., redirecting to Okta for login, and then back to Ketryx)

    Organization-specific authentication methods are configured using the advanced setting . for assistance with this configuration.

    2.2. Authentication via Okta

    For authentication via Okta, in addition to having Ketryx Support configure an email domain for your Ketryx organization, create a new App Integration in your Okta instance and configure it in the following way:

    • Use "OIDC - OpenID Connect" authentication with the application type "Web Application"

    • For Grant type, choose "Client acting on behalf of a user" via an "Authorization Code"

    • Set the Sign-in redirect URL to https://app.ketryx.com/api/auth/callback/okta

    • Set the

    In the advanced setting , set the following (based on a CLIENT_ID and CLIENT_SECRET retrieved from Okta, and an appropriate ORGNAME in the Okta URL):

    The flag allowDangerousEmailAccountLinking can be set to allow users to authenticate via Okta even after they have created an account by logging in via email. This is secure as long as you trust your Okta instance to verify and report accurate email addresses.

    Okta can also be configured to allow users to initiate a login to Ketryx directly from an Okta dashboard. Please contact your Okta administrator for assistance.

    3. Authentication process

    3.1. Signing up

    When trying to log into Ketryx, you might see a message "No user found for email ..., requiring to sign up first".

    The reason is that Ketryx requires some data for each new user, including your full name and organization. When trying to log in with an email address that is not known to the system yet, Ketryx asks you to sign up and provide this data. Please fill out the sign-up form, accept the , and press Sign up and receive a login link to complete the signup process.

    3.2. Inviting other users

    As an organization member with the Invite members permission, you can invite other members to your organization based on their email address. This works even if that email address does not match your organization's email domain, e.g., auditors.

    By default, newly invited members will have read-only access to the organization and its projects. Organization owners can change the permission of users or groups at the organization and project level.

    3.3. Audit log for system access

    All relevant actions of organization members are logged in an audit change log, which can be accessed by organization owners at the organization level and by anyone with the Manage project permission at the project level. Audit logs can also be downloaded as MS Excel files.

    Agents

    Guide on using Ketryx Agents to accelerate safety-critical development

    Agents provide automated, ongoing analysis of your project data. These configurable agents can continuously monitor your project for specific conditions, patterns, or potential issues, delivering recommendations and alerts for human review.

    Templated Agents

    We've created six ready-to-use agent templates for some of the most common needs of regulated teams. You can choose to run these agents manually or on a regular schedule.

    Choose from existing templates or create your own agent

    Requirement Conflict Detection

    This agent systematically analyzes requirements to identify inconsistencies, contradictions, or conflicts. It focuses on finding requirements that might contradict each other, particularly looking at performance vs. security requirements, regulatory compliance conflicts, resource allocation conflicts, and user access vs. functionality conflicts.

    Redundancy Detection

    This agent examines requirements, change requests, and software specifications to identify redundancies and overlaps. It classifies overlaps by type (direct duplication, partial overlap, implicit coverage, or cross-reference overlap), analyzes impact, and provides optimization recommendations.

    Test Coverage Analysis

    This agent evaluates the relationship between requirements and test cases to identify gaps in test coverage. It finds instances where tests might cover a requirement but aren't formally linked, helping ensure complete verification of all requirements.

    Anomaly Expert Quality Review

    This agent performs expert quality management reviews (EQR) of anomalies, providing feedback on the quality of proposed changes. It helps maintain consistent quality standards across your development lifecycle.

    Change Request Expert Quality Review

    This agent performs expert quality management reviews (EQR) of change requests, providing feedback on the quality of proposed changes. It helps maintain consistent quality standards across your development lifecycle.

    Complaint Request Expert Quality Review

    This agent performs expert quality management reviews (EQR) of complaints by analyzing and classifies complaints into complaint types. It helps to enhance the efficiency and accuracy of complaint management by prioritizing sensitivity to ensure adverse events are identified.

    Requirement Expert Quality Review

    This agent performs expert quality management reviews (EQR) of requirements, providing feedback on the quality of proposed requirements. It helps maintain consistent quality standards across your development lifecycle.

    Custom Agent Prompts to Try

    In addition to Ketryx's templated AI agents, you can create your own custom agents. Here are some effective agent prompts you can use when creating your own custom agents:

    1. Design Specification Completeness:Review all software specifications and identify which ones lack sufficient detail for implementation. Highlight areas where more specificity is needed and suggest improvements.

    2. Regulatory Compliance Assessment:Evaluate my requirements against ISO 13485 documentation standards. Identify any requirements that don't meet the expected level of detail, traceability, or verification and suggest improvements.

    3. Change Impact Analysis:For recent change requests, identify which other configuration items might need modification based on these changes.

    These agents can be scheduled to run on regular intervals (such as weekly) and will automatically process your selected items based on the KQL filter you provide. Results are delivered through the Ketryx platform and can optionally be sent via email notifications. This helps teams maintain high quality and compliance standards while reducing manual review effort.

    Agent Visibility

    When creating an agent, you can control who has access to the agent and its results:

    Project-Wide Agents

    • Visible to all project members

    • Results are accessible to the entire project team

    • Ideal for collaborative quality reviews, compliance checks, and standardized analysis

    • Help maintain consistent quality standards across the team

    Private Agents

    • Runs and results are only accessible to the agent creator

    • Useful for specialized analysis relevant to specific roles

    • Allow experimentation without cluttering the shared project space

    You can select the visibility option when creating a new agent by checking or unchecking the "Agent is visible to all project members" option. Both project-wide and private agents can be scheduled to run automatically and will send email notifications of results to the creator regardless of visibility settings.

    Agent-based KQL Filters

    New in 2.14

    After creating an AI Agent, you can convert its results into a custom KQL filter to identify items requiring attention earlier in your development process. For example, if you've configured a Change Request Affected Item Agent, you can create a KQL filter that displays all flagged items, allowing your team to quickly find them — for instance, in the All Items page — and address them.

    See to set up this Agent-based KQL filter

    Related videos

    Feedback and Support

    Ketryx is continuously improving. If you have any feedback or encounter any issues, please and let us know!

    Related Documentation

    MAN-04 Supply Chain Management: Cloud Dependencies

    Manual for cloud dependency configuration management using Ketryx Software Supply Chain Management

    1. Introduction

    Ketryx Software Supply Chain Configuration Management automatically keeps track of the user’s cloud infrastructure by storing, tracking, and grouping the configuration of their cloud instances and resources.

    For traceability, Ketryx keeps the history of recorded cloud configuration data for each version release and provides automatic generation of cloud configuration report documents for later reference.

    Ketryx currently supports AWS with AWS Config enabled. Other platforms, such as Google Cloud, Azure, etc., may be supported in the future.

    Item Re-verification Flagging

    Overview

    Item Re-verification Flagging provides automated change impact analysis by flagging downstream items when their upstream dependencies are modified. This ensures teams are aware of potential impacts to traced items and can take appropriate action to maintain system integrity.

    When an upstream item ("design input") is changed and re-approved, Ketryx automatically flags all downstream traced items ("design output") that may be affected by the change. This creates a clear audit trail of impact assessment and ensures nothing falls through the cracks during change management.

    How to invite multiple members to an organization at once

    New in 2.13.10

    Overview

    Ketryx allows organization owners to add multiple users at once and assign them to groups through CSV file upload. This feature streamlines the onboarding process for organizations scaling their teams, eliminating the need to add members individually.

    Full

    All

    Apply new settings to all projects

    Change version name/number

    Partial

    Depends on change

    Propagate renamed version (Jira, Jama) and version number (all)

    Change repository settings

    Full

    Only Git repos

    Apply new settings to all commits

    Complete data refresh

    Webhooks

    Partial

    Jira, TestRail

    Near-real-time incremental updates

    An API key must be created to authenticate requests

    is used by Ketryx. If neither is present, all packages are considered top-level packages.
  • CONTAINS, used by e.g. SPDX files describing a container image.

  • DEPENDS_ON or DEPENDENCY_OF, used to describe dependencies between packages.

  • SPDX

    Software Package Data Exchange, a standard format for documenting the components, licenses, and copyrights of software packages.

    MAN-03, section 3
    MAN-03, section 3
    Authentication
    syft
    sbom-tool
    GitHub
    FOSSA
    0.86.0
    upload the SPDX file as a build artifact
    Build API
    GitHub Marketplace
    Advanced Settings
    Vulnerability Management
    MAN-03, section 10
    external reference field
    ADVISORY

    repo

  • read:user

  • Click Generate token and make sure to copy it immediately, as it won't be shown again

  • For fine-grained tokens: Contents, Metadata, and Pull requests permissions

    MAN-01 Ketryx Lifecycle Management
    MAN-02 Software Release Process
    MAN-03 Supply Chain Management
    GitHub's documentation
    GitHub's documentation
    guide on Code Change Reviews using Ketryx
    What the assistant can do
    Assistant documentation
    GitHub fine-grained PAT resource owner note
    GitHub fine-grained PAT permissions
    Advanced settings
    Agent Filters Introduction
    Agent Filter Setup Demo
    reach out
    Enabling AI Features
    Choose to run the agents manually or on a regular schedule
    Check or uncheck the box to share an agent with other members of your project
    If there are multiple authentication methods configured for the organization, the user can choose one of them (which may include a button to retrieve a login link via email, as well as other authentication providers)
  • Once a new user is authenticated, they automatically become a member of the organization based on the email domain

  • Sign-out redirect URL
    to
    https://app.ketryx.com
  • Make sure that all desired members of the organization are assigned to the app in Okta

  • Configure the authentication provider in Ketryx using Okta's client ID, client secret, and issuer URL, as in the example below

  • OpenID Connect
    talk to us
    Submit a request to Ketryx Support
    Okta
    OpenID Connect
    Authentication providers
    Authentication providers
    Contact Ketryx Support
    Authentication providers
    Terms of Service
    Sign-up form when trying to log in with an email address that is not known to the system yet
    {
      "okta": {
        "clientId": "CLIENT_ID",
        "clientSecret": "CLIENT_SECRET",
        "issuer": "https://ORGNAME.okta.com",
        "allowDangerousEmailAccountLinking": true
      }
    }
    2. Terms and definitions

    The definitions of this document conform to the ones of ISO/IEC 62304.

    3. AWS support

    For each AWS resource, Ketryx will track the following data:

    • Resource type

    • Resource ID

    • Creation timestamp

    • Snapshot timestamp

    • Matched environment (as defined by the Ketryx AWS cloud configuration settings)

    • Raw JSON configuration (as provided by AWS Config)

    3.1. Prerequisites

    • An AWS account with access to all the resources that should be tracked for cloud configuration data. This account also requires AWS Config to be enabled.

    • An IAM user/role with relevant permissions to create new roles and policies for the relevant AWS account.

    • A Ketryx admin user with organization and project editing permissions.

    Note: Adding Cloud Configuration Management to Ketryx will require giving AssumeRole permissions to the Ketryx AWS account. Ketryx will only require the minimal set of permissions to get relevant configuration data from AWS Config.

    3.2. AWS Config

    Ketryx relies on AWS Config to fetch configuration data from an AWS account. Use the AWS Config dashboard to verify that all relevant resources for your project are listed.

    3.3. Resource tags

    All resources that should be tracked by Ketryx require a proper project tag and environment tag. If the AWS account is dedicated to a single project, the project tag may be omitted.

    Environment tag examples:

    • Key: Environment, Value: production

    • Key: Environment, Value: staging

    Project tag example:

    • Key: Project, Value: ketryx-app

    3.4. Manage AWS connections

    Login to Ketryx and go to your organization’s Connections page. There, you will find a dedicated AWS section to add and manage your connections.

    3.5. Add a new connection

    Press the Add AWS connection button and follow the instructions to set up the necessary Ketryx connection role and policies via the AWS IAM service.

    Note: This will require appropriate IAM user credentials to edit/create new roles/policies in AWS. If you don’t have the necessary credentials, talk to an AWS administrator to set up the necessary permissions.

    As soon as the role has been created, copy the role ARN into the Role ARN field, and select the relevant AWS region for accessing your AWS Config data. Ketryx will only access data in the selected region.

    Click the Save & Test Connection button to verify your connection. Ketryx will store your new ARN when a connection could be established.

    Important: Closing and opening the Add AWS Connection dialog will create a new Ketryx External ID used for identifying Ketryx on the AWS. In case you reopened the dialog, but have already created a new role, go to your IAM > Roles page > [your role], open the Trust relationships tab, and update the sts:ExternalId key to the dialog’s newly generated ID.

    On successful save, the connection will now show up in your AWS connections section. You may add multiple connections or remove existing connections. All configured AWS connections will be available for every project within your organization. It is impossible to add multiple connections for the same AWS account ID.

    3.6. Enabling AWS tracking in a Ketryx project

    After configuring your AWS connection, you can now add project-specific AWS settings to track all relevant AWS cloud configuration items.

    Open a Ketryx project you want to track cloud configuration items for, and navigate to Settings > Cloud Configuration.

    The cloud configuration settings page will automatically pre-select your newly created AWS connection. You may now configure your project to fetch data from your AWS account with the following settings:

    • Enable AWS cloud: When enabled, Ketryx will automatically fetch resources according to the configuration. Data will be fetched after each settings change, later on every 6 hours.

    • Project Filter: If your AWS account is used for multiple independent projects, you may provide a general tag filter that will instruct Ketryx to only fetch tagged resources with the relevant project tag. If your AWS account only hosts resources for your selected Ketryx project, this setting may be omitted to fetch all resources.

    • Environments: You may define one or more environment matchers for your target environments. All resources captured by Ketryx will be categorized by the given environment tags. Environments will be listed on the Cloud item page and in the generated Cloud Configuration report.

    3.7. Test and save settings

    Click the Run test button in the Test settings section to see the number of resources fetched for each environment. If you are satisfied with the result, press the Save changes button to save your settings. When Enable AWS cloud configuration is activated, Ketryx will start fetching data from AWS.

    Note: All data fetched from AWS will be stored as immutable records and will never change for versions released on Ketryx. Keep in mind that wrongly matched data will be tracked but may be marked as obsolete when adjusting the cloud configuration settings page later on.

    4. List cloud configuration data

    Within your project, navigate to the Cloud page to show all cloud configuration items. You may pick a version and/or environment to narrow down to a particular dataset. When Current is selected, all the latest up-to-date record data will be shown. When selecting a released version, all records recorded at the point of release will be displayed.

    4.1. Show cloud configuration item details

    Selecting a listed Cloud Configuration Item will show you the record details with all configuration parameters.

    4.2. Download a cloud configuration report

    You may download a cloud configuration report for a particular version. Select the target version and click the Download cloud configuration report button to start the process.

    Note: The generation may take a few minutes, depending on the amount of data.

    The cloud configuration report will contain all version-related cloud configuration items grouped by all recorded environments.

    Note: Configured cloud configuration settings may change, but released cloud configuration items will keep track of their environment name, even when the environment has been removed. Therefore, released cloud configuration reports will only list environments that existed at the point of release.

    What is Item Re-verification Flagging?

    Item re-verification flagging is a Ketryx feature that:

    • Detects when a controlled item has changed since a design output (e.g., a test case, child requirement, or software item spec) was last approved.

    • Automatically adds a flag on each directly design ouput that traces to the changed item.

    • Provides context and diff views so reviewers understand why the flag exists.

    • Records how the flag was resolved in the item and project audit trails.

    Relations point from design outputs to design inputs. For system relations, the direction of any relation can be found in the "Traceability to other configuration items" section of each item's work instruction (Example from WI-01 Requirement). The direction of Ketryx relations is intentional to enable proper design verification order (ex. to be able to link a Test Case to a controlled Requirement without affecting the controlled status of that Requirement)

    For custom relations, the user defines the source (design output) and target (design input)

    How It Works

    A re-verification flag is created for a design output when all of the following are true:

    1. Relationship exists

      • There is a direct traceability link between two items (e.g., “has parent”, “fulfills”, “tests”, or a custom relation), from the design output to the design input.

    2. Design input was previously controlled

      • The design input item was in a controlled/approved state according to your project’s approval rules.

    3. Design input is modified and re-approved

      • A new record of the design input item is created, and its content is changed.

      • The item is then moved through your workflow and re-approved, becoming the new effective controlled record.

    4. Design output is still based on the previous version

      • The downstream item has not been changed and re-approved since this reapproval of the design input.

      • At that point, Ketryx marks the downstream item as “review required” (flagged for re-verification).

    On the flagged item's record page in Ketryx

    When you open an item record that has a re-verification flag, you’ll see a notification at the top of the page that says something similar to:

    “Review required: design input has been updated. View flags to assess if this item needs to be updated accordingly. If so, move this item to an editable state and make changes. The flag will be resolved once this item is reapproved. If not, then you can dismiss the flag below.”

    You can click in this notification to navigate down the page to the Re-verification flags section. This section typically includes:

    • A link to the design input that was changed.

    • An action to view the change that was made to the design input.

    • An action to dismiss/clear the flag (if no change is needed).

    In lists and filters

    Flagged items can be surfaced globally so they can’t be missed during release preparation:

    • On any page in Ketryx, you can filter for items with a re-verification flag by using the is:flagged KQL (which can also be used to configure a custom KQL filter or an invalid items filter)

    Flag lifecycle

    Re-verification flags follow a defined lifecycle:

    • Creation: Flags are automatically created when a design input item is modified and re-approved

    • Review: Team members can view the specific changes that triggered the flag

    • Resolution: Flags can be resolved through:

      • Manual dismissal: A user with approval permissions for the flagged item explicitly dismisses the flag.

      • Automatic clearing: The flag clears automatically when the item is reopened, modified, and re-approved.

    Example Scenario

    Scenario: Parent requirement change and child impact

    Given

    • A Ketryx project “Project A”

    • Requirements:

      • RQ 1

      • RQ 2

      • RQ 3

    • Relations:

      • RQ 3 > "has parent" > RQ 2 > "has parent" > RQ 1

    • All three items are controlled

    When

    • RQ 2 is:

      • Reopened

      • Edited (e.g., updated description or acceptance criteria)

      • Re-approved and returned to a controlled state

    Then

    • Only RQ 3 is flagged for re-verification, because it is the direct design output of RQ 2.

    • The flag on RQ 3:

      • Provides context that the flag originates from RQ 2.

      • Allows the user to see how RQ 2 changed (redlines)

    • A user in the approval rules for RQ 3 can dismiss the flag if no change is required, or

    • Someone on the team can reopen RQ 3, update it, and the flag will be automatically cleared upon re-approval.

    Blocking Releases with Flagged Items

    Re-verification flags can be integrated into Ketryx’s release checks so you can ensure no flagged items are included in a release version by using the is:flagged KQL in an invalid items filter. As long as flagged items exist in the version when an invalid items filter is configured, approval of the release will be blocked by the Items valid release checklist item.

    Prerequisites
    • You must be an Organization Owner to add multiple users

    • Groups must already exist in your organization before assigning users to them

    • Users can only be assigned the role of Member or Guest (not Owner)

    How to Add Multiple Users

    Step 1: Navigate to Members Page

    Go to your organization's Members page by selecting Organization → Members from the main navigation.

    Step 2: Initiate Bulk User Import

    Click the Bulk invite button located at the top left of the Members page.

    Step 3: Download CSV Template

    Click Download template to get the CSV file template. This template contains the required format and column headers for successful user import, including the currently existing groups in the organization.

    The CSV template includes the following columns:

    • Email (required): User's email address

    • First Name (required): User's first name

    • Last Name (required): User's last name

    • Ketryx user role (required): Either "Member" or "Guest"

    • Groups (optional): Current existing group in the organization

    Step 4: Prepare Your CSV File

    Open the CSV and fill out the CSV template with your user information:

    1. Enter one user per row

    2. Ensure all email addresses are unique

    3. Specify either "Member" or "Guest" for the Role column

    4. For group assignments, select the group the user should be assigned to by marking it with a character (e.g., "x").

    5. Save the file as a CSV file

    Important Notes:

    • All specified groups must already exist in your organization

    • Duplicate email addresses will cause the import to fail

    Step 5: Upload Your CSV File

    1. Click Upload CSV or drag and drop your prepared file

    2. Wait for the file to upload

    3. The system will validate your file for any errors

    The system will alert you to:

    • Duplicate users: If any email already exists in the organization

    • Invalid groups: If any specified group doesn't exist

    • Format errors: If required fields are missing or invalid

    Step 6: Confirm and Send Invitations

    Once validated

    1. Click Invite members to proceed with adding all users

    2. The system will process the bulk import

    3. Each new user will receive an invitation email automatically

    If this functionality is not available to you, please contact our support team to enable this functionality for you.

    Code Change Reviews

    Guide on recording and reporting Code Change Reviews using Ketryx

    1. Introduction

    1.1. Purpose

    Code reviews play a crucial role in the software development lifecycle as they help identify and rectify defects, security vulnerabilities, and other issues in the software code.

    This guide is dedicated to providing guidance on setting up code reviews in Ketryx. It aims to address common questions and offer insights into the process of establishing code reviews.

    1.2. Tools

    Tools used to develop and release a product with Ketryx Lifecycle Management are provided in . The release process is described in detail in , while setting up code repositories is described in .

    2. Supported platforms

    Ketryx supports Code Change Review (CCR) data fetching for repositories hosted on GitHub and Bitbucket.

    If you need support for other platforms like GitLab, Azure DevOps, etc., please .

    3. Setup

    Please see our SOUP documentation for more information about adding your repository to Ketryx:

    3.1. GitHub

    If you've added your GitHub repository, but still can't see the CCR Report, follow the below process to make sure you have added an authentication token for your repository in the project settings page.

    1. Open the settings area of the project

    2. Add the repository from which you want to pull the Code Change Reviews

    3. Click Enable repository authentication,

      1. set username: name of the token (just for your own reference, can be anything),

    There are several steps to generate a GitHub token (classic), which can be found . To enable the CCR features, the token needs specific permissions mentioned below.

    For Ketryx to fetch Pull Request data from GitHub, authentication needs to happen via a Personal Access Token. Access tokens can be generated at the user level and provide authorization for specific scopes.

    This Personal Access Token will serve as the authentication method to fetch both Pull Request data and the Git repository for SOUP dependency analysis from GitHub.

    To find out how to generate a classic or fine-grained Personal Access Token, please see our GitHub FAQ entry .

    The Personal Access Token needs certain permissions for the Code Change Review feature to work.

    For the classic Personal Access Token, the following scopes are required:

    1. repo

    2. read:user

    For the fine-grained Personal Access Token, the following permissions are required:

    1. Contents

    2. Metadata

    3. Pull requests

    3.2. Bitbucket access tokens

    For Ketryx to fetch Pull Request data from Bitbucket, authentication needs to happen via a Repository Access Token. Access tokens can be defined at the repository, project, or organization level. Any of these work (just note that only the repository level is possible in the free version of Bitbucket). A guide on how to create such a token can be found .

    The same authentication method is used to fetch the Git repository (for SOUP dependency analysis) as well.

    The repository access token needs to have at least the following permissions:

    1. Repository: Read

    2. Pull requests: Read

    When entering the authentication credentials in Ketryx, set the following:

    1. Username: x-token-auth (as a verbatim value, as documented )

    2. Password: (the access token)

    4. Generating a Code Change Review report in Ketryx

    Once set up, the Code Change Review report is available on a project's Code page. To go there, navigate to the project for which a report should be generated. In the Configuration section of the sidebar, press Code. In the upper right hand corner of the page is a download button that will generate the report and initiate a download. Optionally, choose a version for which you want to generate the report for.

    Additionally, the Code Change Review report can be generated and approved for a release on a version's Documents page.

    5. AI-Assisted Code Review Analysis

    New in 2.14.4

    Beyond generating formal Code Change Review reports, the Ketryx Assistant can now provide interactive, AI-powered analysis of your pull requests and code changes. This capability complements the automated CCR reporting by offering on-demand insights and recommendations.

    What AI-Assisted Analysis Provides

    Interactive Workflow

    Unlike the static CCR report, AI-assisted analysis supports an interactive workflow:

    1. Request analysis of specific commits, branches, or pull requests

    2. Review findings with detailed explanations

    3. Ask follow-up questions to clarify recommendations

    4. Get suggestions for creating or updating configuration items (requirements, test cases, risks)

    Relationship to Formal CCR Reports

    The AI-assisted analysis is designed to complement, not replace, the formal Code Change Review report:

    AI-assisted analysis uses the same authentication and repository configuration as formal CCR reports. Ensure your GitHub repository is properly configured with authentication tokens as described in section 3.

    Best Practices

    • Use during development to catch compliance issues early before formal review

    • Request analysis after significant changes to understand downstream impacts

    • Combine with formal CCR for comprehensive code change documentation

    • Ask for specific guidance when uncertain about regulatory implications of changes

    For more information about the Ketryx Assistant's code analysis capabilities, see the .

    Generalized Documents

    This document provides step-by-step instructions for enabling functionality to manage documents as configuration items in Ketryx. This allows documents to leverage the robust configuration item system within Ketryx, which includes features like custom fields and custom relations.

    It also includes important notes and considerations to ensure correct setup and usage.

    To enable this capability, Ketryx support must activate the following feature flag: Documents as Items

    Organization-level advanced settings:

    Add the following configuration under Custom item types

    Enable documents as items

    Navigate to the organization's advanced settings, scroll down and select “Yes” for the enable documents as items option

    Verify configuration

    1. Navigate to the Documents page

    2. Upload or create a new document

    3. Click the Edit button in the upper left corner

    4. You will be able to see an option to select one of the three document types: Document / Long-lived Document / Pointwise Document

    Adding a custom relation

    A can be used from any other item type. However, if you want the relation to be accessible directly from the document itself, you must create custom relations from the document.

    To enable this capability, Ketryx support must activate the following feature flag: Custom Relations.

    Organization-level advanced settings:

    Add the following configuration under Custom relations:

    Note: To link a document to any specific type of item (e.g., a change request), you need to configure custom relations tailored for each item type.

    Next steps

    1. Choosing one of the options: Long-lived Document or Pointwise Document

      1. Only users who have the "Control documents" permission (Organization level) can change the document type.

    2. Choose the custom relations that you want to create

    Adding a custom field

    Organization-level advanced settings:

    For any custom field, you need to:

    1. Add a Custom Item Fields Configuration.

    2. Add the relevant Item Fields.

    3. Add a ‘custom’ section under Custom Item Types

    Add the following configuration under the custom item fields configuration

    Note: You can choose different types of custom fields by using this .

    Add the following configuration under item fields:

    Add the following configuration under Custom item types

    Clarifications

    • Bulk Upload of Documents and Custom Fields: It is possible to upload multiple documents simultaneously. However, custom fields cannot be included during the bulk upload process. These fields must be added manually after the upload is complete.

    • Commenting on Documents: Similar to other configuration items in Ketryx, documents support comments. Please refer to this for additional details.

    • Folder Structure Impact: The folder structure used for organizing documents has no effect on their functionality or behavior within the system.

    • Cross-Referencing Between Projects: Currently, cross-referencing documents across different projects is not supported. This functionality is expected to be introduced in a future update.

    Custom Item Types

    Reference of the custom item types feature in Ketryx

    Ketryx enables the tracking of arbitrary item types using the Custom Item Types feature. These item types can be either long-lived or point-wise (explained here) and they will behave in the exact same way as the default item types (e.g. Requirement) would.

    NOTES:

    • Adding custom item types should only be performed by your Ketryx organization owner and Jira instance admin.

    • After adding a custom item type, it is not recommended to change its lifecycle afterwards.

    Getting started

    The following will explain the full workflow for configuring a custom long-lived item type called Folder in both Ketryx and Jira. The steps assume that a project called Test Project exists in both systems.

    Configuration in Ketryx

    1. Navigate to Organization > Advanced

    2. Add the Folder item type into the Custom item types setting:

    1. Add the Folder item type into the Issue mapping setting (this can also be done in a specific project's advanced settings):

    1. Click Save changes and confirm

    At this point, every project in the Ketryx organization is ready to track Folder items from Jira. However, Ketryx does not assign any approval groups to custom item types by default. Therefore, it is recommended to configure the approval groups accordingly.

    1. Navigate to Projects > Test Project > Settings > Approval rules

    2. Add approval groups for the Folder item type

    Configuration in Jira

    It is considered a best practice to copy the default Ketryx schemes (Work type scheme and Work type screen scheme) into new ones instead of modifying the default ones.

    NOTE: If the aforementioned Ketryx-specific schemes have already been copied for your space (formerly project), you can directly edit them instead of copying them again.

    1. Create a new work type. This will introduce a new item type that can be used in Jira and Ketryx. Click the cogwheel button in the top right and navigate to Jira Settings > Work items. From the left-hand menu, navigate to Work types

    2. Click Add work type

      1. Name: Folder

    Now, both the Jira and Ketryx projects are configured to track Folder items.

    List all groups and members

    get
    Responses
    200

    Successful response

    application/json
    default

    Error response

    application/json
    get
    /groups

    Read all items in a project

    get
    Path parameters
    projectIdstringRequired

    Ketryx ID of the project to query items for

    Query parameters
    startAtintegerOptional

    Index to start at. Defaults to 0.

    Default: 0
    maxResultsinteger · min: 1 · max: 1000Optional

    Maximum number of results to return

    Default: 1000
    Responses
    200

    Successful response

    application/json
    default

    Error response

    application/json
    get
    /projects/{projectId}/items

    Read all item records for an item

    get
    Path parameters
    projectIdstringRequired

    Ketryx ID of the project

    itemIdstringRequired

    Ketryx ID of the item

    Query parameters
    fieldsstringOptional
    startAtintegerOptional

    Index to start at. Defaults to 0.

    Default: 0
    maxResultsinteger · min: 1 · max: 1000Optional

    Maximum number of results to return

    Default: 1000
    Responses
    200

    Successful response

    application/json
    default

    Error response

    application/json
    get
    /projects/{projectId}/items/{itemId}/records

    Query item records in a project

    get
    Path parameters
    projectIdstringRequired

    Ketryx ID of the project

    Query parameters
    versionIdstringOptional
    comparedVersionIdstringOptional
    fieldsstringOptional
    querystringRequired

    KQL query string

    startAtintegerOptional

    Index to start at. Defaults to 0.

    Default: 0
    maxResultsinteger · min: 1 · max: 1000Optional

    Maximum number of results to return

    Default: 1000
    Responses
    200

    Successful response

    application/json
    default

    Error response

    application/json
    get
    /projects/{projectId}/records

    WI-12 Variants and Versions

    Work Instruction for managing vulnerability impact assessments across versions using variants

    1. Introduction

    1.1. Purpose

    This Work Instruction provides a guide on how to manage vulnerability impact assessments for different versions of your product using Ketryx's versioning and variant management capabilities.

    Xray

    1. Introduction

    Ketryx provides seamless integration with by fetching data from Xray and mapping it to Ketryx items.

    This guide explains how to set up the Xray for Jira integration, describes how data is mapped to Ketryx by default, and outlines how it can be customized.

    WI-11 Document

    Work Instruction for documents in the Electronic Document Management System (EDMS)

    1. Introduction

    This work instruction provides a comprehensive guide for utilizing the Ketryx Electronic Document Management System. It is assumed that users have appropriate access to the system and are familiar with basic document management concepts.

    Generalized Risk Table

    New in 2.14.7

    With the introduction of , Ketryx' ability to store and control risk information for varying risk management processes was greatly expanded. The Generalized Risk Table provides a table that is accommodates this flexibility. This reference page will walk you through the main features of this new screen and the basics of configuring it for your needs and processes.

    The Generalized Risk Table is not currently generally available. If you would like to enable it in your organization, please contact the Ketryx support team.

    Release Documents

    Guide on using Google Docs for release document management in Ketryx

    1. Introduction

    Ketryx provides seamless integration with Google Docs for managing release documents for validated software. This integration enables:

    • Integrate automated release documents with your existing document management

    set password: the actual GitHub token

  • Click Save

  • All changes in a version

    Specific changes or patterns

    Feature

    Formal CCR Report

    AI-Assisted Analysis

    Purpose

    Release documentation and audit trail

    On-demand insights and recommendations

    Format

    Structured Excel document

    Interactive conversational analysis

    Timing

    Generated for version releases

    Available anytime during development

    Compliance

    Formal controlled document

    Guidance and decision support

    MAN-01 Ketryx Lifecycle Management
    MAN-02 Software Release Process
    MAN-03 Supply Chain Management
    contact our support
    MAN-03 Supply Chain Management
    here
    here
    here
    here
    Assistant documentation

    Scope

    GET /api/v1/groups HTTP/1.1
    Host: app.ketryx.com
    Accept: */*
    
    {
      "groups": [
        {
          "id": "text",
          "name": "text",
          "userMembers": [
            {
              "userId": "text",
              "email": "text",
              "name": "text"
            }
          ],
          "groupMembers": [
            {
              "groupId": "text"
            }
          ]
        }
      ]
    }
    {
      "items": [
        {
          "id": "text",
          "externalIds": [
            {
              "system": "Ketryx",
              "id": "text",
              "key": "text",
              "projectId": "text",
              "url": "text"
            }
          ],
          "createdAt": "2025-12-15T11:55:43.587Z",
          "isExcluded": true,
          "folderPath": [
            "text"
          ],
          "currentRecord": {
            "id": "text"
          },
          "controlledRecord": {
            "id": "text"
          }
        }
      ],
      "startAt": 1,
      "maxResults": 1
    }
    {
      "records": [
        {
          "id": "text",
          "itemId": "text",
          "type": "text",
          "title": "text",
          "isControlled": true,
          "revision": 1,
          "createdAt": "2025-12-15T11:55:43.587Z",
          "introducedInVersion": {
            "id": "text",
            "name": "text"
          },
          "obsoleteInVersion": {
            "id": "text",
            "name": "text"
          },
          "fields": [
            {
              "label": "text",
              "type": "string",
              "value": null
            }
          ],
          "relations": [
            {
              "type": "text",
              "toItem": {
                "id": "text",
                "projectId": "text"
              }
            }
          ],
          "fileUrl": "text",
          "approvalState": {
            "steps": [
              {
                "name": "text",
                "type": "group",
                "group": {
                  "id": "text",
                  "name": "text"
                },
                "users": [
                  {
                    "id": "text",
                    "email": "text"
                  }
                ],
                "approvingUsers": [
                  {
                    "id": "text",
                    "email": "text"
                  }
                ],
                "isFullyApproved": true,
                "minApprovals": 1
              }
            ],
            "designInputsBlockingApproval": [
              {
                "id": "text",
                "projectId": "text"
              }
            ],
            "instructionText": "text",
            "invalidFields": [
              "text"
            ],
            "milestoneBlockingApproval": {
              "id": "text",
              "name": "text"
            }
          }
        }
      ],
      "startAt": 1,
      "maxResults": 1
    }
    {
      "records": [
        {
          "id": "text",
          "itemId": "text",
          "type": "text",
          "title": "text",
          "isControlled": true,
          "revision": 1,
          "createdAt": "2025-12-15T11:55:43.587Z",
          "introducedInVersion": {
            "id": "text",
            "name": "text"
          },
          "obsoleteInVersion": {
            "id": "text",
            "name": "text"
          },
          "fields": [
            {
              "label": "text",
              "type": "string",
              "value": null
            }
          ],
          "relations": [
            {
              "type": "text",
              "toItem": {
                "id": "text",
                "projectId": "text"
              }
            }
          ],
          "fileUrl": "text",
          "approvalState": {
            "steps": [
              {
                "name": "text",
                "type": "group",
                "group": {
                  "id": "text",
                  "name": "text"
                },
                "users": [
                  {
                    "id": "text",
                    "email": "text"
                  }
                ],
                "approvingUsers": [
                  {
                    "id": "text",
                    "email": "text"
                  }
                ],
                "isFullyApproved": true,
                "minApprovals": 1
              }
            ],
            "designInputsBlockingApproval": [
              {
                "id": "text",
                "projectId": "text"
              }
            ],
            "instructionText": "text",
            "invalidFields": [
              "text"
            ],
            "milestoneBlockingApproval": {
              "id": "text",
              "name": "text"
            }
          }
        }
      ],
      "startAt": 1,
      "maxResults": 1,
      "total": 1
    }
    GET /api/v1/projects/{projectId}/items HTTP/1.1
    Host: app.ketryx.com
    Accept: */*
    
    GET /api/v1/projects/{projectId}/items/{itemId}/records HTTP/1.1
    Host: app.ketryx.com
    Accept: */*
    
    GET /api/v1/projects/{projectId}/records?query=text HTTP/1.1
    Host: app.ketryx.com
    Accept: */*
    

    Type: Standard Issue Type (Level 0)

  • Click Add

  • Update the work type scheme. This will make sure that the new work type is available in your space by adding it to a copy of the issue type scheme. From the left-hand menu, navigate to Work type schemes

    1. Filter for "ketryx" and click the "..." button next to the scheme assigned to your space (in most cases, it will be Ketryx issue type scheme)

    2. Click Copy

      1. Give the scheme a descriptive name, such as "Ketryx issue type scheme (Test Project)"

      2. Empty the Description field

      3. Drag-and-drop the Folder issue type from Available Work Types into Work Types for Current Scheme

      4. Click Save

  • Create a new screen. This will define what fields are shown when someone creates, views, or edits the work item.

    1. From the left-hand menu, navigate to Screens

      1. Filter for "ketryx task" and click the "..." button for Ketryx Task screen (the Task work type is a good default to base a new screen configuration on)

        1. Click Copy

          1. Give the screen a descriptive name, such as "Ketryx Folder screen"

          2. Empty the Description field

          3. Click Copy

        2. The following steps are only required for long-lived item types:

          1. Filter for "ketryx folder" and click the "..." button for Ketryx Folder screen

          2. Click Configure

            1. Add the

  • Create a screen scheme. This will associate your new screen with the new work type

    1. From the left-hand menu, navigate to Screen schemes

      1. Click Add screen scheme

        1. Give the screen scheme a descriptive name, such as "Ketryx Folder screen scheme"

          1. Default Screen: Ketryx Folder screen

          2. Click Add

  • Update the Work Type Screen Scheme. This will connect your new work type to the screen scheme you just created, so Jira knows what layout to use.

    1. From the left-hand menu, navigate to Work type screen schemes

      1. Filter for "ketryx" and click the "..." button for Ketryx issue type screen scheme

        1. Click Copy

          1. Give the issue type screen scheme a descriptive name, such as "Ketryx issue type screen scheme (Test Project)"

          2. Empty the Description field

          3. Click Copy

        2. Filter for "ketryx" and click the "..." button for Ketryx issue type screen scheme (Test Project)

        3. Click Configure

          1. Click Associate an issue type with a screen scheme

            1. Issue Type: Folder

            2. Screen Scheme: Ketryx Folder screen scheme

  • Assign the new schemes to your space. This will apply your new configurations to the space so the new work type and screen are available to users.

    1. Click the cogwheel button in the top right and navigate to Jira Settings > Spaces

      1. Click the "..." button for Test Project

        1. Click Space settings

    2. From the left-hand menu, navigate to Work items > Types

      1. Click Actions > Use a different scheme

        1. Select Ketryx issue type scheme (Test Project)

    3. From the left-hand menu, navigate to Work items > Screens

      1. Click Actions > Use a different scheme

      2. Select Ketryx issue type screen scheme (Test Project)

      3. Click Associate

  • 1.2. Scope

    This document covers the fundamental concepts and procedures for creating and managing variants of vulnerability impact assessments across multiple product versions. Note that variant management currently only works for vulnerability impact assessments.

    1.3. Key Concepts

    To effectively manage vulnerability impact assessments across versions, it is important to understand the following terms:

    • Version: Each version has a specific version number, which is extracted from the version name by default. Different versions might have the same effective version number, depending on your naming scheme and the configuration of Version number pattern.

    • Vulnerability Impact Assessment (VIA): A configuration item that documents the impact, severity, and mitigations for a vulnerability. In Ketryx, these are long-lived items.

    • Variant: When the impact of a vulnerability changes in a new version, you can create a new VIA as a variant of the original one. This allows you to have distinct assessments for the same vulnerability that are specific to each version.

    • Base Assessment: The original impact assessment from which a variant is created.

    • Effective Assessment: For any given version, only one impact assessment is considered effective. By default, Ketryx uses the most recently created assessment that is applicable to that version based on its Introduced in version and Obsolete in version fields. If an impact assessment has a variant, the variant will be considered the effective assessment.

    1.4. Responsibilities

    • Product Security Team: Responsible for assessing vulnerabilities and creating or updating impact assessments for each product version.

    • R&D Lead / Engineering Lead: Responsible for ensuring that development teams are aware of the effective vulnerability impact assessments for the versions they are working on.

    • Team Members: Can create variants of impact assessments when working on new product versions.

    2. Prerequisites

    Before you can manage vulnerability impact assessments, you must have vulnerabilities in your project. Vulnerabilities are typically introduced by:

    • Connecting a source code repository from systems like GitHub, GitLab, or Bitbucket. For more details, see Source Code Integrations.

    • Uploading a Software Bill of Materials (SBOM) file, such as a CycloneDX or SPDX file. For instructions, see the integration guides for CycloneDX and SPDX.

    • It is also highly recommended to enable the Enable vulnerabilities as configuration items setting in your project's Advanced settings. This ensures that vulnerability impact assessments are treated as full configuration items, requiring them to be controlled before a release, which is critical for regulated environments. You can find more details in the Advanced Settings documentation.

    3. Procedure description

    The following sections describe how to manage vulnerability impact assessments (VIAs) when a vulnerability affects multiple versions of a product.

    3.1. Step 1: Create the initial version

    To create an impact assessment for a version, the version must first exist in Ketryx. While versions can be synchronized from connected systems like Jira, you can also create them directly in Ketryx.

    1. Navigate to the Releases page in your project.

    2. Click the Create version button.

    3. In the dialog that appears, enter a name for your new version (e.g., 1.0.0).

    4. Click Create.

    Create initial version dialog

    The new version will now appear on the Releases page and can be selected throughout Ketryx.

    3.2. Step 2: Create the first impact assessment

    When a vulnerability is identified, you create an initial impact assessment.

    1. Navigate to the SBOM > Vulnerabilities page in your project.

    2. Select the vulnerability you want to assess.

    3. Click the Create impact assessment button.

    4. Fill in the details for the assessment, such as severity, resolution, and rationale.

    5. In the Introduced in version field, select the version where this assessment first becomes effective (e.g., 1.0.0).

    6. Leave the Obsolete in version field empty. This ensures the assessment remains effective for all subsequent versions until a new variant is created.

    7. Save the assessment.

    Vulnerability impact assessment dialog

    This first assessment now applies to version 1.0.0 and all future versions.

    3.3. Step 3: Create a new version from an existing one

    Before you create a variant for a new version, the version itself must exist in Ketryx.

    1. Navigate to the Releases page.

    2. From an existing version (e.g., 1.0.0), click the Create new version from baseline button.

    3. A dialog appears where you can configure the new version.

    4. Enter a name for the new version. It is strongly recommended to use a unique and higher version number (e.g., 1.0.1 or 2.0.0). If you use the same version number as an existing, unreleased version, Ketryx treats them as equivalent, which can lead to unexpected behavior with variants.

    5. Select the Lock records from this version checkbox. This is important for stability. It ensures your new version starts with all items in the exact state they were in version 1.0.0, and later changes to version 1.0.0 will not affect your new version.

    6. Click Create new version.

    7. If your dependencies and vulnerabilities come from an SBOM file (as mentioned in the prerequisites), you must ensure that your new version can see them. Go to the version's settings page and confirm the Inherit builds option is enabled. This option is enabled by default when creating a version using Create new version from baseline.

    Create a new version from an existing one

    The new version is now created and inherits the items from the version it was created from.

    Important: While locking records provides a stable base, a variant item will always take precedence. If you create a variant of a locked item, the variant will be the effective item in the new version, not the locked base item.

    3.4. Step 4: Create a variant for a new version

    Suppose you are working on version 2.0.0, and the impact of the same vulnerability is different. You now need a new assessment. Instead of starting from scratch, you can create a variant of the existing assessment.

    1. From the Vulnerabilities page, select version 2.0.0 from the version picker.

    2. Select the same vulnerability. You will see the existing assessment from version 1.0.0 is currently effective.

    3. You will be presented with an option to Create variant for the existing impact assessment.

    4. Clicking this will open a new assessment form, pre-populated with the information from the original assessment.

    5. The Introduced in version field will be automatically set to 2.0.0.

    6. Update the fields to reflect the new assessment for version 2.0.0.

    7. Save the new assessment.

    Create variant option for an existing impact assessment

    You have now created a new variant of the impact assessment.

    3.5. Step 5: View and understand effective assessments

    Ketryx makes it easy to see which assessment is effective for each version, and to compare assessments.

    1. Navigate to the SBOM > Vulnerabilities page.

    2. Use the version picker above the table to switch between versions. The table updates to show the effective impact assessment for each vulnerability in the selected version.

    3. Click the expand icon on the right of a vulnerability's row to expand its detail panel.

    4. The panel shows the details of the effective assessment for the version you selected.

    5. In the impact assessment dropdown menu, you can see a list of all impact assessments for this vulnerability (both base and variants). Select any assessment to view its details. This selection does not change the version shown on the main page, but allows you to easily compare information between variants and their base assessment and how they change over time.

    6. To view the history of a specific impact assessment configuration item, click the Record details link in the detail panel. This will take you to the records details page where you can see the complete history of records for that assessment.

    Vulnerability detail panel showing all assessments

    4. Advanced scenarios

    4.1. Making an assessment obsolete

    If you want an impact assessment to stop being effective after a certain version, you can edit it and set the Obsolete in version field.

    For example, if you set the Obsolete in version of the assessment for 1.0.0 to 2.0.0, it will no longer apply to 2.0.0 or any later versions. If no other assessment is created for 2.0.0, the vulnerability will have no effective assessment in that version.

    4.2. Re-using assessments across versions

    If an impact assessment is created for version 1.0.0 with an empty Obsolete in version field, it will automatically be the effective assessment for versions 1.1.0, 2.0.0, and so on, as long as no new variant is created for those versions. This allows you to reuse an assessment without creating unnecessary variants.

    2. Setting up the Xray integration

    Setting up the Xray integration will require ..

    • .. Jira Ketryx app is installed, and a Jira connection is set up in Ketryx (see Jira | 2.

      Setting up the integration), and

    • .. the Manage connections permission within Ketryx.

    To fetch data from Xray, Ketryx needs an Xray API key. The following steps need to be completed:

    1. Create an Xray API key in Xray

    2. Provide the Xray API key in Ketryx

    3. Review how Xray is now connected with your Ketryx projects

    2.1 Create an Xray API key in Xray

    In Jira, navigate to Apps > Manage your apps > XRAY > API Keys, and select "Create API Key." You will need the Client Id and Client Secret for the next step.

    2.2 Provide the Xray API key in Ketryx

    In Ketryx, navigate to Organization > Connections, locate the Xray section, set the Client ID and Client Secret, and then save.

    2.3 Review how Xray is now connected with your Ketryx projects

    The Jira Xray app is linked to your Jira instance and is now also connected to Ketryx. Any Ketryx Project (existing or new) that is connected to a Jira space (formerly project), which is using Xray issue types, will now sync Xray data based on the default or custom mapping (see next section "Mapping Xray data with Ketryx items").

    Example:

    1. Locate or create a Jira space that is connected to a Ketryx project (further information about the Jira integration can be found in the Jira integration documentation)

    2. Create an Xray Test in the Jira space

    1. Navigate to the Ketryx All items page and synchronize the project

    2. Review that the Xray Test Case is now synced with Ketryx, including the Xray data associated with it, such as Steps

    Note that, when you open an Xray item, such as a Test Case in Ketryx, you will observe that the item is not editable (there is no 'Edit' button). If you need to edit it, click the Source tab to open and edit the item in Jira.

    3. Mapping Xray data with Ketryx items

    By default, Xray issue types Test Plan, Test, and Text Execution are synced with Ketryx. The mapping can be customized.

    3.1 Default & custom data mapping to Ketryx

    • Xray Test Plans are associated with a particular version using Jira's Fix versions field (or another version field in a custom configuration)

    • Xray Test Plans contain Xray Test Executions or Xray Tests

    • Xray Test Executions contain one or more test runs, where each test run executes a particular Xray Test

    • Xray Tests can be associated with their tested items through Jira's native tests link

    For Xray Tests, Test Executions, and Test Plans, when the types in Jira use the names "Test", "Test Execution", "Test Plan", "Xray Test", "Xray Test Execution", or "Xray Test Plan", these item types will map to Ketryx items by default - Issue mapping in the Ketryx Advanced Settings is not needed. When other type names are used for these items, it is necessary to use Issue mapping in the Ketryx Advanced Settings to read the items into Ketryx. It is always necessary to use Issue mapping for other Xray item types, such as Precondition and Test Set, to read them into Ketryx.

    If your Jira is configured with Xray work item types prior to connecting Ketryx, the Ketryx-specific work types may be created with deconflicted names, such as Ketryx Test Execution instead of the usual Test Execution work item type.

    The following setup must be performed by a Jira user with Jira Admin access.

    Please note, that when using the default Ketryx scheme, you need to make a copy of that schema in Jira and add Xray items to it. Then apply the new scheme to the Jira space in order to make Xray items available. Establishing a Xray connection does not automatically change work type schemes.

    4. Using Xray Test Plans

    Note that, within the project setting (Configurations | Settings | Test management), besides other Test management configurations, you can set "Automatically update release test plan based on external test plan(s)," which automates the following steps.

    With Xray, you will usually maintain one or more Xray Test Plans in Jira and associate them with a version. To replicate the same selection of executed tests in the release test plan in Ketryx, do the following on the Test management page:

    1. Select the relevant version to be released

    2. Activate the filter Not contained in Xray test plan

    3. Select all filtered tests by clicking the checkbox in the top-left corner of the table

    4. Exclude the selected tests by choosing Manage release test plan > Exclude selected items

    5. Confirm the exclusion and approve the test plan

    5. Frequently Asked Questions

    5.1 What are the current limitations of the Xray integration?

    5.1.1 Linking Xray tests to requirements and specifications

    When working with Xray tests, you must use Jira's built-in linking functionality (the "tests" link type) to connect Xray tests to requirements, specifications, or test executions in Jira.

    Important limitation: The traceability widget cannot be used to link Xray test items to Ketryx requirements, specifications, or test executions.

    Why this limitation exists: Xray Tests are non-editable items from Ketryx's perspective, managed entirely within the Xray system. The traceability widget can only modify items that are fully managed by Ketryx or standard Jira items.

    For more details on Xray item linking behavior, see the support article on Xray item relationships.

    5.1.2 Attachments in Ketryx from Xray enterprise

    This issue only affects customers using the Xray Enterprise plan. Standard Xray Cloud users are not impacted.

    Customers using Xray Enterprise may experience issues downloading attachments through Ketryx. This is caused by a known bug in the Xray API where the GraphQL API returns incorrect download URLs that include an /enterprise path prefix.

    Ketryx workaround: Ketryx has implemented a workaround that automatically corrects these malformed URLs. This workaround is configurable and will be disabled once Xray resolves the underlying API bug.

    If you are experiencing attachment download failures with Xray Enterprise, contact Ketryx Support.

    5.2. How are Xray Tests, Test Plans, and Test Executions represented in the Traceability Widget?

    From an Xray Test perspective, the Traceability Widget shows the relationship to the Xray Test Plan as Contain in relations and the relationship to the execution of a Test Plan as Executed by relation.

    A Test Execution either represents the execution of the full Test Plan or an ad hoc execution of one Test Case.

    Note that Ketryx will always use the latest Test Execution for each Test Case, regardless of whether it was created for every Test Case in the Test Plan or just for an individual Test Case.

    5.2.1 Test Execution with a Test Plan

    If a Test Plan contains multiple Test Cases, the Test Execution will also contain these Test Cases and can be perceived in the Traceability Matrix as "* related items hidden" | "Showing * related item(s)". Additionally, all Test Executions would also be shown as such.

    Example: The Text Plan "Xray Test Plan 1" includes the two test cases "Xray Test 1" and "Xray Test 2". The Test Plan "Xray Test Plan 1" has been executed with "New Execution for Test Plan Xray Test Plan 1":

    The Test Execution will contain the results of each test case run:

    5.2.2 Ad hoc Test Execution of a Test Case

    If a Test Case is executed ad hoc, the Test Case is related as Executed by to the Test Execution.

    5.3 The Ketryx widgets are not displayed on the Xray Test Plan, Test, or Test Execution?

    Ketryx widgets might not be displayed by default when Xray items are displayed in Jira.

    You can either open the app on the Jira item using the View app actions button or configure the default behaviour using the Ketryx advanced setting "Jira widget display" (see Advanced Setting | Jira widget display)

    Xray Test Management for Jira
    1.1. Purpose

    The purpose of this work instruction is to facilitate efficient document management and control within the EDMS. It includes instructions for managing and controlling training documents as well as document organization.

    1.2. Scope

    This work instruction covers all technical functionalities of the EDMS, aimed at achieving effective document control and training implementation.

    1.3. Records and evidence

    Records for each created or uploaded document will be held based on the records and retention policy. Data on the status of training documents can be used to generate the following artifacts:

    • Training Status Report

    Moreover, users can download individualized training status reports for each project member.

    1.4. Definitions and Acronyms

    • EDMS - Electronic Document Management System

    1.5 Responsibilities

    The majority of tasks involved in a document's lifecycle, including creating, uploading, editing, acknowledging, and revising documents, can be carried out by any user who has access to the project. Consequently, these steps are categorized as accessible to "Anyone". However, certain steps that exclusively pertain to members of approval steps will be clearly annotated as such.

    1.6. Permissions

    User permissions for creating and editing documents are managed through the project's permission settings under Edit documents.

    Likewise, the permission for a user to approve a document, thereby initiating its transition into a controlled state, is overseen and managed within the project's approvals settings page, specifically under the section titled Document.

    2. Procedure description

    2.1. Step 1: Upload or create a document

    Anyone

    To initiate document management, users can upload an existing document by selecting Upload documents and choosing the file.

    The EDMS supports many file types, including:

    • CSV

    • DOCX

    • DOT

    • MMD

    • PDF

    • XLSX

    • DRAWIO

    • TXT

    • PNG

    • JPEG

    • GIF

    • SVG

    • WEBP

    Alternatively, users can create new text documents using the built-in text editor, accessible through Create document.

    2.2. Step 2: Organize a document

    Anyone

    To ensure efficient document management, Ketryx allows users to organize documents into folders. Users can create folders through the Create folder button.

    Moving documents between folders can be accomplished by selecting the document and clicking Move selected. Users then choose the destination folder from the modal. Similarly, to move a document to another folder within the same parent folder, drag & drop may be used.

    The traversal between folder levels can be accomplished by utilizing the breadcrumbs in the top left corner.

    !

    2.3. Step 3: Edit a document

    Anyone

    To edit a document, click on the Edit button of a respective document in the EDMS table view.

    For a document created in Ketryx, you are presented the option to directly edit its contents.

    However, for uploaded documents, Ketryx does not support in-browser editing yet. Rather, you may instead upload a revision by clicking Upload new revision.

    2.4. Step 4: Assign training (Optional)

    Anyone

    In the document edit view, users can select groups within the organization to undergo training for a specific document. By selecting a group, members in that group become obligated to read and acknowledge the document once it becomes effective (i.e. when the document enters a controlled state). Before a user has acknowledged all their training documents for a group, they may not approve any other documents or items on behalf of that group.

    Users can additionally set the training frequency, such as once, monthly, quarterly, or yearly.

    After making any changes to your document, training, content or otherwise, be sure to save them by clicking on Save.

    2.5. Step 5: Control a document

    Approval step member

    To bring a document into a controlled state, users can click Approve draft from the EDMS table view.

    The draft reviewal screen highlights missing approvals, and if applicable, which groups the document is required for as part of training. Ensure that the document is in order and that the correct groups are assigned training, if any.

    Once approved by all required steps, the document enters a controlled state and becomes effective, and the date of control is recorded.

    The date of control can be viewed in the EDMS table view.

    2.6. Step 6: Acknowledge a document (Optional)

    Anyone

    Users can acknowledge documents for training purposes by clicking on the document title.

    After reading the document or downloading and reviewing it (in the case of uploaded documents), users can click Acknowledge.

    Once acknowledge, the timestamp of your acknowledgment appears.

    It should be noted, that documents not assigned for training, can be acknowledged on a voluntary basis.

    2.7. Step 7: Mark document for deletion (Optional)

    Anyone

    To mark a document for deletion, navigate to the Edit document page and click on the Delete button, and subsequently confirm the deletion in the modal.

    2.8. Step 8: Approve document removal (Optional)

    Approval step member

    Similarly to step 5, any modifications made to a document require approval from members of an approval step. To approve the removal of the document, click on Approve deletion while in the edit mode of the document, and submit your approval in the modal.

    3. Procedure flow diagram

    Features

    Switching views

    The "Selected view" dropdown can be used to switch between configured views. A view consists of a filter that controls which items that appear and a list of columns. See the Configuration section to learn more about how to set views.

    Custom columns

    With the new view, you can add any field in your organization (including custom fields) to the table as a column.

    Expanding rows

    To see more detail about a particular item in the table, click the expand button. There is also the ability to expand and collapse all rows in the table with dedicated buttons on the top right of the table.

    Autosize columns

    To quickly adjust the widths of all columns in the view to accommodate the data contained in the cells, click Autosize Columns.

    Manage columns

    To change the columns in your local view, click the manage columns button and select/deselect from the options. Note that this is currently only a local configuration that will not persist or edit the view's configuration.

    Restore default layout

    After you use manage columns to change your local view, you can click "Restore default layout" to quickly switch the columns back to what is default for the selected view.

    Grouping and sorting by column

    To group or sort all of the rows by a particular column, hover to the right of the column name to find options.

    Filters

    If you configure Custom KQL Filters for the Risks page, they will be accessible in the filter button.

    Configuration

    To configure the generalized risk table to add views tailored to your team, you can use the "Dynamic records table configuration" advanced setting. This setting is composed of the following properties:

    • views - a list of generalized views that you would like to make available

      • id - an arbitrary id that uniquely identifies the view, for use in tables

      • label - the name of the view that will appear in the dropdown view selector

      • filter - a filter for the view that determines which items will appear when the view is selected

      • isDefault - boolean that determines if the view is the default view upon page load

      • defaultColumns - a list of columns

        • field - the human-readable field name, such as "Initial likelihood of occurrence (P1)". Same as the name of any field as it appears on the item record details or in the create/edit form

      • availableColumnsByItemTypes - a list of item type names. The union of the fields available for these item types is the list of columns that available to a user when "Manage columns" is used in the table to add or remove from their local view (This does not change the saved configuration of the view and is not currently saveable)

    • tables - a list of tables where the view should appear. RISKS is the only table currently supported

    The following is an example configuration for the "Dynamic records table configuration" advanced setting that mimics the fields that are visible in the default risk view:

    custom risk types
    Version control and audit trail of document changes as well as review and approvals
  • Secure sharing and access control through Google Workspace

  • Collaborative editing and review of release documents in Google Docs and Google Sheets

  • This guide explains how to set up and use the Google Docs integration for release document management.

    2. Setting up the integration

    Please note, that the following setup does not give Ketryx access to any of your (confidential) documents. The integration can only read folders and files explicitly shared with Ketryx or those it created.

    To enable the Google Drive integration, you need to have administrative privileges in your Ketryx organization and Google Workspace. Follow these steps:

    1. Log into Ketryx.

    2. Navigate to Connections in the organization settings menu.

    3. Find the Google Workspace section and take note of the Client ID and Client Email.

    4. Follow the instructions to set up domain-wide delegation for our Service Account.

      1. Note, this is a one-time setup for each Google workspace.

      2. Use the Client ID found on the Ketryx Connections page.

      3. Grant the scope https://www.googleapis.com/auth/drive.file. Please note, this is a non-sensitive scope and, by itself, does not grant Ketryx access to any of your documents.

    5. Prepare Google Drive

      1. Either create a new designated Shared Drive or select an existing one.

      2. Create or select a designated folder in the Shared Drive for Ketryx to store release documents.

      3. Share the folder with the Ketryx Service Account using the Client Email found on the Ketryx Connections page and grant at least

    6. In Ketryx, navigate to the Advanced settings of your organization or a project for which you want to enable the integration.

    7. Find the Edit release documents externally setting and enable Google using the folder ID copied earlier:

    3. Using release documents with Google Docs

    Once connected, Ketryx will show additional options for generated release- and milestone documents. Using these, you can create, edit, and manage your release documents directly in Google Drive.

    3.1. Document Actions

    Each release document in Ketryx provides three actions in its context menu:

    • View in Gdrive: Opens the current version of the document in Google Drive. Only available if the document has been generated and sent to Google Drive.

    Google Docs can support uploads up to 1.02 million characters.

    • Load changes from Gdrive: Imports the latest version of the document from Google Drive back into Ketryx Only available if the document has been generated and sent to Google Drive.

    • Apply changes to Gdrive: Sends the latest revision of the document to Google Drive for further sharing and editing.

    Use with care: Ketryx does not merge changes made in Ketryx and Google Drive. Sending the latest Ketryx revision to Google Drive will overwrite any changes made in Google Drive and vice versa. However, as both systems have versioning, no data will be lost.

    3.2. Send document to Google Drive

    When you select "Send to Google Drive", Ketryx will:

    1. For each Ketryx version, create/reuse a new folder in Google Drive located in the specified root folder. The folder name is the project name followed by the version number (i.e. Insulin Delivery 1.0).

    2. For milestones, create/reuse a folder in Google Drive located in the version folder. The folder name is the version number followed by the name of the milestone (i.e. 1.0 Design Review).

    3. Retrieve the latest revision of the generated release or milestone document and upload it to the corresponding version or milestone folder. The file name is the document name, comma, version number (i.e. System Design Specification for Design Review, 1.0).\

    3.3. Collaborative Editing

    After sending a document to Google Drive, your team can:

    • Edit the document collaboratively in real-time

    • Share the document with specific team members or groups

    When edits have been completed, you can choose to upload the revised document back to Ketryx for final review and approval.

    When a release- or milestone document requires updates because of changes to its underlying configuration items you should re-generate and re-send the document to Google Drive before manually finalizing the document.

    4. Frequently Asked Questions

    4.1. Q: What types of release documents can be generated?

    Ketryx supports generation of various release documents including requirement specifications, test plans, and validation reports in accordance with relevant regulatory requirements and industry standards.

    These documents have different formats including DOCX, XLSX and PDF. For these formats Ketryx allows users to send them to Google Drive for further sharing, for DOCX and XLSX files also for collaborative editing.

    4.2. Q: How does version control work between Ketryx and Google Drive?

    When you use Send to Google Docs option, Ketryx creates a new version of the document in Google Drive. Both systems maintain a version history, but they are independent of each other.

    If you want to restore a release document to a previous version from Google Docs or Sheets, first restore the version in Google, then use the Upload revision from Google Drive action to import the latest version back into Ketryx.

    4.3. Q: What happens if I make changes in Google Drive?

    Changes made in Google Drive are not automatically synced back to Ketryx. To update Ketryx with your Google Drive changes, use the Upload revision from Google Docs action to import the latest version back into Ketryx.

    Vice versa, when the document is re-generated in Ketryx, by default no changes will be made to Google Drive unless you choose to do so using the Send to Google Docs option.

    standard relation
    guide
    link

    MAN-02 Software Release Process

    Manual for the software release process using Ketryx Lifecycle Management

    1. Introduction

    1.1. Purpose

    The purpose of this manual is to define the activities that will be performed as part of the release of a product (the Product) managed with Ketryx Lifecycle Management.

    1.2. Scope

    This document defines tasks, activities, procedures, resources, responsibilities, and deliverables related to software releases of the Product.

    1.3. Field of application

    This plan was developed to support the creation, release, and maintenance of the Product.

    1.4. Compliance

    This plan was developed in compliance with ISO 13485, IEC 62304, ISO 14971, and 21 CFR Part 820.

    1.5. Tools

    Tools used to develop and release a product with Ketryx Lifecycle Management are provided in .

    2. Terms and definitions

    For the purposes of this document, the terms and definitions given in U.S. QSR (CFR 21 Part 820), ISO 13485, and IEC 62304:2006-AMD1 apply. Where contradictory, IEC 62304 and ISO 13485 prevail.

    3. Process activities

    To release a new version of the Product to the production environment, the following activities are performed.

    3.1. Activity 1: Design controls

    All design controls relevant to the version to be released are put in a controlled state (i.e., verified and fully approved by their respective approval steps, as per the Work Instructions , , ).

    3.2. Activity 2: Risk (control) management

    Given a set of risks in your project, verify that all the risks for the relevant version are acceptable and in a controlled state. If not acceptable, verify that a benefit-risk analysis has been set.

    If risk controls exist, ensure that all of its controls are in a positive state, including the presence of a Test Case with a passing Test Execution.

    3.3. Activity 3: Test Plan

    A specific Test Plan for the version is defined and approved by the relevant approval steps. Only the default Test Plan of executing all Test Cases does not need explicit approval.

    See also .

    3.4. Activity 4: Deploying a Release Candidate

    A Release Candidate (RC) is deployed to the testing environment. This is done by an R&D Lead.

    The build artifacts for each Release Candidate are uploaded to the Ketryx EDMS by an R&D Lead.

    3.5. Activity 5: Start of Verification and Validation (V&V)

    Once a final Release Candidate is deployed, formal Verification & Validation (V&V) is started.

    3.6. Activity 6: Executing tests

    Test Executions for all Test Cases contained in the Test Plan are created and executed as per the Work Instruction .

    3.7. Activity 7: Anomalies

    Anomalies found during V&V are reported as per Work Instruction .

    Non-critical Anomalies can be deferred by setting a Rationale for deferring resolution. Such deferrals and their rationale are approved collectively by the relevant approval steps of the Unresolved anomalies release document (see Activity 10 Release approval).

    If critical Anomalies are found, they are fixed by code or configuration changes, resulting in a new Release Candidate. Quality Managers decide which tests need to be re-executed due to such changes. Activities 1 through 5 in this manual are re-executed as necessary.

    3.8. Activity 8: Verifying traceability

    The traceability of all requirements and specs to respective (passing or excluded) tests according to the test plan is verified by Quality Managers using the Traceability view for the version to be released.

    Based on the configured traceability mode, the traceability matrix will enforce relevant item relations to exist (e.g. Requirement requires at least one specification, requires at least one Validation test case) and makes sure that all verification and validation tests are conducted according to the given version's test plan.

    More details on how to use the Traceability page can be found in .

    3.9. Activity 9: Generating and approving release documents

    Release documents are generated for the version to be released and approved by the relevant approval groups. This includes the following deliverables:

    • Authority matrix

    • Change request verification report

    • Change management file

    • Cloud configuration report

    Only the documents listed with the keyword default will show up in a new project. The list of release documents can be modified in a project in the page with the Omitted documents field under Document configuration.

    If any release documents need customizations, they are downloaded, edited, and uploaded to the Ketryx EDMS.

    3.10. Activity 10: Release approval

    Once all design controls, dependencies, test executions, test plan, traceability matrix, release documents and optionally milestones are in a controlled state and fully approved by the relevant approval steps, the version is finally approved for release.

    There shall be a release meeting with the relevant stakeholders to sign off on the release and the specific release plan for the released version and its production push.

    3.11. Activity 11: Production push

    The version approved for release is pushed to the production environment by an R&D Lead.

    Quality Managers and Quality Control verify a successful deployment with certain tests on the production environment.

    In case of an unsuccessful deployment, the deployment shall be reverted.

    3.12. Activity 12: Post-market vulnerability surveillance

    As a project evolves over time, multiple iterations of the product are often released and in use in parallel. It is essential to stay informed about any vulnerabilities that could impact the released versions of your product. To receive for the dependencies in a release, mark the monitoring option as active on the corresponding settings page, as described in .

    WI-03 Task

    Work Instruction for Task configuration items

    1. Introduction

    1.1. Purpose

    This Work Instruction provides the set of tasks required to be performed as part of the Task configuration item lifecycle.

    1.2. Scope

    This Work Instruction covers the complete Task lifecycle, from creation to obsolescence.

    1.3. Records and evidence

    Records for each Task will be held based on the records and retention policy. Tasks are used to generate the following artifacts:

    • Change request verification report

    1.4. Responsibilities

    As listed in the procedure description, each task in the Task item’s lifecycle will be completed by a member that is part of one of the following approval steps. When any of these members can perform the task, Anyone is listed.

    • Item Assignee: The person authoring and responsible for the Task. This organization member is responsible for managing/completing the Task lifecycle activities.

    2. Procedure description

    2.1. Step 1: Log into Jira

    Anyone

    Log into your Jira organization, e.g., your-company.atlassian.net.

    2.2. Step 2: Create

    Anyone

    1. Press the Create button in the top-level navigation to open the form to create a new Jira work item.

    2. Ensure the desired space (formerly project) is selected, and select the Work type "Task". If that does not appear, check with your system administrator to ensure your space is connected to Ketryx.

    3. Define an appropriate title in the Summary field.

    2.3. Step 3: Navigate to the work item page

    Anyone

    Using the popover shown by Jira or other means, navigate to the Jira page of the Task, e.g., your-company.atlassian.net/browse/TSK-1.

    2.4. Step 4: Change status to In Progress

    Anyone

    Change the work item status to In Progress using the work item status selector.

    2.5. Step 5: Draft/Author Task

    Item Assignee

    As needed, fill in the information in the fields of the Task.

    Ensure that at least the following fields are filled out:

    • Summary (title)

    • Assignee

    • Description

    • Introduced in version

    If the task is used for implementing a design, set the Implemented items (Requirements, Software Item Specs, Hardware Item Specs, Anomalies, Change Requests, CAPAs) as appropriate. These constitute the design input for this Task.

    On the other hand, if the task is used for a regular project management task (e.g., writing documentation), set the Related items field if it relates to any items.

    The Task should be SMART (Specific, Measurable, Achievable, Relevant, and Testable). The Task should also:

    • be traceable to all other needed items, with clearly defined interfaces;

    • not conflict with another Task; and

    • conform to any provided design input.

    2.6. Step 6: Reference task in the development workflow

    If the following actions are taken, the task will have additional development information under the Details section in Jira.

    • Branches: Including the work item key in the branch name when a branch is created links the branch to the Jira task.

    • Commits: Include the work item key in the commit message to link the commit to the Jira task.

    • Pull requests: Include a commit in the pull request with the task Jira work item key in the commit message. Ensure that the source branch name also includes the work item key in the branch name.

    Example of development status of a Task:

    2.7. Step 7: Change status to Resolved (Ready for Review)

    Anyone

    Once the Task is completed and ready for design verification, change its status to Resolved.

    2.8. Step 8: Review as Owner

    Item Assignee

    Review the Task to verify:

    • The Task is traceable to all other needed items, and all interfaces are defined.

    • The Task is Specific, Measurable, Achievable, Relevant, and Testable (SMART).

    • The design output (the Task and its siblings) conforms to the design input (the Task's Implemented items).

    If the verification fails, reopen the ticket and, if needed, provide a comment on the reason it failed, then go to Step 5. If verification passes, approve the Task as seen in the screenshot below and continue to Step 9.

    2.9. Step 9: Transition to a controlled state

    Ketryx

    Only Ketryx can move a Task to a controlled and effective state by transitioning its status to Closed. Ketryx moves the Task to a Closed state after all approval rules have been passed, i.e., all required steps have approved the Task.

    Ketryx automatically adds a comment to the Jira work item with a link to the effective controlled record in Ketryx.

    3. Procedure flow diagram

    {height=70%}

    4. Item schema

    • Description (rich text): The Task description. The task description should define clearly how to implement a certain requirement/software item. Tasks should be Specific, Measurable, Achievable, Realistic, Testable (SMART).

    • Introduced in version (version reference): The first version this item is effective in. If empty, the item is considered effective from the start of the project.

    • Implemented items (-> Requirement, Software Item Spec, Hardware Item Spec, Anomaly, Change Request, CAPA): The items implemented through the specific task.

    5. Traceability to other configuration items

    A Task implements the following items:

    • Requirement

    • Software Item Spec

    • Hardware Item Spec

    • Change Request

    Threat Modeling

    Manual for documenting threat models in Ketryx using custom item types

    1. Introduction

    Threat modeling is a structured approach to identifying and addressing potential threats to a system. This manual provides guidance on how to document your threat model using Ketryx with custom item types.

    1.1. Purpose

    The purpose of this manual is to instruct users on how to use Ketryx for documenting threat models, focusing on the STRIDE methodology.

    1.2. Scope

    This manual describes how to use Ketryx to document threat models in a system. It is intended for users who are responsible for identifying and mitigating threats to a system.

    1.3. Regulatory Context

    • AAMI TIR57: 2016/(R)2019: Principles for medical device security – Risk management

    2. Terms and definitions

    Acronym
    Description

    3. Project setup

    To use threat modeling, you need to have a project set up in Ketryx Software Supply Chain Management. If you don't have a project set up, follow the instructions in .

    Additionally, you need to have the following item types set up in your Jira space (formerly project) and map them to the custom item types in Ketryx: Threat, Asset, Threat Source, Threat Surface, and Trust Boundary.

    Once you have a project set up, you can start using threat modeling. The following sections describe how to set up the custom item types and map them to the Jira item types.

    3.1. Advanced configuration

    First, you need to in Ketryx and configure it to map the custom item types to the ones created in Jira. This can be done using the called , and .

    To activate the threat modeling feature, go the Advanced Settings in your project or organization, and enable the Enable threat modeling setting.

    Then, go the Advanced Settings in your organization, and copy the configuration below and paste it into the corresponding fields:

    Please refer to for more information on how to configure custom item types in Ketryx. To enable editing of such items, make sure to configure isEditableInKetryx for the type and corresponding fields.

    3.2. Custom item types for threat modeling

    This feature requires custom item types. If you don't have the required item types set up in your space, contact your Jira administrator to add them. It is recommended to copy the default Ketryx schema and add the custom item types to it.

    For more information on custom item types, refer to the reference.

    The custom item types used for threat modeling are as follows:

    • Asset: Represents an asset in the system.

    • Threat: Represents a threat to the system.

    • Threat Source: Represents a source of a threat.

    • Threat Surface: Represents a part of the system that is vulnerable to a threat.

    When configuring the custom item types in Jira by following , make sure to add the following fields (and any other you might require) when configuring the Screens:

    For all item types, to make them so-called long-lived items, add the following fields:

    • Introduced in version: The first version this item is effective in. If empty, the item is considered effective from the start of the project.

    • Obsolete in version: The version in which the item is no longer relevant. If empty, the item is considered effective in all versions starting with its introducing version.

    For the Asset item type, add the following fields:

    • Introduced risks: The risks introduced by the asset.

    • Impacted threats: The threats impacted by the asset.

    • Exposed by threat surface: The threat surfaces that expose the asset.

    For the Threat item type, add the following fields:

    • Introduced risks: The risks introduced by the threat.

    For the Threat Source item type, add the following fields:

    • Initiated threats: The threats initiated by the source.

    For the Threat Surface item type, add the following fields:

    • Contained in trust boundary: The trust boundary that contains the threat surface.

    3.3. Approval rules

    By default, custom item types come with no approval rules configured. To do this go to Settings > Approval rules in the project you are setting up and add the necessary rules for the item types you have created.

    4. Item types and relationships

    The image below provides a visual representation of the relationships between key elements in the threat modeling process. It starts with vulnerabilities, which are weaknesses or flaws that can originate from components listed in the Software Bill of Materials (SBOM). These vulnerabilities are a starting point for potential security threats. For more information, please see the .

    Once a vulnerability is identified in an SBOM component, it can be exploited by a threat. A threat represents a potential danger that can take advantage of a vulnerability to cause harm. This threat can then impact the software, specifically targeting the threat surface, which is the area or aspect of the system where vulnerabilities can be exploited. For more information about the SBOM module, please see .

    The threat surface directly exposes assets—resources or valuable elements within the system that could be compromised. When a threat successfully exploits a vulnerability through the threat surface, it introduces a safety or cybersecurity risk. This risk represents the potential negative impact on the asset due to the exploited vulnerability. For more information on how to perform risk assessment for both safety and cybersecurity risks, please see .

    To manage and mitigate these risks, risk controls, or mitigations, are implemented. Risk controls are measures or safeguards put in place to reduce the likelihood or impact of the risk. Finally, these risk controls need to be validated to ensure their effectiveness, which is done through testing. Testing verifies that the implemented risk controls work as intended, thereby securing the assets from potential threats. For more information about test management, please see .

    Not depicted in the diagram are the trust boundary and the threat source, two key concepts in threat modeling. The threat source refers to the origin of potential threats, such as external attackers, malware, or even internal actors that could exploit vulnerabilities in your system. While the diagram doesn't explicitly show the threat source, it is conceptually positioned outside or adjacent to the Threat element, indicating where these threats originate and how they begin to interact with your system.

    The trust boundary is the line that separates different areas of trust within your system. It delineates the point where data or control passes from one trust level to another—typically from a more trusted to a less trusted zone or vice versa. In the context of the diagram, the trust boundary would be situated around the Threat Surface. This is because the threat surface represents the areas of the system that are exposed to interactions from outside the trusted boundary, where threats can exploit vulnerabilities.

    The trust boundary is crucial because it defines where the system's security controls shift or where different security assumptions apply. External threats, crossing this boundary at the threat surface, pose a risk to the assets inside the system, and this is where the vulnerabilities are most likely to be exploited. Understanding the placement of the trust boundary helps in identifying the specific points where additional security measures may be needed to protect against threats originating from less trusted sources.

    Within Ketryx, vulnerabilities can be linked to threats. In Jira, all the other item types can be linked to each other.

    The above graphic does not depict all possible relationships between the item types, for example the relationship between vulnerabilities and risks, and risk controls. It is intended to provide a high-level overview of the key elements in the threat modeling process, not a comprehensive representation of all possible connections.

    Get a list of projects

    get

    Gets a list of Ketryx projects in the current organization. Only non-deleted (active) projects are returned.

    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.
    Query parameters
    namestringOptional

    Project name to filter for

    startAtintegerOptional

    Start listing projects at the given index. Defaults to 0.

    maxResultsintegerOptional

    Maximum number of projects to return. Defaults to no limit.

    Responses
    200

    OK

    application/json
    400

    The request is not valid.

    application/json
    401

    The requester is not authenticated.

    application/json
    403

    The requester is unauthorized.

    application/json
    404

    The resource was not found.

    application/json
    get
    /projects

    Create a new project

    post
    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.
    Body
    namestringRequired

    Name of the new project

    Example: My project
    Responses
    200

    OK

    application/json
    400

    The request is not valid.

    application/json
    401

    The requester is not authenticated.

    application/json
    403

    The requester is unauthorized.

    application/json
    404

    The resource was not found.

    application/json
    post
    /projects

    Get the project settings

    get
    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.
    Path parameters
    projectIdstringRequired
    Responses
    200

    OK

    application/json
    400

    The request is not valid.

    application/json
    401

    The requester is not authenticated.

    application/json
    403

    The requester is unauthorized.

    application/json
    404

    The resource was not found.

    application/json
    get
    /projects/{projectId}

    Change the project settings

    post
    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.
    Path parameters
    projectIdstringRequired
    Body
    settingsobjectOptional

    Object with advanced setting names as keys and a JSON value for each setting

    Example: { "statusMapping": { "Backlog": "OPEN", "Done": "RESOLVED" } }
    Responses
    200

    OK

    application/json
    400

    The request is not valid.

    application/json
    401

    The requester is not authenticated.

    application/json
    403

    The requester is unauthorized.

    application/json
    404

    The resource was not found.

    application/json
    post
    /projects/{projectId}

    Delete a project

    delete
    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.
    Path parameters
    projectIdstringRequired
    Responses
    204

    Deletion successful, no content returned

    400

    The request is not valid.

    application/json
    401

    The requester is not authenticated.

    application/json
    403

    The requester is unauthorized.

    application/json
    404

    The resource was not found.

    application/json
    delete
    /projects/{projectId}

    No content

    Get a list of versions

    get

    Gets a list of versions in the given project.

    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.
    Path parameters
    projectIdstringRequired
    Responses
    200

    OK

    application/json
    400

    The request is not valid.

    application/json
    401

    The requester is not authenticated.

    application/json
    403

    The requester is unauthorized.

    application/json
    404

    The resource was not found.

    application/json
    get
    /projects/{projectId}/versions

    Create a new version

    post
    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.
    Path parameters
    projectIdstringRequired
    Body
    namestringRequiredExample: My project
    Responses
    200

    OK

    application/json
    400

    The request is not valid.

    application/json
    401

    The requester is not authenticated.

    application/json
    403

    The requester is unauthorized.

    application/json
    404

    The resource was not found.

    application/json
    post
    /projects/{projectId}/versions

    Change the version settings

    post
    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.
    Path parameters
    projectIdstringRequired
    versionIdstringRequired
    Body
    namestringOptional
    Responses
    200

    OK

    application/json
    400

    The request is not valid.

    application/json
    401

    The requester is not authenticated.

    application/json
    403

    The requester is unauthorized.

    application/json
    post
    /projects/{projectId}/versions/{versionId}

    Delete a version

    delete
    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.
    Path parameters
    projectIdstringRequired
    versionIdstringRequired
    Responses
    204

    Deletion successful, no content returned

    400

    The request is not valid.

    application/json
    401

    The requester is not authenticated.

    application/json
    403

    The requester is unauthorized.

    application/json
    404

    The resource was not found.

    application/json
    delete
    /projects/{projectId}/versions/{versionId}

    No content

    Generate and retrieve the SBOM document

    get
    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.
    Path parameters
    projectIdstringRequired

    Ketryx project ID. This is required.

    Query parameters
    versionIdstringOptional

    Ketryx version ID. If not specified, defaults to using the "current draft" state.

    formatstring · enumOptional

    SBOM format to return. Defaults to "xslx".

    Example: cyclonedxPossible values:
    Responses
    200

    File contents in binary format

    application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
    Responsestring · binary
    400

    The request is not valid.

    application/json
    401

    The requester is not authenticated.

    application/json
    403

    The requester is unauthorized.

    application/json
    404

    The resource was not found.

    application/json
    get
    /projects/{projectId}/generated-documents/sbom

    Azure DevOps

    Guide on the Ketryx integration with Azure DevOps

    1. Introduction

    Ketryx provides seamless integration with Azure DevOps, enhancing compliance and streamlining the management of configuration items. This integration is purpose-built to:

    • align your Azure DevOps workflows with industry standards such as ISO 13485, IEC 62304, and ISO 14971,

    [
      {
        "lifecycle": "LONG_LIVED",
        "name": "Folder",
        "shortName": "FOL",
        "isEditableInKetryx": true,
        "fields": [
           { "kind": "SYSTEM", "fieldKey": "description", "isEditableInKetryx": true },
           { "kind": "SYSTEM", "fieldKey": "introducedInVersion", "isEditableInKetryx": true },
           { "kind": "SYSTEM", "fieldKey": "obsoleteInVersion", "isEditableInKetryx": true },
           { "kind": "SYSTEM", "fieldKey": "implementedItems", "isEditableInKetryx": true },
           { "kind": "SYSTEM", "fieldKey": "relatedItems", "isEditableInKetryx": true }
        ]
      }
    ]
    [
      {
        "issueType": "Folder",
        "itemType": "CUSTOM",
        "itemTypeName": "Folder"
      }
    ]
    {
      "views": [
        {
          "id": "risks-default",
          "label": "Risks",
          "filter": "type:Risk",
          "isDefault": true,
          "defaultColumns": [
            {
              "field": "Title"
            },
            {
              "field": "Source"
            },
            {
              "field": "Owner"
            },
            {
              "field": "Approval state"
            },
            {
              "field": "State"
            },
            {
              "field": "Hazard"
            },
            {
              "field": "Sequence of events"
            },
            {
              "field": "Hazardous situation"
            },
            {
              "field": "Harm"
            },
            {
              "field": "Initial likelihood of occurrence (P1)"
            },
            {
              "field": "Initial likelihood of harm (P2)"
            },
            {
              "field": "Initial severity"
            },
            {
              "field": "Initial risk evaluation"
            },
            {
              "field": "Initial risk acceptability"
            },
            {
              "field": "Risk control measures"
            },
            {
              "field": "Risk control description"
            },
            {
              "field": "Residual likelihood of occurrence (P1)"
            },
            {
              "field": "Residual likelihood of harm (P2)"
            },
            {
              "field": "Residual severity"
            },
            {
              "field": "Residual risk evaluation"
            },
            {
              "field": "Residual risk acceptability"
            },
            {
              "field": "Risk assessment methodologies"
            },
            {
              "field": "System categories"
            },
            {
              "field": "Benefit-risk analysis"
            }
          ],
          "availableColumnsByItemTypes": [
            "Risk"
          ]
        }
      ],
      "tables": {
        "RISKS": [
          "risks-default"
        ]
      }
    }
    {
      "googleDocs": {
        "folderId": "1a2b3c4d5e6f7g8h9i0j"
      }
    }
    [
      {
        "name": "Long-Lived Document",
        "fields": [
          {
            "kind": "SYSTEM",
            "fieldKey": "description",
            "isEditableInKetryx": true
          },
          {
            "kind": "SYSTEM",
            "fieldKey": "introducedInVersion",
            "isEditableInKetryx": true
          },
          {
            "kind": "SYSTEM",
            "fieldKey": "obsoleteInVersion",
            "isEditableInKetryx": true
          }
        ],
        "category": "DOCUMENT",
        "lifecycle": "LONG_LIVED",
        "shortName": "LLD",
        "isEditableInKetryx": true
      },
      {
        "name": "Pointwise Document",
        "fields": [
          {
            "kind": "SYSTEM",
            "fieldKey": "description",
            "isEditableInKetryx": true
          },
          {
            "kind": "SYSTEM",
            "fieldKey": "introducedInVersion",
            "isEditableInKetryx": true
          }
        ],
        "category": "DOCUMENT",
        "lifecycle": "POINT_WISE",
        "shortName": "PD",
        "isEditableInKetryx": true
      }
    ]
    
    {
      "DOC_CR": {
        "direction": "downstream",
        "fieldName": "Is impacted by",
        "relationName": "relates to CR",
        "sourceItemTypes": [
          "Long-Lived Document",
          "Pointwise Document"
        ],
        "reverseFieldName": "Is related to document",
        "targetItemFilter": "type:CR",
        "reverseRelationName": "relates to doc",
        "traceabilityWidgetAddLabel": "Add related change request"
      },
      "DOC_USES_RQ": {
        "direction": "upstream",
        "fieldName": "Is related to requirement",
        "relationName": "relates to RQ",
        "sourceItemTypes": [
          "Long-Lived Document",
          "Pointwise Document"
        ],
        "reverseFieldName": "Is related to document",
        "targetItemFilter": "type:RQ",
        "reverseRelationName": "relates to doc",
        "traceabilityWidgetAddLabel": "Add related requirement"
      }
    }
    {
      "Extra ID": {
        "type": "SHORT_TEXT",
        "isEditableInKetryx": true,
        "syncToExternalSystem": true
      }
    }
    
    {
      "Long-Lived Document": {
        "addedFields": [
          {
            "kind": "CUSTOM",
            "name": "Extra ID"
          }
        ]
      },
      "Pointwise Document": {
        "addedFields": [
          {
            "kind": "CUSTOM",
            "name": "Extra ID"
          }
        ]
      }
    }
    
    [
      {
        "name": "Long-Lived Document",
        "fields": [
          {
            "kind": "CUSTOM",
            "name": "Extra ID",
            "isEditableInKetryx": true
          }
        ],
        "category": "DOCUMENT",
        "lifecycle": "LONG_LIVED",
        "shortName": "LLD",
        "isEditableInKetryx": true
      },
      {
        "name": "Pointwise Document",
        "fields": [
          {
            "kind": "CUSTOM",
            "name": "Extra ID",
            "isEditableInKetryx": true
          }
        ],
        "category": "DOCUMENT",
        "lifecycle": "POINT_WISE",
        "shortName": "PD",
        "isEditableInKetryx": true
      }
    ]
    
    
    Obsolete in version field

    Click Add

    Click
    OK

    Code review report

  • Cyber risk management file

  • Problem report (Default)

  • Release notes (Default)

  • Risk management file (Default)

  • Risk control matrix

  • Risk matrix

  • System architecture chart (Default)

  • System requirements specification (Default)

  • System design specification (Default)

  • System design structure matrix

  • SBoM – SOUP – software configuration report (Default)

  • Training status report (Default)

  • Test plan (Default)

  • Testing report (Default)

  • Traceability matrix (Default)

  • Unresolved anomalies

  • Vulnerabilty report (Default)

  • MAN-01 Ketryx Lifecycle Management
    WI-01 Requirement
    WI-02 Software Item Spec
    WI-04 Test Case
    MAN-06 Test Management
    WI-05 Test Execution
    WI-06 Anomaly
    MAN-07 Traceability
    Advanced settings
    vulnerability notifications
    Monitoring
    KQL

    Trust Boundary: Represents a boundary that separates the system from external entities.

    AAMI

    Association for the Advancement of Medical Instrumentation

    STRIDE

    A threat modeling framework that categorizes threats into six types: Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, and Elevation of Privilege

    TIR

    Technical Information Report

    MAN-03, section 3
    activate the threat modeling feature
    Advanced Settings
    Custom item types
    Item fields
    Issue mapping
    Custom Item Types
    Custom Item Types
    the Jira configuration guide
    vulnerability management manual
    MAN-03 Supply Chain Management: Software Dependencies
    MAN-08 Risk Management
    MAN-06 Test Management
    Threat modeling item types and their relationships

    OK

    synchronize data between Ketryx and Azure DevOps to maintain consistent electronic records,

  • provide traceability across requirements and to test cases and test results, and

  • enforce workflows that incorporate electronic approvals and audit trails for robust compliance.

  • This guide offers step-by-step instructions for setting up and utilizing the integration, and answers to frequently asked questions.

    2. Setting up the integration

    To integrate Ketryx with Azure DevOps, please ensure you have the necessary permissions and access to the REST API.

    • Note: the initial connection should be made from a service account (e.g. [email protected]), which should have Azure DevOps administrator privileges. It should NOT be someone's personal account, even if that person is an administrator.

    • Rationale: Whoever sets up the initial connection to Ketryx via the API will be credited with making the changes that Ketryx makes in Azure DevOps. The biggest problem this creates is the danger that once the original person who sets up Ketryx leaves the company, typically, that person's IT credentials are revoked. In turn, this would revoke Ketryx's access to Azure DevOps and cause the Ketryx/Azure DevOps integration to stop working. (No data would be lost, but this is very annoying and potentially difficult to troubleshoot.)

    1. Create a personal access token (PAT) for authentication.

      1. Navigate to Azure DevOps and go to User Settings > Personal Access Tokens.

      2. Click New Token and specify a name, expiration date, and necessary permissions.

      3. Click Create Token and take note of the generated PAT.

    2. As a Ketryx admin, log in to Ketryx.

    3. Navigate to Organization, then Connections and click Add Azure DevOps connection.

    4. Provide the URL of your Azure DevOps instance and the generated PAT to establish the connection.

    5. Confirm the integration in Ketryx by navigating to the Create project page where the Azure DevOps section will allow you to link an Azure DevOps project.

    If the user associated with the PAT has the necessary permissions, a dropdown with a list of available projects will be shown.

    After setting up the connection, Ketryx projects can be created and linked with one Azure DevOps project each.

    3. Frequently Asked Questions

    3.1. Q: How does Ketryx synchronize Azure DevOps data?

    By default, Ketryx synchronizes the following work items between the platforms:

    Azure DevOps work item type
    Ketryx item type

    Epic, Feature, Requirement

    Requirement

    Task

    Task

    Test Case

    Test Case

    Bug, Issue

    Anomaly

    Risk

    Risk

    Aside from these pre-defined item types, Ketryx allows you to override or add custom work item type mappings. See Azure DevOps configuration.

    Work item links are synchronized as relations between items in Ketryx. By default, the following work item link types are created:

    Azure DevOps work item link IDs
    Ketryx relation type

    Related, Predecessor, Successor

    Is Related To

    Parent

    Has Parent

    Tested By

    Tests

    How Ketryx handles test items:

    Azure DevOps test item
    Ketryx item

    Test Plan

    Test Plan

    Test Run

    Test Execution

    Test Case

    Test Case

    Ketryx synchronizes test runs as Test Execution items and creates relations to the corresponding Test Case items.

    3.2. Q: Can I customize how Ketryx maps Azure DevOps fields and work item links?

    Yes. Ketryx provides advanced settings for Azure DevOps that allow you to define how Azure DevOps fields map to Ketryx items. You can map both built-in and custom fields to Ketryx fields.

    3.3. Q: How do I handle changes in Azure DevOps schema (e.g., custom fields)?

    If you add custom fields in Azure DevOps, you can configure Ketryx to recognize them using the Azure DevOps field mapping setting. Additional work item links can be configured using Azure DevOps work item links mapping.

    3.4. Q: What happens to deleted items?

    When any item is deleted in Azure DevOps, it is marked as deleted in Ketryx but remains linked for traceability.

    3.5. Q: How do I handle releases?

    You can create custom work item fields in Azure DevOps to track versions.

    1. To associate a work item with a particular version, create a custom field in Azure DevOps.

    2. Configure the field in the Azure DevOps field mapping setting, using the field introducedInVersion and obsoleteInVersion.

    3. Then, edit the work item and enter a version number in the custom field (e.g., entering "3.1.0" will synchronize the work item to version "3.1.0" in Ketryx).

    4. Azure DevOps Configuration

    4.1. Overview

    The Azure DevOps settings in Ketryx allow users to configure how Azure DevOps work items and test runs map to Ketryx items. This mapping ensures accurate data synchronization between the two systems, preserving traceability and compliance. These configurations are crucial for seamlessly integrating work items and test runs into Ketryx workflows.

    The configuration includes the following mappings:

    • Azure DevOps work item mapping to Ketryx item type

    • Azure DevOps status mapping to Ketryx item state

    • Azure DevOps work item relations mapping to Ketryx relation type

    4.2. Azure DevOps work item mapping

    Example

    The "workItemType": "*" is a wildcard that applies the field configurations to all configured work item types. This allows you to avoid duplicating the same fields across multiple work item types in the schema. If a field is common to all work item types, you can use this wildcard instead of manually defining it for each type.

    In this example, you can also see how to use a custom field to map a relationship. For instance, the isRiskControlledBy field—to relate a work item with the relation type IS_RISK_CONTROLLED_BY to another system, such as Jira.

    4.3. Azure DevOps status mapping

    Example

    4.4. Azure DevOps work item relations mapping

    Example

    Custom relations example

    Given a custom relation with ID SW_TO_RQ:

    4.5. Test Execution mapping limitations

    Important: Currently, Azure DevOps Test Executions cannot be mapped to custom item types in Ketryx. This is a hardcoded limitation due to the following technical constraints:

    • Azure DevOps does not recognize Test Executions as standard work items

    • Ketryx creates Test Execution items from test runs and test results during synchronization

    • All Test Executions are automatically assigned the TEST_EXECUTION item type in Ketryx

    4.6 Azure DevOps status rules

    In the beginning of the setup, if you have a complex workflow, it is recommended to set Allow item transition to No to prevent discrepancies between Azure DevOps and Ketryx.

    Azure DevOps enforces specific rules on work item status changes. For example, in the CMMI template, a work item cannot transition directly from Closed to Resolved. To align Ketryx with these constraints, you may need to adjust your workflow configuration. This could involve modifying Ketryx to transition reopened items to Active in Azure DevOps instead of Resolved.

    To ensure these rules are correctly reflected in Ketryx, configure the appropriate flow in the Approval workflow setting.

    For more details on how Azure DevOps handles workflow states, refer to the official documentation here.

    5. Azure DevOps extension

    Ketryx offers an Azure DevOps extension that can be installed in your organization and used within synchronized projects. This extension enhances the integration by enabling users to view traceability directly within Azure DevOps work items, ensuring seamless visibility of related artifacts. Additionally, it allows users to sign items to transition them to a closed state directly within Azure DevOps, ensuring compliance with approval workflows. You can find the Ketryx Azure DevOps extension in the Azure DevOps Marketplace, where you will find comprehensive installation and setup instructions.

    For more detailed instructions and advanced configuration options, please refer to the Ketryx Advanced Settings section of the documentation.

    Item fields
    {
      "Asset": {
        "addedFields": ["exposedByThreatSurface", "impactedThreats", "risks"]
      },
      "Threat": {
        "addedFields": ["risks"]
      },
      "Threat Source": {
        "addedFields": ["initiatedThreats"]
      },
      "Threat Surface": {
        "addedFields": ["containedInTrustBoundary", "exploitedByThreats"]
      }
    }
    Custom item types
    [
      {
        "name": "Threat",
        "lifecycle": "LONG_LIVED",
        "shortName": "THR"
      },
      {
        "name": "Threat Surface",
        "lifecycle": "LONG_LIVED",
        "shortName": "THRSURF"
      },
      {
        "name": "Threat Source",
        "lifecycle": "LONG_LIVED",
        "shortName": "THRSRC"
      },
      {
        "name": "Asset",
        "lifecycle": "LONG_LIVED",
        "shortName": "ASSET"
      },
      {
        "name": "Trust Boundary",
        "lifecycle": "LONG_LIVED",
        "shortName": "TB"
      }
    ]
    Issue mapping
    [
      {
        "itemType": "CUSTOM",
        "issueType": "Asset",
        "itemTypeName": "Asset"
      },
      {
        "itemType": "CUSTOM",
        "issueType": "Threat",
        "itemTypeName": "Threat"
      },
      {
        "itemType": "CUSTOM",
        "issueType": "Threat Source",
        "itemTypeName": "Threat Source"
      },
      {
        "itemType": "CUSTOM",
        "issueType": "Threat Surface",
        "itemTypeName": "Threat Surface"
      },
      {
        "itemType": "CUSTOM",
        "issueType": "Trust Boundary",
        "itemTypeName": "Trust Boundary"
      }
    ]
    {
      "projects": [
        {
          "id": "text",
          "name": "text"
        }
      ]
    }
    {
      "id": "text"
    }
    {
      "id": "text"
    }
    {
      "id": "text"
    }
    {
      "id": "text"
    }
    binary
    GET /api/v1/projects HTTP/1.1
    Host: app.ketryx.com
    Authorization: Bearer YOUR_SECRET_TOKEN
    Accept: */*
    
    POST /api/v1/projects HTTP/1.1
    Host: app.ketryx.com
    Authorization: Bearer YOUR_SECRET_TOKEN
    Content-Type: application/json
    Accept: */*
    Content-Length: 127
    
    {
      "name": "My project",
      "repositories": [
        {
          "url": "text",
          "mainRef": "text",
          "releaseRef": "text",
          "authUser": "text",
          "authToken": "text"
        }
      ]
    }
    GET /api/v1/projects/{projectId} HTTP/1.1
    Host: app.ketryx.com
    Authorization: Bearer YOUR_SECRET_TOKEN
    Accept: */*
    
    {
      "id": "text",
      "name": "text",
      "repositories": [
        {
          "url": "text",
          "mainRef": "text",
          "releaseRef": "text",
          "hasAuth": true
        }
      ]
    }
    POST /api/v1/projects/{projectId} HTTP/1.1
    Host: app.ketryx.com
    Authorization: Bearer YOUR_SECRET_TOKEN
    Content-Type: application/json
    Accept: */*
    Content-Length: 193
    
    {
      "repositories": [
        {
          "url": "text",
          "mainRef": "text",
          "releaseRef": "text",
          "authUser": "text",
          "authToken": "text"
        }
      ],
      "settings": "{ \"statusMapping\": { \"Backlog\": \"OPEN\", \"Done\": \"RESOLVED\" } }"
    }
    DELETE /api/v1/projects/{projectId} HTTP/1.1
    Host: app.ketryx.com
    Authorization: Bearer YOUR_SECRET_TOKEN
    Accept: */*
    
    GET /api/v1/projects/{projectId}/versions HTTP/1.1
    Host: app.ketryx.com
    Authorization: Bearer YOUR_SECRET_TOKEN
    Accept: */*
    
    {
      "versions": [
        {
          "id": "text",
          "name": "text"
        }
      ]
    }
    POST /api/v1/projects/{projectId}/versions HTTP/1.1
    Host: app.ketryx.com
    Authorization: Bearer YOUR_SECRET_TOKEN
    Content-Type: application/json
    Accept: */*
    Content-Length: 21
    
    {
      "name": "My project"
    }
    POST /api/v1/projects/{projectId}/versions/{versionId} HTTP/1.1
    Host: app.ketryx.com
    Authorization: Bearer YOUR_SECRET_TOKEN
    Content-Type: application/json
    Accept: */*
    Content-Length: 294
    
    {
      "name": "text",
      "referencedVersions": [
        {
          "project": {
            "id": "KXPRJ49GQYFQ5RR9KRTPWTRTC39YZ9W"
          },
          "version": {
            "id": "KXPRJ49GQYFQ5RR9KRTPWTRTC39YZ9W"
          }
        }
      ],
      "repositorySettings": [
        {
          "url": "https://github.com/Ketryx/test-project-js",
          "releaseRefPattern": {
            "value": "refs/tags/v1.0",
            "summary": "Git tag reference"
          }
        }
      ]
    }
    DELETE /api/v1/projects/{projectId}/versions/{versionId} HTTP/1.1
    Host: app.ketryx.com
    Authorization: Bearer YOUR_SECRET_TOKEN
    Accept: */*
    
    GET /api/v1/projects/{projectId}/generated-documents/sbom HTTP/1.1
    Host: app.ketryx.com
    Authorization: Bearer YOUR_SECRET_TOKEN
    Accept: */*
    
    [
        {
            "workItemType": "*",
            "fields": { "name": "title", "description": "description" },
        },
        {
            "workItemType": "Risk evaluation",
            "itemType": "RISK",
            "fields": {
                "description": "sequenceOfEvents",
                "isRiskControlledBy": {
                    "type": "references",
                    "relationType": "IS_RISK_CONTROLLED_BY",
                    "targetSystem": "JIRA"
                    }
                },
        },
    ]
    {
      "Proposed": "OPEN",
      "Design": "OPEN",
      "Completed": "CLOSED"
    }
    {
      "Parent": "HAS_PARENT"
    }
    {
      "Parent": "SW_TO_RQ"
    }
    Contributor
    access (to allow for creating and updating release documents in this folder). Do
    not
    check the
    Notify people
    checkbox.
  • Open the folder and copy its ID from the URL, e.g., given the URL https://drive.google.com/drive/folders/1a2b3c4d5e6f7g8h9i0j, the ID is 1a2b3c4d5e6f7g8h9i0j

  • Define an appropriate Assignee (the Item Assignee).

  • Provide additional preliminary information in the extra fields. (All fields can still be edited later.)

  • Press the Create button at the end of the form to finalize the creation of the new Jira work item.

  • Mentioning a Jira work item key in the description of the pull request will associate the pull request with said Jira task.
  • Builds and deployments: Build information works by default for connected CI/CD pipeline tools.

  • Related items (-> Software Item Spec, Hardware Item Spec, Requirement, Anomaly, Change Request, CAPA, Risk, Test Case, Complaint, Configuration Item): The items related to this task.

    Anomaly

  • CAPA

  • View work item popover
    Start progress on work item
    Task with everything filled out
    Development status of task
    Set work item status to resolved
    Approve task as owner
    Jira create issue button
    Jira create issue dialog issue type selector
    Procedure flow diagram

    WI-05 Test Execution

    Work Instruction for Test Execution configuration items

    1. Introduction

    1.1. Purpose

    This Work Instruction provides the set of tasks required to be performed as part of the Test Execution configuration item lifecycle.

    1.2. Scope

    This Work Instruction covers the complete Test Execution lifecycle.

    1.3. Records and evidence

    Records for each Test Execution will be held based on the records and retention policy. Test Executions are used to generate the following artifacts:

    • Change request verification report

    • Risk control matrix (risk control measures only)

    • Risk management file

    • Release notes

    1.4. Responsibilities

    As listed in the procedure description, each task in the Test Execution item’s lifecycle will be completed by a member that is part of one of the following approval steps. When any of these members can perform the task, Anyone is listed.

    • Item Assignee: The assignee is typically a Quality Control Engineer and the person responsible for filling and carrying out the Test Execution. They execute the assigned Test Case and documents its results as well as file any resulting anomalies in case of failure.

    • Quality Manager: The person accountable for the Test Execution. The Quality Manager verifies that all the necessary fields (specified in the Procedure description) are correctly filled out and vouches for their correctness and completeness by approving it.

    2. Procedure description

    2.1. Step 1: Log into Jira

    Anyone

    Log into your Jira organization, e.g., your-company.atlassian.net.

    2.2. Step 2: Create a Test Execution

    Anyone

    2.2.1. Recommended procedure using the Test management page in Ketryx

    Note: If you are using Xray Test Executions, you should not create Test Executions in this way. Instead, create an Xray Test Execution work item in Jira and add the Xray Test work items you want to execute to the Xray Test Execution using the Test Details widget on the Xray Test Execution work item or the Testing Board.

    1. Open the Test management page in Ketryx.

    2. Select the version being tested.

    3. Select the Test Cases to execute.

    4. Press Create executions for selection and confirm.

    2.2.2. Using the Traceability widget in Jira

    Note: If you are using Xray Test Executions, you should not create Test Executions in this way. Instead, create an Xray Test Execution work item in Jira and add the Xray Test work items you want to execute to the Xray Test Execution using the Test Details widget on the Xray Test Execution work item or the Testing Board.

    1. Open a Test Case for which you would like to create a Test Execution in Jira.

    2. In the Traceability widget, press Add test execution.

    3. By default, Ketryx will copy all the necessary system fields from the Test Case. This includes Description, Steps, Expected behavior, and Attachments, but does not include extra or custom fields.

    2.2.3. Manual procedure in Jira

    1. Press the Create button in the top-level navigation of Jira to open the form to create a new Jira work item.

    2. Select Test Execution as the work type.

    3. Select the Test Case that the Test Execution is testing in the Test being executed field. Furthermore, be sure to copy over the Steps and Expected behavior fields from the Test Case.\

    2.3. Step 3: Navigate to the All Work page

    Anyone

    Using the popover shown by Jira or through the all work page, navigate to the Jira page of the Test Execution.

    2.4. Step 4: Change status to In Progress

    Item Assignee

    1. If you are not yet the Assignee of the ticket, assign the ticket to yourself by pressing Assign to me.

    2. Select the status button and move the ticket to In Progress by clicking Start Progress.

    2.5. Step 5: Perform the Test Execution

    Item Assignee

    1. Carry out the steps of the Test Execution and document the observed behavior in the Test Execution.

    2. Attach any files resulting from the test procedure, a screen recording of the test procedure itself, and/or a screenshot of the observed outcome as proof of behavior.

    3. If the observed behavior matches the expected behavior, record the Test Execution as Pass. If not, record it as Fail.

    2.6. Step 6: Filing an Anomaly

    Item Assignee

    1. If a Test Execution deviates from the expected behavior and is marked as Fail during a formal Validation & Verification cycle, the Assignee should report this deviation in a new Anomaly (refer to on how to report an anomaly).

    2. Link the newly created Anomaly in the Found anomalies field.

    2.7. Step 7: Set the version

    Item Assignee

    Set the appropriate product version in Introduced in version for which the Test Execution is carried out.

    If the Test Execution was created by Ketryx from the Test management page, the version will already be set automatically.

    2.8. Step 8: Change status to Resolved

    Item Assignee

    Select the status button and move the ticket to Resolved by clicking Ready for Review.

    2.9. Step 9: Review as Owner

    Item Assignee

    Read through the Test Execution and ensure the following fields are correctly filled out:

    • Test being executed: Is it linked to the correct Test Case?

    • Introduced in version: Is it linked to the correct version?

    • Steps & Expected behavior: Do they match the Test Case?

    If the review fails and the content is deemed incorrect or incomplete, reopen the ticket by clicking on Reopen. Restart the procedure from and skip steps as deemed necessary to correct the review failure.

    2.10. Step 10: Review as Quality Manager

    Quality Manager

    Read through the Test Execution and ensure the following fields are correctly filled out:

    • Test being executed: Is it linked to the correct Test Case?

    • Introduced in version: Is it linked to the correct version?

    • Steps & Expected behavior: Do they match the Test Case?

    If the review fails and the content is deemed incorrect or incomplete, reopen the ticket by clicking on Reopen. Restart the procedure from and skip steps as deemed necessary to correct the review failure.

    2.11. Step 11: Transition to a controlled state

    Ketryx

    Only Ketryx can move a Test Execution to a controlled and effective state by transitioning its status to Closed. Ketryx moves the Test Execution to a Closed state after all approval rules have been passed, i.e., all required steps have approved the Test Execution.

    Once closed, a permanent, immutable record is created in Ketryx, which is not affected by any changes in Jira (e.g., reopening a ticket or removing files). Said immutable record includes any attached files (i.e., that Jira supports uploading) at the time of closure.

    3. Procedure flow diagram

    4. Item schema

    • Description (rich text): The description of this execution. The text is typically a copy of its Test Case at the time of creation.

    • Steps (rich text): The steps needed to execute this test. The text shall be a copy of its Test Case at the time of creation.

    • Expected behavior (rich text): The expected behavior of this execution. The text shall be a copy of its Test Case at the time of creation.

    5. Traceability to other configuration items

    The following relations can be defined from a Test Execution to other configuration items:

    • Test Execution executes Test Case

    • Test Execution finds Anomaly

    WI-09 Corrective and Preventive Action (CAPA)

    Work Instruction for Corrective and Preventive Action (CAPA)

    1. Introduction

    1.1. Purpose

    This Work Instruction provides the tasks required to be performed as part of the CAPA Item lifecycle.

    A CAPA process is a systematic approach to identifying, investigating, and addressing issues that arise during the design, manufacture, and use of medical devices. The goal of a CAPA process is to prevent or correct problems that could affect the safety, effectiveness, or quality of a medical device.

    1.2. Scope

    This Work Instruction covers the complete CAPA lifecycle. Records for each CAPA will be held based on the records and retention policy.

    1.3. Records and evidence

    Records for each CAPA will be held based on the records and retention policy. CAPAs are used to generate the following artifacts:

    • Change management file

    • Change request verification report

    • Test Plan

    1.4. Definitions and Acronyms

    1. CAPA: Corrective and Preventive Action

    2. Corrective Action: Action taken to eliminate the causes of non-conformities or other undesirable situations, to prevent a recurrence

    3. Preventative Action: Action taken to prevent the occurrence of such non-conformities, generally as a result of a risk analysis.

    1.5. Responsibilities

    As listed in 2.1 in the procedure description, each task in the CAPA item’s lifecycle will be completed by a member that is part of one of the following approval steps. When anyone of these members can perform the task, Anyone is listed.

    • Item Assignee: The person responsible for the CAPA. This organization member is responsible for managing/completing the CAPA lifecycle activities. This Item Assignee can change from time to time.

    • Product Manager: The person accountable for the CAPA. This organization member leads the product development, defines requirements, and ensures that the product meets customer demands. The Product Manager is accountable for the requirement being correct.

    • Quality Manager: The person that verifies the CAPA is correctly documented. The Quality Manager is consulted to approve that the CAPA is correctly documented.

    2. Procedure description

    2.1. Step 1: Log into Jira

    Anyone

    Log into your Jira organization, e.g., your-company.atlassian.net.

    2.2. Step 2: Create

    Anyone

    1. In Jira, select create

    2. Make sure the work type is CAPA

    3. Make sure to set the Introduced in version to the version that will include the described changes.

    4. Draft the template, adding information as needed. The only required field is the Summary, marked by a red asterisk (*).

    2.3. Step 3: Navigate to the work item page

    Anyone

    Using the popover shown by Jira or through other means, navigate to the Jira page of the CAPA.

    2.4. Step 4: Change status to In Progress

    Anyone

    1. Select the Status button

    2. Click Start Progress

    2.5. Step 5: Identify the non-conformity

    Item Assignee

    The first step in the CAPA process is to identify the non-conformity(s) (i.e., Anomaly or Complaint) and document the issue that needs to be addressed. Once identified, the CAPA should be entered into the Anomaly or Complaint Resolved by fields.

    2.6. Step 6: Perform Root Cause Analysis

    Item Assignee

    1. Investigate the issue: Once the issue has been identified, it is important to investigate it thoroughly to understand the root cause of the problem. This may involve reviewing relevant documentation, conducting interviews with individuals involved in the issue, and gathering additional information as needed.

    2. During RCA, ensure that proper subject matter experts (e.g., Cloud R&D, AI Validation) are part of the analysis.

    3. Put the findings into the Root Cause Analysis field.

    2.7. Step 7: Plan Corrective Action

    Item Assignee

    1. The next step is to determine a corrective action that will address the problem. This may involve changing the design or manufacturing process, implementing new training or procedures, or taking other steps to prevent the issue from occurring again.

    2. Put the findings in the Corrective Action field.

    2.8. Step 8: Plan Preventive Action

    Item Assignee

    1. Determine the preventive actions to prevent the recurrence of a nonconformance that has been identified and addressed through corrective action.

    2. Put the findings in the Preventive Action field.

    2.9. Step 9: Implement Corrective and Preventive Action

    Item Assignee

    Once a corrective action has been determined, it is important to implement it promptly and effectively. This may involve changing the design or manufacturing process, implementing new training or procedures, or taking other steps to prevent the issue from occurring again.

    2.10. Step 10: Monitor the effectiveness of the corrective action

    Item Assignee

    After the corrective action has been implemented, it is important to monitor its effectiveness to ensure that it is addressing the issue in an effective manner. This may involve collecting data, conducting inspections or audits, or taking other steps to ensure that the corrective action is working as intended.

    2.11. Step 11: Change status to Resolved

    Item Assignee

    1. Make sure that all corrective actions have been implemented, and the monitoring ensures that all actions are addressing the issues before proceeding to resolve and review the ticket.

    2. Select the Status button.

    3. Click Ready for Review.

    2.12. Step 12: Review as Owner

    Item Assignee

    1. Read through the CAPA, verify the RCA, corrective and preventive action was performed correctly, that it is completely fixed by the suggested changes, and that those changes are implemented.

    2. Find the Approvals widget.

    3. Press Approve.

    2.13. Step 13: Review as R&D Lead

    R&D Lead

    1. Read through the CAPA, review the RCA, corrective and preventive action was performed correctly, that it is completely fixed by the suggested changes, and that those changes are implemented.

    2. Find the Approvals widget.

    3. Press Approve.

    2.14. Step 14: Review as Quality Manager

    Quality Manager

    1. Read through the CAPA, review the RCA, corrective and preventive action was performed correctly, that it is completely fixed by the suggested changes, and that those changes are implemented.

    2. Find the Traceability widget.

    3. Ensure the Traceability widget shows a related Test Case that tests for the implemented corrective and preventive actions.

    2.15. Step 15: Review as Product Manager

    Quality Manager

    1. Read through the CAPA, review the RCA, corrective and preventive action was performed correctly, that it is completely fixed by the suggested changes, and that those changes are implemented.

    2. Find the Approvals widget.

    3. Press Approve as reviewed.

    2.16. Step 16: Transition to a controlled state

    Ketryx

    Only Ketryx can move a CAPA to a controlled and effective state by transitioning its status to Closed. Ketryx moves the CAPA to a Closed state after all approval rules have been passed, i.e., all required steps have approved the CAPA.

    Ketryx automatically adds a comment to the Jira issue, with a link to the effective controlled record in Ketryx.

    2.17. Step 17: Change status to Reopened

    Anyone

    If a CAPA needs to be reopened:

    1. Select the status button.

    2. Press Reopen.

    3. Go back to Step 3.

    3. Procedure flow diagram

    4. Item schema

    • Description (rich text)

    • Root cause analysis (rich text): Description of the root cause following an investigation.

    • Corrective actions (rich text): Actions to correct the existing product nonconformity or quality problems.

    5. Traceability to other configuration items

    The following relations can be defined from a CAPA to other configuration items:

    • CAPA affects CAPA, Change Request, Anomaly, Configuration Item, Risks, Hardware Item Spec, Requirement, Software Item Spec

    • CAPA results in CAPA, Software Item Spec, Change Request, Anomaly, Requirement, Risks, Hardware Item Spec, Configuration item

    The following relations can be defined from other configuration items to a CAPA:

    • CAPA is implemented by Task

    • CAPA is affected by CAPA, Change Request, Anomaly

    • CAPA is tested by Test Case

    • CAPA

    Build API

    API to report builds and test results to Ketryx

    Ketryx exposes an API to report builds and test results programmatically. There is also a formal OpenAPI specification defining this API, and a separate page about authentication and API keys. You can also take a look at the implementation of the Ketryx GitHub Action for how this API can be interacted with.

    Builds

    You should either pass in the version parameter to associate the build with a particular version, or set the commitSha parameter so the build will be associated with any version whose release ref pattern (as configured in the Ketryx project settings) resolves to that commit. The version parameter can be the Ketryx version ID (KXVSN...) or the full version name (e.g. App v1.0.0). Either way, automated tests need to be associated with a particular version (not the Current state), so they will not show up in Ketryx test management unless you create a version. Note: if a commitSha is provided, but a repository is not connected to the Ketryx project, the build artifacts (such as automated tests) will not appear within Ketryx. For these cases, provide the version parameter.

    You can combine the reporting of test results with one or more checks (checkDependenciesStatus, checkReleaseStatus), or make separate requests. Typically, test results will be reported for all release candidate builds, while the final check for checkReleaseStatus would happen in the deployment script to production (before actually triggering the deployment).

    Build artifacts

    Configure required build documents

    A particular set of uploaded build artifacts may be detected as required build documents to either block the release of a Ketryx version, or help gathering important build documents for a release in an automated way.

    To enable tracking for required build documents on the release / Git commit level, please refer to the for more details.

    Examples

    Reporting a Cucumber test result

    Upload a Cucumber JSON build artifact to Ketryx:

    with an attached file (e.g., cucumber.json) as multipart form data. This returns a JSON response of the following form:

    Using the id from the response, make another request to report a build that produced this build artifact:

    Ketryx will parse the Cucumber JSON file and create corresponding automatic test executions, based on annotations in the test file as described in .

    Reporting individual test results directly

    As an alternative to uploading Cucumber JSON or JUnit XML files to Ketryx, you can report individual test results directly, using the tests property:

    Each test may optionally reference one or more artifacts as well.

    Uploading an SPDX file

    Upload an SPDX build artifact to Ketryx:

    with an attached file (e.g., spdx.json) as multipart form data. This returns a JSON response of the following form:

    Using the id from the response, make another request to report a build that produced this build artifact:

    Ketryx will parse the SPDX JSON file and create corresponding dependencies as defined within these files. It extracts crucial information about software packages, including version, license, and advisory information (introduced in SPDX version 2.3), which pertains to any vulnerabilities associated with the software packages.

    Note: Uploading an additional SPDX JSON file will overwrite the previous SPDX JSON file upload if it is uploaded to the same project, version, and uses the same buildName. Providing a unique buildName when uploading multiple SPDX JSON build artifacts to the same project and version is recommended. This allows for incremental uploads of different SPDX JSON files for a specific project and version. To overwrite a build, reference the original buildName in the build artifact when reporting a subsequent build.

    Previous example of reporting a build with a SPDX build artifact using buildName:

    Uploading a CycloneDX file

    Upload a CycloneDX build artifact to Ketryx:

    with an attached file (e.g., cyclonedx.json) as multipart form data. This returns a JSON response of the following form:

    Using the id from the response, make another request to report a build that produced this build artifact:

    Ketryx will parse the CycloneDX JSON file and create corresponding dependencies as defined within these files. It extracts crucial information about software packages, including version, license, and vulnerability information, which pertains to any vulnerabilities associated with the software packages.

    Note: Uploading an additional CycloneDX JSON file will overwrite the previous CycloneDX JSON file upload if it is uploaded to the same project, version, and buildName. Providing a unique buildName when uploading multiple CycloneDX JSON build artifacts to the same project and version is recommended. This allows for incremental uploads of different CycloneDX files for a specific project and version. To overwrite a build, reference the original buildName in the build artifact when reporting a subsequent build.

    Previous example of reporting a build with a CycloneDX build artifact using buildName:

    Check the approval status of dependencies

    To check whether all SOUP dependencies in a particular version of a project are controlled:

    This returns a JSON response containing an ok property which will be true if all dependencies are accepted and fully approved, or false otherwise. If ok is false, the error property provides more details about what is missing.

    Check the release status of a version

    To check whether a version has been released in Ketryx (e.g., to block the deployment of an unreleased version to production):

    This returns a JSON response containing a versionsReleased property, which is true if all target versions have been fully released in Ketryx, and false otherwise. The response also includes an ok property, which is true if all requested build checks succeeded, and false otherwise.

    Working with CycloneDX

    Manual for submitting dependencies via CycloneDX files using Ketryx Software Supply Chain Management

    1. Introduction

    CycloneDX is a standard format for documenting the components, licenses, and vulnerabilities of software packages. It is designed to facilitate the exchange of software bill of materials (SBOM) information between parties, enabling the identification and tracking of dependencies in software projects. You can find the online, and Ketryx also supports CycloneDX versions , and .

    The following manual serves as a comprehensive guide for utilizing CycloneDX, specifically focusing on the submission of dependency lists (SBOM) in the CycloneDX JSON format through the . This document aims to provide users with the necessary knowledge to effectively leverage CycloneDX for managing dependencies within software projects.

    Jira create issue dialog create button
    Jira issue mentioned on pull request
    Setting up the Google Drive integration
    1.1 Purpose

    The purpose of this manual is to equip users with the understanding and proficiency required to utilize CycloneDX for submitting dependency lists in the CycloneDX JSON format via the Build API. By following the guidelines outlined herein, users can streamline the management of dependencies in their software development processes.

    1.2 Scope

    This manual encompasses detailed instructions for utilizing CycloneDX in conjunction with the Build API to submit dependency lists in the CycloneDX JSON format. Topics such as project setup, API authentication and SBOM and vulnerability management are covered in different manuals, guides and references and are linked to in this document.

    2. Terms and definitions

    Acronym
    Definition

    CycloneDX (CDX)

    A standard format for documenting the components, licenses, and vulnerabilities of software packages.

    3. Project setup

    To submit dependencies via the Build API using CycloneDX in JSON format, three prerequisites must be met:

    1. A project must be set up in Ketryx

    2. Either:

      1. A version must exist within the project, or

      2. A commit must be associated with the project

    3. An API key must be created to authenticate requests

    If you don't have a project set up, follow the instructions in MAN-03, section 3.

    Once a projects exists, either a version must be created if one does not yet exist or a repository with commits must exist within the project. A version can be created on the Releases page of the project. To add a repository to a project, please see MAN-03, section 3.

    To submit dependencies, you need to have the project ID, and version ID or name, or commit SHA handy. Project ID and version ID can be found in the URL when you navigate to the project or version in Ketryx. The version name is the one shown on the Releases page, while the ID is the one in the URL. The commit SHA can either be found on the History > Commits page of the project or in your version control system.

    As a last step, an API key is required to authenticate the requests. Steps to creating an API key can be found in the API Authentication documentation.

    Once you have a project set up, you can start using the Build API to submit dependencies in CycloneDX JSON format.

    4. Supported CycloneDX formats

    Ketryx supports CycloneDX files in JSON format. Version 1.4, 1.5, and 1.6 of the CycloneDX specification are supported.

    Such CycloneDX files can be obtained or generated with a variety of tools, including, in no particular order:

    1. cdxgen

    2. syft

    3. FOSSA

    5. Submitting dependencies

    Ketryx provides two ways to submit CycloneDX files. Once the CycloneDX file has been submitted, the SBOM Review page in Ketryx will show the submitted dependencies for the version it was submitted for.

    5.1. Via the Build API

    To submit dependencies via the Build API, you first need to upload the CycloneDX file as a build artifact to the /build-artifact endpoint, followed by a POST request to the /builds endpoint. The request should include the project ID, version ID or name, or commit SHA, and the CycloneDX JSON payload. More details can be found in the Build API documentation.

    5.2. Via the Ketryx GitHub Action

    When using GitHub Actions, instead of using the Build API directly, you can use the Ketryx GitHub Action to automate the submission of CycloneDX files. The GitHub Action is available in the GitHub Marketplace.

    5.3. After submission

    After submitting the CycloneDX file, the dependencies will be processed by Ketryx. The dependencies will be displayed on the SBOM page of the project. Unless configured otherwise, the SBOM page shows the top-level packages contained in the CycloneDX file. Direct and indirect dependencies of these packages are shown on the Dependencies tab of each individual dependency's detail page.

    For Ketryx to display the transitive dependencies, the submitted CycloneDX file must contain transitive dependencies in the packages list and the necessary relationships in the dependencies list for each dependency. If these are missing, Ketryx will not display the transitive dependencies.

    5.4. Advanced configuration

    Ketryx allows for advanced configuration of the CycloneDX processing. This includes the ability to have Ketryx treat direct and indirect dependencies of top-level packages as top-level dependencies. In effect, this means that all dependencies of a top-level package are shown as top-level packages on the SBOM page. As a result, all dependencies will have to be approved and put into a controlled state before a release can be approved.

    This can be desirable if you want to ensure that all dependencies are controlled, not just the top-level packages. In case of some ecosystems, such as npm, this can however also result in a large number of dependencies being shown as top-level packages.

    For more information, please refer to the Advanced Settings documentation.

    6. Mapping CycloneDX data to item fields

    New in 2.13.2

    Ketryx offers a flexible mechanism to map data from an uploaded CycloneDX SBOM directly to custom fields on dependency items. This allows you to enrich dependency items with relevant information from the SBOM, such as component type, build properties, or SBOM metadata.

    This mapping is configured via the CycloneDX field mapping advanced setting. Other settings, such as Custom item fields configuration and Item fields, are configured in the advanced settings on the organization level.

    This requires dependencies as items to be enabled in the project. This is not yet enabled for all organizations by default. If you want to use this feature, please contact Ketryx support to enable it for your organization.

    6.1. Configuration

    The mapping is defined by a set of rules. Each rule specifies a source for the data within the CycloneDX document (using a JSONPath expression) and a target custom field.

    JSONPath Context

    JSONPath expressions are evaluated against a context object that contains both the component being processed and the root of the SBOM document.

    • $.component: Use this prefix to query fields within the current CycloneDX component. For example, $.component.name extracts the component's name.

    • $.doc: Use this prefix to access properties from the root of the CycloneDX document. For example, $.doc.metadata.timestamp extracts the SBOM's generation timestamp.

    Mapping Rules

    A mapping rule can have the following properties:

    • source (required): A JSONPath expression to extract the value.

    • target (required): An object specifying the customField name to map the value to.

    • description: A human-readable description of the rule.

    • appliesToVersion: An array of CycloneDX specification versions (e.g., ["1.5"]) to which the rule applies. If omitted, the rule applies to all supported versions.

    • enumMapping: A dictionary to translate source values to different target values, useful for SELECT custom fields.

    • defaultValue: A fallback value to use if the source expression yields no result.

    6.2. Examples

    Here are some examples of how to configure the mapping.

    Example 1: Map component type and SBOM timestamp

    This example demonstrates two basic mappings:

    1. The component's type is mapped to a Software component type custom field.

    2. The SBOM's generation timestamp is mapped to an SBOM generation date custom field.

    First, define the custom fields in the Custom item fields configuration setting.

    Then, add the custom fields to the Dependency item type in the Item fields setting.

    Finally, configure the mapping rules in the CycloneDX field mapping advanced setting.

    Example 2: Transform values for a SELECT field

    This example shows how to map the component type to a SELECT custom field, transforming the values using enumMapping.

    First, define the Component Category custom field with its options.

    Then, add the custom field to the Dependency item type.

    Finally, set up the mapping rule with enumMapping.

    Example 3: Map multiple values to a MULTI_SELECT field

    This example extracts all external reference types and maps them to a MULTI_SELECT field.

    First, define the Reference Types custom field.

    Then, add the custom field to the Dependency item type.

    The mapping rule uses a wildcard in the JSONPath to get all types.

    Any manual changes made to the values of custom fields that are mapped through this setting will be overwritten the next time an SBOM is processed.

    7. Cybersecurity

    By default, Ketryx will parse the CycloneDX file and create corresponding dependencies as defined within these files. It extracts crucial information about software packages, including version, license, and vulnerability information, which pertains to any vulnerabilities associated with the software packages.

    Ketryx will also check direct and indirect (transitive) dependencies for vulnerabilities. If a vulnerability is found, it will be displayed on the SBOM > Vulnerabilities page of the project. The Vulnerabilities tab of each individual top-level dependency's detail page will show the vulnerabilities found in that dependency and its dependencies.

    To learn more on how to create a vulnerability impact assessment and generate a vulnerability report for a project, see the Vulnerability Management manual.

    For a list of supported ecosystems that Ketryx can analyze for vulnerabilities, please refer to MAN-03, section 10.

    official CycloneDX 1.5 specification
    1.4
    1.6
    Build API
    Custom item fields configuration
    {
      "Software component type": {
        "type": "SHORT_TEXT",
        "isEditableInKetryx": true,
        "syncToExternalSystem": false
      },
      "SBOM generation date": {
        "type": "DATETIME",
        "isEditableInKetryx": true,
        "syncToExternalSystem": false
      }
    }
    Item fields configuration
    {
      "Dependency": {
        "addedFields": [
          { "kind": "CUSTOM", "name": "Software component type" },
          { "kind": "CUSTOM", "name": "SBOM generation date" }
        ]
      }
    }
    CycloneDX field mapping configuration
    {
      "mappingSchemaVersion": "1.0.0",
      "description": "Maps component type and SBOM generation date to custom fields.",
      "mappingRules": [
        {
          "description": "Map the component's type to the 'Software component type' custom field.",
          "source": "$.component.type",
          "target": {
            "customField": "Software component type"
          }
        },
        {
          "description": "Map the SBOM generation timestamp to the 'SBOM generation date' custom field.",
          "source": "$.doc.metadata.timestamp",
          "target": {
            "customField": "SBOM generation date"
          }
        }
      ]
    }
    Custom item fields configuration
    {
      "Component Category": {
        "type": "SELECT",
        "options": [{ "value": "Software Library" }, { "value": "Software Framework" }, { "value": "Application" }],
        "isEditableInKetryx": true,
        "syncToExternalSystem": false
      }
    }
    Item fields configuration
    {
      "Dependency": {
        "addedFields": [
          { "kind": "CUSTOM", "name": "Component Category" }
        ]
      }
    }
    CycloneDX field mapping configuration
    {
      "mappingSchemaVersion": "1.0.0",
      "supportedVersions": ["1.4", "1.5", "1.6"],
      "mappingRules": [
        {
          "description": "Map the component's type to the 'Component Category' select field.",
          "source": "$.component.type",
          "target": {
            "customField": "Component Category"
          },
          "enumMapping": {
            "library": "Software Library",
            "framework": "Software Framework",
            "application": "Application"
          }
        }
      ]
    }
    Custom item fields configuration
    {
      "Reference Types": {
        "type": "MULTI_SELECT",
        "isEditableInKetryx": true,
        "syncToExternalSystem": false,
        "options": [
          { "value": "advisories" },
          { "value": "bom" },
          { "value": "build-meta" },
          { "value": "configuration" },
          { "value": "distribution" },
          { "value": "issue-tracker" },
          { "value": "license" },
          { "value": "mailing-list" },
          { "value": "social" },
          { "value": "support" },
          { "value": "vcs" },
          { "value": "website" }
        ]
      }
    }
    Item fields configuration
    {
      "Dependency": {
        "addedFields": [
          { "kind": "CUSTOM", "name": "Reference Types" }
        ]
      }
    }
    CycloneDX field mapping configuration
    {
      "mappingSchemaVersion": "1.0.0",
      "supportedVersions": ["1.4", "1.5", "1.6"],
      "mappingRules": [
        {
          "description": "Map external reference types to a multi-select field.",
          "source": "$.component.externalReferences[*].type",
          "target": {
            "customField": "Reference Types"
          }
        }
      ]
    }

    Testing report file

  • Traceability matrix file

  • (Optionally) Define an appropriate Assignee, i.e., Item Assignee.

  • Press Create.

  • Give the Test Execution a title. It is common practice to prepend the word “Execution: ” before repeating the title of its Test Case parent.
  • (Optionally) Define an appropriate Assignee, i.e., Item Assignee.

  • Press Create.

  • Observed behavior: Is the answer complete?
  • Test result: Is it filled out?

  • Found anomalies: In case of failure, has an anomaly been filed and linked to the Test Execution?

  • Observed behavior: Is the answer complete?
  • Test result: Is it filled out?

  • Found anomalies: In case of failure, has an anomaly been filed and linked to the Test Execution?

  • Observed behavior (rich text): The observed behavior of this execution.

  • Test result (dropdown): The result of this execution derived from the observed behavior.

    • Fail

    • Pass

    • Pass with exception

  • Test being executed (-> Test Case): The Test Case this execution is carrying out.

  • Found anomalies (-> Anomaly): One or multiple anomalies discovered in this execution, if any.

  • Introduced in version (version reference): The version this item is effective in. If empty, this execution is ignored, and the result of the latest Test Execution for the executed Test Case and version is used.

  • WI-06 Anomaly
    Step 4
    Step 4
    Selecting the tested version
    Selecting tests and creating executions

    R&D Lead: The person that verifies the CAPA is executable. The R&D Lead is consulted to approve that the CAPA is actionable.

    Fill in the Affected items
    Find the Approvals widget.
  • Press Approved as reviewed.

  • Preventive actions (rich text): Actions to prevent the recurrence of the problem.
  • Reporter type: Source of this issue.

    • Internal

    • External

  • Affected items (-> Requirement, Software Item Spec, Hardware Item Spec, Test Case, Risk, Configuration Item, CAPA, Anomaly, Change Request): Items affected by this change or issue.

  • New items (-> Requirement, Software Item Spec, Hardware Item Spec, Test Case, Risk, Configuration Item, CAPA, Anomaly, Change Request): Items resulting from this change.

  • results from
    Change Request, CAPA
  • CAPA resolves Anomaly, Complaint

  • Upload a build artifact file to Ketryx

    post

    Uploads a build artifact to Ketryx, which can then be included in a build using the /builds API. The file is encoded in a request of type multipart/form-data.

    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.
    relevant Advanced settings section
    MAN-06 Test Management

    Report a build to Ketryx

    post

    Reports a build to Ketryx, potentially including test results. Additionally, certain checks can be performed, namely whether all software dependencies are accepted and controlled, and/or whether the given version(s) are fully released in Ketryx.

    The reported build can be associated with a particular version directly (via version), or with any versions given a particular commit (via commitSha), based on the release ref pattern configured in the Ketryx project.

    Authorizations
    AuthorizationstringRequired
    Bearer authentication header of the form Bearer <token>.
    Body
    Responses
    200

    OK

    application/json
    400

    The request is not valid.

    application/json
    401

    The requester is not authenticated.

    application/json
    403

    The requester is unauthorized.

    application/json
    404

    The resource was not found.

    application/json
    post
    /builds

    WI-06 Anomaly

    Work Instruction for Anomaly configuration items

    1. Introduction

    1.1. Purpose

    This Work Instruction provides the set of tasks required to be performed as part of the Anomaly configuration item lifecycle.

    1.2. Scope

    This Work Instruction covers the complete Anomaly lifecycle. Records for each Anomaly will be held based on the records and retention policy.

    1.3. Records and evidence

    Records for each Anomaly will be held based on the records and retention policy. Anomalies are used to generate the following artifacts:

    • Change management file

    • Change request verification report

    • Testing report (Found anomalies)

    • Test Plan (Tested items)

    1.4. Definitions and Acronyms

    1. Approvals widget: A dedicated Jira ticket section showing the current approval state within Ketryx.

    2. CAPA: Corrective and Preventive Actions

    3. RCI: Root Cause Investigation

    4. RCA

    1.5. Responsibilities

    As listed in 2.1 in the procedure description, each task in the Anomaly item’s lifecycle will be completed by a member that is part of one of the following approval steps. When any of these members can perform the task, Anyone is listed.

    • Item Assignee: The person responsible for the Anomaly. This organization member is responsible for managing/completing the Anomaly lifecycle activities. This Item Assignee can change from time to time.

    • Quality Manager: The person that verifies the Anomaly is correctly documented, investigated, and completely tested. The Quality Manager is consulted to approve the Anomaly.

    • R&D Lead: The person that is accountable for the Anomaly. The R&D Lead is consulted to investigate, resolve, and approve the fix for the

    2. Procedure description

    2.1. Step 1: Log into Jira

    Anyone

    Log into your Jira organization, e.g., your-company.atlassian.net.

    2.2. Step 2: Create

    Anyone

    1. In Jira, select Create

    2. Make sure the work type is Anomaly.

    3. Draft the template, adding information as needed. The only required field is the Summary, marked by a red asterisk (*).

    2.3. Step 3: Navigate to the work item page

    Anyone

    Using the popover shown by Jira or through other means, navigate to the Jira page of the Anomaly.

    2.4. Step 4: Change status to In Progress

    Anyone

    1. Select the Status button and click Start Progress.

    2.5. Step 5: Perform Root Cause Analysis

    Item Assignee

    Perform a Root Cause Investigation (RCI) to discover the root cause of the Anomaly and put the findings in the Root cause analysis field. Incorporate other team members as required.

    2.6. Step 6: Trace, plan and refer to affected items and version

    Item Assignee

    1. Following the RCI, plan the scope of the needed change, trace and document affected items.

    2. If not defined already, set the Introduced in version field to the first version known to be affected by the Anomaly.

    3. Plan what actions need to be taken, and based on the scope and impact of the change, work item CAPA(s) or Change Request(s) and connect to the Anomaly.

    2.7. Step 7: Mark as deferred

    Item Assignee

    If the Anomaly is not fixed in the upcoming version (i.e., there is no Obsolete in version set), document the reason using the Rationale for deferring resolution field.

    2.8. Step 8: Address changes

    Item Assignee

    Introduce the necessary changes according to the plan.

    2.9. Step 9: Change status to Resolved

    Item Assignee

    Once the Anomaly is completely fixed (i.e., all necessary changes are implemented), set the Obsolete in version field to the upcoming version where the fix will be deployed.

    1. Use the work item status button to select Ready for Review.

    2.10. Step 10: Review as Owner

    Item Assignee

    1. Read through the Anomaly and verify the RCI was performed correctly, that it is completely fixed by the suggested changes, and that those changes are implemented.

    2. Find the Approvals widget.

    3. Press Approve.

    2.11. Step 11: Review as R&D Lead

    R&D Lead

    1. Read through the Anomaly, review whether the RCI was performed correctly, that it is completely fixed by the suggested changes, and that those changes are implemented.

    2. Find the Approvals widget.

    3. Press Approve.

    2.12. Step 12: Review as Quality Manager

    Quality Manager

    1. Read through the Anomaly, review whether the RCI was performed correctly, that it is completely fixed by the suggested changes, and that those changes are implemented.

    2. Find the Traceability widget.

    3. Ensure the Traceability widget shows a related Test Case that tests for this Anomaly.

    2.13. Step 13: Transition to a controlled state

    Ketryx

    Only Ketryx can move an Anomaly to a controlled and effective state by transitioning its status to Closed. Ketryx moves the Anomaly to a Closed state after all approval rules have been passed, i.e., all required steps have approved the Anomaly.

    Ketryx automatically adds a comment to the Jira work item with a link to the effective controlled record in Ketryx.

    2.14. Step 14: Change status to Reopened

    Anyone

    If an Anomaly needs to be reopened:

    1. Select the status button.

    2. Press Reopen.

    3. Go back to Step 4.

    2.15. Step 15: Re-assessing deferred Anomalies

    R&D Lead

    Deferred Anomalies should be re-assessed regularly:

    1. In Jira, find all Anomaly tickets with the status Open and a non-empty Rationale for deferring resolution.

    2. Check each item or notify the responsible person to ensure the rationale remains valid.

    3. In case of an out-of-date rationale, update the content accordingly.

    3. Procedure flow diagram

    4. Item schema

    • Description (rich text): A detailed description of the Anomaly.

    • Environment (short text): E.g., Home vs. Hospital

    • Problem Report Type: The type of problem report (often related to the resulting action or change needed).

    5. Traceability to other configuration items

    The following relations can be defined from an Anomaly to other configuration items:

    • Anomaly is resolved by Hardware Item Spec, Requirement, Change Request

    • Anomaly relates to Anomaly

    • Anomaly affects CAPA, Change Request, Anomaly, Configuration Item, Risks, Hardware Item Spec, Requirement, Software Item Spec

    The following relations can be defined from other configuration items to an Anomaly:

    • Anomaly is implemented by Task

    • Anomaly was found by Test Execution

    • Anomaly results from Change Request, CAPA

    • Anomaly

    MAN-12 Computational Controls

    Manual for computational controls in Ketryx

    1. Introduction

    This document provides a comprehensive overview of the computational controls implemented in the Ketryx Platform. These controls are designed to ensure the correct execution of Quality System procedures in software development, particularly for medical devices and other regulated industries.

    1.1. Purpose

    • To outline Ketryx Platform's computational controls and their benefits.

    • To show how these controls align with industry standards like IEC 62304.

    • To highlight the platform's role in enhancing software development quality assurance.

    1.2. Scope

    This guide provides an in-depth look at the Ketryx Platform's computational controls across three key levels: task, activity, and process. It covers configuration item controls, module-level controls, release-level controls, and incremental testing capabilities. Each section explores the available controls, their configurability, and their impact on the software development lifecycle, with a focus on enhancing quality assurance and regulatory compliance.

    1.3. Document Structure

    The content is organized to mirror the Ketryx framework's hierarchy:

    1. Task Level: Configuration item controls

    2. Activity Level: Module controls

    3. Process Level: Release controls

    Within each level, we describe the available features, their technical implementation, and examples of their application in maintaining quality assurance standards.

    This technical guide is intended for software developers, quality assurance specialists, and system administrators evaluating or using the Ketryx Platform. It assumes familiarity with software development processes and quality management systems in regulated environments.

    2. Description of Computational Controls

    2.1. Levels of Control

    One of the key principles from IEC 62304 that is employed in the design of the Ketryx platform is hierarchy of process. 62304 utilizes the following scheme to categorize different units of work:

    Tasks are related and interlinked to make up activities, activities are related and interlinked to make up processes. \

    This structure is mirrored in the Ketryx framework:

    In Ketryx, when a user is performing a task, they are generally working on a configuration item, such as requirement definition, authoring specifications, or executing tests.

    When a user is working on an activity, they are generally working at the module level - resolving traceability, performing overall risk management, or creating a test plan.

    When users work on the process, they generally work at the release level, seeking to complete the overall cycle successfully.

    This document walks through the computational controls available in Ketryx through this hierarchy, starting at the configuration item level.

    2.2. Features

    2.2.1. Task Level - Configuration item controls

    Approval Rules

    1. Each configuration item type may have its own configurable approval rule requiring certain groups to approve an item before it becomes controlled. For example, a requirement item type may have different approvals than a software item specification.\

    2. [Supported in Jira] For more complicated workflows, approvals may gate the transition a configuration item from one state to another. For example, requiring approval to transition a CAPA from Open to Planning. \

    3. It’s possible to configure whether approvals require Part 11 compliant signatures on the grain of the configuration item type.

    For details on the configuration options available for approval rules in Ketryx, refer to

    Required Fields

    1. Configuration items can be gated from approval if they do not have the required fields filled out. These field sets are configurable and can be applied to custom fields.\

    2. [Supported in Jira] For more complicated workflows, approvals may be gate transitioning a configuration item from one state to another. These transitions may also be gated by required fields.

    Invalid Items

    Invalid items allow granular definitions of field values and status combinations that should block a release. These are paired with human-readable error messages that explain to the user why a particular item is invalid. This is different from approval rules because items can be invalid without passing through an approval process.

    For example, to enforce that Anomalies with a Resolution of "Duplicate" have a certain status:

    This is a powerful mechanism that can also enforce certain guard rails for the test plan of each release. For example, to enforce that all tests that act as risk controls are included in the test plan:

    2.2.2. Activity Level - Module controls

    Traceability

    1. Coverage checks can be configured for the RTM, which allows enforcement that trace links have been established between item types. For example - every requirement shall have a specification item that fulfills it. A project team can define as many of these checks as they desire and have engineering controls for the specific V-model that the project team defines.\

    2. The traceability matrix also has the capability of configuring warnings and visual indicators based on missing checks along a trace chain to give granular feedback on all the actions that need to be taken to bring a trace into alignment with the QMS requirements. A complete and compliant trace will have a green indicator at the bottom:\

    Risk Management

    1. Ketryx can enforce different risk models and evaluations on different hazard types. A common application is to have different risk models for hazards of type cybersecurity versus risks of type safety.

    2. It is configurable on the project level how strictly to enforce an association between a specific harm and a severity. It can be a soft association, where the selection of a harm will suggest a severity that can then be changed by a user. It can also be a hard association, where severity and harm are directly linked to each other and cannot be changed.\

    3. It is configurable as to how strict selections of hazards and hazardous situations are made. In the defaults, these are open fields that users can populate with arbitrary values. In strict enforcement, these fields can only be selected from specified lists.

    Design Verification

    1. Ketryx can enforce a strict order of design verification on a trace-by-trace basis with the Require re-verification of accepted items after change control setting. This setting will require a re-review of any design output of a changed design input. For example, if a requirement is changed, the specification items that fulfill that requirement will be transitioned from closed to resolved - requiring a re-approval to verify that the specifications still fulfill the requirement. This setting cascades, such that if a specification is re-opened due to the requirement, those test cases that test the changed specification will be transitioned to a state that requires re-approval.

      This computational control triggers when there are edits to the controlled fields of an upstream item. This includes edits to system fields (e.g., Summary, Description, Acceptance Criteria) or any additional fields explicitly configured in your projects advanced settings.

      Changes to fields that Ketryx treats as uncontrolled - such as Status or fields set as uncontrolled via the advanced settings do not trigger this computational control.

      This means that status-only transitions (e.g., moving from Reopened → Closed without editing any content), are ignored by this control. Downstream items will not reopen unless the upstream change is made to a controlled field, and the changed item re-enters an approved, controlled state.

      It’s important to note that this feature functions at the level of a trace. It will not affect items that are not included in the trace from the originating change. There is further discussion and an example in the

    Granular Control with Design Filters

    For more precise control over the design verification process, Ketryx offers advanced settings that allow you to define exactly which items are treated as design inputs or outputs using KQL (Ketryx Query Language) filters.

    1. Custom design input filter: This filter refines the behavior of the Require controlled design inputs before a design output can be approved setting. You can provide a KQL filter to specify which items are considered design inputs. The item being evaluated is matched by the keyword selected.

    Note on cross-project referencing: The filter's scope is limited to the current project and any other projects it explicitly references. To ensure all design inputs are found, you must add a reference to every project that contains relevant design inputs with a Referenceable items filter that matches the design inputs. The check will fail to find design inputs from any project that is not referenced here.

    For example, to treat all change requests that have an "Affects" relation to an item as design inputs for that item, you can use the following KQL filter:

    1. Custom design output filter: This filter refines the behavior of the Require re-verification of accepted items after change control setting. You can provide a KQL filter to specify which items are considered design outputs. The item being evaluated is matched by the keyword selected.

    Note on cross-project referencing: The filter's scope is limited to the current project and any other projects it explicitly references. To ensure all design outputs are found, you must add a reference to every project that contains relevant design outputs with a Referenceable items filter that matches the design outputs. The check will fail to find design outputs from any project that is not referenced here.

    For example, to consider all software item specifications as design outputs if they have an "is affected by" relation from the current item, you can use the following KQL filter:

    Test Management

    1. Each release is required by default to have a test plan for which all of the test cases that are included have been reviewed and approved and all of the test cases have associated passed test executions.\

    2. Enabling Require a manual test execution for each effective automated test execution imposes a control that a review and approval cycle on the outputs of an automated test - rather than just a report of the pass / fail status of an automated test.\

    3. Enabling Require automated tests to be associated with test cases imposes a control that an automated test must be reported against a documented test case in the system. By default Ketryx is more lenient than this, allowing automated tests to be reported directly against other configuration items, such as specifications and requirements.\

    Training

    Enabling the Require training control enforces that users who have not completed their required training items cannot execute the approval authority of the group that has that training requirement. For example, if a user is in an R&D group and that group is required to read and acknowledge the Quality Manual of the organization to sign off as an approver. If they have not completed the acknowledgment of the Quality Manual, Ketryx will not allow them to sign for the approval and will alert them to the training deficiency.

    Milestones

    Milestones allow an organization to collect sets of configuration items and documents into a set and can block approvals of other configuration items until the configuration items in the milestones and the milestone itself are approved. This is a powerful feature if an organization seeks to work in a more waterfall fashion. Milestones can also be used with less imposed control, serving as status indicators to the completion of major tasks - such as requirements definition and approval, for example.

    2.2.3. Process Level - Release controls

    Release Checklist

    Note: All of these controls are enabled by default, but can be disabled at the project level to relax certain constraints.

    1. Disabling Require controlled and accepted dependencies allows dependencies managed in the SBOM module to not be reviewed and approved to complete a release.\

    2. Disabling Require controlled items allows other configuration items (ex: requirements, specifications) to not be reviewed at the configuration item level to complete a release.\

    3. Disabling Require a controlled test plan removes the requirement that a test plan must be defined for a release to complete the release.\

    Build and Deployment Management

    The approval of a release within Ketryx can be used to gate deployments to certain environments in organizations' CI/CD processes. The primary application of this capability is failing builds that deploy to a production environment if a release is not completed. This provides a strong guarantee that unvalidated software cannot be deployed into production.

    2.3. Enabling incremental testing

    For the following use case:

    I, as a release manager, would like to utilize the testing evidence as long as the underlying clauses that are being tested (requirements, specifications, etc) have not changed. This would allow my teams to not repeat testing unnecessarily.

    This is currently possible in the Ketryx system with a combination of the controls:

    1. Require re-verification of accepted items after change control

    2. Require test executions after controlled test cases

    To give an illustrative example, consider the following trace that is part of a larger project\

    The green boxes around each configuration item indicate that it has been reviewed and controlled (a yellow box indicates that the clause is open to editing).

    Currently, the trace is ‘complete’. All of the items are controlled, and a test execution satisfies the test case.

    A user decides they need to re-open the requirement for some refinement.

    Because Require re-verification of accepted items after change control is enabled, the specification and test case items are reopened, as they would need to be re-reviewed to ensure the specification still fulfills the requirement, and the test case still validates the requirement (and verifies the specification, but that is a secondary effect).

    Now, as the test case is no longer considered controlled, the Require test executions after controlled test cases kicks in, this would invalidate the current test case and require a re-execution to bring this trace back into alignment with the requirements of the QMS.

    The important thing to note is that these mechanisms operate at the level of the trace. This means that if nothing changes on a trace, then the test execution would not need to be re-executed. Tests would only need to be re-executed for those traces where something changed.

    This mechanism works with any connected system. So it would work with TestRail defined tests.

    As a final note, a side effect of this configuration is the requirement of the re-verification of the items in the trace downstream of the change. In the case above - the re-review of the specification and test case item. This may be undesirable. If that’s the case, it’s a straightforward feature to develop to invalidate a test execution in the event that any configuration item in its trace is changed, without the attendant re-verification steps.

    WI-08 Change Request

    Work Instruction for Change Request configuration items

    1. Introduction

    1.1. Purpose

    This Work Instruction provides the tasks required to be performed as part of the Change Request configuration item lifecycle.

    1.2. Scope

    This Work Instruction covers the complete change request lifecycle. Records for each change request will be held based on the records and retention policy. For a complete description of change management, please refer to .

    1.3. Records and evidence

    Records for each Change Request will be held based on the records and retention policy. Change Requests are used to generate the following artifacts:

    • Change management file

    • Change request verification report

    • Test plan

    1.4. Definitions and Acronyms

    • CI - Configuration Item

    1.5. Responsibilities

    As listed in the procedure description, each task in the Requirement item’s lifecycle will be completed by a member that is part of one of the following approval steps. When any of these members can perform the task, Anyone is listed.

    • Item Assignee: The person authoring and responsible for the Change Request. This organization member is responsible for managing/completing the Change Request lifecycle activities. This Item Assignee can change from time to time.

    • Product Managers: The person accountable for the Change Request. This organization member leads the product development and defines requirements. The Product Manager is accountable for the Change Request meeting customer demands.

    • R&D Leads: The person that verifies the Change Request is executable. The R&D Lead is consulted to approve that the

    2. Procedure description

    2.1. Step 1: Log into Jira

    Anyone

    Log into your Jira organization, e.g., your-company.atlassian.net.

    2.2. Step 2: Create a Change Request

    Anyone

    1. Press the Create button in the top-level navigation to open the form to create a new Jira work item.

    2. Ensure the desired space (formerly project) is selected, and select the Work type "Change Request". If that does not appear, check with your system administrator to ensure your space is connected to Ketryx.

    3. Define an appropriate title in the Summary field.

    2.3. Step 3: Navigate to the work item page

    Anyone

    Using the popover shown by Jira or through other means, navigate to the Jira page of the Change Request.

    2.4. Step 4: Change status to In Progress

    Anyone

    Change the work item status to In Progress using the work item status selector.

    2.5. Step 5: Describe the change

    Item Assignee

    In the description field of the Change Request, provide an explanation of the purpose of the change.

    2.6. Step 6: Describe the impact of the change

    Item Assignee

    Describe the impact of this change using the Impact of change field. The description should answer and describe the following points:

    1. What are the potential impacts and risks of this change?

    2. What related systems and components would be affected?

    3. What are the risks associated with this change? What adverse events can happen?

    4. Consult Subject Mater Experts on the change. If unsure about the impact, refer to the expertise of an expert.

    2.7. Step 7: Describe the reason for the change

    Item Assignee

    Describe why the change is necessary and whether the benefit is worth the risk in the Reason for Change text field.

    2.8. Step 8: Add introduced risks

    Item Assignee

    If any, add related risks that would emerge or are affected by this change in the Introduced risks field using the traceability widget.

    2.9. Step 9: Add new items

    Item Assignee

    If any, add in the New items field any items created as a result of this change using the traceability widget.

    2.10. Step 10: Add affected items

    Item Assignee

    If any, add in the Affected Items field any items affected by this change using the traceability widget.

    2.11. Step 11: Specify the type of change

    Item Assignee

    Select in the Change type field the nature of this change.

    2.12. Step 12: Select the version

    Item Assignee

    Select in which version this change should be introduced.

    2.13. Step 13: Change status to Resolved (Ready for Review)

    Anyone

    Once the Change Request is completed and ready for verification, change its status to Resolved.

    2.14. Step 14: Review as Owner

    Item Assignee

    Review the Change Request to verify:

    • The Change Request is traceable to all other needed items, and all interfaces are defined.

    • The Change Request is Specific, Measurable, Achievable, Relevant, and Testable (SMART).

    • The design output (the Change Request) conforms to the design input (the Change Request’s Introduced risks, Affect items, and New items).

    If the verification fails, reopen the ticket and, if needed, provide a comment on the reason it failed, then go to Step 5. If verification passes, approve the Change Request and continue to Step 15.

    2.15. Step 15: Review as R&D Lead

    R&D Lead

    Review the Change Request to verify:

    • The Change Request is traceable to all other needed items, and all interfaces are defined.

    • The Change Request is Specific, Measurable, Achievable, Relevant, and Testable (SMART).

    • The design output (the Change Request) conforms to the design input (the Change Request’s Introduced risks, Affect items, and New items).

    If the verification fails, reopen the ticket and, if needed, provide a comment on the reason it failed, then go to Step 5. If verification passes, approve the Change Request and continue to Step 15.

    2.16. Step 16: Review as Quality Manager

    Quality Manager

    Review the Change Request to verify:

    • The Change Request is traceable to all other needed items, and all interfaces are defined.

    • The Change Request is Specific, Measurable, Achievable, Relevant, and Testable (SMART).

    • The design output (the Change Request) conforms to the design input (the Change Request’s Introduced risks, Affect items, and New items).

    If the verification fails, reopen the ticket and, if needed, provide a comment on the reason it failed, then go to Step 5. If verification passes, approve the Change Request and continue to Step 15.

    2.17. Step 17: Review as Product Manager

    Product Manager

    Review the Change Request to verify:

    • The Change Request is traceable to all other needed items, and all interfaces are defined.

    • The Change Request is Specific, Measurable, Achievable, Relevant, and Testable (SMART).

    • The design output (the Change Request) conforms to the design input (the Change Request’s Introduced risks, Affect items, and New items).

    If the verification fails, reopen the ticket and, if needed, provide a comment on the reason it failed, then go to Step 5. If verification passes, approve the Change Request and continue to Step 15.

    2.18. Step 18: Transition to a controlled state

    Ketryx

    Only Ketryx can move a Change Request to a controlled and effective state by transitioning its status to Closed. Ketryx moves the Change Request to a Closed state after all approval rules have been passed, i.e., all required steps have approved the Change Request.

    Ketryx automatically adds a comment to the Jira work item with a link to the effective controlled record in Ketryx.

    3. Procedure flow diagram

    4. Item schema

    • Description (rich text): The Change Request description. Change Requests should be Specific, Measurable, Achievable, Realistic, Testable (SMART).

    • Change type (multi-choice): May be either Perfective, Adaptive, Corrective, Preventive.

    • Reason for change (rich text): Describes the reason for this change.

    5. Traceability to other configuration items

    The following relations can be defined from a Change Request to other configuration items:

    • Change Request introduces risk Risk

    • Change Request affects CAPA, Change Request, Anomaly, Configuration Item, Risks, Hardware Item Spec, Requirement, Software Item Spec

    • Change Request results in CAPA, Software Item Spec, Change Request, Anomaly, Requirement, Risks, Hardware Item Spec, Configuration item

    The following relations can be defined from other configuration items to a Change Request:

    • Change Request is implemented by Task

    • Change Request is affected by CAPA, Change Request, Anomaly

    • Change Request is tested by Test Case

    Assistant

    Guide on using the Ketryx Assistant to accelerate safety-critical work

    Introduction

    Ketryx is designed to help users interact with the platform more efficiently by providing natural language understanding of queries and automating common tasks. Powered by Large Language Models (LLMs), Ketryx can understand context, interpret complex questions, and provide relevant answers. As with any AI system, while these features are designed to be helpful and accurate, users should always carefully review and verify all suggestions, results, and generated content before taking action. Whether you're searching for items, analyzing requirements, or creating new configuration items, Ketryx can help streamline your workflow while you maintain full control and oversight of the process.

    Data Privacy

    Ketryx prioritizes the security and privacy of your data. When interacting with AI features, your project data is processed using a zero data retention LLM endpoint. This means your data exists temporarily in memory only to serve your immediate request and is not persisted, stored, or used for training purposes.

    Assistant Support

    Throughout the platform, the magic wand icon (🪄) indicates the availability of assistant support.

    Response Modes

    The Assistant provides different response modes to match your workflow needs:

    • Fast Mode: Delivers shorter responses optimized for speed when you need quick answers.

    • Standard Mode: Provides more detailed responses with deeper analysis for comprehensive understanding.

    Chat Session Management

    New in 2.14

    The Assistant maintains your conversation state to support uninterrupted workflows:

    • Session Persistence: Your chat history and context are preserved when you navigate to other pages and return. This allows you to continue complex multi-step analysis without losing your progress.

    • New Conversation: You can start fresh at any time using the reset button to clear the current conversation and begin a new chat session.

    The Assistant panel includes a reset conversation button () that starts a new chat session with cleared history.

    Default Prompts

    If you would like to set default prompts for your organization or project, use the .

    Key Features

    1. Item Creation & Management ✨

    Ketryx can help create new items and suggest improvements to existing ones. Rather than spending manual time creating various configuration items, slowing time to market, Ketryx will generate drafts that you can review and edit before automatically syncing with systems like Jira.

    Tip: For optimal performance, consider that requests for multiple items (e.g., "create five test cases") will take longer to process than requests for single items – the response time increases with the number of items requested.

    Examples:

    • "Please create a new requirement for bluetooth connectivity"

    • "I want to create a software spec for Android integration"

    • "Identify risks for requirement KX-371 and create two risk controls for them"

    • "Create a risk that is aligned with ISO 14971 for a web application"

    2. Smart Filtering Commands 📋

    Ketryx can translate natural language queries into Ketryx Query Language (KQL) to help you find and filter items based on specific criteria. Using AI-based natural language understanding, it converts your natural questions into precise database queries.

    Examples:

    • "Show me all requirements that are not yet approved"

    • "Find software items that fulfill requirements"

    • "Show me test cases in the test plan for version 1.0"

    • "Get items approved by R&D Leads"

    3. Intelligent Content Search 🔍

    Ketryx uses Retrieval Augmented Generation (RAG) technology to analyze your project's content and find relevant matches, even when exact criteria aren't known. This means it can understand context and find items based on concepts and meaning rather than just matching keywords or fields.

    Examples:

    • "Do we have requirements that talk about bluetooth?"

    • "Show me all specs relating to cybersecurity"

    • "Someone at the meeting mentioned depth for water resistance. Can you find the relevant requirement?"

    • "Is there an existing anomaly for this case where a title is one long word without spaces?"

    Ketryx can perform natural language search on your project

    4. Analysis & Conflict Detection 🤔

    In complex systems with hundreds or thousands of interconnected items, it can be challenging to keep track of all relationships and potential conflicts. Ketryx helps you navigate this complexity by performing sophisticated analysis tasks:

    • Analyze relationships between items

    • Identify potential conflicts

    • Summarize groups of related items

    • Evaluate the impact of potential changes

    Examples:

    • "Can you look at requirements that have to do with the mobile app and summarize them for me?"

    • "Are these two requirements consistent with one another?"

    • "What are the two most similar requirements in the project?"

    • "Which requirements might be fulfilled by a new spec for Bluetooth connectivity?"

    5. Context-Aware Follow-Up Questions 🔄

    Ketryx maintains context throughout the conversation, allowing for natural follow-up queries (e.g., "Create tests for those" or "Would any of those be fulfilled by a new spec for bluetooth connection?"). Your conversation context is preserved even when you navigate to other pages and return, enabling you to continue complex workflows without interruption. Using its memory of previous interactions and referenced items, it can provide more relevant and specific responses to follow-up queries.

    Ketryx maintains context and allows you to ask natural follow-up questions

    6. Documentation Questions 📚

    Ketryx leverages RAG technology to provide accurate answers about the platform, drawing from the official documentation. This means it can reference specific documents and support articles while providing contextually relevant answers.

    Examples:

    • "How do you add your repository to Ketryx for a new project?"

    • "How do I create a Personal Access Token for GitLab?"

    • "What languages does Ketryx built-in dependency scanning support?"

    • "How can I use 'Release ref pattern' for connected repositories in the Ketryx project settings?"

    7. Traceability Relationship Suggestions

    Ketryx can help suggest traceability relationships between items by using the 🪄 Suggest button next to relation fields. This feature can help with:

    • Identifying affected items for Change Requests

    • Finding parent requirements for new Requirements

    • Suggesting related test cases

    • Identifying potential risks and controls

    8. Ketryx Templating Assistance 📝

    Ketryx can help analyze existing documents and provide guidance for creating templates that match your documentation needs.

    Ketryx helps with:

    • Analyzing document structure and suggesting appropriate template organization

    • Providing relevant KQL queries for data access

    • Recommending template sections and their mapping to Ketryx items

    • Offering step-by-step guidance for template implementation

    Examples:

    • "How can I create a template that shows requirements grouped by priority?"

    • "Help me structure a template based on this existing specification document"

    • "What's the best way to show test coverage in my requirements template?"

    • "Can you suggest a template structure for my risk management document?"

    9. Repository Code Analysis & Autonomous Fixes 🔧

    The Assistant can now remotely analyze your connected GitHub repositories and autonomously create pull requests with fixes. This powerful feature enables:

    • Remote Code Analysis: Analyze GitHub repositories directly via GitHub MCP tools without local cloning

    • Autonomous PR Creation: the assistant can create branches, commit changes, and open pull requests for identified issues

    • IEC 62304 Compliance Checking: Analyze code for medical device software standards compliance, suggest requirements based on pull requests

    • Security Vulnerability Assessment

    Examples:

    • "Create a new requirement based on this new pull request"

    • "Analyze our codebase for IEC 62304 compliance"

    • "Review error handling patterns across all repositories"

    • "Find security vulnerabilities and create PRs to fix them"

    Assistant Rules

    If you would like to further tailor your experience with the Ketryx Assistant, you can upload a specific ruleset to your Ketryx project for the Assistant to follow when performing activities. If you are interested in setting this up, please and let us know! A very comprehensive example ruleset is provided below.

    Feedback and Support

    Ketryx is continuously improving. If you have any feedback or encounter any issues, please use the thumbs up/down buttons in the chat or and let us know!

    Related Documentation

    WI-02 Software Item Specification

    Work Instruction for Software Item Specification configuration item

    1. Introduction

    1.1. Purpose

    This Work Instruction provides the set of tasks required to be performed as part of the

    Polarion

    Guide on the Ketryx integration with Polarion

    1. Introduction

    Ketryx provides seamless integration with Polarion, enhancing compliance and streamlining the management of configuration items. This integration is purpose-built to

    • align your Polarion workflows with industry standards such as ISO 13485, IEC 62304, and ISO 14971,

    WI-04 Test Case

    Work Instruction for Test Case configuration items

    1. Introduction

    1.1. Purpose

    This Work Instruction provides the tasks required as part of the Test Case

    POST https://app.ketryx.com/api/v1/build-artifacts?project=KXPRJ11T0R3MGR39WCVN0PEKP77HVP0
    Content-Type: multipart/form-data
    Authorization: Bearer KXTK_...
    {
      "ok": true,
      "id": "KXUPF..."
    }
    POST https://app.ketryx.com/api/v1/builds
    Content-Type: application/json
    Authorization: Bearer KXTK_...
    
    {
      "project": "KXPRJ11T0R3MGR39WCVN0PEKP77HVP0",
      "version": "1.0",
      "artifacts": [
        {
          "id": "KXUPF...",
          "type": "cucumber-json"
        }
      ]
    }
    POST https://app.ketryx.com/api/v1/builds
    Content-Type: application/json
    Authorization: Bearer KXTK_...
    
    {
      "project": "KXPRJ11T0R3MGR39WCVN0PEKP77HVP0",
      "version": "1.0",
      "tests": [
        {
          "testedItem": "SAMD-45",
          "result": "pass",
          "title": "My automated test",
          "log": "Log output from executing this test"
        }
      ]
    }
    POST https://app.ketryx.com/api/v1/build-artifacts?project=KXPRJ11T0R3MGR39WCVN0PEKP77HVP0
    Content-Type: multipart/form-data
    Authorization: Bearer KXTK_...
    {
      "ok": true,
      "id": "KXUPF..."
    }
    POST https://app.ketryx.com/api/v1/builds
    Content-Type: application/json
    Authorization: Bearer KXTK_...
    
    {
      "project": "KXPRJ11T0R3MGR39WCVN0PEKP77HVP0",
      "version": "1.0",
      "artifacts": [
        {
          "id": "KXUPF...",
          "type": "spdx-json"
        }
      ]
    }
    POST https://app.ketryx.com/api/v1/build-artifacts?project=KXPRJ11T0R3MGR39WCVN0PEKP77HVP0&buildName=SPDX_SBOM_Upload
    Content-Type: multipart/form-data
    Authorization: Bearer KXTK_...
    POST https://app.ketryx.com/api/v1/builds
    Content-Type: application/json
    Authorization: Bearer KXTK_...
    
    {
      "project": "KXPRJ11T0R3MGR39WCVN0PEKP77HVP0",
      "version": "1.0",
      "buildName": "SPDX_SBOM_Upload",
      "artifacts": [
        {
          "id": "KXUPF...",
          "type": "spdx-json"
        }
      ]
    }
    POST https://app.ketryx.com/api/v1/build-artifacts?project=KXPRJ11T0R3MGR39WCVN0PEKP77HVP0
    Content-Type: multipart/form-data
    Authorization: Bearer KXTK_...
    {
      "ok": true,
      "id": "KXUPF..."
    }
    POST https://app.ketryx.com/api/v1/builds
    Content-Type: application/json
    Authorization: Bearer KXTK_...
    
    {
      "project": "KXPRJ11T0R3MGR39WCVN0PEKP77HVP0",
      "version": "1.0",
      "artifacts": [
        {
          "id": "KXUPF...",
          "type": "cyclonedx-json"
        }
      ]
    }
    POST https://app.ketryx.com/api/v1/build-artifacts?project=KXPRJ11T0R3MGR39WCVN0PEKP77HVP0&buildName=CDX_SBOM_Upload
    Content-Type: multipart/form-data
    Authorization: Bearer KXTK_...
    POST https://app.ketryx.com/api/v1/builds
    Content-Type: application/json
    Authorization: Bearer KXTK_...
    
    {
      "project": "KXPRJ11T0R3MGR39WCVN0PEKP77HVP0",
      "version": "1.0",
      "buildName": "CDX_SBOM_Upload",
      "artifacts": [
        {
          "id": "KXUPF...",
          "type": "cyclonedx-json"
        }
      ]
    }
    POST https://app.ketryx.com/api/v1/builds
    Content-Type: application/json
    Authorization: Bearer KXTK_...
    
    {
      "project": "KXPRJ11T0R3MGR39WCVN0PEKP77HVP0",
      "version": "1.0",
      "checkDependenciesStatus": true
    }
    POST https://app.ketryx.com/api/v1/builds
    Content-Type: application/json
    Authorization: Bearer KXTK_...
    
    {
      "project": "KXPRJ11T0R3MGR39WCVN0PEKP77HVP0",
      "version": "1.0",
      "checkReleaseStatus": true
    }
    Change Request
    is actionable.
  • Quality Managers: The person that verifies the Change Request is correctly documented. The Quality Manager is consulted to approve the Change Request is correctly documented.

  • Define an appropriate Assignee (the Item Assignee).

  • Provide additional preliminary information in the extra fields. (All fields can still be edited later.)

  • Press the Create button at the end of the form to finalize the creation of the new Jira work item.

  • Impact of change (rich text): Describes the impact of this change.
  • Introduced risks (-> Risk): Lists the risks introduced by this change.

  • Affected items (-> Requirement, Software Item Spec, Hardware Item Spec, Test Case, Risk, Configuration Item, CAPA, Anomaly, Change Request): Items affected by this change.

  • New items (-> Requirement, Software Item Spec, Hardware Item Spec, Test Case, Risk, Configuration Item, CAPA, Anomaly, Change Request): Items resulting from this change.

  • Change Request
    results from
    Change Request, CAPA
  • Change Request resolves Anomaly, Complaint

  • MAN-01 Ketryx Lifecycle Management

    "Create a detailed test case for KP-2040"

    "Find requirements containing 'user interface' in the description"

    "I would like to add a requirement that dictates that the SaMD has to connect to a glucose monitor sensor and have continuous synchronization. Are there any requirement configuration items that relate to that idea that I could adapt instead of authoring a new requirement?"

  • "Show me requirements from repository XYZ with recent code changes"

  • Identify risks

    "Today at the meeting someone suggested adding a requirement to disallow Bluetooth connection. Will this conflict with any existing requirements?"

    "What is the difference between the release vulnerability report and the 'on-demand' vulnerability report data grid option on the Vulnerabilities page?"

  • "How do I get automated tests to show up in Ketryx?"

  • "How do I create a template that includes both requirements and their linked test cases?"

    : Identify security issues and suggest fixes
  • Code Quality Review: Evaluate code against best practices

  • "Analyze the latest commits and propose needed updates to design controls"

    AI prompt suggestions advanced setting
    reach out
    49KB
    Ketryx Assistant Rule Set.docx
    Open
    reach out
    Enabling AI Features
    Document Templating
    Ketryx Query Language (KQL)
    Ketryx suggests potential traceability relationships
    projectstringRequired

    Ketryx project ID

    Example: KXPRJ49GQYFQ5RR9KRTPWTRTC39YZ9W
    versionstringOptional

    Ketryx version ID or the full version name. Either this or the commitSha must be set.

    Example: KXVSN352CZED7078FC8DN23YYZVM59D
    commitShastringOptional

    Commit SHA associated with this build. Either this or the version must be set. If the given commit is associated with multiple versions in Ketryx (via the release ref pattern configured for the Ketryx project), the status of all those matching versions will be considered.

    Example: ad4db8ac1e70bd41aa8bcee6f00a3a1e36bb0e01
    buildNamestringOptional

    Build name. For each unique name, the latest build is part of the set of effective builds for a project. Empty by default.

    Example: ci-e2e-batch1
    logstringOptional

    Log output to store for this build

    sourceUrlstringOptional

    Source URL associated with this build. This is used for documentation purposes and to link back to the build from the Ketryx interface.

    Example: https://github.com/Ketryx/ketryx/actions/runs/4991785273
    repositoryUrlsstring[]Optional

    This is important to find the relevant commits for a given version, and to trigger updates of the repositories before checking the build status. The URLs should match the repository URLs as configured in the Ketryx project settings.

    Example: ["https://github.com/Ketryx/ketryx"]
    syncRepositoryUpdatebooleanOptional

    Whether to update the associated repositories (specified in repositoryUrls) synchronously before returning from this API. This is useful when checking for the status of dependencies (using checkDependenciesStatus), to ensure that Ketryx has up-to-date data from the repository before performing the check.

    checkDependenciesStatusbooleanOptional

    Whether to perform a check of dependencies in the associated commit(s). If not all dependencies are accepted and in a controlled state

    checkReleaseStatusbooleanOptional

    Whether to perform a check of the overall release of the associated version(s).

    Query parameters
    projectstringRequired

    Ketryx ID of the project to upload the file to

    Example: KXPRJ49GQYFQ5RR9KRTPWTRTC39YZ9W
    Body
    contentstring · binaryOptional
    Responses
    200

    OK

    application/json
    400

    The request is not valid.

    application/json
    401

    The requester is not authenticated.

    application/json
    403

    The requester is unauthorized.

    application/json
    404

    The resource was not found.

    application/json
    post
    /build-artifacts

    Unresolved Anomalies (with details)

    : Root Cause Analysis
  • Traceability widget: A dedicated Jira ticket section showing the item relations within Ketryx

  • Anomaly
    .
    Either proceed with Step 7 if the anomaly should be deferred; otherwise, introduce the necessary changes in Step 8.
    Find the Approvals widget.
  • Press Approve.

  • In case the Anomaly shouldn’t be deferred any longer, clear the contents of the Rationale for deferring resolution field. Go back to Step 6.

    Safety

  • Security

  • Performance

  • Human factors

  • Mechanical

  • Bio-medical

  • Chemical

  • Impact Scope: Informed by, e.g., size of the change, number of device models affected, supported accessories affected, resources involved, and time to change.

    • Small

    • Medium

    • Large

  • Impact criticality: How critical this anomaly is to the system.

    • Low

    • Medium

    • High

  • Impact on system (rich text): The impact this work item could have on the system.

  • Root Cause Analysis (rich text): Description of the root cause following an investigation.

  • Rationale for deferring resolution (rich text): A detailed description explaining the rationale for deferring the solution for an Anomaly. An Anomaly will be considered a Deferred Anomaly as long as the description is set.

  • Affected items (-> Requirement, Software Item Spec, Hardware Item Spec, Test Case, Risk, Configuration Item, CAPA, Anomaly, Change Request): Items affected by this change or work item.

  • Resolved by (-> Requirement, Software Item Spec, Hardware Item Spec, CAPA, Change Request)

  • Related issues (-> Anomaly)

  • Introduced in version: Version in which the Anomaly was first detected.

  • Obsolete in version: Version in which the Anomaly is fixed.

  • Priority

    • Low

    • Medium

    • High

  • is affected by
    CAPA, Change Request, Anomaly
  • Anomaly related to Anomaly, Complaint

  • Enable incremental testing section
    below.
  • Ketryx can enforce that a design output cannot be closed until all of the design inputs are closed with the Require controlled design inputs before a design output can be approved setting. It’s important to note that this feature functions at the level of a trace. It will not affect items that are not included in the trace from the originating design inputs.

  • Ketryx can automatically create re-verification flags with the Create re-verification flags for affected design outputs when design inputs change setting (more details here). Flags will be created for design output items that may be affected when a design input item completes change control (re-transitions to a controlled state after being modified) These flags serve as reminders to review and verify that the design output items are still valid and up-to-date, given the changes to their related design inputs. Flags can be dismissed explicitly by clicking "Dismiss" or can be dismissed implicitly by the flagged item completing change control (re-transitioning to a controlled state after being modified). It’s important to note that this feature functions at the level of a trace. It will not affect items that are not included in the trace from the originating design inputs. You can filter for flagged items using the KQL filter (which can be used in settings like the Invalid items filters or Custom KQL filters): is:flagged

  • Enabling Allow controlled failed test executions relaxes the control that every test in a release's test plan must pass for the release to be completed. This control permits a failing test execution if it has been reviewed and approved.\

  • Enabling Inherit excluded tests will count test executions from previous releases as effective for test cases that are not included in the current release test plan. This allows organizations to show testing coverage from previous releases for features they don’t intend to test in the current release cycle.\

  • Enabling Require test executions after controlled test cases imposes the control that a test execution can only be executed after a test case has been controlled and approved.

  • Disabling Require generated release documents removes the requirement that design control documents must be generated prior to completing a release.\
  • Disabling Require uploaded build documents removes the requirement that any defined build documents reported via the API must be collected prior to release.\

  • Disabling Require up-to-date release documents removes the requirement that, after release documents have been generated, that they must be updated if any of the underlying configuration items have been updated prior to the completion of a release.\

  • Disabling Require approved release documents removes the requirement that all of the design controls documents must be approved prior to the completion of a release.\

  • Disabling Require full traceability removes the requirement that all of the traceability checks defined on the RTM must pass prior to the completion of a release.\

  • Disabling Require controlled milestones removes the requirement that every milestone defined for the project must be reviewed and approved prior to the completion of a release.

  • MAN-11:Approval Rules.
    IEC 62304 process hierarchy
    Mapping of IEC 62304 process hierarchy to Ketryx Framework
    Incomplete trace with warning indications
    Complete and compliant trace
    Completed trace diagram
    Re-opened Requirement
    Re-verification and re-review of accepted items
    Re-execution of Test Case
    Software Item Specification
    (
    Software Item Spec
    ) configuration item lifecycle.

    1.2. Scope

    This Work Instruction covers the complete Software Item Spec lifecycle, from creation to obsolescence.

    1.3. Records and evidence

    Records for each Software Item Spec will be held based on the records and retention policy. Software Item Specs are used to generate the following artifacts:

    • Change management file

    • Change request verification report

    • Risk control matrix (risk control measures only)

    • Risk management file

    • Risk matrix

    • System design specification (with details)

    • System design structure matrix

    • System architecture chart

    • Test plan

    • Traceability matrix

    1.4. Responsibilities

    As listed in the procedure description, each task in the Software Item Spec item’s lifecycle will be completed by a member that is part of one of the following approval steps. When any of these members can perform the task, Anyone is listed.

    • Item Assignee: The person authoring and responsible for the Software Item Spec. This organization member is responsible for managing/completing the Software Item Spec lifecycle activities. This Item Assignee can change from time to time.

    • R&D Leads: The person accountable for the Software Item Spec. The R&D Lead verifies the Software Item Spec can be implemented and is accountable for it. The R&D Lead is consulted to approve the Software Item Spec.

    • Quality Managers: The person that verifies the Software Item Spec is correctly documented. The Quality Manager is consulted to approve the Software Item Spec.

    2. Procedure description

    2.1. Step 1: Log into Jira

    Anyone

    Log into your Jira organization, e.g., your-company.atlassian.net.

    2.2. Step 2: Create

    Anyone

    1. Press the Create button in the top-level navigation to open the form to create a new Jira work item.

    2. Ensure the desired space (formerly project) is selected, and select the Work type “Software Item Spec”. If that does not appear, check with your system administrator to ensure your space is connected to Ketryx.

    3. Define an appropriate title in the Summary field.

    4. Define an appropriate Assignee (the Item Assignee).

    5. Provide additional preliminary information in the extra fields. (All fields can still be edited later.)

    6. Press the Create button at the end of the form to finalize the creation of the new Jira work item.

    2.3. Step 3: Navigate to the work item page

    Anyone

    Using the popover shown by Jira or through other means, navigate to the Jira page of the Software Item Spec, e.g., _your-company.atlassian.net/browse/SIS-1.

    2.4. Step 4: Change status to In Progress

    Anyone

    Change the work item status to In Progress using the work item status selector.

    2.5. Step 5: Draft/Author Software Item Spec

    Item Assignee

    As needed, fill in the information in the fields of the Software Item Spec.

    Ensure that at least the following fields are filled out:

    • Summary (title)

    • Assignee

    • Description

    • Introduced in version (unless the Software Item Spec is introduced from the start of the project)

    Set the Parent software items and Fulfilled requirements as appropriate. These constitute the design input for this Software Item Spec.

    The Software Item Spec should be SMART (Specific, Measurable, Achievable, Relevant, and Testable). The Software Item Spec should also:

    • be traceable to all other needed items, with clearly defined interfaces;

    • not conflict with another Software Item Spec; and

    • conform to any provided design input.

    Set the Safety risk class and the Security risk class as appropriate.

    If new risks emerge from this Software Item Spec, Anyone can create a new Risk item and trace it to the Software Item Spec by including it in the Risks field.

    2.6. Step 6: Change status to Resolved (Ready for Review)

    Anyone

    Once the Software Item Spec is completed and ready for design verification, change its status to Resolved.

    2.7. Step 7: Review as Owner

    Item Assignee

    Review the Software Item Spec to verify:

    • The Software Item Spec is traceable to all other needed items, and all interfaces are defined.

    • The Software Item Spec is Specific, Measurable, Achievable, Relevant, and Testable (SMART).

    • The design output (the Software Item Spec and its siblings) conforms to the design input (the Software Item Spec’s Parent software items and its Fulfilled requirements).

    If the verification fails, reopen the ticket and, if needed, provide a comment on the reason it failed, then go to Step 5. If verification passes, approve the Software Item Spec as seen in the screenshot below and continue to Step 10.

    2.8. Step 8: Review as R&D Lead

    R&D Lead

    Review the Software Item Spec to verify:

    • The Software Item Spec is traceable to all other needed items, and all interfaces are defined.

    • The Software Item Spec is Specific, Measurable, Achievable, Relevant, and Testable (SMART).

    • The design output (the Software Item Spec and its siblings) conforms to the design input (the Software Item Spec’s Parent software items and its Fulfilled requirements).

    If the verification fails, reopen the ticket and, if needed, provide a comment on the reason it failed, then go to Step 5. If verification passes, approve the Software Item Spec as seen in the screenshot below and continue to Step 10.

    2.9. Step 9: Review as Quality Manager

    Quality Manager

    Review the Software Item Spec to verify:

    • The Software Item Spec is traceable to all other needed items, and all interfaces are defined.

    • The Software Item Spec is Specific, Measurable, Achievable, Relevant, and Testable (SMART).

    • The design output (the Software Item Spec and its siblings) conforms to the design input (the Software Item Spec’s Parent software items and its Fulfilled requirements).

    If the verification fails, reopen the ticket and, if needed, provide a comment on the reason it failed, then go to Step 5. If verification passes, approve the Software Item Spec as seen in the screenshot below and continue to Step 10.

    2.10. Step 10: Transition to a controlled state

    Ketryx

    Only Ketryx can move a Software Item Spec to a controlled and effective state by transitioning its status to Closed. Ketryx moves the Software Item Spec to a Closed state after all approval rules have been passed, i.e., all required steps have approved the Software Item Spec.

    Ketryx automatically adds a comment to the Jira work item with a link to the effective controlled record in Ketryx.

    2.11. Step 11: Change

    Item Assignee

    Following a Change Request (i.e., the work item needs to be modified), reopen the Software Item Spec to create a new record, and go back to Step 4.

    2.12. Step 12: Mark as obsolete

    Item Assignee

    To mark a Software Item Spec as obsolete (i.e., as not effective anymore starting with a given version),

    • reopen it for change (Step 11);

    • set the version it will be obsolete in (i.e., where the first version that it will not be effective in anymore) in the Obsolete in version field;

    • resolve the work item (Step 6); and

    • approve the item (Steps 7-9).

    3. Procedure flow diagram

    4. Item schema

    • Description (rich text): The Software Item Specification description. The Software Item Specification should define clearly and precisely what the software architecture should do and not do, i.e., constraints. Software Items should be Specific, Measurable, Achievable, Realistic, Testable (SMART).

    • Introduced in version (version reference): The first version this item is effective in. If empty, the item is considered effective from the start of the project.

    • Obsolete in version (version reference): The version the item is becoming obsolete in, i.e., the first version that this item is not effective anymore.

    • Parent software items (-> Software Item Spec): Parent item(s) this software item is contained in.

    • Fulfilled requirements (-> Requirement): The requirements fulfilled by this item.

    • Software item type: The type of this software item.

      • SOUP

      • MDD

      • Safety

    • Safety risk class: The software item risk class.

      • Class A: No injury or damage to health is possible.

      • Class B: Non-serious injury is possible.

      • Class C: Death or serious injury is possible.

    • Security risk class: The security risk class of this software item.

      • Low

      • Medium

      • High

    • Inputs (rich text): Inputs to this software item.

    • Outputs (rich text): Outputs of this software item.

    • Used items (-> Software Item Spec, Hardware Item Spec, Configuration Item): Items that this item uses or interfaces with.

    • Rationale (rich text): The rationale behind this item, i.e., why this particular method to fulfill the Software Item Specification and its design input was chosen.

    • Introduced risks (-> Risk): Risks introduced by this item.

    • Context: The context of this software item.

      • Clinical

      • Safety

      • Security

    5. Traceability to other configuration items

    The following relations can be defined from a Software Item Spec to other configuration items:

    • Software Item Spec fulfills Requirement

    • Software Item Spec has parent Software Item Spec

    • Software Item Spec introduces risk Risk

    • Software Item Spec uses Hardware Item Spec, Software Item Spec, Configuration Item

    The following relations can be defined from other configuration items to a Software Item Spec:

    • Software Item Spec has child Software Item Spec

    • Software Item Spec is implemented by Task

    • Software Item Spec is used by Software Item Spec, Hardware Item Spec

    • Software Item Spec is tested by Test Case

    • Software Item Spec is affected CAPA, Change Request, Anomaly

    • Software Item Spec results from Change Request, CAPA

    • Software Item Spec resolves Anomaly, Complaint

    • Software Item Spec risk-controls Risk

    synchronize data between Ketryx and Polarion to maintain consistent electronic records,

  • provide traceability across requirements and to test cases and test results, and

  • enforce workflows that incorporate electronic approvals and audit trails for robust compliance.

  • This guide offers step-by-step instructions for setting up and utilizing the integration, and answers to frequently asked questions.

    2. Setting up the integration

    To integrate Ketryx with Polarion, please ensure you are running at least version 2404 of Polarion and have the REST API enabled.

    • Note: the initial connection should be made from a service account (e.g. [email protected]), which should have Polarion administrator privileges. It should NOT be someone's personal account, even if that person is an administrator.

    • Rationale: Whoever sets up the initial connection to Ketryx via the API will be credited with making the changes that Ketryx makes in Polarion. The biggest problem this creates is the danger that once the original person who sets up Ketryx leaves the company, typically, that person's IT credentials are revoked. In turn, this would revoke Ketryx's access to Polarion and cause the Ketryx/Polarion integration to stop working. (No data would be lost, but this is very annoying and potentially difficult to troubleshoot.)

    1. Create a personal access token (PAT) for a user in Polarion.

      1. Log in as that user and navigate to My Account, or as a user with Manage Users permission navigate to Global->Administration->User Management->Users and select the user.

      2. Click Personal Access Token.

      3. Enter a name and an expiration date.

      4. Click Create Token and take note of the generated PAT.

    2. As Ketryx admin, log in to Ketryx.

    3. Navigate to Organization, then Connections and click Add Polarion connection.

    4. Provide the URL of your Polarion instance and the generated PAT to establish the connection.

    5. Confirm the integration in Ketryx by navigating to the Create project page where the Polarion section will allow you to link a Polarion project.

      If the user associated with the PAT has GET permissions in the Global context, a dropdown with a list of available projects will be shown. Otherwise, a text field will allow you to enter a project ID manually (go to Administration in a Polarion project to see the project ID).

    After setting up the connection, Ketryx projects can be created and linked with one Polarion project each.

    2.1. Traceability widget

    Ketryx provides a Polarion plugin that allows you to add the traceability widget to the Polarion work item form.

    To install the plugin:

    1. Download the plugin JAR file from the Ketryx admin portal under Organization -> Connections -> Polarion -> Download plugin.

    2. Copy the JAR file to the YOUR-POLARION-INSTALL-DIR/polarion/plugins directory on your Polarion server.

    3. Restart the Polarion server to load the plugin.

    Before configuring the traceability widget, you will need to create an API key:

    1. In Ketryx, navigate to Organization -> Connections -> Polarion.

    2. Click Create API key.

    3. When prompted, authenticate with multi-factor authentication.

    4. Click Create API key in the dialog.

    5. Copy the generated key.

    Then, add the traceability widget in Polarion:

    1. Navigate to Administration -> Global Administration -> Work Items -> Form Configuration (or Administration -> Work Items -> Form Configuration for project-specific configuration).

    2. In the "Form Layouts" section, click "Edit" for one of the work item types where you want to add the widget.

    3. Add the following XML to the form layout configuration:

      Replace YOUR-API-KEY with the API key generated earlier.

    4. Save the form layout configuration.

    5. Repeat steps 2-4 for each work item type where you want the traceability widget to appear.

    The traceability widget will now appear in work item forms, showing relations to other work items, test runs and items from other systems connected to Ketryx.

    3. Frequently Asked Questions

    3.1. Q: How does Ketryx synchronize Polarion data?

    By default, Ketryx synchronizes the following work items between the platforms:

    Polarion work item type IDs
    Ketryx item type

    acceptanceCriteria, epic, feature, hardwareRequirement, productRequirement, requirement, softwareRequirement, softwarerequirement, systemrequirement, useCase, userNeeds, userstory

    Requirement

    task

    Task

    codereviewTestCase, softwareTestCase, softwaretestcase, systemtestcase, testCase, testcase, unitTestCase, unittestcase

    Test Case

    anomaly, bug, defect, issue

    Anomaly

    changerequest

    Change Request

    risk

    Risk

    Aside from these pre-defined item types Ketryx allows you to override or add custom work item type mappings, see Polarion configuration.

    Work item links are synchronized as relations between items in Ketryx. By default, the following work item link types are created:

    Polarion work item link IDs
    Ketryx relation type

    relates_to, follow_up

    Is Related To

    parent, refines, contain

    Has Parent

    implements

    Implements

    verifies

    Tests

    Ketryx also synchronizes test runs as Test Execution items and creates relations to the corresponding Test Case items.

    3.2. Q: Can I customize how Ketryx maps Polarion fields and work item links?

    Yes. Ketryx provides advanced settings for Polarion that enable you to define how Polarion fields map to Ketryx items. Both built-in and custom fields can be mapped to Ketryx fields.

    3.3. Q: How do I handle changes in Polarion schema (e.g., custom fields)?

    If you add custom fields in Polarion, you can configure Ketryx to recognize them using the Polarion field mapping setting. Additional work item links can be configured using Polarion work item links mapping.

    3.4. Q: What happens to deleted items?

    When any item is deleted in Polarion it is marked as deleted in Ketryx but remains linked for traceability.

    3.5. Q: How do I handle releases?

    The Ketryx plugin for Polarion is required to manage releases from Polarion in Ketryx. Ketryx currently synchronizes versions only from Polarion collections. A future release will allow for version management without the plugin (Polarion 2410 and newer) and support Polarion plans (Polarion 2404 and newer).

    You can use collections to manage releases in Polarion and synchronize them with Ketryx. In order to do so, configure the Polarion collection mapping to synchronize all or some collections, or to exclude specific ones. If a version with the same version number already exists in Ketryx, the Polarion version will be associated with it. In order to have Polarion determine version properties, such as the name, set Integration precedence accordingly.

    Work items of a document included in a collection will be part of the corresponding version in Ketryx, at the revision of the document. If a work item appears at multiple revisions, the highest one will be included in the Ketryx version.

    To associate test runs with a particular version, create a custom field in Polarion. Configure the field in the Version fields setting, using the type name "Test Run" and the ID of the custom field. Edit a test run to enter a version number in the custom field (e.g. enter "3.1.0" and Ketryx will synchronize the test run as a Test Execution for version "3.1.0").

    4. Polarion Configuration

    4.1. Overview

    The Polarion settings in Ketryx enable users to configure how Polarion work items and test runs map to Ketryx items. This mapping ensures accurate data synchronization between the two systems, maintaining traceability and compliance. These configurations are crucial for integrating work items and test runs into Ketryx workflows seamlessly.

    The configuration includes the following mappings:

    • Polarion work item type to Ketryx item type

    • Polarion status to Ketryx item state

    • Polarion work item link type to Ketryx relation type

    • Polarion test result to Ketryx test result

    • Polarion field to Ketryx item field

    You can find IDs of work item types, work item links, statuses, fields and test results in the Administration section of a Polarion project. The relevant subsections are Work Items->Types, Work Items->Custom Fields, Work Items->Enumerations, Testing->Test Run Custom Fields and Testing->Test Results.

    General advanced settings can be relevant, too, such as Approval workflow to enable approvals. See Advanced settings for a complete list of available settings.

    4.2. Polarion work item type mapping

    Mapping between Polarion work item types and Ketryx items. Note that matching is case-sensitive.

    Example

    Map additional Polarion work item types:

    Example

    Overwrite a default mapping using type ID or type name:

    Example

    Do not sync Polarion test runs:

    Refer to Item types and Fields for a complete list of built-in types and fields available in Ketryx.

    4.3. Polarion status mapping

    Mapping from Polarion status IDs to Ketryx states. This maps statuses for both, work items and test runs.

    Example

    Map a Polarion status with ID "draft" to the state "OPEN":

    Refer to Status mapping for a complete list of Ketryx statuses.

    4.4. Polarion work item links mapping

    Mapping from Polarion work item link IDs to Ketryx relations. This mapping also works with custom relations.

    Example

    Map Polarion work item link with ID "verifies" to system relation "TESTS":

    Custom relations example

    Given a custom relation with ID SW_TO_RQ:

    Refer to Relations for a complete list of Ketryx relation types.

    4.5. Polarion test result mapping

    Mapping from Polarion test result IDs to Ketryx results.

    Example

    Map test result IDs:

    4.6. Polarion field mapping

    Mapping from Polarion-specific fields to Ketryx fields or relations.

    A field that is mapped to a relation can reference items by their source key. The field in Polarion can be of type "String" (single-line plain text), "Text" (multi-line plain text) or "Enum". For fields of type "String" or "Text" multiple keys can be specified by separating them with whitespace (spaces, line breaks, etc.), commas or semicolons.

    Example

    Map a Polarion field with ID "customField" to the field "Custom Field":

    Example

    Map a Polarion field with ID "affectsJiraItems" to relations of type "AFFECTS" targeting items from Jira:

    Refer to Fields for a complete list of built-in fields available in Ketryx.

    4.7. Polarion collection mapping

    Mapping between Polarion collections and Ketryx versions.

    The first matching entry will be used. Use "collectionName" to require an exact match with the collection name. If "versionName" is specified, the work items associated with that collection will be considered part of a version with that name. Otherwise, the version name is inferred from the collection name via the Version number pattern (e.g. if a collection is called "System Spec 3.1.0", Ketryx will synchronize it as version "3.1.0"). More than one collection can be synchronized as the same version by specifying the same "versionName" in multiple entries.

    An optional "includedDocumentsNamePattern" can be used to limit from which documents work items will be fetched. The value is a regular expression that is matched against document names (the document name as visible in the URL to the document, not its title).

    If a collection matches no entry, or an entry {"excluded": true}, it is ignored. By default, if this setting is not specified, or an empty array is supplied, no collection is synchronized.

    Example

    Synchronize all collections as versions:

    Example

    Synchronize some collections, ignore the rest:

    Example

    Synchronize some collections as specific versions, ignore the rest:

    Example

    Ignore specific collections, synchronize the rest:

    Example

    Synchronize one collection, limiting included documents with a pattern:


    For more detailed instructions and advanced configuration options, please refer to the Ketryx Advanced Settings section of the documentation.

    (i.e.,
    Test Case Specification
    ) configuration item lifecycle.

    1.2. Scope

    This Work Instruction covers the complete Test Case lifecycle, from creation to obsolescence.

    1.3. Records and evidence

    Records for each Test Case will be held based on the records and retention policy. Test Cases are used to generate the following artifacts:

    • Change request verification report

    • Risk control matrix (risk control measures only)

    • Risk management file

    • Risk matrix

    • Test plan (with details)

    • Testing report

    • Traceability matrix

    1.4. Responsibilities

    As listed in the procedure description, each task in the Test Case item's lifecycle will be completed by a member that is part of one of the following approval steps. When any of these members can perform the task, Anyone is listed.

    • Item Assignee: The person authoring and responsible for the Test Case. This organization member is responsible for managing/completing the Test Case lifecycle activities. This Item Assignee can change from time to time.

    • R&D Leads: The person accountable for the Test Case. The R&D Lead verifies that the Test Case provides sufficient test coverage of the tested Requirement(s) and/or Software Item Specification(s). The R&D Lead is consulted to approve the Test Case.

    • Quality Managers: The person responsible for verifying that the Test Case is correctly documented. The Quality Manager is consulted to approve the Test Case.

    2. Procedure description

    2.1. Step 1: Log into Jira

    Anyone

    Log into your Jira organization, e.g., your-company.atlassian.net.

    2.2. Step 2: Create

    Anyone

    1. Press the Create button in the top-level navigation to open the form to create a new Jira work item.

    2. Ensure the desired space (formerly project) is selected, and select the Work type “Test Case”. If that does not appear, check with your system administrator to ensure your space is connected to Ketryx.

    3. Define an appropriate title in the Summary field.

    4. Define an appropriate Assignee (the Item Assignee).

    5. Provide additional preliminary information in the extra fields. (All fields can still be edited later.)

    6. Press the Create button at the end of the form to finalize the creation of the new Jira work item.

    2.3. Step 3: Navigate to the work item page

    Anyone

    Using the popover shown by Jira or by clicking the "All Work" tab, navigate to the Jira page of the Test Case, e.g., your-company.atlassian.net/browse/TC-1.

    View work item popover

    2.4. Step 4: Change status to In Progress

    Anyone

    Change the work item status to In Progress using the work item status selector.

    Start progress on work item

    2.5. Step 5: Draft/Author Test Case

    Item Assignee

    As needed, fill in the information in the fields of the Test Case.

    Ensure that at least the following fields are filled out:

    • Summary (title)

    • Assignee

    • Description

    • Steps

    • Expected behavior

    • Introduced in version (unless the Test Case was introduced at the start of the project)

    • Tested items. These constitute the design input for this Test Case.

    • Test type. Is this a Verification or a Validation case? If it is the former, what kind of Verification?

    The Test Case should be SMART (Specific, Measurable, Achievable, Relevant, and Testable). The Test Case should also:

    • be traceable to all other needed items, with clearly defined interfaces,

    • not conflict with another Test Case,

    • conform to any provided design input.

    Test case with everything filled out

    2.6. Step 6: Change status to Resolved (Ready for Review)

    Anyone

    Once the Test Case is completed and ready for design verification, change its status to Resolved.

    2.7. Step 7: Review as Owner

    Item Assignee

    Review the Test Case to verify:

    • The Test Case is traceable to all other needed items, and all interfaces are defined.

    • The Test Case is Specific, Measurable, Achievable, Relevant, and Testable (SMART).

    • The design output (the Test Case and its siblings) conforms to the design input (the Test Case's Tested items).

    • Read through the Test Case and ensure the following fields are correctly filled out:

      • Steps: Are the steps clear, and are they comprehensive enough to arrive at the expected behavior?

      • Expected behavior: Is the expected behavior clear and does it sufficiently cover all the desired behaviors of the tested items?

      • Description: Is the description clear?

    If the verification fails, reopen the ticket and, if needed, provide a comment on the reason it failed, then go to Step 5. If verification passes, approve the Test Case as seen in the screenshot below and continue to Step 10.

    Set work item to ready for review

    2.8. Step 8: Review as R&D Lead

    R&D Lead

    Review the Test Case to verify:

    • The Test Case is traceable to all other needed items, and all interfaces are defined.

    • The Test Case is Specific, Measurable, Achievable, Relevant, and Testable (SMART).

    • The design output (the Test Case and its siblings) conforms to the design input (the Test Case's Tested items).

    • Read through the Test Case and ensure the following fields are correctly filled out:

      • Steps: Are the steps clear, and are they comprehensive enough to arrive at the expected behavior?

      • Expected behavior: Is the expected behavior clear, and does it sufficiently cover all the desired behaviors of the tested items?

      • Description: Is the description clear?

    If the verification fails, reopen the ticket and, if needed, provide a comment on the reason it failed, then go to Step 5. If verification passes, approve the Test Case as seen in the screenshot below and continue to Step 10.

    Approve test case as R&D Lead

    2.9. Step 9: Review as Quality Manager

    Quality Manager

    Review the Test Case to verify:

    • The Test Case is traceable to all other needed items, and all interfaces are defined.

    • The Test Case is Specific, Measurable, Achievable, Relevant, and Testable (SMART).

    • The design output (the Test Case and its siblings) conforms to the design input (the Test Case's Tested items).

    • Read through the Test Case and ensure the following fields are correctly filled out:

      • Steps: Are the steps clear, and are they comprehensive enough to arrive at the expected behavior?

      • Expected behavior: Is the expected behavior clear, and does it sufficiently cover all the desired behaviors of the tested items?

      • Description: Is the description clear?

    If the verification fails, reopen the ticket and, if needed, provide a comment on the reason it failed, then go to Step 5. If verification passes, approve the Test Case as seen in the screenshot below and continue to Step 10.

    Approve test case as Quality Manager

    2.10. Step 10: Review as Quality Control

    Quality Control

    Review the Test Case to verify:

    • The Test Case is traceable to all other needed items, and all interfaces are defined.

    • The Test Case is Specific, Measurable, Achievable, Relevant, and Testable (SMART).

    • The design output (the Test Case and its siblings) conforms to the design input (the Test Case's Tested items).

    • Read through the Test Case and ensure the following fields are correctly filled out:

      • Steps: Are the steps clear, and are they comprehensive enough to arrive at the expected behavior?

      • Expected behavior: Is the expected behavior clear, and does it sufficiently cover all the desired behaviors of the tested items?

      • Description: Is the description clear?

    If the verification fails, reopen the ticket and, if needed, provide a comment on the reason it failed, then go to Step 5. If verification passes, approve the Test Case as seen in the screenshot below and continue to Step 10.

    Approve test case as Quality Control

    2.11. Step 11: Transition to a controlled state

    Ketryx

    Only Ketryx can move a Test Case to a controlled and effective state by transitioning its status to Closed. Ketryx moves the Test Case to a Closed state after all approval rules have been passed, i.e., all required steps have approved the Test Case.

    Ketryx automatically adds a comment to the Jira work item with a link to the effective controlled record in Ketryx.

    Test case moved into a controlled state

    2.12. Step 12: Change

    Item Assignee

    Following a Change Request (i.e., the work item needs to be modified), reopen the Test Case to create a new record, and go back to Step 4.

    Reopen test case following a change request

    2.13. Step 13: Mark as obsolete

    Item Assignee

    To mark a Test Case as obsolete (i.e., as not effective anymore, starting with a given version),

    • reopen it for change (Step 11),

    • set the version it will be obsolete in (i.e., the first version that it will not be effective anymore) in the Obsolete in version field,

    • resolve the work item (Step 6),

    • approve the item (Steps 7-9).

    3. Procedure flow diagram

    4. Item schema

    • Description (rich text): The Test Case description should describe the purpose of the test. It should be clear what the test is trying to achieve.

    • Introduced in version (version reference): The first version this item is effective in. If empty, the item is considered effective from the start of the project.

    • Obsolete in version (version reference): The version the item is becoming obsolete in, i.e., the first version that this item is not effective anymore.

    • Steps (rich text): The steps to follow to complete the test. The more detailed the instructions, the better. If any pre-requirements are necessary for the execution of a test, these should be explicitly mentioned.

    • Expected behavior (rich text): What the user should expect to happen on the screen once the test has been carried out. Being as clear as possible will eliminate any misunderstandings that should arise when the tester compares his observations to the described expectations.

    • Tested items (-> Requirement, Software Item Spec, Hardware Item Spec, Anomaly, CAPA, Change Request): The items this Test Case verifies or validates. It may be multiple items.

    • Test type: The type of the test. May either be Verification, Verification (regression), Verification (unit), Verification (integration), Verification (system) or Validation.

      • Software Validation: The process of evaluating software during or at the end of the development process to determine whether it satisfies specified requirements. IEEE-STD-610

      • Software Verification: The process of evaluating software to determine whether the products of a given development phase satisfy the conditions imposed at the start of that phase. IEEE-STD-610

    5. Traceability to other configuration items

    The following relations can be defined from a Test Case to other configuration items:

    • Test Case tests CAPA, Change Request, Hardware Item Spec, Requirement, Software Item Spec

    The following relations can be defined from other configuration items to a Test Case:

    • Test Case is executed by Test Execution

    • Test Case risk-controls Risk

    MAN-06 Test Management

    Manual for managing manual and automated tests with Ketryx Platform

    1. Introduction

    This manual describes the setup and processes for managing both manual and automated tests with Ketryx Platform.

    Ketryx supports managing tests via its standard items Test Case and Test Execution, via third-party test management solutions such as Xray for Jira, and integrates with automated test runs through GitHub Actions or any tool that can call the Ketryx API.

    2. Manual Tests

    2.1. Creating and Executing Tests

    Tests are defined using the Test Case item type in Ketryx, where the Steps and Expected behavior for each test case are declared. Each Test Case is associated with one or more Tested items. Like Requirements and Software Item Specs, Test Cases are "long-lived" items that are introduced in a certain version and remain in effect unless/until they are marked as obsolete in a certain version. See for details.

    Before a product version can be released in Ketryx, all Requirements and other configuration items need to trace to tests (per the configured traceability mode) and all those tests need to be executed, unless they are excluded from the .

    Manual test executions are represented by the Test Execution item type in Ketryx, which contains the Steps and Expected behavior from a Test Case, along with the actual Observed behavior and a Test result. Test Executions are "point-wise" items associated with one particular version, as defined by the Introduced in version field.

    Test Executions can be created in the following ways:

    1. On the Ketryx Test management page by selecting Test Cases, selecting a particular version, and pressing Create executions for selection.

    2. In Jira by using the New Test Execution in the Traceability widget of a particular Test Case, or by manually creating a Test Execution work item from scratch. In these cases, Introduced in version needs to be set manually on the Jira work item.

    3. If using Xray for Test management, in Jira by creating an Xray Test Execution work item and adding Xray Tests to it. If you are using the Xray Test Execution work item type, you should not use method 1 or 2 above to create Test Executions.

    See for details.

    If Test Executions are created for Test Cases that have automated tests associated with them, they will inherit the Observed behavior from the logs of those automated tests (see the section on below).

    2.2. Defining a Release Test Plan

    By default, Ketryx assumes that all available Test Cases in a project are executed in each version where they are effective (based on their Introduced in version and Obsolete in version fields). Sometimes only a subset of those tests are only actually relevant for a release, though, depending on what parts of the system changed and need to be (re-) tested. You can define a more granular release test plan on the Test management page in Ketryx, by selecting a version, a subset of the available tests, and choosing Manage release test plan > Exclude selected tests. Note that, by default, all tests in a project are included. Note: If using Xray for Test management, you may want to manage Test Plan membership for a version using the Xray Test Plan work item type. If that is the case, please see the Xray section below.

    After excluding tests from the release test plan, you can include them again by selecting them and choosing Manage release test plan > Include selected tests.

    Tests from other are excluded by default. To opt into executing them, you can explicitly include them in the release test plan. Note that the corresponding Test Execution still needs to happen in the current (referencing) project, as opposed to the referenced project.

    Ketryx does not require excluded Test Cases to be executed, while still considering their tested items to be properly traced to tests.

    A non-default release test plan needs to be approved by the relevant approval steps defined by the Test Plan approval rules. The approval state of a test plan by each approval step can be tracked in the sidebar on the Test management page. To approve a test plan, select the relevant version on the Test management page and click Approve in the sidebar. If there are any changes to the test plan (i.e., more Test Cases are excluded), it needs to be re-approved before the version can be released.

    The test plan of a released version cannot be changed anymore.

    Requirements and specifications only associated with excluded tests are indicated as excluded in the Requirements traceability matrix page and document.

    2.3 Integration with test management tools

    Please note, that when using the default Ketryx scheme, you need to make a copy of that schema in Jira and add Xray items to it. Then apply the new scheme to the Jira space (formerly project) in order to make Xray items available. Establishing a Xray connection does not automatically change work type schemes.

    Ketryx integrates with test management tools such as Xray and TestRail, enabling synchronization of test plans, test cases, executions, and results while maintaining full traceability within Ketryx.

    For detailed setup instructions, data mapping specifications, and synchronization behavior, please refer to:

    3. Automated Tests

    3.1. Creating a Ketryx API key

    To interact with Ketryx programmatically, such as from GitHub Actions or via the HTTP-based API, you need an API key. API keys can be managed under Organization > API keys. This is only allowed for organization owners and needs to be confirmed with an electronic signature.

    An API key's name only serves as a "nickname" to recognize it later. It is not needed in the actual authentication mechanism.

    An API key can have the following permissions:

    1. Report test results: allows reporting of automated test results to Ketryx

    2. Retrieve release status: allows retrieving the release status of a version from Ketryx and other checks

    After creating an API key, a secret token of the form KXTK_... is displayed. Copy this token and store it in a secure place. For security reasons, it cannot be retrieved again later. This token is needed to authenticate programmatic requests to Ketryx.

    API keys remain active until they are revoked.

    See also .

    3.2. Setting up GitHub Actions

    Workflows in can report builds and test results to Ketryx using the .

    The API key's secret token should be stored as an in GitHub, and exposed to the Ketryx GitHub Action as in the following:

    In addition, the Ketryx project ID (e.g., KXPRJ49GQYFQ5RR9KRTPWTRTC39YZ9W) must be passed to the action's project parameter.

    By default, the reported build and tests are associated with a project version in Ketryx based on the build commit SHA. Any version whose release ref pattern (as configured in the project settings) resolves to the given commit is considered relevant for the build. To override this default, you can pass an explicit value (either the full version name or the Ketryx version ID) to the version parameter.

    If you have several "parallel" builds that report test results, you can set the build-name parameter to disambiguate them. For each unique build name associated with a version, the most recent build is considered the effective build, overriding any previous builds (and associated automated tests) with the same name. For instance, this can be useful if you have a CI build that runs unit tests, while other CI builds run end-to-end tests, and they should not override each other.

    See the for details.

    3.3. Using the HTTP-based API

    To interact with Ketryx from other CI/CD platforms or local systems, you can use its HTTP-based API. API requests are authorized using the HTTP Authorization header

    with the secret token from a Ketryx API key.

    Note the following when using the API at /api/v1/builds:

    1. The Ketryx project ID must be passed via the project parameter.

    2. Either the version or the commitSha parameter must be set. If a commit SHA is given, any version whose release ref pattern (as configured in the project settings) resolves to the given commit is considered relevant for the build.

    3. Build artifacts (including test result files) should be uploaded via the API at

    See the for details.

    3.4. Associating Automated Tests with Configuration Items

    Ketryx detects automated tests in various test file formats and associates them with tested configuration items based on annotations that mention the item's ID. That ID can be the:

    • Item's Jira work item key (e.g., SAMD-45)

    • Full Ketryx item ID (e.g., KXITM5QJ97Z4X3X91AVRSZYZ7JHHPDK)

    • Git-based item's itemId that is specified in the source code file (e.g. Markdown). The details of how tests are annotated depend on the test file format, as described below.

    The tested items can be:

    • Test Cases (which is typically the case for end-to-end tests that are predefined in Jira and approved).

    • Requirements (which is typically the case for unit, integration or end-to-end tests that are not managed in Jira).

    • Software Item Specifications (which is typically the case for unit, integration or end-to-end tests that are not managed in Jira).

    • Risks (which is typically the case for unit, integration or end-to-end tests that are not managed in Jira).

    Ketryx does not impose a limitation on which or how many configuration items are referenced as tested items in an automated test case. If you want to enforce that all automated tests are associated with a predefined Test Case (e.g., so that you can approve the test steps before they are executed), you can activate the option Require automated tests to be associated with test cases in the project settings.

    3.4.1. Cucumber

    .

    Use an annotation of the form @tests:ID or @implements:ID on a Scenario in syntax.

    Use @implements tag to only reference an existing Jira Test Case item, in any other case please use the @tests tag.

    Use the json reporter ("formatter") to generate a JSON report to send to Ketryx.

    3.4.2. JavaScript

    In , , and similar JavaScript test frameworks, mention the tested item ID in the test name itself:

    Generate a JUnit XML report to send to Ketryx.

    3.4.3. Python

    In , use the record_property callback to store the tested item ID as additional metadata on a test case:

    Use the junitxml output format to generate a JUnit XML report to send to Ketryx.

    3.4.4. Java, Kotlin and Swift

    Use the @tests:ID annotations in comments above test methods. .

    Generate a JUnit XML report to send to Ketryx.

    3.4.5. JUnit XML

    Most test frameworks in common programming languages (such as JavaScript and Python described above) support generating a JUnit XML report. Ketryx reads item IDs from <property> elements, attributes (tested-item-id or assertions), or annotations in test names. All the following examples would be recognized:

    A name annotation at the level of the <testsuite> is also recognized, and associates all included test cases with the given element (unless they have a more specific association).

    3.5. Reporting of Automated Tests

    The Test management page and testing report documents show both manual Test Executions and automated test executions.

    The detail page for each automated test shows what build it is associated with, the tested items (typically Test Cases or Software Item Specifications), the log output of the test, artifacts (e.g., images) uploaded with the test, and other relevant details.

    Automated tests can also be reached from the detail page of each project build.

    4. Automated Tests with Manual Review

    If a Test Case has both automated tests associated with it and manual test executions, the manual test executions take precedence. This allows you to manually "override" an automated test result.

    You can select Test Cases with automated test executions on the Test management page and choose Create executions for selection to create corresponding Test Execution items. Those Test Executions will inherit the Steps and Expected behavior from the Test Case, and the logs (as Observed behavior) and Test result from the automated test execution. Test Executions still need to be approved and put into a controlled state as usual; so this is a way to manually review and sign off on individual automated tests.

    To require a manual review of all effective automated tests, activate the option Require a manual test execution for each effective automated test execution in the project settings under Test management. This will prevent automated test results from being considered directly for full traceability; instead, there has to be a manual Test Execution created through Create executions for selection for the effective automated test of each Test Case.

    MAN-05 Milestones

    Manual for milestone management as part of the release process using Ketryx Lifecycle Management

    1. Introduction

    1.1. Purpose

    The purpose of this manual is to define the activities that will be performed as part of the development of a product (the Product) managed with Ketryx Lifecycle Management using milestones.

    Milestones are significant points in the software development process that mark the completion of specific deliverables, activities, or achievements. They provide essential checkpoints for assessing progress, managing risks, and ensuring compliance with quality standards. Milestones typically involve key decision points and act as important reference points throughout the software development lifecycle.

    Milestones act as measurable indicators of progress throughout the software development process. They enable to track and evaluate the completion of critical tasks, ensuring that the project stays on schedule. They also serve as opportunities to assess and manage risks associated with the software development process. At each milestone, risks can be evaluated, and appropriate mitigation strategies can be devised to ensure the overall success of the project.

    Milestones provide natural breakpoints to verify compliance with relevant regulations, standards, and guidelines. This helps ensure that the software development process adheres to the required quality, safety, and performance criteria.

    Examples

    One example could be a milestone for the Requirement configuration item type. It marks the completion of the requirements gathering and analysis phase. It confirms that the software requirements have been adequately captured, documented, and validated.

    Another example could be combining multiple milestones in sequence, e.g. for validation testing. One milestone requiring all Test Cases to be in a controlled state, and another requiring all Test Executions to be in a controlled state. These indicate the completion of testing activities, including unit testing, integration testing, system testing, and validation testing. It verifies that the software functions as intended and meets the defined quality and safety criteria.

    Yet another example could be a project milestone, e.g. "Heart rate probing system 2.0". The approval of this milestone is contingent upon the successful approval and release of the 2.0 version of the "Heart Rate Probing System". This strict dependency on the approval and release of the 2.0 version ensures that all necessary enhancements, modifications, and quality assurance measures have been implemented to meet the project's standards and objectives.

    1.2. Scope

    This document defines tasks, activities, procedures, resources, responsibilities, and deliverables related to software development using milestones of the Product.

    1.3. Field of application

    This plan was developed to support the creation, release, and maintenance of the Product.

    1.4. Compliance

    This plan was developed in compliance with ISO 13485, IEC 62304, ISO 14971, and 21 CFR Part 820.

    1.5. Tools

    Tools used to develop and release a product with Ketryx Lifecycle Management are provided in . The release process is described in detail in .

    2. Terms and definitions

    For the purposes of this document, the terms and definitions given in U.S. QSR (21 CFR Part 820), ISO 13485, and IEC 62304:2006-AMD1 apply. Where contradictory, IEC 62304 and ISO 13485 prevail.

    3. Process activities

    To develop a new version of the Product using milestones, the following activities are performed.

    3.1. Activity 1: Defining milestones

    To create a new version or select an existing unreleased version where milestones need to be defined, proceed as follows:

    1. On the Versions and Releases page, locate the option to create a new version.

    2. Click on the Create Version button to initiate the creation process.

    3. Alternatively, if there are existing unreleased versions available, click on the desired version to select it.

    To configure milestones for a project, follow these instructions:

    1. Ensure that you have the necessary permissions to manage the project. Only authorized users will have access to the milestone management functionality.

    2. In the sidebar menu, find and select the Milestones option.

    3. By navigating to the Milestones section, you will be presented with the milestone configuration screen.

    Please note that access to the Milestones option in the sidebar menu is granted to users with the appropriate project management privileges. If you do not see the Milestones option, kindly contact your administrator to obtain the necessary permissions.

    There are two types of milestones: configuration item and project milestones. Regardless of type, they have blocking mode option to prevent approval of items in subsequent milestones until the blocking milestone has been approved. Milestones lacking a blocking mode serve the purpose of tracking and organizing efforts. However, it is adviced to adhere to the sequential approval of milestones, irrespective of whether the preceding milestone is designated as a blocking milestone (this will not affect the approval of non-blocking milestones).

    Configuration item (Requirement, Software Item Specification, etc) milestones require all configuration items of a certain type to reach a controlled state before work on the next milestone can start. For Requirements and Software Item Specification configuration items sub-types can be selected to further narrow down the specific types of items that need to be approved before being able to approve the milestone. By default, when not selecting a sub-type, all sub-types are required to be approved.

    Project milestones require a specific project's version to reach a released-state before work on the next milestone can start.

    For both types of milestones, the required document types can be configured that need to be generated and approved before a milestone can be approved. By default, no documents need to be generated or put into a controlled state.

    A milestone document is a great way to gather evidence (e.g. requirements) at the point of a milestone approval.

    Note that only projects that have a version can be selected as a project milestone. If a project does not have a version, it will not be available for selection as a project milestone. Versions can be created on the Releases page.

    3.1.1. Example: Defining a milestone for the Requirement configuration item type

    1. Click on the Add Configuration Item milestone button to initiate the milestone creation process

    2. Enter a meaningful name for the milestone, such as "System Requirements Specification Generation"

    3. Select the Requirement item type from the available item type options (selected by default)

    4. Within the milestone configuration, locate the sub-type options for Requirement items

    The result will look like this:

    If there are additional milestones to configure for the repeat the steps above as necessary. Customize the milestone names, configuration options, and document generation requirements based on your specific project needs.

    3.2. Activity 2: Tracking milestone progress

    Once milestones have been successfully configured, it is essential to monitor their progress to ensure product milestones are met on time. To facilitate this, Ketryx provides a dedicated detail page for each milestone, where progress can be tracked effectively. On the milestone detail page, you will find comprehensive information regarding the milestone's objectives, deliverables, and associated tasks.

    As milestones are created and configured, they are automatically added to the release checklist, providing a consolidated view of the project's progress towards release readiness.

    Milestones can have one of the following statuses:

    1. Open. A milestone with this status will be ready for approval as soon as all approval conditions have been met.

    2. Ready. A milestone with this status implies that all milestone conditions have been met. This milestone can be approved.

    3. Approved. A milestone with this status implies that all the conditions for this milestone have been met and the milestone has been approved.

    To see the progress of an individual milestone, follow these steps:

    1. On the Releases and versions page locate the version for which milestones have been configured

    2. Versions that have milestones configured will have an additional milestone progress indicator displayed on top of the release dashboard page, showing all milestones and their status

    3. Navigate to the milestone detail page by clicking on a milestone

    The milestone detail page serves as a comprehensive source of information regarding each milestone within the development cycle. It provides valuable insights into the milestone's configuration, including the associated item type and any configured sub-types. Furthermore, it highlights the configuration items or project that must be placed in a controlled state prior to approving the milestone.

    Milestones are accompanied by their own dedicated checklist, which outlines the necessary steps and tasks that must be completed before the milestone can be approved. This checklist operates in a similar manner to the release checklist, ensuring that all required actions have been executed and verified.

    3.3. Activity 3: Milestone meeting notes

    Ketryx provides the capability to create, archive, and manage meeting notes for milestones on a milestone's detail page. This allows for the documentation of discussions, decisions, and any relevant information related to milestone progress and approvals. The following guidelines explain the details and user flow for handling meeting notes effectively.

    3.3.1. Creating meeting notes

    As long as the milestone is not approved, users belonging to any of the milestone approval steps possess the authority to add or archive milestone review meeting notes. These meeting notes should include essential details such as participant names, meeting date and time, and the content of the meeting discussion. It is important to note that meeting notes are optional for milestone approval. Users have the ability to create one or more meeting notes associated with the milestone. Approving a meeting note requires an electronic signature.

    3.3.2. Archiving meeting notes

    Users have the option to archive existing meeting notes, given that the milestone has not been approved. Archiving meeting notes can be useful, especially if a milestone has been approved but requires re-approval. Prior to initiating the re-approval process, users may choose to archive meeting notes associated with the milestone.

    3.3.3. Restrictions on archiving meeting notes

    If a milestone has been frozen as part of a version release, neither archiving nor adding new meeting notes is permitted. This limitation ensures the integrity of milestone-related information within the frozen release.

    Below is an example of an approved meeting note with the option to add more.

    3.4. Activity 4: Approving a milestone

    To approve a milestone, the following rules apply:

    The configuration item milestone type requires all items of a specific configuration item type to be controlled before it can be considered approvable. Specifically, the Requirement and Software Item Specification types allow for additional filters to be applied based on their respective sub-types.

    The project milestone type is dependent on a specific version of a project, belonging to the same organization, being approved and released. Before considering the milestone as approvable, it is essential to ensure that the designated project version has undergone the necessary approval and release processes.

    Regardless of the milestone type, the following rule applies to both configuration item and project milestones: A milestone may be configured to generate unique documents, similar to release documents. If such configuration is implemented, the milestone can only be approved when all milestone-specific documents have been generated and subsequently approved.

    Once all conditions are met, a milestone can be approved on its detail page by all users that are part of approval steps that are required according to the project's milestone approval rules.

    3.5. Activity 5: Revoking / Re-approving a milestone

    Once a milestone has obtained approval, it is important to understand that this approval status can be revoked under specific circumstances. The milestone's approval status may be invalidated if any of the following conditions occur:

    1. Loss of controlled state: If any item associated with the milestone has been changed, even if put back into the controlled state later on, the approval status of the milestone will be marked as outdated. This emphasizes the significance of maintaining proper control over all relevant items to ensure the integrity of the milestone's approved status.

    2. Loss of approved preceding milestone: If a preceding milestone, which contributed to the approval of the current milestone, loses its approved state, the subsequent milestone will be marked as re-approvable. This interconnectedness underscores the importance of maintaining the approved status of preceding milestones to ensure the validity of subsequent approvals.

    3. Manual invalidation of approvals: In addition to the conditions mentioned above, milestone approvals can also be manually invalidated by authorized personnel. In certain situations where significant changes or unforeseen circumstances arise, it may be necessary to manually invalidate the approval status of a milestone. This discretionary action ensures that milestones are re-evaluated and reapproved in light of the new information or circumstances, maintaining the accuracy and appropriateness of the project's milestone approvals. Manual invalidation of approvals provides an additional layer of control and flexibility in managing milestone statuses, allowing for adjustments and reassessments as needed throughout the project lifecycle.

    In either of these cases, the milestone that has had its approval status revoked will require re-approval. This process ensures that any changes or inconsistencies in the controlled state of items or the approval status of preceding milestones are promptly addressed and properly approved once again.

    3.6 Activity 6: Managing milestone configurations

    By utilizing the milestone configuration page effectively, users can add, remove, and rearrange milestones in accordance with their significance and order. Additionally, the option to load previous milestone configurations from other projects within the same organization enhances efficiency and consistency in milestone management.

    3.6.1. Adding milestones

    To add milestones to the project, follow these steps:

    1. On the milestone configuration page, click on the Add Project milestone or Add Configuration Item milestone button

    2. Provide the necessary details and specifications for the new milestone, such as the milestone name, description, and associated criteria

    3. Add an optional change note and save the changes to add the milestone to the configuration

    3.6.2. Removing milestones

    To remove a milestone from the configuration, follow these steps:

    1. On the milestone configuration page, locate the specific milestone you wish to remove

    2. Click on the trash-can icon for removing milestones

    3. Confirm the removal action when prompted to ensure the milestone is removed from the configuration

    3.6.3. Changing milestone order

    To change the position or order of milestones, follow these steps:

    1. On the milestone configuration page, locate the specific milestones you wish to reposition

    2. Click on the arrow icons next to each milestone to move the milestones up or down in the desired order

    3. Save the changes to finalize the new milestone order

    By using the arrow icons, users can easily modify the order of milestones according to their desired sequence. This enables precise control over the arrangement of milestones to accurately reflect the project's progression. Remember to save the changes to ensure the updated milestone order is successfully applied.

    3.6.4. Loading milestone configurations

    To load milestone configurations from other projects within the same organization, follow these steps:

    1. On the milestone configuration page, locate the option for loading previous configurations in the right side bar

    2. Click on Load milestones configuration

    3. Choose the desired project from which you wish to import the milestone configurations

    4. Confirm the action to load the selected milestone configurations into the current version

    3.6.5. Browsing the milestone configuration history

    On the milestone configuration page, a convenient section is provided in the right sidebar where all historic changes made to the milestone configurations are listed. This section allows the timeline of modifications on the milestone settings to be tracked and reviewed. Each line in the history list includes an optional change note, the exact date and time when a change was made.

    To easily identify the currently active version of the milestone configurations, the system prominently displays "(active)" next to the relevant entry. This indicator ensures that the most up-to-date milestone configuration can be distinguished from previous versions.

    If there are additional notes associated with a specific milestone configuration change, an information icon is displayed alongside the corresponding line in the history list.

    Clicking on a row provides access to the associated milestone configuration change, offering further insights and context regarding the modification.

    By utilizing the historic changes section, valuable visibility into the evolution of milestone configurations over time is provided. Transparency and traceability are enhanced, enabling the accurate recording of milestone adjustments for future reference and audit purposes.

    Example of a milestone configuration change history:

    Risk Configuration

    Ketryx allows full customization of risk matrices, risk field values, and risk evaluation logic to align with your organization's risk management methodology.

    This page acts as a reference for all the various configurations possible beyond the default risk setup described in MAN-08 Risk Management.

    How to configure

    Risk configuration can be set at two levels:

    Organization level - Affects all projects in the organization (requires organization owner permissions) Project level - Scopes configuration to a specific project and overrides organization settings (requires project management permissions)

    Navigate to Advanced Settings and configure the individual risk configuration fields. Each field accepts valid JSON structures. If a field is not configured, system defaults are used.

    Configuring probability and severity values

    Before defining risk matrices, you must first configure the available values for probability, severity, and risk evaluation fields. These values serve as the building blocks that will be referenced in your matrix configurations.

    Important: All values used in your risk matrices must be defined in these configuration fields first or you will encounter unexpected behavior when working on your Risks.

    Warning: If these fields are mapped to Jira custom fields via configuration, changes will affect the global Jira field configuration.

    Structure

    Each value can include optional color coding for visual distinction:

    Probability values

    Configure the following fields to define your probability scales:

    • Initial Occurrence Probability - P1 values (typically, the likelihood of the hazardous situation occurring)

    • Initial Harm Probability - P2 values (typically, the likelihood of harm given the hazardous situation)

    • Initial Total Probability - P0 values (combined probability result)

    • Residual Occurrence Probability - Post-mitigation P1 values

    Example for a 5-level probability scale:

    Severity values

    Configure severity scales for both initial and residual risk assessment:

    • Initial Severity - Pre-mitigation severity scale

    • Residual Severity - Post-mitigation severity scale

    Example for a 5-level severity scale:

    Risk evaluation values

    Risk evaluation values include an acceptability indicator that determines whether risks require mitigation:

    • Initial Risk Acceptability Evaluation - Pre-mitigation risk levels

    • Residual Risk Acceptability Evaluation - Post-mitigation risk levels

    Example for a 5-level evaluation scale:

    Configuring risk matrices

    Once probability and severity values are defined, configure the four evaluation matrices that determine risk calculations. These matrices map the relationships between your configured values.

    Important: All possible combinations must be defined. Missing combinations will cause unexpected behavior.

    Available matrices

    • Initial Total Probability matrix - Maps P1 (occurrence) × P2 (harm) = P0 (total probability)

    • Initial Risk Evaluation matrix - Maps P0 × Severity = Risk Evaluation

    • Residual Total Probability matrix - Post-mitigation probability calculation

    • Residual Risk Evaluation matrix - Post-mitigation risk evaluation

    Matrix structure

    Matrices follow this JSON structure, where row and column values must exactly match the values defined in your probability and severity configurations (above):

    Example: Initial Total Probability Matrix

    This maps occurrence probability (rows) and harm probability (columns) to total probability values:

    Example: Initial Risk Evaluation Matrix

    This maps total probability (rows) and severity (columns) to risk evaluation values:

    Configuring other risk field options

    Customize dropdown options for various risk fields to match your risk management vocabulary.

    Warning: If these fields are mapped to Jira custom fields via configuration, changes will affect the global Jira field configuration.

    Hazards

    Define the types of potential sources of harm:

    Hazardous situations

    Define circumstances where patients are exposed to hazards:

    Harms with default severity

    Harms can optionally include an associated initial severity that auto-populates when selected:

    When strict mode is enabled with "Require harm and initial severity selection", users must select from these predefined harms and cannot override the associated severity.

    Event sequences and steps

    Define templates for sequence of events that lead from hazard to harm:

    Additional field configurations

    • Hazard Types - Categories of hazards (Electrical, Mechanical, Software, etc.)

    • System Categories - System components involved (Hardware, Software, Environment)

    • Risk Assessment Methodologies - Methods used (FMEA, FTA, HAZOP)

    Warning: If these fields are mapped to Jira custom fields via configuration, changes will affect the global Jira field configuration.

    Hazard type-specific configuration

    Override matrices for specific hazard types to provide more granular risk evaluation:

    When a user selects a hazard type with an associated configuration, those matrices override the default matrices for that specific risk.

    Custom risk type configuration

    For organizations (e.g., patient risks vs. cybersecurity risks), configure type-specific settings:

    Strict mode interactions

    When the following settings are enabled on the page:

    With "Require harm and initial severity selection"

    • Only harms defined in configuration can be selected

    • Initial severity is automatically set based on harm's defaultInitialSeverity

    • Users cannot override the associated severity

    With "Require derived risk analysis fields"

    • Risk acceptability is enforced from matrices, without the ability to change it manually

    With "Require hazard/hazardous situation selection"

    • Free text entry is disabled

    • Only pre-configured values can be selected

    Configuration hierarchy

    Ketryx applies configurations in order of specificity:

    1. Project level + Custom risk type + Hazard type specific

    2. Project level + Custom risk type

    3. Project level + Hazard type specific

    4. Project level general

    The most specific applicable configuration always takes precedence.

    Best Practices

    1. Define all probability and severity values before creating matrices

    2. Ensure all matrix combinations are defined

    3. Test configuration changes in a sandbox project first

    WI-10 Risk

    Work Instruction for Risk configuration items

    1. Introduction

    1.1. Purpose

    This Work Instruction provides the tasks required to be performed as part of the Risk configuration item lifecycle.

    1.2. Scope

    This Work Instruction covers the complete Risk lifecycle, from creation to obsolescence.

    1.3. Records and evidence

    Records for each Risk will be held based on the records and retention policy. Risks are used to generate the following artifacts:

    • Change management file

    • Change request verification report

    • Risk control matrix

    • Risk management file

    1.4. Responsibilities

    As listed in the procedure description, each task in the Risk item’s lifecycle will be completed by a member that is part of one of the following approval steps. When any of these members can perform the task, Anyone is listed.

    • Item Assignee: The person authoring and responsible for the Risk. This organization member is responsible for managing/completing the Risk lifecycle activities. This Item Assignee can change from time to time.

    • Quality Managers: The person accountable for the Risk. The Quality Manager ensures the Risk is correctly documented.

    • R&D Leads: The R&D Lead verifies the Risk is technically correct and any risk control measures are executable.

    2. Procedure description

    2.1. Step 1: Log into Ketryx

    Anyone

    1. Log into your Ketryx organization via and select the Ketryx project connected to the relevant Jira space (formerly project).

    2.2. Step 2: Create

    Anyone

    1. After product-level risk analysis is performed, for example, through a Failure Mode and Effects Analysis (FMEA), users should create a Risk to represent certain risks.

    2. Navigate to the Risks page via the left-hand sidebar.

    3. Press the Add risk button to open the form to create a new risk item.

    2.3. Step 3: Change status to In Progress

    Anyone

    You can change the work item status to In Progress, either in Jira or Ketryx.

    2.3.1. Transition in Ketryx

    Transition an item on the All items page

    1. Navigate to the All items page via the left-hand sidebar.

    2. Select the item in question and transition it to In Progress using the Transition 1 item button.

    Transition an item on the Edit risk page

    1. Navigate to the Risks page via the left-hand sidebar.

    2. For the relevant Risk item, click the Edit risk button.

    3. Select In Progress in the State dropdown.

    4. Save the changes.

    2.3.2. Transition in Jira

    1. Access the item in Jira via a link in Ketryx (e.g. in the item details page, risk management page or all items page). Then change the status using the work item status selector.

    2.4. Step 4: Edit the Risk item in Ketryx

    Item Assignee

    1. Navigate to the Risks page via the left-hand sidebar.

    2. For the relevant Risk item, click the Edit risk button.

    2.5. Step 5: Add general Risk information

    Item Assignee

    As needed, fill in the relevant information in the Risk form:

    1. Select one or more System categories.

    2. Select one or more Risk assessment methodologies.

    3. Fill in/select a Harm (based on the project configuration, a harm may prepopulate a pre-defined Initial severity value within the Initial risk analysis section)

    2.6. Step 6: Perform an initial risk analysis

    Item Assignee

    1. Set the Initial likelihood of occurrence (P1).

    2. Set the Initial likelihood of harm (P2).

    3. Set the Initial severity (may be pre-selected depending on the Harm provided).

    2.7. Step 7: Add risk controls

    Item Assignee

    1. As needed, add some details in the Risk control description field.

    2. Create risk control measure CIs as needed and add them under Risk control measures section by selecting the item in the corresponding dropdown and clicking the Add risk control measures button.

    2.8. Step 8: Perform a residual risk analysis

    Item Assignee

    1. Set the Residual likelihood of occurrence (P1).

    2. Set the Residual likelihood of harm (P2).

    3. Set the Residual severity.

    4. After P1, P2 and severity have been set, the

    2.9. Step 9: Change status to Resolved (Ready for Review)

    Anyone

    Once the Risk is completed and ready for design verification, it can be transitioned to Resolved in a similar way as described in . Please, note that Assignee needs to be set to be able to transition an item to Resolved.

    2.10. Step 10: Review as Owner

    Item Assignee

    Review the Risk to verify:

    • The Risk is traceable to all other needed items, and all interfaces are defined.

    • The Risk is Specific, Measurable, Achievable, Relevant, and Testable (SMART).

    • The Risk as a design output conforms to its design input (the items introducing the risk).

    If the verification fails, provide a comment on the reason it failed if needed, then go to Step 4. If verification passes, approve the Risk either in Jira or in Ketryx as described in point .

    2.10.1. Risk approval

    Approval in Jira

    1. Access the item in Jira via a link in Ketryx (e.g. in the item details page, risk management page or all items page).

    2. Approve the item in the Approvals widget.

    Approval in Ketryx

    In Ketryx, risk items can be approved either on the All items page or on the Risk management page.

    Approval on the All items page

    1. Navigate to the All items page via the left-hand sidebar.

    2. Select the item in question and approve it by clicking the Approve button.

    Approval on the Risk management page

    1. Navigate to the Risks page via the left-hand sidebar.

    2. For the relevant item, click the Approve button.

    2.11. Step 11: Review as R&D Lead

    R&D Lead

    Review the Risk to verify:

    • The Risk is traceable to all other needed items, and all interfaces are defined.

    • The Risk is Specific, Measurable, Achievable, Relevant, and Testable (SMART).

    • The Risk as a design output conforms to its design input (the items introducing the risk).

    If the verification fails, reopen the ticket and, if needed, provide a comment on the reason it failed, then go to Step 3. If verification passes, approve the Risk as seen in point .

    2.12. Step 12: Review as Quality Manager

    Quality Manager

    Review the Risk to verify:

    • The Risk is traceable to all other needed items, and all interfaces are defined.

    • The Risk is Specific, Measurable, Achievable, Relevant, and Testable (SMART).

    • The Risk as a design output conforms to its design input (the items introducing the risk).

    If the verification fails, reopen the ticket and, if needed, provide a comment on the reason it failed, then go to Step 3. If verification passes, approve the Risk as seen in point .

    2.13. Step 13: Transition to a controlled state

    Ketryx

    Only Ketryx can move a Risk to a controlled and effective state by transitioning its status to Closed. Ketryx moves the Risk to a Closed state after all approval rules have been passed, i.e., all required steps have approved the Risk.

    Ketryx automatically adds a comment to the Jira work item with a link to the effective controlled record in Ketryx.

    2.14. Step 14: Change

    Item Assignee

    Following a Change Request (i.e., the work item needs to be modified), reopen the Risk to create a new record, and go back to Step 3.

    2.15. Step 15: Mark as obsolete

    Item Assignee

    To mark a Risk as obsolete (i.e., as not effective anymore, starting with a given version),

    • Reopen it for change (Step 14),

    • Set the version it will be obsolete in (i.e., where the first version that it will not be effective in anymore) in the Obsolete in version field,

    • Resolve the work item (Step 9),

    • Approve the item (Steps 10-12).

    3. Procedure flow diagram

    4. Item schema

    • Introduced in version (version reference): The first version this risk is effective in. If empty, the risk is considered effective from the start of the project.

    • Obsolete in version (version reference): The version the risk is becoming obsolete in, i.e., the first version that this risk is not effective anymore.

    5. Traceability to other configuration items

    The following relations can be defined from a Risk to other configuration items:

    • Risk is risk-controlled by Test Case, Requirement, Software Item Spec, Hardware Item Spec

    The following relations can be defined from other configuration items to a Risk:

    • Risk is introduced by Requirement, Change Request, Hardware Item Spec, Software Item Spec

    • Risk is affected by CAPA, Change Request, Anomaly

    • Risk results from Change Request, CAPA

    WI-07 Complaint

    Work Instruction for Complaint configuration items

    1. Introduction

    1.1. Purpose

    This Work Instruction provides the tasks required to be performed as part of the Complaint configuration item lifecycle.

    1.2. Scope

    This Work Instruction covers the complete Complaint lifecycle.

    1.3. Records and evidence

    Records for each Complaint will be held based on the records and retention policy. Complaints are used to generate the following artifacts:

    • Change management file

    • Change request verification report

    1.4. Responsibilities

    As listed in the procedure description, each task in the Complaint item’s lifecycle will be completed by a member that is part of one of the following approval steps. When any of these members can perform the task, Anyone is listed.

    • Item Assignee: The person responsible for the Complaint. This organization member is responsible for managing/completing the Complaint lifecycle activities. This Item Assignee can change from time to time.

    • Quality Manager: The person that verifies the Complaint is correctly documented, investigated, and completely tested. The Quality Manager is consulted to approve the Complaint.

    • R&D Lead: The person that is accountable for the Complaint. The R&D Lead is consulted to investigate, resolve, and approve the fix for the

    2. Procedure description

    2.1. Step 1: Log into Jira

    Anyone

    Log into your Jira organization, e.g., your-company.atlassian.net.

    2.2. Step 2: Create

    Anyone

    1. Press the Create button in the top-level navigation to open the form to create a new Jira work item.

    2. Ensure the desired space (formerly project) is selected, and select the Work type "Complaint". If that does not appear, check with your system administrator to ensure your space is connected to Ketryx.

    1. Define an appropriate title in the Summary field.

    2. Define an appropriate Assignee (the Item Assignee).

    3. Provide additional preliminary information in the extra fields. (All fields can still be edited later.)

    2.3. Step 3: Navigate to the work item page

    Anyone

    Using the popover shown by Jira or through the Jira work item link, navigate to the Jira page of the Complaint.

    2.4. Step 4: Change status to In Progress

    Anyone

    Change the work item status to In Progress using the work item status selector.

    2.5. Step 5: Describe the complaint

    Item Assignee

    As possible, fill in the information and describe the complaint within the Description field. Be sure to press "Save" after entering new information or making changes.

    2.6. Step 6: Add a complaint type

    Item Assignee

    The complaint type helps to categorize the type of complaint. Select a complaint type:

    • Product Feedback: the complaint is about feedback about the product itself that is not necessarily an adverse event.

    • Adverse Event: the complaint is about an undesirable experience associated with the use of a medical product.

    • Severe Adverse Event: an event that results in serious injury (or even death).

    • Other

    2.7. Step 7: Document the original customer complaint

    Item Assignee

    Information about the original customer complaint can be filled in in different fields.

    1. Complaint received data: within the Original customer complaint field, describe the actual complaint.

    2. Name of medical device: describe the device that caused the complaint.

    3. Date received: the date when the complaint was filed and received.

    2.8. Step 8: Document the complainant's contact information

    Item Assignee

    The contact information about the complainant can be added under the Complainant contact information field.

    2.9. Step 9: Perform investigation, if required

    Item Assignee

    1. Select whether an investigation is Required or Not required.

    Depending on whether an investigation is required or not, choose Required or Not required for the field Investigation required.

    2. Perform the complaint investigation

    Perform the required investigation to understand and solve the complaint. Document it under the Investigation field.

    3. Fill in the date on which the complaint investigation was completed

    After the investigation, choose the date on which the investigation was completed.

    2.10. Step 10: Select configuration items and document found anomalies.

    Item Assignee

    1. Select which configuration items are affected by this complaint

    2. Select which anomalies were found as part of the complaint investigation

    3. Select which configuration items resolve this complaint

    4. Add related tasks if applicable

    2.11. Step 11: Resolve and fix anomalies reported as part of this complaint. As needed, verify that all resulting anomalies are corrected.

    Item Assignee

    After identifying anomalies during the investigation, all anomalies should be fixed and resolved. All necessary tests and results should be documented.

    2.12. Step 12: Fill in the final response to the complainant

    Item Assignee

    After the investigation was completed and found anomalies were fixed, fill in reply to the complainant.

    2.13. Step 13: Change status to Resolved (Ready for Review)

    Anyone

    Once the Complaint is completed and ready for verification, change its status to Resolved.

    2.14. Step 14: Review as Owner

    Item Assignee

    Review the Complaint to verify:

    • The Complaint is traceable to all other needed items.

    • The Complaint investigation has been correctly documented and concluded.

    If the verification fails, reopen the ticket and, if needed, provide a comment on the reason it failed, then go to Step 5. If verification passes, approve the Complaint.

    2.15. Step 15: Review as R&D Lead

    R&D Lead

    Review the Complaint to verify:

    • The Complaint is traceable to all other needed items.

    • The Complaint investigation has been correctly documented and concluded.

    If the verification fails, reopen the ticket and, if needed, provide a comment on the reason it failed, then go to Step 5. If verification passes, approve the Complaint.

    2.16. Step 16: Review as Quality Manager

    Quality Manager

    Review the Complaint to verify:

    • The Complaint is traceable to all other needed items.

    • The Complaint investigation has been correctly documented and concluded.

    If the verification fails, reopen the ticket and, if needed, provide a comment on the reason it failed, then go to Step 5. If verification passes, approve the Complaint.

    2.17. Step 17: Review as Product Manager

    Product Manager

    Review the Complaint to verify:

    • The Complaint is traceable to all other needed items.

    • The Complaint investigation has been correctly documented and concluded.

    If the verification fails, reopen the ticket and, if needed, provide a comment on the reason it failed, then go to Step 5. If verification passes, approve the Complaint.

    2.18. Step 18: Transition to a controlled state

    Ketryx

    Only Ketryx can move a Complaint to a controlled and effective state by transitioning its status to Closed. Ketryx moves the Complaint to a Closed state after all approval rules have been passed, i.e., all required steps have approved the Complaint.

    Ketryx automatically adds a comment to the Jira work item with a link to the effective controlled record in Ketryx.

    2.19. Step 19: Re-Open the complaint

    Anyone

    If a Complaint needs to be reopened, change its status to Reopen.

    3. Procedure flow diagram

    4. Item schema

    • Complaint Type: The nature of the complaint

      • Severe Adverse Event

      • Adverse Event

      • Product Complaint

    5. Traceability to other configuration items

    The following relations can be defined from a Complaint to other configuration items:

    • Complaint finds Anomaly

    • Complaint relates to Anomaly

    • Complaint relates to and is resolved by Hardware Item Spec, Requirement, Change Request

    Release Notes

    Reference library for Ketryx release notes

    2.14

    Ketryx 2.14

    We’re excited to announce the launch of Ketryx 2.14, a release centered on accelerating agile development with powerful AI-driven workflows. New features directly support and enhance the story-driven development pattern for medical device software, ensuring that compliance is a natural part of the process, not a final hurdle.

    {
      "ok": true,
      "error": "text",
      "buildId": "text",
      "projectId": "text",
      "repositoryIds": [
        "text"
      ],
      "versionIds": [
        "text"
      ],
      "commitShas": [
        "text"
      ],
      "dependenciesAccepted": true,
      "dependenciesControlled": true
    }
    POST /api/v1/build-artifacts?project=KXPRJ49GQYFQ5RR9KRTPWTRTC39YZ9W HTTP/1.1
    Host: app.ketryx.com
    Authorization: Bearer YOUR_SECRET_TOKEN
    Content-Type: multipart/form-data
    Accept: */*
    Content-Length: 20
    
    {
      "content": "binary"
    }
    POST /api/v1/builds HTTP/1.1
    Host: app.ketryx.com
    Authorization: Bearer YOUR_SECRET_TOKEN
    Content-Type: application/json
    Accept: */*
    Content-Length: 631
    
    {
      "project": "KXPRJ49GQYFQ5RR9KRTPWTRTC39YZ9W",
      "version": "KXVSN352CZED7078FC8DN23YYZVM59D",
      "commitSha": "ad4db8ac1e70bd41aa8bcee6f00a3a1e36bb0e01",
      "buildName": "ci-e2e-batch1",
      "log": "text",
      "sourceUrl": "https://github.com/Ketryx/ketryx/actions/runs/4991785273",
      "repositoryUrls": [
        "https://github.com/Ketryx/ketryx"
      ],
      "syncRepositoryUpdate": true,
      "tests": [
        {
          "testedItem": "KXITM2AVTG0CEEA83MVPCG00XH2KXRB",
          "result": "PASS",
          "title": "text",
          "log": "text",
          "artifacts": [
            {
              "id": "KXUPF1GGK0R03458B8VK6R8S7SKCQSV"
            }
          ]
        }
      ],
      "artifacts": [
        {
          "id": "KXUPF4VNVT28EFA8PJBT5642XDPEFR1",
          "type": "cucumber-json"
        }
      ],
      "checkDependenciesStatus": true,
      "checkReleaseStatus": true
    }
    [
      {
        "filter": "TC and RC and not intestplan:selected",
        "message": "All tests that are risk controls need to be in the test plan"
      }
    ]
    CR and affects:selected
    SW and "is affected by":selected
    <extension apiKey="YOUR-API-KEY" content="relations" id="ketryx" url="https://app.ketryx.com" />
    [
      {
        "workItemType": "Custom Bug",
        "itemType": "ANOMALY"
      },
      {
        "workItemType": "Custom Requirement",
        "itemType": "REQUIREMENT"
      }
    ]
    [
      {
        "workItemType": "issue",
        "itemType": "TASK"
      },
      {
        "workItemType": "Issue",
        "itemType": "TASK"
      }
    ]
    [
      {
        "testRunType": "*",
        "itemType": null
      }
    ]
    {
      "draft": "OPEN"
    }
    {
      "verifies": "TESTS"
    }
    {
      "Parent": "SW_TO_RQ"
    }
    {
      "passed": "PASS",
      "failed": "FAIL",
      "warnings": "PASS_WITH_EXCEPTION"
    }
    {
      "customField": "Custom Field"
    }
    {
      "affectsJiraItems": {
        "type": "references",
        "targetSystem": "Jira",
        "relationType": "AFFECTS"
      }
    }
    [
      { "excluded": false }
    ]
    [
      { "collectionName": "Use cases 1.0" },
      { "collectionName": "Test Plan 1.0" },
      { "collectionName": "Use cases 1.1" },
      { "collectionName": "Test Plan 1.1" }
    ]
    [
      { collectionName: 'My collection A', versionName: 'Release 1.3' },
      { collectionName: 'My collection B', versionName: 'Release 1.3' },
      { collectionName: 'My collection C', versionName: 'Release 2.0' },
    ]
    [
      { "collectionName": "My collection 2.0.0", "excluded": true },
      { "collectionName": "My collection 3.0.0", "excluded": true },
      { "excluded": false }
    ]
    [
      {
        "collectionName": "My collection 2.0.0",
        "includedDocumentsNamePattern": "^PREFIX-[0-9]+"
      }
    ]

    designElement, designOutput, softwareDesign, softwareInterface, softwareModule, softwareUnit

    Software Item Spec

    Security
  • Function

  • Library

  • Contracted

  • 'Medical Device'

  • Interface

  • Regulatory

    Tested items: Are the correct items linked, and is the list complete?

  • Introduced in version: Is it linked to the correct version?

  • Test type: Is this a Verification or a Validation case? If it is the former, what kind of Verification?

  • Tested items: Are the correct items linked, and is the list complete?

  • Introduced in version: Is it linked to the correct version?

  • Test type: Is this a Verification or a Validation case? If it is the former, what kind of Verification?

  • Tested items: Are the correct items linked, and is the list complete?

  • Introduced in version: Is it linked to the correct version?

  • Test type: Is this a Verification or a Validation case? If it is the former, what kind of Verification?

  • Tested items: Are the correct items linked and is the list complete?

  • Introduced in version: Is it linked to the correct version?

  • Test type: Is this a Verification or a Validation case? If it is the former, what kind of Verification?

  • Jira create issue dialog create button
    Jira create issue button
    Jira create issue dialog issue type selector
    /api/v1/build-artifacts
    first, which returns a file ID that can be passed to the
    /builds
    API. Artifacts can be associated with the overall build or with individual tests.
  • Artifacts of type cucumber-json or junit-xml reported at the overall build level are automatically parsed by Ketryx and yield automated test executions.

  • Test results can also be reported directly using the tests parameter, explicitly specifying a testedItem, result, title, artifacts, etc.

  • Just like the build-name parameter in the GitHub Action (described above), a buildName can be specified to disambiguate several parallel builds that should not override each other.

  • WI-04 Test Case
    release test plan
    WI-05 Test Execution
    Automated tests
    referenced projects
    Xray integration in Ketryx
    TestRail integration in Ketryx
    API authentication
    GitHub Actions
    Ketryx GitHub Action
    encrypted secret
    action configuration documentation
    build API documentation
    Learn more about how to specify the itemId in the source code file
    Learn more about how Ketryx supports extracting Test Case items directly from your Git repository
    Gherkin
    Jest
    Mocha
    pytest
    Learn more about how to associate automated tests with configuration items in Java, Kotlin and Swift in the Git-based Configuration Items manual
    Managing a release test plan in Ketryx
    Managing Ketryx API keys
    Requiring automated tests to be associated with test cases
    A Test Case with a manual Test Execution as well as an automated test execution
    Detail page for an automated test execution
    Detail page for a project build
    Requiring a manual execution for each effective automated test execution

    Residual Harm Probability - Post-mitigation P2 values

  • Residual Total Probability - Post-mitigation P0 values

  • Organization level (same hierarchy as above)

  • System defaults

  • Field names
    Field names
    Field names
    managing multiple risk types
    Project Settings
    {
      "ok": true,
      "id": "text"
    }
    api-key: ${{ secrets.KETRYX_API_KEY }}
    Authorization: Bearer KXTK_...
    Feature: Mobile app
    
      @tests:SAMD-45 @tests:SAMD-46 @tests:SAMD-47
      Scenario: Test mobile app login
        Given User is on login screen
        Then User can log in successfully
    describe('Mobile app login @tests:SAMD-45 @tests:SAMD-46', () => {
        it('logs in user successfully', () => {
            // ...
        });
    });
    def test_mobile_app_login(record_property):
        record_property('tested-item-id', 'SAMD-45, SAMD-46')
        # ...
    <testsuites>
      <testsuite name="Suite 1">
          <testcase name="Test 1">
              <properties>
                  <property name="tested-item-id" value="SAMD-45, SAMD-46" />
              </properties>
          </testcase>
          <testcase name="Test 2">
              <properties>
                  <property name="assertions" value="SAMD-45, SAMD-46" />
              </properties>
          </testcase>
          <testcase name="Test 3" tested-item-id="SAMD-45, SAMD-46" />
          <testcase name="Test 4" assertions="SAMD-45, SAMD-46" />
          <testcase name="Test 5 @tests:SAMD-45, SAMD-46" />
      </testsuite>
    </testsuites>
    [
      {
        "name": "Low",
        "hexColor": "39A31A",
        "fontHexColor": "EBFFE4"
      },
      {
        "name": "Medium",
        "hexColor": "D08300",
        "fontHexColor": "FFF7E4"
      },
      {
        "name": "High",
        "hexColor": "B50531",
        "fontHexColor": "FFEDF3"
      }
    ]
    [
      {
        "name": "Rare",
        "hexColor": "0B5394",
        "fontHexColor": "FFFFFF"
      },
      {
        "name": "Unlikely",
        "hexColor": "39A31A",
        "fontHexColor": "FFFFFF"
      },
      {
        "name": "Possible",
        "hexColor": "F1C232",
        "fontHexColor": "000000"
      },
      {
        "name": "Probable",
        "hexColor": "D08300",
        "fontHexColor": "FFFFFF"
      },
      {
        "name": "Frequent",
        "hexColor": "B50531",
        "fontHexColor": "FFFFFF"
      }
    ]
    [
      {
        "name": "Negligible",
        "hexColor": "0B5394",
        "fontHexColor": "FFFFFF"
      },
      {
        "name": "Minor",
        "hexColor": "39A31A",
        "fontHexColor": "FFFFFF"
      },
      {
        "name": "Serious",
        "hexColor": "D08300",
        "fontHexColor": "FFFFFF"
      },
      {
        "name": "Critical",
        "hexColor": "CC0000",
        "fontHexColor": "FFFFFF"
      },
      {
        "name": "Catastrophic",
        "hexColor": "660000",
        "fontHexColor": "FFFFFF"
      }
    ]
    [
      {
        "name": "Negligible",
        "hexColor": "0B5394",
        "fontHexColor": "FFFFFF",
        "acceptable": "ACCEPTABLE"
      },
      {
        "name": "Low",
        "hexColor": "39A31A",
        "fontHexColor": "FFFFFF",
        "acceptable": "ACCEPTABLE"
      },
      {
        "name": "Medium",
        "hexColor": "F1C232",
        "fontHexColor": "000000",
        "acceptable": "NOT_ACCEPTABLE"
      },
      {
        "name": "High",
        "hexColor": "D08300",
        "fontHexColor": "FFFFFF",
        "acceptable": "NOT_ACCEPTABLE"
      },
      {
        "name": "Unacceptable",
        "hexColor": "B50531",
        "fontHexColor": "FFFFFF",
        "acceptable": "NOT_ACCEPTABLE"
      }
    ]
    {
      "[Row Value]": {
        "[Column Value]": "[Result Value]"
      }
    }
    {
      "Low": {
        "Low": "Rare",
        "Medium": "Rare",
        "High": "Rare"
      },
      "Medium": {
        "Low": "Rare",
        "Medium": "Probable",
        "High": "Probable"
      },
      "High": {
        "Low": "Rare",
        "Medium": "Probable",
        "High": "Certain"
      }
    }
    {
      "Rare": {
        "Low": "Negligible",
        "Medium": "Low",
        "High": "Medium"
      },
      "Probable": {
        "Low": "Low",
        "Medium": "Medium",
        "High": "High"
      },
      "Certain": {
        "Low": "Medium",
        "Medium": "High",
        "High": "Unacceptable"
      }
    }
    [
      "Contamination",
      "Electrical shock",
      "Mechanical failure",
      "Software malfunction",
      "User error",
      "Environmental exposure"
    ]
    [
      "Patient contact during procedure",
      "Operator maintenance activities",
      "Emergency shutdown scenario",
      "Power failure during operation"
    ]
    [
      {
        "name": "Death",
        "defaultInitialSeverity": "Catastrophic"
      },
      {
        "name": "Permanent impairment",
        "defaultInitialSeverity": "Critical"
      },
      {
        "name": "Temporary injury requiring intervention",
        "defaultInitialSeverity": "Serious"
      },
      {
        "name": "Minor discomfort"
      }
    ]
    [
      {
        "name": "Medication Dosage Error",
        "steps": [
          {
            "name": "Prescription Entry"
          },
          {
            "name": "Dosage Calculation"
          },
          {
            "name": "Dispensing"
          },
          {
            "name": "Administration"
          }
        ]
      },
      {
        "name": "Device Malfunction",
        "steps": [
          {
            "name": "Component Failure"
          },
          {
            "name": "Alarm Failure"
          },
          {
            "name": "Operator Unaware"
          },
          {
            "name": "Continued Use"
          }
        ]
      }
    ]
    {
      "Electrical": {
        "initialTotalProbabilityMatrix": {
          "Low": {
            "Low": "Rare",
            "Medium": "Probable",
            "High": "Certain"
          },
          "Medium": {
            "Low": "Probable",
            "Medium": "Certain",
            "High": "Certain"
          }
        },
        "initialRiskEvaluationMatrix": {
          "Rare": {
            "Low": "Low",
            "Medium": "High",
            "High": "Unacceptable"
          },
          "Certain": {
            "Low": "Medium",
            "Medium": "Unacceptable",
            "High": "Unacceptable"
          }
        }
      },
      "Software": {
        "initialTotalProbabilityMatrix": {...},
        "residualRiskEvaluationMatrix": {...}
      }
    }
    {
      "Cybersecurity Risk": {
        "initialTotalProbabilityMatrix": {...},
        "initialRiskEvaluationMatrix": {...},
        "residualTotalProbabilityMatrix": {...},
        "residualRiskEvaluationMatrix": {...},
        
        "initialOccurrenceProbability": [
          {"name": "Unlikely", "hexColor": "39A31A"},
          {"name": "Possible", "hexColor": "D08300"},
          {"name": "Likely", "hexColor": "B50531"}
        ],
        "initialSeverity": [
          {"name": "Low Impact", "hexColor": "39A31A"},
          {"name": "Medium Impact", "hexColor": "D08300"},
          {"name": "High Impact", "hexColor": "B50531"}
        ],
        
        "hazards": ["Data breach", "System compromise", "Denial of service"],
        "harms": [
          {"name": "Privacy violation", "defaultInitialSeverity": "High Impact"},
          {"name": "Financial loss", "defaultInitialSeverity": "Medium Impact"},
          {"name": "Reputation damage"}
        ],
        
        "dataByHazardType": {
          "Network": {
            "initialRiskEvaluationMatrix": {...}
          }
        }
      },
      "Environmental Risk": {
        "initialOccurrenceProbability": [
          {"name": "Annual", "hexColor": "39A31A"},
          {"name": "Monthly", "hexColor": "D08300"},
          {"name": "Daily", "hexColor": "B50531"}
        ]
      }
    }

    Enable the following sub-types by checking the corresponding checkboxes:

    1. Regulatory

    2. System

    3. User Interface Requirement

    4. Security/Privacy

    5. Functional

  • To specify the requirement for generating the System Requirements Specification document, click on the Document types button and enabling the checkbox for said document

  • Find the blocking mode option for the milestone

  • Enable the blocking mode to ensure that no further item approvals are allowed until this milestone is approved (enabled by default)

  • Review the milestone configuration settings to ensure accuracy and completeness

  • Click the Save changes button on the right to save the milestone configuration, supplying an optional note

  • Outdated. A milestone with this status implies that controlled items within this milestone have changed since the last approval. Verifying and re-approving all uncontrolled items is necessary to be able to re-approve the milestone again.

  • Reapprovable. A milestone with this status implies that the milestone was invalidated due to changes in the system, but all milestone conditions are fulfilled again. This milestone can be re-approved.

  • Blocked By Missing Approval. A milestone with this status implies that a preceding milestone hasn't been approved yet. Items may still be approved within this milestone, however, for approval, the preceding milestone must be completed and approved.

  • Make sure to save and confirm the newly loaded milestones as the current configuration

  • MAN-01 Ketryx Lifecycle Management
    MAN-02 Software Release Process
    Requirements milestones configuration
    Milestone detail page
    Approved milestone meeting note
    Milestone ready for approval
    Milestone configuration changes list
    Milestone status: Open
    Milestone status: Ready
    Milestone status: Approved
    Release dashboard milestone indicator

    Risk matrix

  • System requirements specification (relations)

  • System design specification (relations)

  • System design specification (with details)

  • Test plan (relations)

  • Traceability matrix

  • Define an appropriate title in the Title field. To make the most out of Ketryx, it is recommended to name a Risk after its Hazardous Situation. Should there be multiple identical Hazardous Situations, one should differentiate each Risk item by including the hazard in the title. As an example:
    • Under Infusion (Electrical hazard) and

    • Under Infusion (Functional hazard)

  • Define the item metadata with an appropriate Assignee (the Item Assignee) and Introduced in version.

  • Press the Save changes button at the bottom of the page to finalize the creation of the new item.

  • After saving the item, you will be directed to the item details page, where information about the newly created item will be displayed.

  • Select a Hazard type (based on the project configuration, a hazard type may use a different risk analysis calculation schema).
  • Fill in the Hazardous situation.

  • Enter one or more steps for Foreseeable sequence of events leading to the hazardous situation (the Cause of the hazardous situation) by either selecting a pre-configured step, adding a new step, or loading a sequence of events.

  • After P1, P2 and severity have been set, the Initial risk evaluation value will be set according to the project's configured risk evaluation matrix. You may override the value if necessary.
  • An information box is visible next to the Initial risk analysis section for improved comprehension of how the values were derived.

  • Verify the calculated value for Risk acceptability. If it is Acceptable go to Step 9, otherwise continue with Step 7 to identify potential risk controls.

  • Residual risk evaluation
    value will be set according to the project's configured risk evaluation matrix. You may override the value if necessary.
  • An information box is visible next to the Residual risk analysis section for improved comprehension of how the values were derived.

  • If the residual risk is still considered Not acceptable, perform a Benefit-risk analysis to ensure the benefit of the product justifies the unacceptable risk, or override the calculated acceptability by selecting Acceptable in the Overall risk analysis section.

  • If the calculated overall acceptability is overridden, this will be explicitly pointed out on the right-hand side.

  • Save the changes

  • app.ketryx.com
    2.3. Step 3: Change status to In Progress
    2.10.1. Risk approval
    2.10.1. Risk approval
    2.10.1. Risk approval
    Transition a risk item on the Edit page
    Approve an item on the All items page
    Approve a risk item on the Risk management page
    Complaint
    .
  • Product Manager: This organization member leads the product development, defines requirements, and ensures that the product meets customer demands. The Product Manager is accountable for the Complaint being investigated and resolved.

  • Press the
    Create
    button at the end of the form to finalize the creation of the new Jira work item.
  • Other

  • Description (rich text): Description of the complaint

  • Original customer complaint (rich text): The customer's original complaint

  • Affected items (-> Requirement, Software Item Spec, Hardware Item Spec, Test Case, Risk, Configuration Item, CAPA, Anomaly, Change Request): Items affected by the complaint

  • Introduced in version: What version this complaint is about

  • Name of medical device (short text): The official product name

  • Date complaint received (date): The date of when the complaint was received

  • Complainant contact information (rich text): Contact information of the complainant

  • Investigation required: Whether the complaint necessitates an investigation

    • Required

    • Not required

  • Date of investigation (date): The date when the investigation begun

  • Investigation (rich text): Details about the investigation

  • Reply to the complainant (rich text): Response of the product company to the client

  • Found anomalies (-> Anomaly): Anomalies that were discovered as a result of this complaint

  • Resolved by (-> Requirement, Software Item Spec, Hardware Item Spec, CAPA, Change Request)

  • This release focuses on accelerating development by embedding compliance directly into your agile workflow, supporting processes like those following AAMI TIR 45, as illustrated below:

    Intelligent Quality Assurance

    AI Agent Findings: Proactive Quality Management

    You can catch quality issues before they impact your timeline. Create filters that automatically surface items that have been flagged by an AI Agent. Common use cases include:

    • For Product Managers: Stories are automatically flagged if they lack sufficient documentation or if the requirements, risks, or tests they might impact haven't been updated yet.

    • For System Engineers: Requirements are checked against established standards (like INCOSE guidelines) and flagged if they don't meet quality criteria. Updates are also suggested.

    • For Test Engineers: Easily identify test coverage gaps and ensure test cases align with requirement changes. The AI can also suggest changes if they do not.

    See agent findings for recommendations to items like change requests
    Filter all items to see agent findings

    Each flagged item includes actionable recommendations that can be reviewed, accepted, or dismissed. By addressing these suggestions, you ensure the item meets the necessary quality and traceability criteria.

    Introduction to Agent Filters

    How to Setup Agent Filters

    Enhanced Assistant Capabilities: Your Intelligent Compliance Partner

    You can have contextual conversations that build on previous discussions. Chat sessions now persist, so you can continue complex change impact analyses across multiple conversations without starting over.

    You can customize the Assistant's behavior for your specific workflows. Create assistant rules files that guide behavior for different item types. For example:

    • For software requirements: You can ask it to always check for testability criteria, suggest verification methods, and flag requirements without acceptance criteria.

    • For risk items: It can ensure mitigation strategies are defined, while checking for residual risk assessment, and verify control effectiveness measures.

    You can analyze code change reviews and their quality impacts in one workflow. For projects with connected repositories, you can ask the Assistant to look at pull requests and ask questions like ”Create a new requirement based on the pull request."

    Repository Code Assistant

    This major enhancement enables remote repository analysis and autonomous PR creation through the Github MCP. Prompt the assistant to execute tasks based on the code in your repositories. This evolution comes with strong guardrails to ensure sustained quality and compliance:

    1. Multi-layered security is enforced to prevent native file system access or destructive actions, ensuring only a defined set of GitHub operations are allowed.

    2. All code changes, analysis, and agent operations are logged for auditability.

    Seamless Cross-Platform Collaboration

    Improved Information Access Through Traceability Widget’s “Detail View”

    Stay focused without breaking your flow. The enhanced traceability widget view brings critical context directly into your detail view, letting you assess the status, key metadata, and content of connected items. Instead of jumping between windows or opening countless tabs, you have the full picture right where you’re already working.

    By surfacing key connections at a glance, the widget makes it easier to assess progress, understand dependencies, and catch potential risks early. The result? Faster decisions, fewer distractions, and greater confidence that nothing slips through the cracks.

    How to access the traceability detail view

    Traceability detail view

    Jama

    Structure and folder mapping as relations in Ketryx

    You can now maintain your existing Jama hierarchy workflow to establish traceability. Teams who prefer working with folder structures and hierarchical relationships can now capture Jama hierarchy as relations in Ketryx. If you're a systems engineer who thinks in terms of system-subsystem-component hierarchies, you can maintain that mental model while still creating traceability links. Ketryx is now able to support both approaches simultaneously.

    See how it works

    Scope Jama synchronization with filters

    You can now use Jama filters to subset items as they synchronize to Ketryx, and connect one Jama project to multiple Ketryx projects. This enhances your ability to manage your design controls as a System of Systems to enable rapid releases and granular configuration control, without needing to refactor your items in Jama. Teams that manage many items, versions, or product lines in Jama simultaneously no longer need to choose between visibility and compartmentalization.

    Push comments from Ketryx to Jama

    You'll never miss critical feedback or approval decisions. When you submit items for review in Ketryx, all invalidation, approval, and rejection comments automatically appear in your Jama environment. Your Jama-based team members can see the full context of decisions without switching tools, and reviewers working in Ketryx can be confident their feedback reaches the right people.

    Jira

    Parent-child hierarchy mapping in Ketryx

    You can maintain your familiar epic and story workflow while building compliance traceability. If your team works in traditional Jira epic/story hierarchies, those parent-child relationships now integrate directly with Ketryx traceability. As your development team continues to work in Jira, they can start with a user story, trace this up to the epic and then connect this to requirements, risks and tests without having to log in to a different system.

    See how it works

    Configurable QMS Enforcement

    Custom Design Input/Output Controls: Precision Compliance

    You can enforce approval workflows exactly as your QMS specifies. Configure different enforcement levels for different item types. For example, require strict sequential approval for requirements (design inputs must be approved before design outputs), while allowing flexible approval order for change requests and anomalies. Your compliance process matches your actual quality system instead of forcing your QMS into rigid tool constraints.

    How to use granular control with design filters

    Custom Risk Schemas: Model Risk Your Way

    You can capture exactly the risk information each process requires. Different risk sources need different data so you now have the ability to configure multiple schemas, for example:

    • FMEA Teams capture failure modes, effects, and detection methods

    • Software Safety Teams record hazard classifications and safety integrity levels

    • Cybersecurity Teams document threat vectors and attack surface analysis

    All risk types maintain full traceability to design controls and affected items, keeping risk management integrated throughout your SDLC.

    How to use custom risk schemas

    Additionally, the risk management widget is enabled by default on custom item types with the "Risk" category. If you need to selectively enable or disable the widget for specific risk types (e.g., show it only for custom risk types but not the standard risk type), configure it by the granular widget control.

    How to configure the risk management widget

    Enhanced Vulnerability and Dependency Management

    Advanced Vulnerability Dispositioning

    You can manage vulnerabilities across your entire product portfolio efficiently. If you maintain multiple versions of the same product:

    • Reuse Dispositions: Apply the same vulnerability assessment across similar product versions

    • Create Variants: When an older version remains vulnerable but newer versions are protected, create disposition variants instead of starting from scratch

    • Configure Scoring Profiles: Set up CVSS rescoring profiles based on your established rubrics and the system suggests appropriate scores as you work through dispositions

    • Streamline Calculations: Use the integrated CVSS calculator without switching to external tools

    Vulnerability rescoring

    Flexible CycloneDX SBOM ingestion

    You can leverage your existing security tool chain. Import any metadata from your CycloneDX SBOMs directly into custom fields, whether that's end-of-life information, support status, or enrichment data from your security scanners. This information becomes fully traceable and reportable within your quality workflows.

    Learn more

    Operational Efficiency

    Streamlined Team Management

    You can onboard entire teams in minutes. Upload a CSV file with multiple team members and their group assignments directly to the platform, streamlining the onboarding process as your organization scales.

    How to add your team to Ketryx

    Optimized synchronization between Azure DevOps and Ketryx

    Your Azure DevOps work items are now synced to Ketryx with enhanced performance. This optimization reduces synchronization times and eliminates the need for occasional manual refresh cycles.

    Learn more

    This release delivers powerful enhancements designed to streamline your development processes, strengthen compliance, and improve overall operational efficiency. We are committed to continuously evolving Ketryx to meet your needs, enabling you to achieve higher quality and faster releases. Reach out to us with questions or feedback on these new features.

    2.13

    Regulated teams around the world trust Ketryx to streamline compliance with IEC 62304, ISO 13485, and ISO 14971—automating traceability, documentation, and validation so they can move faster while improving quality. With Ketryx 2.13, we’re doubling down on our commitment to helping teams release safety-critical products at speed and at scale.

    Ketryx 2.13 reflects our continued investment in agentic AI, configurability, and performance. This version introduces document generation speed improvements with up to 98% faster performance. We’ve also added extended research capabilities to the AI Assistant, a validated complaint classification AI agent, custom relations, a read-only guest role, and vulnerability rescoring.

    Document Generation Speed Improvements

    Working with enterprise-scale data is complex. Our customers use Ketryx as their system of record for tens of thousands of configuration items across Jira, GitHub, and other connected systems. Release faster with our more powerful document generation engine. Complex documents with images and intricate relationship graphs now generate up to 98% faster, so teams can generate documentation faster from the work done in connected systems.

    AI Assistant Extended Mode

    Ketryx AI Assistant now includes Extended Mode with streaming functionality. Extended Mode enables complex research tasks and the new streaming feature provides real-time visibility into the AI’s research process, so you can course-correct if needed. Ask complex questions about your system and watch the AI work through comprehensive analysis in real-time.

    Learn more about and watch a to see this new feature in action.

    AI-Powered Complaint Classification and Quality Review

    The Complaint Agent is Ketryx’s newest validated AI agent. This ready-to-use agent automatically analyzes complaint configuration items to identify adverse events and classify complaints into categories based on severity. This agent accelerates complaint processing so you can triage complaints and resolve potential safety issues faster.

    Learn more about the in the documentation and watch a to see the agent in action.

    Enhanced Configuration: Custom Relations and Traceability

    Ketryx users can now trace any configuration item—including custom items and documents—to any other item across their systems. This powerful generalization enables you to link cybersecurity risks to safety risks, connect any item type (like a CAPA) to documents, trace impact assessments to custom items, or create entirely custom traceability frameworks. Documents and custom items now integrate seamlessly with your quality management workflows.

    Learn more about configuring and setting up in the product documentation, or watch this to see the new feature in action.

    Risk Management Upgrade

    Ketryx now lets you define multiple risk types with their own unique workflows. Users can now create separate item types for cybersecurity risks, safety risks, or any other risk category, each with custom fields and configurations. All custom risk types automatically appear on the Risk Management screen, inherit standard risk relationships like "introduces risk" and "is risk-controlled by," and appear in your trace matrix. This increased flexibility enables your team to manage various risk types with the power of integrated risk management. Contact your Client Operations Manager to learn more about how to utilize this feature.

    Learn more about to enhance your risk management configuration.

    Introduction of a Read-Only Guest Role

    Expand your team's access to Ketryx with the new Guest Role with read-only permissions. This feature lets teams add users who can view data across the entire connected system without editing capabilities, preventing users with read-only access from modifying any data. The Guest role is perfect for staff who need context without editing or external auditors requiring system access. Organization owners can now invite guests via invitation links, view Guest status on the Members page, and export reports showing permissions for each user. This change addresses both internal organizational needs and external audit requirements while maintaining data integrity.

    about adding users as Guests in the documentation.

    API Enhancements

    Ketryx expands our REST API endpoints to expose external item IDs and approval groups for better integration with external tools, such as dashboarding tools. Users can now receive messages with direct links to both the originating system and Ketryx, enabling uninterrupted data flow between Ketryx and external tools while maintaining traceability and compliance.

    Learn more about the and in the documentation.

    Vulnerability Rescoring with Built-In CVSS Calculator

    Ketryx now includes a built-in CVSS calculator that mirrors the , supporting both CVSS v3.1 and v4.0 and eliminating the need for manual spreadsheet-based workflows. Users can rescore individual or multiple vulnerabilities simultaneously with an interactive interface featuring real-time score updates, side-by-side original versus rescored value comparisons, and contextual tooltips explaining each metric (exploit code maturity, remediation level, environmental factors). The calculator intelligently handles base metrics (locked by default), temporal, and environmental metrics tailored to your context. All rescoring actions are tracked in an audit trail so you can accurately assess vulnerability risk based on implemented controls while maintaining full traceability.

    Learn more about in the documentation.

    2.12

    We're excited to announce the release of Ketryx 2.12, expanding users’ ability to collaborate across tools, manage vulnerabilities, and accelerate releases while maintaining compliance. This release includes a validated integration with Google Workspace for collaborative editing, enhanced vulnerability management, updates to the AI assistant, and performance improvements. These improvements help regulated teams move faster while maintaining compliance with standards like IEC 62304, ISO 13485, and ISO 14971.

    Google Docs Integration

    R&D and Quality teams work closely together to finalize release documentation, often collaborating on documents and spreadsheets in Google Workspace. Ketryx’s new validated integration with Google Workspace makes it easier than ever for regulated teams to share and collaboratively edit release documents. We are continuing work to extend this integration to also work with other types of documents (in addition to release documents). To enable this integration, set up your Google Workspace credentials in the Organization > Connections settings page. Learn more .

    AI Assistant

    You'll notice improvements to the design of the located in the sidebar of the Ketryx platform, which provides a powerful way to interact with Ketryx as you're working. Use the AI assistant to ask questions about your QMS, generate test cases, filter requirements, and automate tedious tasks, while always keeping a human in the loop. Consider trying one of these prompts:

    • "Show me all requirements that are not yet approved"

    • "Help me structure a template based on this existing specification document"

    • "Create a detailed test case for [requirement]"

    • "Create risk items that may result from these requirements"

    Enhanced Vulnerability Management

    Improvements to vulnerability management in Ketryx support robust postmarket surveillance processes and strengthen the cybersecurity posture of your organization, in light of regulations like the and recent . Vulnerability impact assessments can now behave like standard configuration items and appear on the All items page. This enables adding custom fields and relations to the vulnerability impact assessments to align with your organization’s cybersecurity management process. Like other configuration items in Ketryx, you can now reference vulnerability impact assessments across multiple projects (cross-project referencing) to support centralized vulnerability management and traceability between complex systems of systems. Learn more .

    Comments in Ketryx

    Approvals depend on clear communication, and comments act as an integral part of collaborative systems. The ability to post a comment directly on items provides context and supports stronger collaboration, especially during the approval process of items such as vulnerabilities, which are managed outside project management tools like Jira. Comment and rejection ability in Ketryx keeps your communication centralized and documented, so you can easily see the history of each item and how it has progressed. This makes it easier to track decisions and speeds up review cycles across teams. Learn more .

    Performance

    As we continue to onboard enterprise customers with a high level of complexity in their projects, we continue to focus on improving the performance of Ketryx, making page load speeds more than three times as fast and bringing down the typical page load time to under 3 seconds. This performance improvement allows users to work more efficiently in Ketryx, to manage large amounts of complex data, and to release faster.

    2.11

    Read release notes here.

    2.10

    We’re excited to announce the release of Ketryx Version 2.10, with important updates including expanded integrations and improved visibility of complex systems.

    Item Variant Management: Baseline Locking

    To provide greater control over release-ready items and avoid “future-bound” updates from affecting completed documentation, Ketryx 2.10 introduces item baseline locking. This functionality enables teams to lock items for a specific version of their project so they can start working on future releases. This “snapshot” prevents future changes from affecting documents for that release, creating stable and controlled item states.

    TestRail Integration

    Ketryx 2.10 introduces a robust with TestRail, one of the leading tools for test case creation, management, and execution. With TestRail integration, Ketryx users can now seamlessly trace test cases directly to Ketryx items, creating a connected view of testing and validation data.

    Enhanced Graph Page

    The Architecture page is now the Graph page, allowing users to view and interact directly with the data in their traceability matrix in a graph form and use AI to create hyper-specific filters. This change enhances the user’s ability to to visualize complex relationships between configuration items and structures, including systems of systems, and saves the user time on navigating complex data visualizations.

    2.9

    Read release notes here.

    2.8

    Read release notes here.

    2.7

    Read release notes here.

    2.6

    Read release notes here.

    2.5

    Read release notes here.

    2.0

    Read release notes here.

    WI-01 Requirement

    Work Instruction for Requirement configuration items

    1. Introduction

    1.1. Purpose

    This Work Instruction provides the set of tasks required to be performed as part of the Requirement configuration item lifecycle.

    1.2. Scope

    This Work Instruction covers the complete Requirement lifecycle, from creation to obsolescence.

    1.3. Records and evidence

    Records for each Requirement will be held based on the records and retention policy. Requirements are used to generate the following artifacts:

    • Change management file

    • Change request verification report

    • Risk control matrix (risk control measures only)

    • Risk management file

    1.4. Responsibilities

    As listed in the procedure description, each task in the Requirement item’s lifecycle will be completed by a member that is part of one of the following approval steps. When any of these members can perform the task, Anyone is listed.

    • Item Assignee: The person authoring and responsible for the Requirement. This organization member is responsible for managing/completing the Requirement lifecycle activities. This Item Assignee can change from time to time.

    • Product Managers: The person accountable for the Requirement. This organization member leads the product development, defines requirements, and ensures that the product meets customer demands. The Product Manager is accountable for the Requirement being correct.

    • R&D Leads: The person that verifies the Requirement

    1.5. Authoring paths

    As listed in the procedure description, requirements may be authored :

    • entirely in Jira

    • in Ketryx, leveraging the AI assistant for faster generation of compliant requirements, then synced to Jira

    2. Jira Procedure description

    Two authoring paths may be used. Jump to 2.14 to see the steps for authoring on Ketryx with the AI assistant.

    2.1. Jira Step 1: Log into Jira

    Anyone

    Log into your Jira organization, e.g., your-company.atlassian.net.

    2.2. Jira Step 2: Create

    Anyone

    1. Press the Create button in the top-level navigation to open the form to create a new Jira work item.

    2. Ensure the desired space (formerly project) is selected, and select the Work type "Requirement". If that does not appear, check with your system administrator to ensure your space is connected to Ketryx.

    3. Define an appropriate title in the Summary field.

    2.3. Jira Step 3: Navigate to the work item page

    Anyone

    Using the popover shown by Jira or by clicking the "All work" tab, navigate to the Jira page of the Requirement.

    2.4. Jira Step 4: Change status to In Progress

    Anyone

    Change the work item status to In Progress using the work item status selector.

    2.5. Jira Step 5: Draft/Author Requirement

    Item Assignee

    As needed, fill in the information in the fields of the Requirement.

    Ensure that at least the following fields are filled out:

    • Summary (title)

    • Assignee

    • Description

    • Introduced in version (unless the Requirement

    Set the Parent requirements as appropriate. These constitute the design input for this Requirement.

    The Requirement should be SMART (Specific, Measurable, Achievable, Relevant, and Testable). The Requirement should also:

    • be traceable to all other needed items, with clearly defined interfaces;

    • not conflict with another Requirement; and

    • conform to any provided design input.

    If new risks emerge from this Requirement, Anyone can create a new Risk item and trace it to the Requirement by including it in the Risks field.

    2.6. Jira Step 6: Change status to Resolved (Ready for Review)

    Anyone

    Once the Requirement is completed and ready for design verification, change its status to Resolved.

    2.7. Jira Step 7: Review as Owner

    Item Assignee

    Review the Requirement to verify:

    • The Requirement is traceable to all other needed items, and all interfaces are defined.

    • The Requirement is Specific, Measurable, Achievable, Relevant, and Testable (SMART).

    • The design output (the Requirement and its siblings) conforms to the design input (the Requirement’s Parent requirements).

    If the verification fails, reopen the ticket and, if needed, provide a comment on the reason it failed, then go to Step 5. If verification passes, approve the Requirement and continue to Step 11.

    2.8. Jira Step 8: Review as Product Manager

    Product Manager

    Review the Requirement to verify:

    • The Requirement is traceable to all other needed items, and all interfaces are defined.

    • The Requirement is Specific, Measurable, Achievable, Relevant, and Testable (SMART).

    • The design output (the Requirement and its siblings) conforms to the design input (the Requirement’s Parent requirements).

    If the verification fails, reopen the ticket and, if needed, provide a comment on the reason it failed, then go to Step 5. If verification passes, approve the Requirement and continue to Step 11.

    2.9. Jira Step 9: Review as R&D Lead

    R&D Lead

    Review the Requirement to verify:

    • The Requirement is traceable to all other needed items, and all interfaces are defined.

    • The Requirement is Specific, Measurable, Achievable, Relevant, and Testable (SMART).

    • The design output (the Requirement and its siblings) conforms to the design input (the Requirement’s Parent requirements).

    If the verification fails, reopen the ticket and, if needed, provide a comment on the reason it failed, then go to Step 5. If verification passes, approve the Requirement and continue to Step 11.

    2.10. Jira Step 10: Review as Quality Manager

    Quality Manager

    Review the Requirement to verify:

    • The Requirement is traceable to all other needed items, and all interfaces are defined.

    • The Requirement is Specific, Measurable, Achievable, Relevant, and Testable (SMART).

    • The design output (the Requirement and its siblings) conforms to the design input (the Requirement’s Parent requirements).

    If the verification fails, reopen the ticket and, if needed, provide a comment on the reason it failed, then go to Step 5. If verification passes, approve the Requirement and continue to Step 11.

    2.11. Jira Step 11: Transition to a controlled state

    Ketryx

    Only Ketryx can move a Requirement to a controlled and effective state by transitioning its status to Closed. Ketryx moves the Requirement to a Closed state after all approval rules have been passed, i.e., all required steps have approved the Requirement.

    Ketryx automatically adds a comment to the Jira work item with a link to the effective controlled record in Ketryx.

    2.12. Jira Step 12: Change

    Item Assignee

    Following a Change Request (i.e., the work item needs to be modified), reopen the Requirement to create a new record, and go back to Step 4.

    2.13. Jira Step 13: Mark as obsolete

    Item Assignee

    To mark a Requirement as obsolete (i.e., as not effective anymore, starting with a given version),

    • reopen it for change (Step 12);

    • set the version it will be obsolete in (i.e., where the first version that it will not be effective in anymore) in the Obsolete in version field;

    • resolve the work item (Step 6); and

    • approve the item (Steps 7-10).

    3. Ketryx Procedure Description

    3.1 Ketryx Step 1: Navigate to Ketryx Project

    Anyone

    Navigate to your Ketryx project in the web application at app.ketryx.com or, if applicable, your dedicated organization URL.

    3.2 Ketryx Step 2: Create Requirement

    Anyone

    You have two options for creating a Requirement in Ketryx:

    Option A (recommended): AI-Assisted Creation

    1. Open the Ketryx AI Assistant sidebar (click the AI assistant icon 🪄 in the top right of the page)

    2. Describe the requirement you want to create in natural language. Examples:

      • "Please create a new requirement for bluetooth connectivity"

      • "Create a requirement that the device must support wireless charging"

    Note: The AI Assistant can create multiple related requirements at once. For example: "Create 3 requirements for device battery management" will generate 3 separate requirement items.

    Option B: Manual Creation via UI

    1. Click the "+ Create" button in the top navigation bar or on the All Items page

    2. From the item type dropdown, select "Requirement"

    3. Define an appropriate title in the Title field

    4. Define an appropriate Assignee (the Item Assignee)

    3.3 Ketryx Step 3: Add assignee and status

    Anyone

    After creation, the all items page will automatically open, filtered on newly created item or items.

    Then, for each item created:

    1. Click on the item title to open the item record details page

    2. Click on edit item

    3. Add an assignee

    4. Change status to in progress

    3.4. Ketryx step 4: improve contents and traceability

    Item Assignee

    3.4.1 AI-Assisted Field Completion and enhanced quality checks

    1. Open the Ketryx Assistant sidebar

    2. Request AI assistance to check, complete or improve fields. Examples:

      • "Elaborate on all fields for this requirement"

      • "Make this requirement SMART-compliant"

    3.4.2 AI-Assisted Traceability Suggestions

    1. For relationship fields (e.g., Parent requirements, Introduced risks), click the 🪄 Suggest button next to the field.

    2. The Assistant will analyze your project and suggest relevant items to link. For example you can ask: "Check traceability for this item and suggest missing links", or "Verify this item has complete traceability per QMS requirements and suggest missing links"

    3. Review the suggestions and select appropriate items

    4. Procedure flow diagram

    5. Item schema

    • Description (rich text): The Requirement description. Requirements should be Specific, Measurable, Achievable, Realistic, Testable (SMART).

    • Introduced in version (version reference): The first version this item is effective in. If empty, the item is considered effective from the start of the project.

    • Obsolete in version (version reference): The version the item is becoming obsolete in, i.e. the first version that this item is not effective anymore.

    6. Traceability to other configuration items

    The following relations can be defined from a Requirement to other configuration items:

    • Requirement introduces risk Risk

    • Requirement has parent Requirement

    The following relations can be defined from other configuration items to a Requirement:

    • Requirement has child Requirement

    • Requirement is fulfilled by Software Item Spec, Hardware Item Spec

    • Requirement is implemented by Task

    Milestone status: Outdated
    Milestone status: Reapprovable
    Milestone status: Blocked By Missing Approval
    Extended Mode in the documentation
    quick demo video
    Complaint Agent
    quick demo video
    documents as configuration items
    custom relations
    quick video
    custom risk item types
    Learn more
    Group API
    Item API
    FIRST.org standard
    vulnerability rescoring
    here
    AI assistant
    EU Cyber Resilience Act
    FDA cybersecurity guidance
    here
    here
    See how it works in this quick video!
    integration
    Learn more
    Learn more

    Risk matrix

  • System requirement specification (with details)

  • System design specification

  • Test plan

  • Traceability matrix

  • is executable. The R&D Lead is consulted to approve that the
    Requirement
    is actionable.
  • Quality Managers: The person that verifies the Requirement is correctly documented. The Quality Manager is consulted to approve the Requirement is correctly documented.

  • Define an appropriate Assignee (the Item Assignee).

  • Provide additional preliminary information in the extra fields. (All fields can still be edited later.)

  • Press the Create button at the end of the form to finalize the creation of the new Jira work item.

  • is introduced from the start of the project)
  • "I need a SMART requirement for user authentication with biometric login"

  • Review the AI-generated requirement suggestion that appears in the chat

  • Click the "Review Suggestion" button that appears in the Assistant response

  • Review all auto-populated fields (title, description, etc.)

  • Make any necessary adjustments in the review dialog

  • Click "Create Item" to finalize the creation

  • Provide preliminary information in available fields (all fields can be edited later)

  • Click "Create" to create the new Requirement item

  • Save changes
  • [optional] improve contents and traceability - see Ketryx step 4

  • Use the back function of you browser to come back to the all items page filtered on the newly created items

  • "Add more detail to the description field"

  • "Does this requirement duplicate or conflict with any existing requirements?"

  • "What risks might this requirement introduce?"

    • The Assistant can create Risk items automatically if risks are identified

    • Establish traceability links using the Introduced risks field

  • Review the AI-generated edit suggestions

  • Click the "Review Suggestion" button

  • Review the proposed changes in the dialog and edit as needed

  • If you wish to keep the suggested changes, click "Apply Changes" to update the Requirement

  • Click "Add" to establish the traceability links

    Parent requirements (-> Requirement): Parent requirement(s) this requirement fulfills and refines, if any.

  • Relevant standards (short text): Standards, regulation, and guidance relevant to this requirement.

  • Requirement type: The type of this requirement.

  • Context: The context of this requirement.

    • Clinical

    • Safety

    • Security

    • Regulatory

  • Introduced risks (-> Risk): Risks introduced by this item.

  • Rationale (rich text): The rationale behind this item.

  • Requirement
    risk-controls
    Risk
  • Requirement is tested by Test Case

  • Requirement is affected by CAPA, Change Request, Anomaly

  • Requirement resolves Anomaly, Complaint

  • Requirement results from Change Request, CAPA

  • Navigate to the created work item
    Change work item status to In Progress
    Fill in work item details
    Change work item status to Resolved
    Approve as owner
    Approve as R&D Lead
    Work item transitioned to Closed by Ketryx
    Open issue creation form
    Select issue type Requirement

    TestRail

    Guide on the Ketryx integration with TestRail

    1. Introduction

    Ketryx provides seamless integration with TestRail, enhancing compliance and streamlining the management of test cases and requirements. This integration is purpose-built to

    • align your TestRail workflows with industry standards such as ISO 13485, IEC 62304, and ISO 14971,

    • synchronize data between Ketryx and TestRail to maintain consistent electronic records,

    • provide traceability from requirements to test cases and test results, and

    • enforce workflows that incorporate electronic approvals and audit trails for robust compliance.

    This guide offers step-by-step instructions for setting up and utilizing the integration, and answers to frequently asked questions.

    2. Setting up the integration

    To integrate Ketryx with TestRail, please ensure you have administrative permissions on both platforms. With the required permissions in place, proceed with the following steps:

    • Note: the initial connection should be made from a service account (e.g. [email protected]), which should have TestRail administrator privileges. It should NOT be someone's personal account, even if that person is an administrator.

    • Rationale: Whoever sets up the initial connection to Ketryx via the API will be credited with making the changes that Ketryx makes in TestRail. The biggest problem this creates is the danger that once the original person who sets up Ketryx leaves the company, typically, that person's IT credentials are revoked. In turn, this would revoke Ketryx's access to TestRail and cause the Ketryx/TestRail integration to stop working. (No data would be lost, but this is very annoying and potentially difficult to troubleshoot.)

    1. Log into TestRail.

    2. Make sure Enable API is active on the Administration->API page.

    3. Navigate to your settings and API KEYS.

    4. Create a new API KEY.

    After setting up the connection, test cases and results in TestRail can be seamlessly linked to requirements and other items within Ketryx.

    3. Frequently Asked Questions

    3.1. Q: How does Ketryx synchronize TestRail data?

    Ketryx synchronizes the following data between the platforms:

    • Test Cases: Test cases in TestRail are imported into Ketryx as Test Cases (TEST_PROTOCOL) items.

    • Test Executions: Test executions in Ketryx are generated based on the Run + Result combination in TestRail, creating an item of type TEST_EXECUTION in Ketryx.

    • Test Plans: Test plans in TestRail are imported into Ketryx as Test Plan (TEST_PLAN

    3.2. Q: Can I customize how Ketryx maps TestRail fields?

    Yes. Ketryx provides that enable you to define how TestRail fields map to Ketryx items. For instance, you can configure TestRail’s Template or Result fields to specific Ketryx attributes.

    3.3. Q: What happens to deleted test cases or results in TestRail?

    When a test case or result is deleted in TestRail:

    • It is marked as deleted in Ketryx but remains linked for traceability.

    • No further updates are synchronized unless the test case or result is reactivated in the case of soft deletion.

    3.4. Q: How do I handle changes in TestRail schema (e.g., custom fields)?

    If you add custom fields in TestRail, you can update the Ketryx configuration to recognize them using the setting.

    3.5. Q: How do I handle versions?

    There are multiple ways to handle versioning between Ketryx and TestRail. These options are prioritized in descending order:

    1. Custom Field Mapping: Create a custom field in TestRail and map it to introducedInVersion in Ketryx.

    2. Version Field: Use the default version field in TestRail results.

    3. Parent Milestone: If the milestone name in TestRail matches the , it will be used as the version.

    3.6. Q: Which types of TestRail projects are supported?

    Ketryx supports the following types of TestRail projects:

    • Single Repository for All Cases (Recommended): This is fully supported without additional configuration and offers seamless synchronization.

    • Single Repository with Baseline Support: Supported with custom configuration to map baselines effectively to Ketryx structures.

    These options ensure compatibility and flexibility when integrating different TestRail project setups with Ketryx.

    3.7. Q: What to connect webhooks?

    Configuring the webhook URL in TestRail:

    To enable real-time synchronization between TestRail and Ketryx, configure a webhook in TestRail pointing to your Ketryx instance:

    1. In TestRail, navigate to Administration > Integrations > Webhooks

    2. Click Add Webhook

    3. Set the webhook URL to: [your Ketryx instance]/api/integrations/testrail/webhook

    Webhook payload format:

    When configuring webhooks in TestRail to notify Ketryx of changes, the webhook payload should follow this format:

    Payload fields:

    • event_type (required): The type of event that triggered the webhook

    • event_created (required): Timestamp when the event occurred

    • data.project_id (required): The TestRail project ID

    When an event is received, Ketryx will schedule a project update to synchronize the changes from TestRail.

    Testing the webhook:

    To verify that your webhook is configured correctly, you can send a test payload with event_type set to "test":

    This test event will return a success response (HTTP 200) without triggering any data synchronization, allowing you to verify connectivity.

    4. TestRail Configuration

    4.1. Overview

    The TestRail settings in Ketryx enable users to configure how TestRail-specific fields map to Ketryx items. This mapping ensures accurate data synchronization between the two systems, maintaining traceability and compliance. These configurations are crucial for integrating test cases, test executions, and test plans into Ketryx workflows seamlessly.

    The configuration includes four primary mapping types:

    1. TestRail field type mapping: Matches TestRail fields to Ketryx attributes for test cases, test executions, and test plans.

    2. TestRail status mapping: Aligns TestRail statuses with Ketryx item states.

    3. TestRail result mapping: Converts TestRail test result statuses to Ketryx result states.

    4. TestRail work item relations mapping: Maps TestRail fields to create relational links in Ketryx with items in external systems.

    4.2. TestRail field type mapping

    The TestRail field type mapping defines how TestRail fields (e.g., custom fields) are translated into Ketryx attributes for various entities such as test cases, test executions, and test plans.

    All custom fields from TestRail must be prefixed with custom_ in the configuration.

    Example configuration

    • TEST_PROTOCOL: Maps fields for test case templates and default configurations.

    • TEST_EXECUTION: Maps fields for test execution data.

    Refer to for a complete list of built-in fields available in Ketryx.

    4.3. Mapping Fields to Extra field names

    It is possible to map fields to Extra field names. To do this, assign a label key in the TestRail field type mapping and use the same key in the Extra field names setting.

    Example:

    TestRail field type mapping:

    Extra field names:

    4.4. TestRail Status Mapping

    The TestRail status mapping aligns TestRail status names with Ketryx item states such as OPEN, REOPENED, IN_PROGRESS, RESOLVED, or CLOSED.

    Example configuration

    • Backlog in TestRail maps to Open in Ketryx.

    • Done in TestRail maps to Resolved in Ketryx.

    Refer to for a complete list of Ketryx statuses.

    4.5. TestRail Result Mapping

    The TestRail result mapping converts TestRail test result statuses to Ketryx result states like PASSED, FAILED, or PASS_WITH_EXCEPTION.

    Example configuration

    Passed in TestRail maps to Pass in Ketryx. Failed in TestRail maps to Fail in Ketryx.

    Refer to for a complete list of Ketryx result states.

    4.6. TestRail work item relations mapping

    The TestRail work item relations mapping links TestRail fields with items in external systems (e.g., Jira, Git, ...). This ensures test cases and executions are correctly related to development or work item-tracking items.

    Example configuration

    • sourceField: The field in TestRail to map.

    • relationType: The type of relation in Ketryx (e.g., AFFECTS, RELATES_TO).

    • targetSystem: The external system where the target item resides (e.g., Jira, TestRail, Git).

    Refer to for a complete list of Ketryx relation types.

    Note: When Jama is selected as the "targetSystem", the "sourceField" section must include the pre-fix "custom_case_" followed by your custom field in order to map Jama items to TestRail test cases.

    4.7. TestRail sync configuration

    Recommendation: For best results, configure sync filters at the organization level before initiating the first synchronization to limit the scope and avoid syncing irrelevant data. After the initial sync, you can always adjust the configuration at the project level to include more items as needed for flexibility.

    The TestRail sync configuration allows advanced control over which TestRail items are synchronized with Ketryx and under what conditions. This is useful for teams that want fine-grained control over what data is imported based on naming patterns, baseline types, completion status, and sync scope.

    This configuration consists of three main sections:

    1. syncFilter

    Controls which items are included in the sync using regular expression patterns.

    • milestonePattern: Regex to match milestone names (e.g., 'v\\d+\\.\\d+', 'release-.*', 'sprint-\\d+', '.*')

    • subMilestonePattern: Regex to match sub-milestone names. This setting only works when syncScope is set to 'Milestone' and milestonePattern is also configured. Use '.*'

    1. syncOptions

    Controls how completed items are handled and whether to include the master baseline.

    • includeMasterBaseline: true includes the master baseline; false skips it.

    • includeCompletedItems: Set which completed items to include or skip: milestones, baselines, runs, plans: Each can be true or false

    1. syncScope

    Controls the overall sync scope:

    • 'All': Syncs all items, regardless of milestone.

    • 'Milestone': Syncs only items associated with milestones that match milestonePattern.

    1. editTestResultWindow

    Controls the edit window for test results, which should align with your TestRail configuration:

    This setting should match your TestRail configuration found under: Admin > Site Settings > User Interface > Editing Test Results. The default value is '1day' to match TestRail's default edit window.

    Available options:

    • 'disabled': No editing allowed after test execution

    • '1min': 1 minute edit window

    • '2min': 2 minutes edit window

    Example configurations

    Default configuration:

    This configuration:

    • Syncs all milestones, sub-milestones, and baselines

    • Includes master baseline

    • Includes all completed items

    • Syncs everything regardless of milestone associations

    Version-Specific configuration:

    This configuration:

    • Only syncs version-style milestones (e.g., v1.0, v2.1) and all their sub-milestones

    • Only includes the master baseline

    • Skips all completed items

    • Only syncs milestone-related items

    Sub-Milestone Filtering configuration:

    This configuration:

    • Only syncs milestones that match the pattern release-.* (e.g., release-v1.0, release-v2.1)

    • Only includes sub-milestones that match the pattern sprint-\\d+ (e.g., sprint-1, sprint-2)

    • Includes all baselines

    For more advanced filtering scenarios, consult the TestRail sync configuration setting in your organization's configuration panel or integration setup screen.


    For more detailed instructions and advanced configuration options, please refer to the section of the documentation.

    Jama

    Guide on the Ketryx integration with Jama

    1. Introduction

    Ketryx provides seamless integration with Jama, enhancing compliance and streamlining the management of configuration items and releases. This integration is purpose-built to

    • align your Jama workflows with industry standards such as ISO 13485, IEC 62304, and ISO 14971,

    • synchronize data between Ketryx and Jama to maintain consistent electronic records,

    • provide traceability across requirements and to test cases and test results, and

    • enforce workflows that incorporate electronic approvals and audit trails for robust compliance.

    This guide offers step-by-step instructions for setting up and utilizing the integration, and answers to frequently asked questions.

    2. Setting up the integration

    To integrate Ketryx with Jama, please ensure you have the REST API enabled in your Jama instance, and you have administrative permissions on both platforms. If so, proceed with the following steps:

    • Note: the connection should be made from a service account (e.g. [email protected]), which must have a named Creator license and needs to have Jama administrator privileges. It should NOT be someone's personal account, even if that person is an administrator.

    • Rationale: Whoever sets up the connection to Ketryx via the API will be credited with making the changes that Ketryx makes in Jama. The biggest problem this creates is the danger that once the original person who sets up Ketryx leaves the company, typically, that person's IT credentials are revoked. In turn, this would revoke Ketryx's access to Jama and cause the Ketryx/Jama integration to stop working. (No data would be lost, but this is potentially difficult to troubleshoot and easily avoidable.)

    1. Create API credentials

    2. As an organization admin, log into Jama.

      1. Make sure to have a named Creator license (ADMIN > Users).

    After setting up the connection, Ketryx projects can be created and linked with one Jama project each.

    Jama has announced a breaking change regarding licensing. As of November 2025, API access requires a named Creator license. Please make sure to verify the user used for the Jama connection has the correct license before that. Otherwise, the Ketryx integration will not be able to pull information from Jama, hence items will become out of sync.

    If you wish to change the user used for the Jama connection, please refer to .

    3. Frequently Asked Questions

    3.1. Q: How does Ketryx synchronize Jama data?

    By default, Ketryx synchronizes the following data between the platforms:

    • Defect: Any item of a Jama item type used as Defect is imported into Ketryx as Anomaly item.

    • Test Cases: Any item of a Jama item type used as Test Case is imported into Ketryx as Test Case item.

    • Test Runs: A Jama Test Run is mapped to a Test Execution in Ketryx.

    Default mapping and customization

    Aside from these well-known item types Ketryx also comes with default mappings which can be customized. Such default mappings include, but are not limited to:

    • IU (Intended Use): Mapped to Requirement of requirement type Intended use.

    • SOFTW (Software Requirement): Mapped to Requirement of requirement type Software system.

    • SOFTWI (Software Item): Mapped to Software Item.

    Hierarchical Structure Items

    Ketryx can import and map Jama's hierarchical structure items (Components, Sets, and Folders) and maintain their relationships.

    Component, Set, and Folder items can be mapped to custom items in Ketryx.

    The Jama item location can be mapped to Ketryx relationships, which can be mapped to Ketryx relationships using the relationship key ketryx:JAMA_HIERARCHY_PARENT. For details on how to enable mapping of these items, please refer to Section .

    To override or add custom item type mappings, use .

    3.2. Q: Can I customize how Ketryx maps Jama fields and relationships?

    Yes. Ketryx provides that enable you to define how Jama fields map to Ketryx items. For instance, you can configure a Jama release field to map to Ketryx versions.

    As with item types, Ketryx comes with default mappings for common Jama fields, such as but not limited to Title, Description and Test Run Status as well as default relationship mappings, e.g., Validation is mapped to Tests in Ketryx.

    3.3. Q: How do I handle changes in Jama schema (e.g., custom fields)?

    If you add custom fields in Jama, you can configure Ketryx to recognize them using the setting, either as a default for all item types or specifically for a given type (category).

    3.4. Q: What happens to deleted items?

    When any item is deleted in Jama it is marked as deleted in Ketryx but remains linked for traceability.

    3.5. Q: How do I handle approvals?

    Ketryx has a fully customizable supporting Part 11 compliant electronic signatures. Approvals can be required for specific Jama item types and statuses. Once an item is fully approved, a status transition can be triggered, which can also be synchronized back to Jama. Further, the Jama item locking mechanism can be invoked, too.

    The Jama integration also supports accepting a given Jama item status as approved. In this case, the Jama item does not need to be re-approved in Ketryx, thus supporting Jama-only approval workflows.

    Ketryx will comment on items in Jama as they move through the approval workflow so that users have context. These comments will be made automatically upon approval, , or .

    Refer to the for details.

    3.6. Q: How do I handle releases?

    There are multiple ways to handle releases in Jama, thus there are multiple options how to set up the integration. These non-prioritized options are currently supported:

    1. Default release field: Use Jama's built-in default release field and map it to introducedInVersion in Ketryx.

    2. Custom release fields: Use one, or ideally two, custom release1 and release2 fields and map them to introducedInVersion and obsoleteInVersion, respectively, in Ketryx.

    Note that, whichever method is used, whenever release changes in Jama, it will also change in Ketryx and potentially invalidate the item.

    Ketryx infers version numbers from the Jama release's or picklist option's name. If a version with the same version number as a Jama release already exists in Ketryx, the Jama release will be associated with it. To have Jama determine version properties, such as the name, set accordingly.

    3.7. Q: How can I use the Jama item hierarchy in Ketryx?

    Jama structures its items in a hierarchical structure made of items of the types "Component", "Set" and "Folder". In Ketryx, users can map these to custom items and relations and use them like normal.

    Based on that, users can reflect that hierarchy in Ketryx-generated documents by setting up a custom traceability matrix and use the grouping-feature of the document templating system. The full example can be found in .

    3.8. Q: How do I update the Jama connection credentials?

    Jama connections are identified by their URL, i.e., you can add a new connection with the same URL as the previous one and provide the updated credentials. This will update any existing connection pointing to the same Jama instance.

    If you delete and recreate the connection or add an entirely new Jama connection with a different URL, those will be treated as a new connection, i.e., existing projects connected to a now deleted Jama connection will stop to sync.

    Please note that the credentials you provide should have admin permissions to have full access to read Jama users and type configuration and for the integration to deal with item locks.

    4. Jama Configuration

    4.1. Overview

    The Jama settings in Ketryx enable users to configure how Jama items map to Ketryx items. This mapping ensures accurate data synchronization between the two systems, maintaining traceability and compliance. These configurations are crucial for integrating requirements, defects, tests, releases etc. into Ketryx workflows seamlessly.

    The configuration includes the following:

    1. Jama item mapping: Matches Jama item types to Ketryx item types including default types such as Test Plan but also your own custom types.

    2. Jama item status mapping: Aligns Jama statuses with Ketryx item states.

    3. Jama item relationships mapping: Maps Jama fields to create relational links in Ketryx with items in external systems.

    4. Jama field type mapping

    As organization admin, you can find your Jama item types, their fields and your relationship types in the Jama ADMIN center.

    Furthermore, general advanced settings can be relevant, too, such as Approval workflow to enable approvals, optionally with status transitions. These are done in Ketryx and a sync back to Jama.

    Refer to for a complete list of available settings.

    4.2. Jama item mapping

    The Jama item mapping defines how Jama item types are translated into Ketryx item types, e.g., a type Use Case in Jama would become a Requirement of requirement type Use case.

    Example Configuration

    • jamaItemType: The item type in Jama (use the Key or Display name).

    • itemType: The item type in Ketryx; either a system type, e.g., REQUIREMENT or the display name of a custom item type as specified in the .

    • fieldValues: Bind static values based on the Jama item type, e.g., specifying a

    To disable a default mapping, null can be specified as the target field or target relationship or even as itemType. The former means specific fields and relationships will not be read in future syncs, i.e., affected items will receive new records. A null-item type means the entire item is not read anymore, i.e., will not receive any updates in future syncs. If items of that type had been synced before, and you do not want to keep them in your project, you may choose to exclude them.

    Refer to and for a complete list of built-in types and fields available in Ketryx.

    4.3. Jama item status mapping

    The Jama item status mapping aligns Jama status names with Ketryx item states such as OPEN, REOPENED, IN_PROGRESS, RESOLVED, or CLOSED.

    Example Configuration

    • Backlog in Jama maps to Open in Ketryx.

    • Done in Jama maps to Resolved in Ketryx.

    Refer to for a complete list of Ketryx statuses.

    4.5. Jama item relationships mapping

    Note, that since 2.11.3, this setting has been superseded by the more granular, type-specific Jama item mapping settings.

    The Jama item relationships mapping maps relationships from Jama to Ketryx relationship types. This mapping also works with custom relations.

    Note, that the hierarchical item structure in Jama is always mapped to has parent relationships. Additionally, for more flexibility, a relationship type for parent-relations can be used in Jama and mapped to Ketryx.

    Example Configuration

    Custom relations example

    Given a custom relation with ID SW_TO_RQ:

    • Related to relations in Jama map to Relates to in Ketryx.

    The following relations are mapped by default:

    • Related to: Relates to

    • DI - DO: Fulfills

    • Validation and Verification: Tests

    • Change Request: Affects

    Refer to for a complete list of Ketryx relation types.

    4.6. Jama field type mapping

    Note, that since 2.11.3, this setting has been superseded by the more granular, type-specific Jama item mapping settings.

    The Jama field type mapping defines how Jama fields (e.g., custom fields) are translated into Ketryx attributes. This is done globally across all item types.

    To provide static values based on an item type, refer to .

    Example Configuration

    • release1/release2: Maps Jama release fields to a corresponding Ketryx version.

    • deferFix: Maps a (rich) text field named deferFix to rationaleForDeferringResolution.

    The following standard Jama fields are always mapped to corresponding Ketryx fields:

    • Name

    • Description

    • Test Case Steps

    • Test Run Steps

    The following field mappings are included by default but can be overridden:

    • Status

    • Assigned to

    Refer to for a complete list of built-in fields available in Ketryx.

    4.7. Map the Jama item hierarchy aka location to Ketryx document templates

    Note, that this is an advanced configuration. If a configuration is not avalable or if you need help setting this up please do not hesitate to .

    1. For the Ketryx organization configure

      1. a custom item type for Jama folders

      1. and a custom relation for the Jama location.

    2. For the Ketryx organization or project settings configure


    For more detailed instructions and advanced configuration options, please refer to the section of the documentation.

    How to Create a GxP-Compliant Software System

    Creating validation documentation for requires systematic evidence that your system performs as intended and is under control. In this How-to Guide you will transform a new or existing software system into a validated GxP-compliant system using (CSV) or (CSA) principles.

    This guide will help you understand the GxP landscape and provide instructions to build your compliant system with - all while generating necessary evidence such as and tables as a byproduct of your work.

    While GxP compliance involves many other aspects, such as building a (QMS) and establishing system specific SOPs and other documentation, these topics fall outside the scope of this guide.

    Determining Your Validation Requirements

    Create Jira issue

    Log in to Ketryx.

  • In Ketryx, navigate to the organization connections page click Add TestRail connection.

  • Provide the required TestRail credentials (e.g., API key, instance URL and email) to establish the connection.

  • Confirm the integration in Ketryx and map TestRail projects to corresponding Ketryx projects.

  • ) items. These items incorporate all the relationships established in TestRail by the runs and can be manually managed within Ketryx. Alternatively, they can be automatically synchronized if the setting
    is enabled.
    Plan Name: If all the above options fail, Ketryx will attempt to use the plan name, matching it with the Version Number Pattern.
    For example: https://app.ketryx.com/api/integrations/testrail/webhook
  • Configure the webhook to trigger on relevant events (e.g., test case updates, test result changes)

  • data.url (optional): URL related to the event
    to match all sub-milestones, or specific patterns to filter which sub-milestones to sync.
  • baselinePattern: Regex to match baseline/suite names (e.g., 'master', 'baseline-\\d+', 'regression-.*', '.*')

  • .
    '5min': 5 minutes edit window
  • '10min': 10 minutes edit window

  • '15min': 15 minutes edit window

  • '30min': 30 minutes edit window

  • '2hours': 2 hours edit window

  • '1day': 1 day edit window (default)

  • '3days': 3 days edit window

  • 'unlimited': No time limit for editing test results

  • Uses the default 1-day edit window for test results

    Uses the default 1-day edit window for test results

    Includes all completed items
  • Only syncs milestone-related items

  • Uses the default 1-day edit window for test results

  • advanced settings for TestRail
    TestRail field type mapping
    Version number pattern
    Fields
    Status mapping
    testResult
    relationType
    Ketryx Integration Settings
    Automatically update release test plan based on external test plan(s)
    Open your user profile page (click your name in the top right corner) and navigate to
    Set API Credentials
    .
  • Provide a name for the credentials and click Create API Credentials.

  • Take note of the Client ID and Client Secret, respectively — the secret is shown only once.

  • As Ketryx admin, log in to Ketryx.

    1. Navigate to Organization, then Connections and click Add Jama connection.

    2. Provide the required credentials (i.e., URL of your instance and OAuth credentials from above) to establish the connection.

  • Confirm the integration in Ketryx by navigating to the Create project page where the Jama section will now have a dropdown listing your Jama projects.

  • Test Plans: A Jama Test Plan is mapped to a Test Plan in Ketryx. These items incorporate all the relationships established in Jama (i.e, test cases and runs) and can be manually managed within Ketryx. Alternatively, they can be automatically synchronized if the setting "Automatically update release test plan based on external test plan(s)" is enabled.

    HRM (Harm): Mapped to Risk.

  • VAL (Validation): Mapped to Test Case of test type Validation.

  • VER (Verification): Mapped to Test Case of test type Verification.

  • DEF (Defect): Mapped to Anomaly item

  • Picklists: Alternatively to Jama releases you may use a picklist as versions. All relevant item types should then have a single- or multi-select-field using that picklist. To switch to this mode, the Jama release mapping is used, rather than field mappings. This cannot be combined with Jama releases.

    : Matches Jama fields to Ketryx attributes.
    requirementType
    or
    testType
    .
  • fields: Map Jama fields to one or many Ketryx system- and custom fields, e.g., mapping the workflow_status field in Jama to the statusName field in Ketryx. This takes precedence over global field mapping. Note, when mapping to a custom item type, each available target field must also be added the custom type, including system fields.

    • Fields that are set to item IDs of Jama or other connected systems may also be mapped as relationship; refer to relationships below.

  • relationships: Map Jama relationships to Ketryx relationships. This takes precedence over global relationship mapping.

    • targetSystem: any source system supported by and connected to Ketryx (Jama, Jira, Git, ...)

    • relationType: the Ketryx relation type (e.g., RELATES_TO, TESTS, etc.) or the name of a custom relation type.

    • isUpstream: indicates whether the relationship is inverse (only when mapping to Jama).

  • Test Run Status

  • the Jama item mapping for the Jama items to these folders

    1. configure a custom traceability matrix for the Jama hierarchy with as many levels as needed.

  • In document templates, use grouping to reflect the hierarchy.

    1. Feel free to use the following template to get started:

  • 3.8. Q: How do I update the Jama connection credentials?
    4.2, 'Jama Item Mapping'
    advanced settings for Jama
    advanced settings for Jama
    Jama type mapping
    approval workflow
    rejection
    invalidation
    Approval workflow
    Integration precedence
    4.7. Map the Jama item hierarchy aka location to Ketryx document templates
    Advanced settings
    organization settings
    Item types
    Fields
    Status mapping
    relationType
    Jama item mapping
    Fields
    reach out
    15KB
    jama-grouping-template.docx
    Open
    Ketryx Advanced Settings
    {
      "event_type": "%event_type%",
      "event_created": "%event_created%",
      "data": {
        "project_id": "%project_id%",
        "url": "%url%"
      }
    }
    {
      "event_type": "test"
    }
    {
      "TEST_PROTOCOL": {
        "DEFAULT": {
          "refs": "refs",
          "description": "custom_description",
          "introducedInVersion": "custom_prd_ver",
          "steps": "custom_steps_separated",
          "expectedBehavior": "custom_expected"
        },
        "My Custom Template": {
          "refs": "refs",
          "description": "custom_description_for_steps",
          "introducedInVersion": "custom_version",
          "steps": "custom_steps",
          "expectedBehavior": "custom_expected_behavior"
        }
      },
      "TEST_EXECUTION": {
        "description": "custom_execution_desc",
        "introducedInVersion": "custom_exec_prd_ver",
        "steps": "custom_step_results",
        "expectedBehavior": "custom_expected_exec"
      }
    }
    {  
      // ...
      "TEST_EXECUTION": {
        "description": "custom_execution_desc",
        "introducedInVersion": "custom_exec_prd_ver",
        "steps": "custom_step_results",
        "expectedBehavior": "custom_expected_exec",
        "My custom field to be tracked": "custom_tr_field"
      }
    }
    ["My custom field to be tracked"]
    {
      "Backlog": "OPEN",
      "Done": "RESOLVED"
    }
    {
      "passed": "PASS",
      "failed": "FAIL"
    }
    [
      {
        "sourceField": "custom_case_custom_field",
        "relationType": "TESTS",
        "targetSystem": "Jama"
      }, 
      {
        "sourceField": "my_custom_field",
        "relationType": "AFFECTS",
        "targetSystem": "Jira"
      }
    ]
    "syncFilter": {
      "milestonePattern": "v\\d+\\.\\d+",   // Example: matches 'v1.0', 'v2.1'
      "subMilestonePattern": ".*",           // Example: matches all sub-milestones
      "baselinePattern": "master"           // Example: matches only the 'master' baseline
    }
    "syncOptions": {
      "includeMasterBaseline": true,
      "includeCompletedItems": {
        "milestones": false,
        "baselines": false,
        "runs": false,
        "plans": false
      }
    }
    "syncScope": "Milestone"
    "editTestResultWindow": "1day"
    {
      "syncFilter": {
        "milestonePattern": ".*",
        "subMilestonePattern": ".*",
        "baselinePattern": ".*"
      },
      "syncOptions": {
        "includeMasterBaseline": true,
        "includeCompletedItems": {
          "milestones": true,
          "baselines": true,
          "runs": true,
          "plans": true
        }
      },
      "syncScope": "All",
      "editTestResultWindow": "1day"
    }
    {
      "syncFilter": {
        "milestonePattern": "v\\d+\\.\\d+",
        "subMilestonePattern": ".*",
        "baselinePattern": "master"
      },
      "syncOptions": {
        "includeMasterBaseline": true,
        "includeCompletedItems": {
          "milestones": false,
          "baselines": false,
          "runs": false,
          "plans": false
        }
      },
      "syncScope": "Milestone",
      "editTestResultWindow": "1day"
    }
    {
      "syncFilter": {
        "milestonePattern": "release-.*",
        "subMilestonePattern": "sprint-\\d+",
        "baselinePattern": ".*"
      },
      "syncOptions": {
        "includeMasterBaseline": true,
        "includeCompletedItems": {
          "milestones": true,
          "baselines": true,
          "runs": true,
          "plans": true
        }
      },
      "syncScope": "Milestone",
      "editTestResultWindow": "1day"
    }
    {
      "version": "3",
      "defaultColumnId": "Level1",
      "rtmApprovalEnabled": false,
      "columns": [
        {
          "kind": "design",
          "title": "Level 1",
          "columnId": "Level1",
          "itemFilter": "!\"located in\":* and \"location of\":*"
        },
        {
          "kind": "design",
          "title": "Level 2",
          "columnId": "Level2",
          "relations": [
            {
              "kind": "direct",
              "relationType": "JAMA_LOCATION",
              "referencedColumnId": "Level1"
            }
          ],
          "itemFilter": "\"located in\":(!\"located in\":*)"
        },
        {
          "kind": "design",
          "title": "Level 3",
          "columnId": "Level3",
          "relations": [
            {
              "kind": "direct",
              "relationType": "JAMA_LOCATION",
              "referencedColumnId": "Level2"
            }
          ],
          "itemFilter": "\"located in\":(\"located in\":(!\"located in\":*))"
        }
      ]
    }
    [
      {
        "jamaItemType": ["SOFTW", "HARDW"],
        "itemType": "REQUIREMENT",
        "fieldValues": { "requirementType": { "value": "Software system" } },
        "fields": {
          "requirement_status": "statusName",
          "related_git": {
            "type": "references",
            "targetSystem": "Git",
            "relationType": "RELATES_TO"
          }
        },
        "relationships": {
          "Related to": "RELATES_TO",
          "New test": {
            "targetSystem": "Jama",
            "relationType": "TESTS",
            "isUpstream": true
          }
        }
      },
      {
        "jamaItemType": "CR",
        "itemType": "CHANGE_REQUEST"
      },
      {
        "jamaItemType": "dFMEA",
        "itemType": "RISK",
        "fields": {
          "description": "sequenceOfEvents",
          "severity": {
            "type": "mapToMany",
            "toFields": ["initialSeverityText", "residualSeverityText"]
          }
        }
      },
      {
        "jamaItemType": "*",
        "fields": { "workflow_status": "statusName" }
      }
    ]
    {
      "Backlog": "OPEN",
      "Done": "RESOLVED"
    }
    {
      "Related to": "RELATES_TO"
    }
    {
      "Parent": "SW_TO_RQ"
    }
    {
      "release1": "introducedInVersion",
      "release2": "obsoleteInVersion",
      "deferFix": "rationaleForDeferringResolution"
    }
    [
      {
        "name": "Folder",
        "shortName": "FLD",
        "lifecycle": "LONG_LIVED",
        "fields": [],
        "isEditableInKetryx": false
      }
    ]
    {
      "JAMA_LOCATION": {
        "fieldName": "Located in",
        "relationName": "located in",
        "sourceItemTypes": ["Folder"],
        "targetItemFilter": "type:FLD",
        "reverseFieldName": "Location of",
        "reverseRelationName": "location of"
      }
    }
        [
          {
            "itemType": "Folder",
            "jamaItemType": ["Component", "Set", "Folder"]
          },
          {
            "jamaItemType": "*",
            "relationships": { "ketryx:JAMA_HIERARCHY_PARENT": "JAMA_LOCATION" }
          }
        ]
    Understanding Key Terms

    Before determining your validation needs, let’s clarify the regulatory landscape:

    GxP (Good "x" Practices)

    GxP is a general term for a set of quality guidelines and regulations designed to ensure that pharmaceutical and life science products are safe, effective, and of high quality. The "x" can stand for various areas, such as:

    • GMP = Good Manufacturing Practices (drug/biologic manufacturing)

    • GCP = Good Clinical Practice (clinical trials)

    • GLP = Good Laboratory Practice (non-clinical lab studies)

    • GDP = Good Distribution Practice (supply chain)

    • GAMP = Good Automated Manufacturing Practice

    This guide focuses on GxP validation, which typically follows the GAMP 5 framework for software and computerized systems. If you’re developing medical device software, refer to this guide instead: How to generate the Design History File for your medical device

    CSV vs CSA

    CSV and CSA are both regulatory-compliant approaches to demonstrating that your software performs as intended. Your choice between CSV and CSA will determine how much documentation you will create, how long validation will take, and how much it may cost. The FDA encourages CSA adoption to improve software quality by focusing effort where it matters most.

    CSV (Computerized System Validation)

    CSV is the traditional, documentation centered approach that has been the industry standard since the 1990s. It treats all system functions with similar rigor regardless of risk.

    Core Philosophy: “Test everything, document everything”

    Key Characteristics:

    • Exhaustive documentation of every requirement, design decision, test case, and result

    • Step-by-step test scripts with predetermined expected results for all functions

    • Any changes require an impact assessment, revalidation, and full documentation

    CSA (Computer Software Assurance)

    CSA represents the shift to allow teams to develop and test software using a risk-based approach. Introduced through draft guidance in 2022, CSA enables teams to focus on safety-critical elements of their software rather than complete system validation.

    Core Philosophy: “Think critically, test what matters, document what is valuable”

    Key Characteristics:

    • High-risk features get rigorous testing; low-risk features get basic verification

    • Exploratory testing acceptable for non-critical functions

    • Accept vendor’s testing for core functionality (detailed in GAMP-5 Section 7)

    • Emphasis on ongoing monitoring as opposed to point-in-time validation

    Emphasizing GxP’s Core Principle

    The core principle of GxP is to ensure that products are consistently produced and controlled according to high-quality standards. The ultimate goal of GxP is to protect the public by guaranteeing the safety, quality, and efficacy of regulated products, particularly in the pharmaceutical, medical device, and food industries. Validation is a core GxP Quality Process. The V-model is a project management and software / systems engineering framework that is commonly used in GxP settings, particularly in the context of GxP-regulated software.

    Highlighted above are the out-of-the-box V-model configurations available in Ketryx. These templates can be further configured to match your specific workflows.

    Build a GxP System

    (Video guides included)

    Step 0: Key Terminology

    Requirements and Intended Use

    To start, we need to explain what the system will do and how users will use it. This is called the Intended Use and is typically about a paragraph (see example below). Depending on the system's nature, the intended use can be quite complex.

    Intended Use Statement Example: This Electronic Document Management System (EDMS) is intended to securely store, control, and manage GxP-critical documents, including but not limited to, Standard Operating Procedures (SOPs), batch records, and quality agreements, throughout their lifecycle. It ensures data integrity, traceability, and accessibility for regulatory compliance and supports decision-making related to product quality and patient safety.

    Once we have a good Intended Use statement, and perhaps a few slides or documents that explain the product, you need to write a set of requirements that explain what users need the system to do, and how it will accomplish those functions. Collectively, these requirements are called design inputs, as they are inputs to the system design. This is where AI agents can radically accelerate your work - and we will get to that after we discuss risks.

    Types of Requirements:

    Systems typically include the following requirement categories:

    • User Requirements Specification (URS): What the end-users need the system to do.

    • Functional Specifications (FS): Detailed descriptions of how the system will meet the URS.

    • Non-functional Requirements: Performance, security, scalability, usability, and data integrity requirements.

    • Regulatory Requirements: Specific GxP regulations applicable to the software's intended use.

    Risk Management

    Risk management is crucial in GxP environments, ensuring product quality, patient safety, and data integrity by identifying, assessing, mitigating, and monitoring risks throughout a product's lifecycle. While more has been written about risk management than can be covered in this short guide, we recommend exploring standards like GAMP-5, ISO 14971, and other recognized bodies of work for deeper understanding.

    GxP Risk Management Basics

    For GxP compliance, risk management is a regulatory expectation. Key principles include:

    • Proactive, Science-Based Approach: Identify risks early using scientific evidence.

    • Thorough Documentation: Document all risk activities.

    • Lifecycle Management: Continuously review and re-evaluate risks.

    • Patient Safety & Product Quality Focus: Primary objective is to protect patients and ensure quality.

    • Proportionality: Effort should match risk level.

    Common methodologies include FMEA, HACCP, PHA, and Risk Matrices. For further reading on Risk Management in Ketryx please review Manual-08: Risk Management

    Step 1: Building Your Initial Requirements and Risks

    To develop your requirements, risks, and design inputs, we will use Ketryx's Design Input Agent. This agent will take in your intended use statement and any other supporting materials (slides, marketing docs, product briefs) and transforms them into a comprehensive set of traced requirements, risks, and tests.

    Creating Your Project and Running the Design Input Agent

    🎥 Watch Video 1: Setting Up Your Project and Running the Design Input Agent Start by creating a new project in Ketryx and selecting the appropriate V-model template for your product. Once your project is set up, navigate to the Agents tab and select the Design Input Creation Agent. Attach your project brief or intended us documentation, then run the agent

    Review Agent Output

    🎥 Watch Video 2: Understanding the Design Input Agent Output

    After the agent completes its run, review the generated configuration items in the Summary tab. You’ll see that the agent created a number of requirements, risks, designs, and tests, all with established traceability. Explore the logic the agent used and review the items in the All Items screen.

    The local traceability view shows how individual items relate to each other while the global traceability view provides a full picture of all items and their relationships.

    You’ll notice the traceability checks at the top of the screen that indicate completion status. For example, you might see that certain design inputs lack validation tests. These gaps are normal at this stage. We will address them in the following steps.

    Refining Requirements with AI Assistance

    🎥 Watch Video 3: Running Quality Checks on Items

    Before completing your traceability matrix, use the Ketryx AI Assistant to run quality checks on your design inputs. This ensures they’re written clearly, meet GAMP 5 standards, and are testable.

    Example prompt: "Please run a quality check on all of my design inputs, ensuring they meet GAMP 5 standards. For each requirement, make sure it is written clearly and testable, and that it aligns with the use case."

    Ensuring Complete Traceability

    Navigate to the traceability module to ensure full traceability. Check the traceability metrics and for any checks under 100%, as the assistant, for example “Advise me on steps to take to ensure all of my Use Cases are being covered by Design Inputs.”

    Step 2: Design and Architecture

    Check your GAMP Category

    • Category 3 or 4: Skip to the next section (Testing and Verification). Your configuration specifications from the requirements phase are sufficient.

    • Category 5: continue below. You must document how your custom code implements the requirements.

    Documenting Software Design

    For Category 5 systems, your software design should be well documented and address:

    • Data Integrity: Mechanisms to ensure data accuracy, completeness, consistency, and traceability (e.g., audit trails, electronic signatures).

    • Security: Measures to protect data from unauthorized access, modification, or disclosure.

    • Audit Trails: Comprehensive, unalterable logs of all significant actions, including who performed them, when, and what data was affected.

    • Error Handling: Robust error detection and recovery mechanisms.

    • Scalability and Performance: Ensuring the system can handle anticipated workloads.

    • Maintainability: Designing for ease of future updates and bug fixes.

    Generating Design Outputs

    Utilize the assistant to generate new Design Outputs (Software Specifications) and trace these items to the relevant Design Inputs until all of your Design Inputs are Covered by Design Outputs. This traceability check should be 100%.

    Example assistant prompts:

    • “Find all Design Inputs that are not being Implemented by a Design Output and generate a new Software Specification that is traced to it”

    • “Analyze all of my Software Specifications and ensure they are written according to CSA GAMP-5 principles”

    • “Add traceability from [specific Design Input) to [specific Design Output]”

    Step 3: Testing and Verification

    Testing is a critical component of GxP software development. Testing allows us to ensure that the claims (i.e. use cases, RQs, risks) we make about the system are indeed correct, in each product version.

    Core Testing Components

    • Traceability Matrix: Links requirements to test cases to demonstrate that all requirements are tested.

    • Test Plans and Protocols: Document the scope, approach, resources, and schedule of testing activities.

    • Test Cases: Detailed steps for executing tests, expected results, and acceptance criteria.

    • Types of Testing:

    • Unit Testing: Verifying individual components.

    • Integration Testing: Testing interactions between modules.

    • System Testing: Testing the complete system against functional and non-functional requirements.

    • User Acceptance Testing (UAT): Verifying that the system meets user needs and is fit for purpose.

    • Performance Testing: Assessing system responsiveness and stability under load.

    • Security Testing: Identifying vulnerabilities.

    • Regression Testing: Ensuring that new changes do not negatively impact existing functionality.

    • Management: A systematic process for logging, tracking, prioritizing, and resolving defects.

    • Test Reports: Documenting test execution, results, and any deviations.

    Generating Test Cases

    🎥 Watch Video 4: Generating Validation Tests

    Use the assistant to generate and trace Validation tests to your Design Inputs. These traceability checks should reach 100%.

    Review the suggested test cases carefully. The assistant will generate test steps and expected behaviors that are already traced to the relevant requirements. Accept the test cases that meet your quality standards.

    Executing Tests

    🎥 Watch Video 5: Performing Test Executions

    You need to perform test executions before releasing version 1.0 of your product. Navigate to the Test module where you can generate all test executions in bulk. Ketryx can also connect directly to your repository to report automated test executions from your CI/CD pipeline.

    After completing your test executions and verifying that your requirements are validated, select your Requirements, Test Cases, and Test Executions from the All Items screen and bulk-approve all of these items.

    Step 4: Risk Analysis and Control

    🎥 Watch Video 6: Performing Risk Analysis

    Before releasing your product, you must address all identified risks. Navigate to the Risks that need attention; these will typically be flagged in your traceability matrix.

    After completing risk analysis on all risks, verify in the traceability screen that all Risks are in a controlled and approved state, all Risk Controls are controlled, and Risk coverage is complete across your Use Cases and Design Inputs. Use the Assistant to aide with these checks.

    Step 5: Document Generation and Baseline Release

    🎥 Watch Video 7: Release Your GxP Product

    Pre-Release Checklist

    Navigate to the Release screen to review your deterministic release checklist. You should see that all items are complete except for document generation.

    Document Generation

    Navigate to the Documents screen and generate or omit the documents using Ketryx's out-of-the-box templates.

    Final Release

    You can perform a GxP-compliant baseline release of your product from the Release screen.

    Conclusion

    In this guide, we've covered the fundamentals of designing and validating a software system to meet GxP requirements using Ketryx AI. You've learned how to:

    • Define intended use and create comprehensive requirements

    • Manage risks throughout the product lifecycle

    • Establish complete traceability

    • Generate and execute validation tests

    • Perform risk analysis

    • Generate required documentation

    • Release a baseline validated GxP product

    This structured approach, powered by Ketryx's AI agents and assistants, dramatically accelerates the validation process while maintaining the rigor required for regulatory compliance.

    Need Help?

    If you encounter challenges or have questions about specific regulatory requirements:

    • Reference Ketryx Documentation

    • Consult your quality management team

    • Review the applicable standards and guidance documents

    • Contact Ketryx support for platform-specific questions

    APPENDIX

    Do I need GxP Validation?

    This is a complex question that is very specific to a system and its use. We recommend connecting with a subject matter expert. In general, GxP validation is required if your software system is used in regulated activities.

    The First Question: Are you subject to FDA and other regulations?

    Are you a company that’s involved in the manufacture, processing, packing, or holding of FDA-regulated products and therefore must comply with the relevant sections of 21 CFR and analogous regulations in the EU and other jurisdictions?

    If YES, you are likely subject to GxP regulations, proceed to the next question.

    If NO, you are likely not subject to GxP regulation, as mentioned, we recommend connecting with a subject matter expert. It may also be recommended per Good Practice guidelines, such as GAMP-5, that you follow a QMS, preferably based on recognized standards.

    The Second Question: Could a failure or error in this system lead to:

    • Incorrect drug reaching patients?

    • Invalid clinical trial results?

    • Inability to prove product quality?

    If YES to any → GxP validation is required

    Systems Commonly Considered for GxP Validation:

    • Manufacturing Systems

      • Systems that control manufacturing processes

      • Applications managing batch records or calculations

        • Relevant regulations may include 21 CFR Part 211 - “Appropriate controls … over computers”

    • Quality Management Systems

      • Electronic records and signature systems

      • Complain, CAPA, and change control systems

      • Training and document management platforms

    • Laboratory Systems

      • Laboratory information management systems

      • Stability and environmental monitoring applications

        • Relevant regulations may include Laboratory Records

    • Clinical Systems

      • Clinical data management platforms

      • Electronic trial master file systems

        • Relevant regulations may include Good Clinical Practice

    Note: Regulations listed are illustrative, common examples. Specific requirements vary by product type, market, and classification—consult your regulatory team for complete applicability.

    Examples of systems that may not require GxP validation (Always document your risk assessment and rationale):

    • General business operations (accounting, HR)

    • Marketing and communication tools

    • Standard office productivity software

    • Systems with no impact on product regulatory data

    This guidance represents illustrative industry interpretation. Organizations must conduct their own assessment.

    Determine Your GAMP-5 Category

    The pharmaceutical industry widely adopts GAMP-5 (Good Automated Manufacturing Practice) as a risk-based validation framework. While we provide a high-level overview below, organizations should consult the official ISPE GAMP-5 Guide for complete definitions and approaches. is a pharmaceutical industry’s framework for risk-based validation. Once you’ve determined GxP validation is needed, GAMP-5 provides a framework for best practices. Your system’s GAMP-5 category drives downstream decisions. Determine this as soon as possible:

    Software Category Overview:

    One general rule of thumb is if your software is:

    • Infrastructure → Category 1

    • Not configurable → Category 3

    • Configurable but has no custom code → Category 4

    • Includes any custom code → Category 5

    • Makes automated GxP decisions → Treat as Category 5 regardless

    Practical Application of Software Categories:

    The following represents illustrative industry interpretation of risk-based validation principles. For authoritative category definitions and requirements, consult the official GAMP-5 guidance.

    Category 1: Infrastructure Software

    • Examples: Operating systems, databases, middleware

    • Documentation: Minimal - leverage vendor docs

    • Testing: Qualify, don’t validate

    Category 3: Non-configured Products

    • Off-the-shelf software, used as is

    • Examples: PDF readers, simple calculators

    • Documentation: Configuration specifications only

    • Testing: Focus on installation and basic functionality

    Category 4: Configured Products

    • Configurable software, no custom code

    • Examples: LIMS, ERP, Microsoft toolsuite

    • Documentation: Configuration design document

    • Testing: Configuration-specific validation

    Category 5: Custom Application

    • Custom-developed or heavily customized

    • Examples: In-house MES, custom data systems

    • Documentation: Full architecture and design specs

    • Testing: Complete lifecycle validation

    GxP compliance
    Computerized System Validation
    Computer Software Assurance
    Ketryx AI agents
    documentation
    traceability
    Quality Management System

    MAN-07 Traceability

    Manual for the Ketryx traceability matrix and its traceability mechanism

    1. Introduction

    This manual describes the setup and processes for interpreting, maintaining and verifying the traceability matrix of a Ketryx project.

    1.1. Terms and definitions

    1. RTM: Requirements Traceability Matrix.

    2. Specification: A Ketryx specification item, namely Software Item- and Hardware Item Specifications. A specification fulfills a Requirement with relevant details for the concrete implementation

    3. Requirement: A Ketryx requirement item. A Requirement may have a requirement type assigned to make them more specific, such as Use case requirement types

    2. Traceability Modes

    The traceability mode dictates certain traceability behavior and rulesets in the traceability matrix that are derived from the Ketryx project schema configuration.

    2.1. System-Requirement and Specification Mode

    Enabled with Ketryx project schema: Software design and development, Software and hardware design and development, Full schema including Post-Market Surveillance

    The System-Requirement and Specification mode is the strictest mode available in Ketryx. The following constraints need to be satisfied for the traceability matrix to be considered fulfilled:

    • Each detected Use case Requirement requires at least one related Requirement (either another Use case or any other Requirement type)

    • Each Requirement requires at least one Software Item or Hardware Item Specification, and a Test Case (= validation test)

    • Each Specification requires at least one Test Case (= verification test)

    2.2. Requirement-Validation-Only Mode

    Enabled with Ketryx project schema: Requirement validation

    The Requirement-Validation-Only mode was designed for (Software) systems with a primary focus on tracing Requirements to corresponding Test Cases and their subsequent Test Executions. Software/Hardware Item Specifications may be part of the requirements and specification architecture, but are not considered in the traceability check of the resulting traceability matrix.

    The following constraints need to be satisfied for the traceability matrix to be considered fulfilled:

    • Each detected Use case Requirement requires at least one related Requirement (either another Use case or any other Requirement type)

    • Each requirement requires at least one Test Case (= validation test)

    • Each Test Case requires at least one manual and/or automated Test Execution. Depending on the project configuration, a manual Test Execution may be mandatory

    3. Traceability Page

    The Traceability (RTM) page can be accessed via the Traceability navigation item within the project sidebar and will display the RTM for a given version.

    The page displays a paginated set of all traceability rows for a given primary item (Use cases, Design inputs, Design outputs, Verification, Validation, etc). Primary items represent a distinct item in the system that are traced to its corresponding relations.

    3.1. Test Case Categorization

    A Test Case may test a Requirement and/or a Specification item. Depending on the tested item, a Test Case may be qualified as a Verification test (testing a Specification), Validation test (testing a Requirement/Use Case), or both (testing a Specification and Requirement/Use Case).

    Important: Due to legacy reasons, in Jira, a Test Case item will allow members to set a test type. Please note that the traceability page will ignore this Jira field and will only consider the item's trace relations when categorizing into Verification and Validation tests. In future versions of Ketryx, the test type field will not distinct between Verification/Validation tests but rather focus on the actual test kind (Regression, Unit, Integration, System, etc).

    3.2. Excluded Test Cases

    A Test Case may be excluded from a test plan within Ketryx' test management page. A Test Case not included or explicitly excluded from a version's test plan will be marked as "Not included in test plan" in the traceability page. It doesn't require any Test Execution, nor a Test result, and doesn't need to be controlled for the RTM to be fulfilled.

    3.3. Automated Tests

    Test results may be tracked through automated CI builds, and may be testing Requirements, Software/Hardware Item Specifications, or Test Cases. If the automated test is related to a Test Case, it will be displayed within the Test Case's cell's "Automated tests" list.

    If the automated test is testing a Requirement or Specification item, the test will be displayed as a standalone cell marked with an AT abbreviation. This separation is important — automated tests linked to a Test Case cannot be explicitly approved until an equivalent manual Test Execution has been created. If the Ketryx project is configured to enforce manual tests on automated tests, the Traceability page will notify the user that a manual test execution is missing for a given Test Case.

    3.4. Showing item traces

    A traceability row may contain multiple items that represent different traces within the different columns. A member may highlight individual traces for a given item by clicking the Tracing button. It will highlight all items that are directly related to the selected item.

    Note: An item may have an indirect relation to a Use case via a parent of a parent relationship. In this case, the tracing function will only highlight Use cases that are directly related to the selected item.

    3.5. Using the Traceability Check filters

    Ketryx offers pre-defined traceability check metrics to allow members to quickly solve RTM errors and get to a releasable state.

    Selecting a traceability check will activate the corresponding filter, showing all the rows that contain a cell matching the filter condition.

    The following traceability checks are available (depending on the traceability mode):

    • Use cases covered by a design input: Filters for all rows containing at least one Use case that is not covered by a design input (Requirement)

    • Design input covered by a design output: Filters for all rows containing at least one design input (Requirement) without a proper relation to a design input (Specification). This check will not be available in the Requirement-only mode

    • Verification, design outputs covered by Tests: Filters for all rows containing design inputs (Specification

    3.6. Fixing Traceability Errors

    While verifying a version's RTM, errors will occur that require to be fixed for the RTM to be approvable for a release.

    The following list gives a list of errors and potential fixes:

    • Requirement missing: The erroneous Use case has no child Requirement. Fix: Create or identify the relevant Requirement and add the erroneous Use case to its "Parent requirements" field

    • Specification missing: The erroneous design input (Requirement) has no fulfilling Specification item defined. Fix: Create or identify the relevant Software/Hardware Item Specification and set its Fulfilled requirements field to the erroneous Requirement

    3.7. Dangling items

    The traceability matrix makes sure that all item relation constraints are fulfilled, but based on the selected primary column, there may be independent items that may not correspond to the primary item type (so-called "dangling items").

    Dangling items are listed in separate rows at the first page of the Traceability table (one row per column type), with the primary column being empty.

    Please note that the dangling item rows will also contain its direct item relations, e.g. Verification Test Cases or other entities like directly linked Use cases.

    Note: Depending on the selected primary item it is very likely dangling items will be displayed. As long as they don't yield any traceability error, they are considered safe from a traceability fulfillment perspective.

    3.8. Approving the Traceability matrix on the Traceability page

    Note: This functionality needs to be enabled via the .

    The Traceability page allows users belonging to any steps of the Release approval type to approve a fulfilled traceability matrix for a selected version via a dedicated status message. When approving the traceability matrix, the given version's Traceability Matrix release document will be (re-)generated and approved.

    4. Traceability widget

    The relations to and from a particular item can be traced in the traceability widget. It offers two distinct views, accessible through tabs, for analyzing these relations: a graphical layout and a table format.

    The traceability widget will be shown on connected systems such as Jira, as well as on the Item record detail page.

    Note that on the Item record detail page, the data displayed in the widget always reflects the record corresponding to the selected version. Changes in connected systems will only be reflected after the next sync of the item with Ketryx.

    As a result, any updates made in connected systems will appear only after the item is synced with Ketryx. When viewing the widget on the Item record detail page, keep in mind that it reflects the record and its related data for the selected version—not necessarily the record currently being viewed.

    4.1. Graph tab

    4.1.1. Layout

    The graphical layout provides a visual representation of the primary item and its associated items, referred to as secondary items, for a selected version. The secondary items are grouped according to their relation type and are further organized into two categories:

    • Design inputs - displayed on the left side of the graph

    • Design outputs - displayed on the right side of the graph

    In addition to displaying the primary item and its associated secondary items, the graph also includes sibling items of the primary item. Sibling items share the same relationship with the secondary item as the primary item does with that secondary item. For instance, if the secondary item is identified as the "parent" of the primary item, then the sibling items would be other "children" of that same secondary item.

    There are 2 special cases: a risk item and a test case. If a risk item is a design output, risk controls are displayed along with the sibling items. Similar to risks, test executions are displayed along with the sibling items if a test case is a design output.

    If required, the currently effective test execution (i.e., the most recent execution) of a test case can be visually marked. This feature is currently available only for manual test executions. Please contact Ketryx Support to activate this visualization.

    4.1.2. Item display

    The following item information is displayed: item type, source key, title, source system, item state, and, if applicable, safety risk class.

    Removed items (e.g., the ones with the filled Obsolete in version field) are indicated with a dashed border.

    4.1.3. Managing item relations

    This widget enables the management of item relations by allowing the removal of relations, linking existing items, or creating and linking new items to the primary item. Relation editing can be enabled or disabled in the . When allowItemCreation is set to No, creation of new items through the widget is disabled. When allowItemEditing is set to No, linking and removal of existing items are disabled.

    4.1.3.1. Creating a relation

    To create a relation, click one of the “Add …” buttons. This action opens a form where it is possible to either:

    • link existing items via the ”Link an existing item” tab

    • create a new item and link it via the “Create and link a new item” tab

    Note: At the moment, new relations can be added through the traceability widget, Jira fields, or Jira native links. However, Jira relation fields may not consistently display all relevant data. To ensure complete and accurate visibility, it is recommended to always use the traceability widget for viewing and editing relations.

    4.1.3.2. Removing a relation

    To remove a relation, hover over a link in the graph and click the remove button, represented by a cross icon.

    4.1.3.3. Special cases

    In some cases, all add and remove relation buttons are disabled if:

    • the record is not current (e.g., due to a locked record)

    • the selected version has been released

    • the item type is not editable (e.g., a document)

    Non-editable items, such as Xray items, git-based items or items from other integrations (except for Jira), will not appear in the dropdown menu in the form if a reverse relation is created with them. In a reverse relation, the linked item serves as the source of the relation and is modified instead of the primary item. The removal of reverse relations with non-editable items is also not supported. When the primary item is non-editable, the creation and removal of forward relations are disabled. Additionally, when the primary item is an Xray item, the addition of executed tests or test executions are disabled.

    4.1.4. Limitations

    Note that the current version of the traceability widget has the following limitations:

    • Threat modeling is not supported

    • Creating reverse relations of custom relations is not supported

    • Customization of system relations is not supported

    • Effective / ineffective test executions are not supported

    4.2. List tab

    A table displaying traced items and their corresponding types of relations to the primary item is provided alongside the graph layout. This table lists relations both originating from the primary item and directed toward it.

    4.3. Adding Ketryx Relations Between Items: Re-opening Closed Objects

    4.3.1. Closed Item Relations

    When a new Relation is created between two Closed (fully approved) configuration items using the Ketryx Traceability Widget, one of the items is immediately invalidated to a Resolved state. That item must then be re-reviewed and approved. The item that stores the Relation on its record is created will be invalidated. An example is provided below.

    Additional information regarding the is available in the linked article. The "To" and "From" relationships for each configuration item type, are described in the “Traceability to other configuration items” section of each item’s Work Instruction, such as .

    For example, for a Relation between a Requirement and a Test Case, the Test Case will always store that Relation on its item record (as seen in the 'Relations from this record' section of the item), and the Requirement will only show that Relation in the Traceability Widget. The rest of the rules regarding Relationship item storage for Requirements and Test Cases can be found in and .

    4.3.2. To/From Relation Walkthrough

    Below is an example of relating a Requirement to a Test Case, and showing how the Test Case will re-open due to the relation between the items.

    Pre-Condition - 2 items, a Requirement & Test Case, are closed and unrelated to each other.

    Step 1 - Create a Relation using the Requirements Traceability Widget using the 'Add test' button in the widget.

    Step 2 - After the relation is created, the Requirement remains Closed, an entry is not added to the 'Relations from this record' section (see below for additional context), and the Relation appears in the Traceability Widget.

    Step 3 - After the relation is created, the Test Case is forced back into a Resolved State or the invalidated state if you have configured a non-default workflow using the advanced setting. When the test case is forced back into the Resolved State, an entry is added to the 'Relations from this record' section, and the relation appears in the Traceability Widget.

    Step 4 - Now to show the reverse, we can break the relation between the items. Approve the Test Case again to bring it back to a Closed state. Now we will recreate that Relation using the ‘Add tested item’ in the Traceability Widget, this time in the Test Case, and we can see that again, the Test Case is forced back into the Re-Opened, Resolved State. Looking at the Requirement, it is still Closed.

    6. Download the Traceability Matrix Document

    The Traceability Matrix Document can either be generated and downloaded as a release document (as described in ), or generated on demand for a selected version on the Traceability and Requirement tree page. The latter document can be generated either as a CSV or Excel file and will contain the following data:

    1. Use case id: Unique identifier for a Use case related to the given Requirement

    2. Use case title: The title of the Use case related to the given Requirement

    3. Requirement ID: Unique identifier of the Requirement that's being traced

    Note: The generated document aims to replicate the Traceability page content with primary column set to Design input as closely as possible as the format permits. If a Requirement has relations to multiple Use cases, there will be multiple rows of the same Requirement for each Use case.

    7. Configuration

    Ketryx allows the following customization for the Traceability feature and behavior

    7.1. Enable/Disable Traceability check enforcement

    Requires manage project permissions.

    1. For the desired project, navigate to the Settings page

    2. Under Release controls, enable or disable Require full traceability (enabled by default)

    If full traceabily has been disabled, the version release page will not block a release if the traceability matrix hasn't been fulfilled.

    Important: Please be aware that this setting will allow members to approve a release artifact that may be not be compliant with current regulations. It was designed to be an escape hatch, in case there's a special need to finalize an incomplete RTM for important reasons.

    7.2. Customize the Traceability Matrix document

    The Traceability Matrix document can be configured to omit certain columns and rename column names.

    Refer to the page for details.

    7.3. Customize the Traceability Matrix columns

    Ketryx allows full customization for the displayed columns, column relationships / traces, traceability checks, including their corresponding error status messages, and more.

    Refer to the the page for more details.

    Vulnerability Management

    Manual for the vulnerability management using Ketryx Software Supply Chain Management

    1. Introduction

    Vulnerability management is the process of identifying, evaluating, treating, and reporting on security vulnerabilities in systems and the software that runs on them. The process is a continuous cycle of discovery, prioritization, and remediation. Vulnerability management is integral to computer security and network security.

    When developing medical devices following IEC 62304, vulnerability management becomes even more crucial. Medical devices often rely on Software of Unknown Provenance (SOUP) and Off-the-shelf (OTS) software components and dependencies, making them vulnerable to security risks. Proper vulnerability management ensures that potential vulnerabilities are identified and addressed, reducing the risk of security breaches and ensuring the safety and effectiveness of the medical devices.

    Ketryx Software Supply Chain Management offers a vulnerability management module designed to assist users in monitoring vulnerabilities within their software supply chain. This module presents a centralized view of all vulnerabilities in the software supply chain, aiding users in prioritizing and remedying them.

    1.1. Purpose

    The purpose of this document instruct users on how to use the Vulnerability management module in Ketryx Software Supply Chain Management to manage vulnerabilities in the software supply chain.

    1.2. Scope

    This document describes the features and functionality of the Vulnerability management module in Ketryx Software Supply Chain Management.

    2. Terms and definitions

    The definitions of this document conform to the ones of ISO/IEC 27001, ANSI/AAMI SW96:2023, and AAMI TIR57:2016/(R)2019.

    Acronym
    Definition

    3. Project setup

    To use the Vulnerability management module, you need to have a project set up in Ketryx Software Supply Chain Management. If you don't have a project set up, follow the instructions in .

    Once you have a project set up, you can start using the Vulnerability management module. The module is available in the SBOM > Vulnerabilities section of the project.

    4. Manage vulnerabilities

    The Manage vulnerabilities (available in the SBOM > Vulnerabilities section of the project) screen displays a list of all identified vulnerabilities in the software supply chain of the project. It is also possible to create, edit, and manage vulnerability impact assessments on this screen, as well as to create, edit, and manage manual vulnerabilities.

    If the project contains transitive dependencies, the vulnerabilities of the transitive dependencies are also displayed. The vulnerabilities of the transitive dependencies can be expanded to view more information. For transitive dependency support, please refer to , as well as the manual on or .

    The vulnerabilities list displays the following information for each identified vulnerability:

    1. Title: The title of the vulnerability. Below the title, the vulnerable SOUP or OTS component is displayed. Clicking on the SOUP/OTS component will take you to the detail screen, where you can view more information about the component.

    2. Reported on: The date the vulnerability was reported.

    3. Severity: The severity of the vulnerability and its score.

    4. Risks: The number of risks associated with the vulnerability, if any.

    Columns can be sorted, filtered, resized and rearranged to suit your needs.

    When hovering over a column header, an arrow icon will appear. Clicking on the arrow will sort the column in ascending or descending order.

    To rearrange columns, click and drag the column header to the desired position.

    To resize a column, hover over the right edge of the column header until the resize icon appears, then click and drag the edge to the desired width. Double-clicking on the edge will automatically resize the column to fit the content.

    To filter, hide, or pin a column, hover over a column click on the three-dot (︙) icon in the column header and select the desired options.

    4.1. Withdrawn vulnerabilities

    Occasionally, vulnerability advisories (e.g., GitHub Security Advisories - GHSA) may be withdrawn, often because they are duplicates of other advisories or found to be incorrect.

    Depending on your organization's settings, Ketryx can either hide these withdrawn vulnerabilities entirely or display them with a distinct "Withdrawn" tag in the Title column.

    Expanding a withdrawn vulnerability will show details about the withdrawal, including the reason and the date it was withdrawn.

    5. Manual vulnerabilities

    For many ecosystems, Ketryx can automatically detect vulnerabilities by leveraging the GHSA (GitHub Security Advisory). However, for the product itself or certain OTS (Off-The-Shelf) software, Ketryx allows users to create and manage their own vulnerabilities.

    5.1. Creating a manual vulnerability

    To create a manual vulnerability, click on the Add vulnerability button on the above the table.

    Clicking on the Add vulnerability button opens the manual vulnerability dialog.

    Manual vulnerabilities can be created by populating the vulnerability details and then clicking the Add vulnerability button. The following fields are available:

    • Title

    • Introduced in Version

    • Obsolete in Version

    • Description

    5.1.1. Manual vulnerability severity

    Manual vulnerability severity is set by a severity level dropdown with an option to assess severity using a CVSS vector string. Currently, CVSS vectors of version 3.0, 3.1, and 4.0 are supported.

    1. When nothing is selected, severity level is set to UNKNOWN.

    2. When a specific level from NONE to CRITICAL is selected, the severity level is shown, along with the numeric severity score range for that severity level (e.g. for MEDIUM, the range 4.0 - 6.9 is shown).

    5.2. Editing a manual vulnerability

    To edit a manual vulnerability, select a vulnerability from the Vulnerabilities list and click on the Edit vulnerability impact assessment button.

    This will open the Edit item page where you can edit the manual vulnerability fields alongside its impact assessment. Clicking the Save changes button saves the new version.

    6. Vulnerability impact assessment

    A Vulnerability impact assessment (VIA) is a detailed analysis of the impact of a vulnerability on the product. It includes information about the affected components, potential risks, and mitigations that can be taken to reduce the impact of the vulnerability.

    In Ketryx, a single vulnerability can have multiple impact assessments, allowing you to track how a vulnerability's impact changes across different product versions. This is managed through a system of variants. When you need to update an assessment for a new version, you create a variant of the original assessment.

    A VIA is available for each identified vulnerability (including manual vulnerabilities). To view the effective VIA for the selected version, click on the expand icon in the Vulnerabilities list.

    The process of creating and managing VIAs depends on the context of the product version you are working in.

    • Initial assessment: If a vulnerability has no impact assessment yet, you can create the first one.

    • Creating a variant: If an assessment already exists, you create a variant. This creates a new, independent assessment while preserving the history of the old one.

    • Editing an assessment: If you need to make corrections to the assessment that is already effective for the current version, you can edit it directly.

    The Vulnerability impact assessment functionality is only available to users with the necessary permissions and approval rules. If you don't have the necessary permissions, contact your organization's administrator.

    The required permission is Edit dependency which can be found on the page Settings > Permissions of a project.

    Approval rules can be set up on the page Settings > Approval rules of a project.

    6.1. Creating a vulnerability impact assessment

    To get started, select one or more vulnerabilities from the Vulnerabilities list and click on the Create impact assessment button. This will open a dialog where you can fill in the details of the impact assessment.

    When creating or editing an assessment, a dialog appears where you can fill in the details. By default, the following fields are available:

    1. Introduced in version: The first product version this assessment is effective in.

    2. Obsolete in version: The first product version this assessment is no longer effective in.

    3. Severity: This section can be used to modify the severity of the selected vulnerabilities.

      1. CVSS vectors of version 3.0, 3.1, and 4.0 are supported.

    For manual vulnerabilities, the Edit vulnerability impact assessment button is available instead of the Create vulnerability impact assessment button.

    The vulnerability impact assessment dialog allows customization of all fields to align with your organization's requirements via the advanced project settings. This can be archived either with the advanced settings for the module, or using the more generic .

    6.2. Editing a vulnerability impact assessment

    To edit a vulnerability impact assessment, select a vulnerability with an existing assessment in the Vulnerabilities list. Then, click on the Edit vulnerability impact assessment button. This will open the Edit item page where you can edit the details of the impact assessment.

    Currently, impact assessments can only be edited one-by-one.

    6.3. Creating a variant of a vulnerability impact assessment

    If an impact assessment already exists for a vulnerability, you can create a variant of it. This is useful when the impact of a vulnerability differs across product versions, and you need to work in parallel on separate assessments in different versions.

    To create a variant:

    1. Select a vulnerability in the Vulnerabilities list that already has an impact assessment.

    2. Click the Create variant button.

    3. This opens the Create variant page, pre-populated with the details from the original (base) assessment.

    4. Update the fields for the new version, especially the Introduced in version and Obsolete in version

    The new assessment is now a variant of the original. Ketryx will automatically show the effective assessment based on the version you have selected in the UI.

    For a detailed guide on managing VIAs across different versions, refer to the work instruction: .

    6.4. Viewing and comparing impact assessments

    When a vulnerability has multiple impact assessments (a base assessment and its variants), Ketryx makes it easy to see which assessment is effective for each version and to compare them.

    1. Use the version picker above the table to switch between product versions. The table updates to show the effective impact assessment for each vulnerability in that version.

    2. Expand the detail panel for any vulnerability by clicking the expand icon on the right side of its row.

    3. The panel displays the detailed information for the assessment that is currently effective.

    4. You can use the dropdown menu in the panel to see all assessments for this vulnerability - both the original assessment and any variants. Select any assessment from the list to view its details. Keep in mind that choosing a different assessment here only changes what you see in the panel, and doesn't affect which version is selected at the top of the page.

    For any given version, only one vulnerability impact assessment is considered effective. Ketryx determines which impact assessment to display by looking at when each assessment was created and which versions it applies to based on its Introduced in version and Obsolete in version fields, if applicable. When you create a variant of an assessment, it automatically becomes the effective assessment for its versions.

    7. Rescoring vulnerabilities

    New in 2.13

    Ketryx provides a powerful CVSS calculator to rescore vulnerabilities, allowing you to refine the severity based on your specific environment and context. This is crucial for accurately prioritizing remediation efforts.

    To rescore one or more vulnerabilities, select them from the vulnerabilities list. The "Rescore" button will appear in the action bar at the bottom of the screen. Clicking it opens the rescoring dialog.

    Ketryx supports rescoring using CVSS versions 3.0, 3.1, and 4.0.

    7.1. Rescoring a single vulnerability

    When you rescore a single vulnerability, Ketryx provides a detailed, interactive experience.

    For vulnerabilities with a known CVSS score, the dialog will display a full CVSS calculator, pre-filled with the vulnerability's existing metrics. The header provides a convenient preview, showing the original vector string broken down by metric groups (e.g., Base, Temporal, and Environmental for CVSS v3.1) and a real-time comparison of the current and rescored severity.

    The CVSS calculator shown automatically adapts to the vulnerability's CVSS version (e.g., 3.0, 3.1, or 4.0), displaying the appropriate metric groups for that standard.

    By default, the Base Metrics are locked to prevent accidental changes. See for more details on why and how to unlock them if needed.

    For vulnerabilities without a known CVSS score, or if a vulnerability doesn't have an existing CVSS vector, if a vulnerability doesn't have an existing CVSS vector, the rescoring form starts with the Base Metrics unlocked, allowing you to define the base score from scratch. A preview of the score will be generated as you fill out the metrics.

    7.2. Rescoring multiple vulnerabilities

    You can also rescore multiple vulnerabilities at once. The behavior of the rescoring dialog adapts to handle the complexity of bulk editing.

    General behavior: When rescoring a batch of vulnerabilities, any changes you make in the calculator will be applied to all selected items that are eligible for rescoring. Due to the potential for different base scores across the selection, a preview of the new scores is not displayed in the header.

    Handling mixed CVSS versions: If your selection contains vulnerabilities with different CVSS versions (e.g., a mix of 3.1 and 4.0), Ketryx determines a single calculator version to use for the batch operation. The version used by the majority of selected items will be chosen. In case of a tie, CVSS 3.1 is preferred. Vulnerabilities with other CVSS versions will be skipped, and a warning message will inform you about which items were not rescored.

    Handling items with missing base scores: If your selection includes items that have a CVSS version but are mixed with items that are missing a base score, those without a base score will be skipped. A warning will notify you of the skipped items.

    Selecting only items with unknown severity: If all selected vulnerabilities have no CVSS score, the rescoring form behaves similarly to the single-item case: the Base Metrics are unlocked by default, and a score preview is shown as you define the new vector.

    7.3. The base score and rescoring

    You may have noticed that the Base Metrics in the CVSS calculator are locked by default. This is intentional and reflects a core principle of CVSS scoring.

    The Base Score represents the intrinsic and fundamental characteristics of a vulnerability that are constant over time and across different user environments.

    For instance, in CVSS v3.1, the Temporal and Environmental metrics are designed for adjustment. Temporal metrics reflect characteristics that change over time (like exploit code maturity), while Environmental metrics let you tailor the score to your specific operational context. This is why rescoring is most powerful when adjusting these metrics to get a score that truly reflects the risk to your organization.

    CVSS v4.0 evolves this concept, introducing different metric groups such as Threat (e.g., Exploit Maturity), Supplemental (e.g., Safety, Automatable), and Environmental (which includes Security Requirements and modified base metrics).

    The Ketryx CVSS calculator automatically adapts to the selected CVSS version, presenting the correct metric groups for rescoring.

    For a detailed breakdown of the metrics in each version, refer to the official documentation from FIRST.org:

    Regardless of the version, if you need to modify the Base Metrics, you can click the Unlock base score button. A warning will appear to ensure you understand the implications. Ketryx will always preserve the original CVSS score provided by the advisory, and your rescored assessment will be displayed alongside it for comparison and tracking.

    7.4. Environmental scoring profile

    New in 2.13.3

    Generic CVSS base scores don't account for your organization's specific needs, leading to inefficient vulnerability prioritization. To address this, administrators can configure environmental scoring profiles with standard environmental values that users can apply when rescoring vulnerabilities. This allows sharing common configuration easily across the team, ensuring streamlined and consistent vulnerability assessments organization-wide.

    When rescoring with a configured profile, vulnerabilities show visual highlighting for clear feedback:

    Setting up the profile: Go to Advanced Settings in your project or organization, and copy the example configuration below and paste it into the field:

    The configuration defines multiple environmental scoring profiles as an array. Each profile specifies a CVSS version and version-specific environmental metrics. Multiple profiles can be defined for each version, but only the first one will be used.

    8. Download the vulnerability report

    The Vulnerability Report can either be generated and downloaded as a release document (as described in ), or generated on demand for a selected version on the page SBOM > Vulnerabilities. The document will be generated an Excel file and will contain the following data:

    1. Title: The title of the vulnerability.

    2. Severity: The severity of the vulnerability.

    3. Score: The score of the vulnerability.

    4. Ecosystem: The ecosystem of the vulnerability.

    The generated document aims to replicate the Manage vulnerabilities page content as closely as possible as the format permits. This includes any additional, removed or renamed fields configured for the vulnerability impact assessment.

    In case a cell exceeds the limit of characters for a single cell in Excel (32,767 characters), the content will be split into multiple cells, spanning multiple rows.

    9. Vulnerability management of an individual SOUP/OTS component/dependency

    To manage the vulnerabilities of an individual SOUP/OTS component/dependency, navigate to the SBOM page of the project and click the dependency you want to manage. On its details page, click on the Vulnerabilities tab. There, the same functionality as on the Vulnerabilities page is available, but only for the selected dependency, listing only the vulnerabilities of the selected dependency.

    Similarly, on the page SBOM > Vulnerabilities, the dependency details page can be reached by clicking on the dependency name below the vulnerability title in the Vulnerabilities list.

    10. Vulnerability notifications

    New vulnerabilities are discovered daily. To keep you informed about the latest vulnerabilities in your project, Ketryx sends daily and weekly vulnerability notifications via email. Daily notifications include vulnerabilities of critical severity, while weekly notifications cover all new vulnerabilities regardless of the severity level. You will receive notifications for all dependencies in your current version and all active releases (as described in ). Notifications are sent to all users configured in the approval rules for dependencies, according to .

    Ketryx updates its vulnerability database periodically and scans all your dependencies for known vulnerabilities. This includes dependencies reported via , as well as or files using the .

    Use case / Use case Requirement: A Ketryx requirement item with requirement type assigned to "Use case".
  • Test Case: A Ketryx Test Case item. Depending on its relations to other requirements and specifications, a Test Case may be represented as a verification or validation test

  • Test Execution: Either a Ketryx Test Execution or a Jira Xray Test Execution item. A test execution holds a test result for a given Test Case — pass, pass (with exception), fail, fail (accepted)

  • Risk: A Ketryx risk item. A risk may be controlled by a Requirement, Specification or Test Case item

  • Verification Test: A Ketryx Test Case item that tests at least one Specification item. A verification test may also be a validation test at the same time

  • Validation Test: A Ketryx Test Case item that tests at least one Requirement. A validation test may also be a verification test

  • Fulfilled / failed traceability: A traceability matrix and its corresponding rows may be considered fulfilled if all the traceability checks are successful for the given set of items. Vice-versa, it is considered failed if any of the traceability constraints have been violated

  • Traceability error: A traceability error represents a violation of the traceability constraints according to the traceability mode and is commonly presented in red

  • Traceability warning: A traceability warning represents a less severe violation of the traceability constraints, such as a missing item approval, or an uncontrolled risk related to a traced item

  • Traceability mode: The algorithm used to determine the fulfillment state of a given traceability matrix. The traceability mode also has an impact on what columns are displayed

  • Traceability row: A row in the calculated RTM based on a certain primary item, and its traces to requirements, use-cases, specifications, verification and validation tests.

  • Traceability check enforcement (also called "full traceabilty"): An enforced traceability check means that a given traceability matrix needs to be fulfilled for a final approval

  • Design input: A Requirement item that leads to the creation of a design output

  • Design output: A Specification item that results from a design input

  • Risk: A Risk item that represents a particular risk in the system

  • Risk control: An item for mitigating a potential risk. Risk controls are marked with a "RC" short name.

  • Each Test Case requires at least one manual and/or automated Test Execution. Depending on the project configuration, a manual Test Execution may be mandatory

  • Each Test Case needs to evaluate to the following test result (based on its manual/automated Test Executions): Passed, Passed with Exception, Failed (accepted)

  • All Use cases, Requirements, Specifications, Test Cases, Test Executions and related Risks need to be in a controlled state

  • Each Test Case needs to evaluate to the following test result (based on its manual/automated Test Executions): Passed, Passed with Exception, Failed (accepted)

  • All Use cases, Requirements, Specifications, Test Cases, Test Executions and related Risks need to be in a controlled state

  • ) without a
    Test Case
    relation
  • Validation, design inputs covered by Tests: Filters for all rows containing design outputs (Requirement) without a Test Case relation

  • Test Executions created within test plan: Filters for all rows containing Test Cases missing a Test Execution or a corresponding test result

  • Failing tests: Filters for all rows containing Test Cases with failing Test Executions

  • Validation test case missing: The erroneous design input (Requirement) is not tested by any Test Case. Fix: Create or identify an existing Test Case and add the erroneous Requirement to its Tested items field
  • Verification test case missing: The erroneous design output (Specification) is not tested by any Test Case. Fix: Create or identify an existing Test Case and add the erroneous Specification to its Tested items field

  • Test execution missing: The erroneous Test Case is missing a Test Execution. Fix: Create a Test Execution item with its Test being executed field set to the erroneous Test Case. In case Jira Xray is being used, create a corresponding Test Execution for the erroneous Test Case via the Xray UI.

  • Manual test execution missing: An automated test doesn't have a corresponding manual test execution created. Fix: In the Test management page, find the automated test, select the item and create a Test Execution for the selection. This will create a dedicated manual Test Execution based on the result of the automated Test Execution, so it is ready to be approved

  • Test result missing: The erroneous Test Execution is missing a test result. Fix: Open the erroneous Test Execution item in Jira and set the Test result field to the appropriate value.

  • Test execution failed: The erroneous Test Execution has failed. Fix: Make sure the Test Execution has a Test result value set to either Passed, Passed with Exception, or in case the relevant configuration has been enabled, approve the Test Execution with all relevant approval steps to mark it as Failed (accepted)

  • Approval missing: The erroneous item is not fully controlled and requires approvals from the relevant parties. Fix: Approve the erroneous item with all relevant approval steps (if configured, including the owner)

  • Requirement title: The title of the Requirement that's being traced

  • Requirement type: The requirement type of the Requirement that's being traced (e.g. System, Technical, Safety, etc.)

  • Requirement URL: A permanent url to the given Requirement record on Ketryx

  • Advanced Settings (Traceability configuration)
    Advanced project settings
    Traceability Widget
    WI-01 Requirement
    WI-01 Requirement
    WI-04 Test Case
    Approval Workflow
    MAN-02 Software Release Process, Section 3.9
    Advanced Settings (Requirements Traceability Matrix)
    Traceability Configuration
    Traceability widget overview
    Item display in the traceability widget
    Removed items in the traceability widget
    Creating a relation in the traceability widget
    Removing a relation in the traceability widget
    List tab
    Relevant regulations may include 21 CFR Part 11 Electronic records replacing paper
    Defect
    21 CFR Part 211
    ICH GCP
  • Mitigations: The number of mitigations associated with the vulnerability, if any.

  • Resolution: The resolution status of the vulnerability impact assessment.

  • Status: The status of the vulnerability.

  • Expand: Clicking on the expand icon will display more information about the vulnerability, such as the description, the affected version, etc. and if available, the vulnerability impact assessment.

  • CVE ID
  • External URL

  • Reported On

  • Severity (Severity level and/or Severity CVSS Vector string)

  • Additional fields for assessing the vulnerability impact (see section 6)

  • Select Assess severity using CVSS. The Severity level will show as UNKNOWN until you provide a valid CVSS vector string. Once a valid CVSS vector string is provided, the numeric severity score is calculated based on the CVSS vector string.
  • Saving a manual vulnerability with a valid CVSS vector results in showing the severity level and numeric severity score in the Vulnerabilities list.

  • Saving a manual vulnerability with just the severity level (without a CVSS vector) results in showing only the severity level and not a numeric severity score in the Vulnerabilities list.

  • During impact assessment creation, leaving the severity field empty will keep the severity of the vulnerability unchanged.

  • When creating an impact assessment for multiple vulnerabilities in batch, the modifying severity will be applied to all selected vulnerabilities.

  • Resolution: The resolution status of the vulnerability impact assessment. This field serves to quickly identify the status of the impact assessment, e.g. if a vulnerability is not relevant or exploitable.

  • Justification for resolution: A justification for the resolution status.

  • Introduced risks: A list of risks connected to the vulnerability. New risks can be added by using the Risk management module, see MAN-08 Risk Management.

  • Rationale for connecting risks: A rationale for connecting the risks.

  • Mitigations: A list of mitigations connected to the vulnerability. By default, any item type but the Risk item type are available. The available item types can be changed in the advanced project settings.

  • Rationale for connecting mitigations: A rationale for connecting the mitigations.

  • fields.
  • For a comprehensive history of a single assessment item, click the "Record details" link, which will direct you to its complete record history page.

  • CVSS v4.0 Specification

    Dependency: The dependency which is affected by the vulnerability.

  • Affected versions: The affected versions of the dependency.

  • Used dependency versions: The versions of the dependency used in the project.

  • Introduced in version: The first version of the product this vulnerability is effective in. If empty, the vulnerability is considered effective from the initial version of the product.

  • Obsolete in version: The version of the product the vulnerability is becoming obsolete in, i.e., the first version for which this vulnerability is not effective anymore.

  • Reported on: The date the vulnerability was reported.

  • CVE ID: The Common Vulnerabilities and Exposures (CVE) ID of the vulnerability.

  • Description: The description of the vulnerability.

  • URLs: The URLs related to the vulnerability.

  • Status: The status of the vulnerability.

  • Connected risks: URLs to the connected risks.

  • Connected mitigations: URLs to the connected mitigations.

  • Resolution: The resolution status of the vulnerability impact assessment.

  • Justification for resolution: A justification for the resolution status.

  • Rationale for connecting risks: A rationale for connecting the risks.

  • Rationale for connecting mitigations: A rationale for connecting the mitigations.

  • GHSA

    GitHub Security Advisory

    OTS

    Off-the-shelf

    SBOM

    Software Bill of Materials

    SOUP

    Software of Unknown Provenance

    SPDX

    Software Package Data Exchange

    MAN-03, section 3
    MAN-03, section 12
    Working with SPDX
    Working with CycloneDX
    manage vulnerabilities screen
    vulnerability impact assessment
    custom item fields configuration
    WI-12 Managing Vulnerability Impact Assessments with Variants and Versions
    section 7.3
    CVSS v3.0 Specification
    CVSS v3.1 Specification
    Environmental scoring profile
    MAN-02 Software Release Process, Section 3.9
    Monitoring
    MAN-11 Approval Rules
    dependency manifest files
    CycloneDX
    SPDX
    Builds API
    List of vulnerabilities
    Withdrawn vulnerability example
    Add manual vulnerability button
    Manual vulnerability dialog
    Edit manual vulnerability button
    Update manual vulnerability button
    Vulnerability impact assessment dialog
    Vulnerability detail panel showing all assessments
    Rescoring a single vulnerability with a known CVSS score
    Warning message for skipped vulnerabilities with mixed versions
    Default environmental profile highlighting
    Vulnerabilities list on the dependency details page with a collapsed sidebar
    No vulnerability severity is selected
    Severity level medium is selected

    MAN-03 Supply Chain Management: Software Dependencies

    Manual for software dependency configuration management using Ketryx Software Supply Chain Management

    1. Introduction

    This manual assumes you have access to Ketryx Software Supply Chain Configuration Management, and have created an Organization with Members and Groups.

    1.1. Purpose

    The purpose of this manual is to instruct users on how to use Ketryx Software Supply Chain Configuration Management to manage software dependencies.

    1.2. Scope

    This manual describes how to use Ketryx Software Supply Chain Configuration Management to manage software dependencies including open-source software, and other Software of Unknown Provenance (SOUP).

    2. Terms and definitions

    The definitions of this document conform to the ones of ISO/IEC 62304.

    3. Project setup

    1. User logs into Ketryx Platform at by using their connected Google or GitHub account, or using their email addresses.

    2. User presses the Create project button to create a new project.

    3. User inputs a project name and Git repository URL.

    4. The dependency screen

    The Dependency screen lists each direct dependency detected as detailed in the section. For each dependency, information is given on its name, used version(s), risk level, vulnerabilities, and status.

    The dependency Name column is derived from the dependency files. Note that Java dependencies are specified in the format organizationId:artifactId.

    The Used version(s) column is derived from the dependency files. When no locked version can be detected, the used version(s) will show a declared version only.

    The Risk level column will store the user-defined risk level upon dependency editing. See for information on how to apply a risk level to a dependency.

    The Vulnerabilities column shows a warning icon as well as the CVSS severity rating (none, low, medium, high, critical) for each vulnerable dependency. Press the icon for information on the vulnerability name, description, CVE ID, published date, severity score, affected version, and external URLs for more details. See also the section for details.

    The Status column shows the current acceptance status of each dependency. Besides the empty state which indicates that a dependency has not yet been worked on, there are six states a dependency can be in. Namely:

    • Draft ✔ means that changes have been made to this dependency and once fully approved and moved into a controlled state, it would result in this dependency being accepted, indicated by the checkmark icon on the right.

    • Draft 𝗫 means that changes have been made to this dependency and once fully approved and moved into a controlled state, it would result in this dependency being rejected, indicated by the X icon on the right.

    • Accepted ✔ means that a dependency has been fully approved and moved into a controlled state and its usage being accepted.

    Hovering over the status will show information about which groups have already approved a dependency:

    5. Approval flow

    Ketryx Platform allows users to mark individual direct dependencies as “approved”, enforcing user-specified approval steps and enabling security and usage metadata to be customized for each dependency.

    To approve a dependency, the user must first set up approval steps, as detailed in the Ketryx Installation Guide.

    To approve one or more dependencies using the default settings (i.e., accepting the currently used version), the batch approval workflow can be used on the .

    5.1. Batch approval

    1. Select one or more dependencies by clicking on their rows on the dependency page. A menu will pop up at the bottom of the screen.

    2. To approve one or more dependencies, click on the “Approve dependencies” button, then the “Approve” button at the bottom of the dependency approval dialog.

    3. Upon approving one or more dependencies, the corresponding dependency rows will be updated, and the approval status tooltip will show which steps have approved each dependency.

    6. Manual dependencies

    Many dependencies can be added automatically by Ketryx by scanning and parsing different types of package manifest files. See . But there are also dependencies on SOUP items that are not explicitly declared in code. These can be manually created in Ketryx with some caveats listed below.

    6.1. Creation

    To create a manual dependency, click on the Create dependency button on the above the table.

    This will open a new page where at least a name for the manual dependency has to be declared. All other inputs are optional.

    By default, all versions of the dependency will be set as accepted since there is no source of truth to match against in this case. Custom versions can still be declared to indicate that a certain version of a dependency is accepted or rejected.

    6.2. Caveats

    While manually created dependencies behave just like the ones scanned automatically by Ketryx in terms of their approval workflow, they differ in certain ways. For example, they don't have their version automatically parsed from a source of truth but rather rely on manual updates by users of Ketryx.

    Additionally, Ketryx does not attempt to scan for vulnerabilities for manually created dependencies. Rather, they have to be defined manually as well but do not count towards any vulnerability count on dashboards.

    7. Dependency editing

    Dependencies can be edited by clicking on their name in the and then clicking Edit dependency on their detail page. Some of their metadata can be changed or supplemented, such as:

    • Intended use

    • Security impact

    • Security impact justification

    • Reliability impact

    For manually created dependencies these details can be edited as well:

    • Name

    • Vulnerabilities

    7.1. Versions to accept

    For each dependency, you have fine-grained control over which versions you accept. For dependencies found in package manifest (lock) files (see ), if available, the locked version will be selected, or else the declared version. Additionally, you can select a custom version (range) or simply accept All versions or None.

    The accepted version is checked against the used versions found in the package manifest (lock) files. E.g. if in your package-lock.json file version 2.6.0 of a dependency is found but a custom accepted version range of ^2.9.0 was defined, e.g. because a vulnerability was found in versions less than 2.9.0, this version would not be accepted and the current usage of this dependency would result in a rejection once put into a controlled state. See below for an example.

    8. Custom approval version specifications

    When approving custom versions, enter SemVer-compatible version specifications. SemVer-compatible version ranges include:

    • > =1.0.0

    • > 1.0.0 (see the section on caveats)

    • > <1.0.0

    For more information on what each of these ranges means, a helpful resource is .

    8.1. Caveats

    When entering version ranges for approval, note that whether a dependency is approved is checked following SemVer rules, which differ from standard math. E.g., if approving a range >1, this does not include the version 1.19.4, and >2 does not include 2.6.0. In accordance with SemVer rules, approving either >1.0.0 or >=1 does approve the version 1.19.4.

    9. Revoking dependency approval

    Once a dependency is approved, a user can revoke their approval.

    1. Navigate to the history page by clicking History in the sidebar menu. Each given approval will show up as an individual row.

    2. To revoke a particular approval for a dependency, click the Revoke approval button on the right-hand side of the row.

    3. Confirm and approve the approval revocation.

    10. Cybersecurity

    Ketryx scans the to detect vulnerabilities in the direct dependencies of each project found in supported package manifest files.

    When a dependency is found to have a relevant vulnerability (i.e. the dependency versions are within the affected versions of a given vulnerability), a warning will show up on its dependency row. Clicking this warning will give more information on the details, the CVE ID, the published date, the severity, the affected version range, and URLs leading to more information.

    These vulnerabilities are also reported in the generated SOUP report Excel file.

    To learn more on how to create a vulnerability impact assessment and generate a vulnerability report for a project, see the manual.

    10.1. Supported ecosystems

    Ketryx currently supports the following for vulnerability scanning:

    • GitHub Actions

    • Go

    • Hex

    • Maven

    While Ketryx can make use of any packages of any ecosystem submitted via SPDX files, the above ecosystems are the ones that are actively scanned for vulnerabilities. For example SPDX files resulting from container image scans can be submitted, but Ketryx will not scan these packages for vulnerabilities.

    11. Dependency scanning

    To find dependencies, Ketryx employs a scanner that pulls each Git repository and analyzes dependencies from dependency manifest files.

    For each supported language, Ketryx analyzes both a declared dependency manifest file (e.g. a package.json file), which can describe version ranges, and a locked dependency manifest file (e.g. a package-lock.json), which describes deterministic dependency configurations that can lead to reproducible builds.

    For each language, dependencies are determined by searching for declared and locked dependency files in the same directory, matching the specific dependency name, and storing both the declared and locked versions of that dependency.

    Ketryx supports the following languages and ecosystems:

    Package Manager
    Languages
    Recommended Formats
    All Supported Formats

    Below is a detailed description of how Ketryx scans for dependencies in each language.

    Ketryx's dependency scanning currently only supports direct dependencies of a project, i.e., top-level dependencies. For transitive dependencies, see .

    11.1. JavaScript

    Declared dependency file: package.json. The scanner searches for direct dependencies specified in the dependencies block of the package.json file. Note that devDependencies are not being scanned or indexed.

    Locked dependency file: package-lock.json. The scanner searches for locked versions of each dependency found in the dependencies block of the package.json manifest.

    Locked dependency file: yarn.lock. The scanner searches for locked versions of each dependency found in the dependencies block of the package.json.

    11.2. Python/Pipfile

    Declared and locked dependency file: requirements.txt. The scanner searches for dependencies specified on each line. When a version is given as an individual number, e.g. ==1.0.0, this is treated as a locked dependency.

    Declared dependency file: Pipfile. The entries in the packages block are read, no entries in the dev-packages blocks are read.

    Locked dependency file: Pipfile.lock. Each package in the corresponding Pipfile is resolved with a specific version.

    11.3. Python/Poetry

    Declared dependency file: pyproject.toml. Each dependency below [tool.poetry.dependencies] is parsed as a dependency. python is left out deliberately as it is not technically a library.

    Locked dependency file: poetry.lock. Each matched dependency from the pyproject.toml file is resolved to a specific version or, if left out, resolved to *.

    11.4. Java/Gradle

    Only Gradle is currently supported. Since build.gradle files specify an arbitrary script to run, Ketryx only supports dependency declarations in the following formats:

    • Map formatted dependencies, e.g.:

    • String formatted dependencies in a single line, e.g.:

    • String formatted dependencies in a block, e.g.:

    The dependencies' group ID, artifact ID, or version must be specified literally in the build.gradle file, not externally. E.g., Ketryx does not support inferring dependency versions with a variable such as javax.xml.bind:jaxb-api:${jaxb_version}.

    Other dependency formats will be scanned. In the above example where a dependency version is a variable, these will still show up in the dependency list but will not execute the build.gradle script.

    11.4.1. Caveats

    • build.gradle.kts files are not currently supported.

    • Only packages available on Maven have their metadata fetched.

    • The name of the file must be build.gradle.

    11.5. Objective-C and Swift

    Declared dependency file: Podfile. Each dependency line prefixed by the pod keyword is read as a declared dependency. When :subspecs are specified in a pod, they are used to modify the dependency name by adding each subspec as a suffix. E.g., for a pod React with :subspecs Core, CxxBridge and others, the dependencies will be React/Core and React/CxxBridge.

    Locked dependency file: Podfile.lock. Each dependency matched from the Podfile is resolved to a specific version by finding the corresponding dependency in the PODS section of the Podfile.lock file.

    11.6. Other ecosystems

    We are continuously working on adding support for more ecosystems. If you have a specific ecosystem you would like to see supported, please let us know by .

    12. Transitive dependencies

    Ketryx built-in dependency scanning currently only supports direct dependencies of a project, i.e. top-level dependencies. However, using the it is possible to submit SPDX (Software Package Data Exchange) files in JSON format that contain all dependencies of a project, including transitive dependencies. Ketryx will use this information to build the dependency tree and also scan these dependencies for vulnerabilities for . See our for more information on how to use the Build API and the SPDX format with Ketryx.

    Once the dependencies are submitted, the SBOM Review page in Ketryx will show the submitted top-level packages dependencies for the version it was submitted for. Direct and indirect dependencies of these packages are shown on the Dependencies tab of each individual dependency's detail page. This can be configured to create dependency items for all dependencies, not just the top-level ones. For more details about this, see the documentation.

    For Ketryx to display the transitive dependencies, the submitted SPDX file must contain transitive dependencies in the packages list and the necessary relationships in the relationships list for each dependency. If these are missing, Ketryx will not display the transitive dependencies.

    13. Output document

    Ketryx can generate a SOUP configuration report in tabular form. At least the following information is contained in the generated document:

    • Dependency name: The name of the dependency.

    • Registry URL (2): The URL to the registry if the dependency was found in a package registry.

    • Declared Version(s) (1): The declared version (range) of a dependency found by Ketryx in a package manifest file. E.g. for npm dependencies, if react was declared using "react:" "^18.0.0" in package.json

    Notes:

    (1) Empty for manual dependencies. (2) For automatically resolved dependencies, Ketryx will try to fill out this information by scraping package registries. If not found, this column will be empty but is user-editable to amend missing information. For manual dependencies this field can be filled out by the user.

    MAN-08 Risk Management

    Manual for risk management using the Ketryx Lifecycle Management

    1. Introduction

    1.1. Purpose

    The purpose of this manual is to explain the usage and operations of the Ketryx Lifecycle Management system pertaining to that act in accordance with ISO 14971 and IEC 62304.

    1.2. Scope

    The scope of this manual concerns the management of risks in Ketryx and Jira, namely the tools, resources, procedures and deliverables related to the risk management of a product in Ketryx.

    1.3. Definitions and acronyms

    For the purposes of this document, the terms and definitions given in U.S. QSR (21 CFR Part 820), ISO 13485, and IEC 62304:2006-AMD1 apply. Where contradictory, IEC 62304 and ISO 13485 prevail.

    1. ALM: Application Lifecycle Management

    2. P1: Likelihood of occurrence

    3. P2: Likelihood of harm

    4. Po: Total ("overall") Probability

    2. Overview

    The Ketryx Lifecycle Management system implements a risk management procedure that aligns with the principles with ISO 14971. Members can conduct project-level and configuration item-level risk analysis with the focus of identifying potential risks, and limiting the harm resulting from said risks, to the patient.

    3. Risk configuration item

    Members are expected to perform a product-level risk analysis using methods such as , and record the results using for use across the system.

    Risk items can be introduced throughout the product lifecycle and in each new version. Moreover, Ketryx allows any risk management methodology to be used, which can be mentioned on the resulting Risk items and also custom Risk item types.

    3.1. Introducing risks

    It is possible to perform risk analysis on a configuration item level, which can be done for the following item types:

    1. Requirement

    2. Software Item Spec

    3. Hardware Item Spec

    4. Change Request

    If a configuration item results or is associated with a risk, it is referred to as an item with introduced risks.

    3.2. Risk controls

    Tooling: Risk Control Measure tracking and system notifications

    Risk control measures can be created from Risk configuration items. This includes configuration items of the following types: Requirement, Software Item Specification, Hardware Item Specifications, and Test Case.

    Risk controls can also lead to new risks, which are tracked as well.

    3.3. Custom risk item types

    New in 2.13

    In addition to builtin Risk items, an organization may define custom Risk item types with their own respective set of item fields (e.g. to separate Cyber Risks from more physical Risks).

    A custom Risk item can be defined via the advanced setting on the organization level via the RISK category.

    Example for a custom risk item representing identical fields as a builtin Risk type:

    Important: When configuring a custom risk item type, the following fields must be present to be able to conduct risk analysis according to the Ketryx Risk management framework:

    • initialOccurrenceProbabilityText

    • initialHarmProbabilityText

    • initialTotalProbability

    Items of category RISK will be equivalent to a built-in Risk item. They will comply to the given effective Risk configuration and Risk enforcement / synchronization rules, and will provide Risk specific UI in the Create / Edit item screen on Ketryx.

    3.3.1. Risk management widget in custom Risk item type

    New in 2.13.6

    The is now enabled by default for custom item types in the "Risk" category. To use granular widget control to whitelist only specific risk item types where you want the widget to appear, see .

    3.4 Risk items with extra custom fields

    Ketryx currently provides configuration via the advanced setting to add custom fields to any built-in Ketryx item type, such as Requirements, Software Item Specifications, Test Cases, etc.

    However, due to technical reasons, this particular setting is currently not available by default for Risk item types. In order to remove fields from or add fields to the Ketryx create/edit form for Risk item types, a feature flag needs to be enabled that activates a unified create/edit item experience.

    Please contact the Ketryx Support team to activate the new Risk item create/edit experience with custom field functionality.

    4. Risk configuration

    This section provides an overview of the options for risk configuration in Ketryx. Please see for a detailed guide.

    The risk configuration is a foundational component of the risk management system as it allows certain members to predefine a list of possible values for various Risk item fields, as well as define the framework of how a risk should be evaluated given a set of values (i.e., P1, P2, and Severity).

    The risk configuration can be defined on two levels:

    • At an organization level (as an organization owner), which will affect the configuration of all projects in said organization

    • At a project level (with project management permissions), which will scope the configuration to said project and override any overlapping configuration fields set in its organization

    For each level, the configuration may be set on the Advanced Settings page of an organization,

    and of a project.

    If a configuration field is not provided on either level, the default system values will be used as a fallback.

    4.1. Configuration of risk analysis

    The Ketryx ALM offers members an automated risk assessment which relies on matrices to perform the evaluation. Said evaluation puts four evaluation matrices at the members disposal for configuration:

    • Initial Total Probability matrix

    • Initial Risk Evaluation matrix

    • Residual Total Probability matrix

    • Residual Risk Evaluation matrix

    The matrices can be configured in the following dimensions:

    • General level: The matrices are applied to both, Risk items and custom Risk items (if no more specific configuration has been found. See the advanced settings for the )

    • Custom Risk type level: The matrices are applied to a particular custom Risk item type (see the advanced setting for the )

    For each dimension, a member may define different matrices per hazard type to add even more fine-grained risk matrices.

    Note: Ketryx tries to construct a risk configuration from the most specific configuration (e.g. project level / hazard type based / custom risk type based) to the most general one (org level / default Risk based).

    Additionally, Ketryx provides a option that prevents members from overriding any of the derived values from the matrices, when editing a risk.

    4.2. Harm associated severity

    The risk configuration provides the possibility to associate an initial severity to a harm. This results in the associated severity being filled in once the corresponding harm has been selected by a member. In , a member cannot override an associated severity and they must provide a harm value set in the configuration.

    4.3. Hazard type associated configuration

    Members may provide a risk configuration that is associated with a hazard type value (either on the general or risk type level). Consequently, if a member selects a hazard type with an associated configuration, the following risk configuration fields, if available, will be used instead of the regular risk configuration fields:

    • Initial and residual total probability matrix

    • Initial and residual risk evaluation matrix

    • Initial and residual likelihood of occurrence

    • Initial and residual likelihood of harm

    4.4. Non-strict mode (default)

    Non-strict mode will enable the following behavior:

    1. Members may freely define a harm, even if the harm does not correspond to any default severity. Therefore, it is also not required to configure a pre-defined list of harms.

    2. The initial severity field may be selected freely and is not coupled to any harm (but may default to a harm's configured severity).

    3. The initial and residual risk evaluation fields as well as overall risk acceptability fields can be manipulated after a calculation.

    Additionally, the following synchronization behavior will be active:

    1. On a risk configuration change, only empty fields on an uncontrolled Risk item will be modified, if necessary

    2. Controlled items will remain in a controlled state following a configuration change

    Note: This mode is the default to allow for more flexibility. However, we recommend enabling the various strict modes to always enforce up-to-date Risk items.

    4.5. Strict modes

    Ketryx provides a multitude of strict enforcements for various aspects of the risk management feature, namely:

    1. Requiring the selection of a pre-defined harm value and its associated initial severity value

    2. Enforcement of any risk analysis values derived from the default or customized

    3. Requiring the selection of a pre-defined hazard value

    4. Requiring the selection of a pre-defined hazardous situation value

    To activate these options, navigate to the project's settings page and enable them under the Risk management section.

    By turning on strict mode 1 or 2, the following synchronization behavior will be active:

    1. Ketryx will apply the enforced risk configuration to any uncontrolled Risk items and consequently create new records

    2. Controlled items will remain in a controlled state and therefore unaffected

    4.5.1. Enforced risk configuration

    In strict mode 1 and 2, whenever the risk configuration has been changed, either on the organization or project level, Ketryx will create a new record for all relevant Risk items to reflect the most recent configuration.

    If a Risk item complies to a P1, P2 or severity value that doesn't exist in the new configuration (e.g. the new matrices don't have an entry for the P1/P2 pair), the value will be unset, ultimately removing all the other values that are based on the relevant lookup table.

    4.5.2. Enforced field values

    Given the appropriate setting, the system ensures that the entered harm, hazard or hazardous situation of a Risk item corresponds to a harm, hazard or hazardous situation from the risk configuration, respectively. If the entered value were to not correspond to a pre-defined value, members will not be able to approve the Risk item once its in a resolved state.

    5. Creating and editing risks

    Risks may be created either in Ketryx or Jira, with the former being recommended and the latter being subject to certain restrictions. The risk form is available through the risks page, by click on the Add risk button.

    To edit an existing risk, an Edit risk button can be found on an individual item in the risks page.

    For detailed instructions on the workflow of a risk, see .

    5.1. Editing in Jira

    For the best user experience, we recommend managing your risk analysis in Ketryx. However, if you opt to manage Risk items in Jira, there are some caveats and formatting limitations to pay to attention to, which will be described in detail in the following sections.

    5.1.1. Jira rich-text formatting

    Jira provides extensive rich-text formatting capabilities out of the box, which also apply to all the relevant Risk item fields. However, not all formatting capabilities map seamlessly to Ketryx.

    As a guideline, it is highly recommended to only use the following formatting functionality within a rich-text field on Risk items:

    • Paragraphs

    • Ordered / Unordered lists

    • Basic inline formatting such as bold, italic, or inline code

    The following formatting options are not supported and will cause undesired formatting on Ketryx's side when synchronizing items with Jira:

    • Tables

    • Inline images and other attachments

    • Font colors

    • Strikethrough

    The following behavior may occur when handling Risk items using unsupported formatting within Ketryx:

    1. The Ketryx Risk management page and risk editing form may show malformed text or omit particular information. After saving, the data as seen on Ketryx will still be stored in the record as-is.

    2. When editing and saving a dataset containing unsupported formatting, particular styling / information may be removed upon save and will be synchronized to Jira (to re-align with Ketryx's formatting standards).

    5.1.2. Omitted risk analysis fields

    A Risk item in Jira does not possess any editable initial and residual risk analysis fields (e.g. P1, Severity). Instead, it offers a read only widget to view the values of these fields, which can be set in Ketryx. The values are rendered using .

    5.1.3. Harm associated severity

    Due to technical limitations, the harm field in Jira is a free-form text field. When the risk configuration of the connected Ketryx project has activated, and the entered harm does not correspond to any harm in the risk configuration, the Initial severity field remains unchanged in the widget and will not map to its pre-configured harm <--> initial severity value.

    5.1.4. Hazard and hazardous situation

    Similar to the harm field, both the hazard and hazardous situation fields in Jira are free-form text fields, and don't provide pre-configured dropdowns based on the Ketryx project's risk configuration. Consequently, when the risk configuration's are enabled, members are required to enter the precise value of a configured hazard/hazardous situation, otherwise the approval of the risk may be potentially .

    5.1.5. Sequence of events content

    The Ketryx ALM expects a numbered list in the Foreseeable sequence of events field. If a member fails provide content in this format, Ketryx shall do its best to transform the provided content into a numbered list in Ketryx.

    Each entry in the list denotes an individual event within the sequence, with the specified order being of significance.

    5.1.6. Risk calculation boxes

    In the risk form and , Ketryx offers a visual container that provides an understanding of how certain risk analysis fields were derived. Members can visually toggle, in the container, any of the matrices that were used in the calculations.

    Derived values that are based on the matrices will be visually marked as "recommended" values by the form. However, users retain the flexibility to override these recommendations. If they do, their action will be made explicit with an asterisk in the container, or even with a completely separate container as is the case with the overall risk acceptability.

    Granular widget control

    New in 2.13.6

    You can now control which risk-related item types display the Risk widget through the advanced settings - . This allows you to selectively disable the widget for specific risk item types while keeping it enabled for others. Example use case: If you have custom risk types but want to disable the widget for the standard Risk type, simply whitelist only your custom risk types in the configuration.

    6. Risk management page

    Members can review risks using the risk table in the Risk management page. Items in the table can be grouped by Harm or Hazard, sorted by various Risk item fields and filtered by acceptability.

    Each Risk item row will feature an overview of the risk acceptability, of any missing approvals and if the benefit-risk analysis is set. Furthermore, risk controls of a risk will have their test cases and corresponding results listed. Metadata-related details, including the ticket state, current owner, and pertinent versions, are also visible.

    Members should document their risk analysis review in the risk management file.

    7. Risk controls page

    Members can review risk controls using the risk table in the Risk controls page. For each risk control, the following columns can be seen:

    • The risk being controlled

    • A hazard analysis of the risk

    • Any risks introduced by the risk control

    • Any test cases covering the risk control

    Hazard analysis

    The hazard analysis gives an overview of the following fields originating from the controlled risk:

    • Hazard (Rich-text field)

    • Hazardous situation (Rich-text field)

    • Sequence of events (Rich-text field)

    • Harm (Rich-text field)

    For the hazard analysis to show up green, the following conditions must be met: the first four rich-text fields must be filled out and the risk acceptability must be acceptable. If the latter is not acceptable, then a benefit-risk analysis must be provided. If any of the fields (except for benefit-risk analysis) are missing, then the status pill will show an exclamation icon. If the risk acceptability is not acceptable and no benefit-risk analysis is provided, then an error icon will be displayed.

    Controlled risk & Arising risks

    The controlled risk and arising risks (if any) status indicate whether the relevant risks are in a controlled state.

    Tests

    The tests column indicates whether a Test Case has been assigned to the risk control. Furthermore, it informs the user whether the Test Case is in a controlled state and if a corresponding controlled Test Execution exists. If a failing Test Execution exists, then the status pill will show up with an error icon.

    8. Release documents

    Ketryx offers four built-in release documents related to risks:

    • Risk Management File

    • Risk Matrix

    • Risk Control Matrix

    • Testing Report

    Custom documents may be generated based on .

    8.1. Risk matrix customizations

    Columns in the risk matrix release document may be renamed or omitted. See the Risk matrix field under Document configuration on the page.

    8.2. Risk management file customizations

    By default, the Risk Management File includes a section about the latest configured risk evaluation matrices. A member may omit this section by configuring the Risk Management File field under Document configuration on the page.

    MAN-10 Managing items in Ketryx

    Manual for creating and editing items in Ketryx

    1. Introduction

    1.1. Purpose

    The purpose of this manual is to instruct users on how to manage items within Ketryx and what the limitations are.

    1.2. Scope

    The scope of this manual is the management of items within Ketryx. Items from external sources other than Jira, as well as Xray items, are not covered by this feature.

    2. Creating items

    A new item can be created by selecting a relevant item type in the Create item dropdown on the All items page. The options listed in the dropdown are active release item types. Please note that at the moment the following types are not supported: Custom, Test plan and Test execution. When selecting Risk in the Create item dropdown, the User is redirected to the Risk form, in the other cases - to the general item form.

    To disable item creation, the Allow item creation flag should be set to No in the project item configuration. By default, the Allow item creation flag is enabled. More info on the .

    2.1. Item form for creating items

    To create an item, at least the Title field must be filled in.

    3. Editing items

    There are 2 ways to access the item form for editing: via the All items page or Record details page.

    On the All items page, the Edit item button is displayed when one item is selected in the table.

    On the Record details page, the Edit item button is displayed in the header.

    Only the current record of an item can be edited, provided it has not been deleted and is not a Test plan, Document, Vulnerability, or Xray item. Additionally, only items sourced from either Ketryx or Jira are supported for editing at the moment.

    Clicking the Edit item button redirects to the Risk form in case it is a risk item, and to the general item form in the other cases.

    To disable item editing, the Allow item editing flag should be set to No in the project item configuration. By default, the Allow item editing flag is enabled. More info on the .

    3.1. Item form for editing items

    The form is disabled if the Allow item editing flag is set to No, or if the item is deleted, a Test plan, Document, Vulnerability, Xray item, or from a source other than Ketryx or Jira. Additionally, if the item is in a resolved or controlled state and the Allow item transition flag is set to No, editing is also restricted.

    4. Synchronize project

    The "Synchronize project" button initiates a full synchronization between Ketryx and your connected systems. During synchronization, Ketryx retrieves the latest data from all connected systems, including items, custom fields, relationships, and version information.

    New in 2.13.2

    Cancel Synchronization You can now cancel an active synchronization by clicking the Cancel sync icon in the sync progress popover. This allows you to start and stop large syncs according to your needs. Note that cancelling a synchronization will result in a partially synced project. Items that were already processed will reflect their updated state, while items not yet processed will retain their previous state.

    Note: If a project synchronization is in progress and you change the Advanced Settings, the current synchronization will stop and a new one will start with the updated settings.

    5. Item form limitations

    5.1. Jira rich-text formatting

    Jira provides extensive rich-text formatting capabilities, which apply to all the relevant item fields. However, not all formatting capabilities map seamlessly to Ketryx.

    The following formatting functionality is supported within a rich-text field in Ketryx:

    • Paragraphs

    • Ordered / Unordered lists

    • Basic inline formatting such as bold, italic, or inline code

    The following formatting options are not supported on Ketryx's side:

    • Tables

    • Inline images and other attachments

    • Font colors

    • Strikethrough

    When editing a rich-text field containing unsupported format, a warning message is displayed.

    5.2. Extra fields

    Extra field names specified in the project item configuration are currently not supported in the form.

    5.3. Jira relations fields

    Jira limits the number of options in the relations fields to 10,000.

    Users normally hit that limit with relations like Affected items first. When the 10,001st affected item is created, it will still be selectable in the Ketryx edit item form but not in Jira. When it is selected in Ketryx and then is synced to Jira, this item will be missing in the relation field in Jira. When the item is then edited in Jira, it will be synced back to Ketryx and the item will be gone from the relation field in Ketryx too.

    5.4. Custom workflows

    Custom workflows are currently not supported in the item form. Only standard states, such as Open, In Progress, Resolved, and Closed can be managed via the form.

    To disable item transition, the Allow item transition flag should be set to No in the project item configuration. By default, the Allow item transition flag is enabled. More info on the .

    6. Viewing Agent Findings

    New in 2.14

    Ketryx AI agents can analyze your items and provide recommendations for improvement. These agent findings are now displayed directly on the Record details page, allowing you to review recommendations in context without navigating away from the item you're working on.

    To enable this functionality, please .

    For more information on how to use Ketryx Agents, refer to the Agents section.

    7. Commenting on items

    Ketryx supports adding comments to item records via the Record details page. Comments are visible to all members of the project and can be added by any member of the project. All comments are immutable, i.e. once a comment is added, it cannot be changed.

    Comments are shown at the bottom of the Record details page.

    Comments are exposed to the document templating system, for both as well as .

    8. Custom relations

    New in 2.13

    Ketryx supports configuring custom relations between items, allowing users to configure a custom traceability framework to better express and manage dependencies between different item types, including and . This enhances traceability and improves alignment across hardware, software, and other domains.

    This capability is configured at the Organization-level advanced settings. To enable it, Ketryx Support must activate the following feature flag: Custom Relations.

    8.1. Example custom relation

    Organization-level advanced settings:

    Add the following configuration under Custom relations:

    With this configuration, you can create a relation from a software item spec to a hardware item spec. The relation will be visible in the traceability widget, improving visibility and management of cross-domain relationships.

    How to Generate the Design History File for your Medical Device

    Overview

    Creating a Design History File for regulatory submission requires systematic documentation of every development decision. This How-to Guide shows you exactly how to do it in Ketryx, providing step-by-step instructions for creating the design documentation required to build your medical device. By following this guide, you will generate the necessary technical documents and compile a complete (DHF) required for submissions and other regulatory approvals.

    Environmental scoring profile
    [
      {
        "version": "3.1",
        "confidentialityRequirement": "H",
        "integrityRequirement": "H",
        "availabilityRequirement": "M",
        "modifiedAttackVector": "A"
      },
      {
        "version": "4.0",
        "confidentialityRequirement": "H",
        "integrityRequirement": "H",
        "modifiedAttackVector": "N",
        "modifiedAttackComplexity": "L"
      }
    ]
    Severity based on CVSS vector string
    Severity level and numeric score
    Severity level without a numeric score
    Optionally, the user can specify the main branch or tag to analyze. Otherwise, the default HEAD branch (usually called main or master) will be used.
  • In addition, the user can specify a release ref pattern, informing how a branch or tag corresponding to each project version is determined. By default, this will be set to refs/tags/v#. The placeholder # is replaced by (a part of) the version number of a given version until a match is found; e.g., for a version with the full name App v1.0 (which implies a version number 1.0.0), the tag names v1.0.0, v1.0, v1 would be searched; if the tag v1.0.0 does not exist but v1.0 exists, that tag v1.0 would be associated with the version.

  • The user can use glob patterns to restrict which dependency manifest files (e.g. a package.json file) and locked dependency manifest files (e.g. a package-lock.json file) will be included in the dependency scanning. These glob patterns define the locations of dependency manifest files within a Git repository and Ketryx will scan the repository for files that match these patterns. For example:

    Ketryx will scan the repository for:

    • All files named requirements.txt in the server/ directory and all its subdirectories

    • All supported dependency manifest files (including locked dependency manifest files) in the wwwroot/ directory and all its subdirectories

    • Omit all files in the tests/ directory and all its subdirectories

  • Then, the user presses the Create project button. The direct dependencies of the repository will be automatically scanned and shown in the dependency screen.

  • Rejected 𝗫 means that a dependency has been fully approved and moved into a controlled state and its usage being rejected.

  • Changed ✔ means that a dependency has been edited after being in a controlled state and the changes would result in this dependency being accepted, indicated by the checkmark icon on the right.

  • Changed 𝗫 means that a dependency has been edited after being in a controlled state and the changes would result in this dependency being rejected, indicated by the X icon on the right.

  • Reliability impact justification

  • Additional notes

  • Versions to accept

  • Risk level

  • Issue tracker (URL)

  • Manufacturer

  • License

  • Level of support

  • Level of support description

  • End of life

  • End of life description

  • > <=1.0.0

  • > ^1.0.0

  • > 1.2.3 - 2.3.4

  • *

  • ~1.0.0

  • > =0.14 <16

  • > 0.14.x || 15.x.x

  • NuGet
  • Packagist

  • Pub

  • PyPI

  • RubyGems

  • SwiftURL

  • crates.io

  • npm

  • package.json, package-lock.json

    pip

    Python

    requirements.txt

    requirements.txt, Pipfile, Pipfile.lock

    poetry

    Python

    pyproject.toml, poetry.lock

    pyproject.toml, poetry.lock

    yarn (v1-v4)

    JavaScript

    yarn.lock

    package.json, yarn.lock

    ,
    ^18.0.0
    is the declared version range. Can be multiple versions or version ranges if a dependency was found in multiple package manifest files.
  • Locked Version(s) (1): The resolved, locked version of a dependency found by Ketryx in a package manifest lock file, if available. E.g. for npm dependencies, if react was declared using "react:" "^18.0.0" in package.json and resolved to 18.2.0 as found in package-lock.json, 18.2.0 is the locked version. Can be multiple versions if a dependency was found in multiple package manifest files.

  • Earliest Used Version (1): The earliest used version of this dependency. E.g. if react is used multiple times, once in version 17.0.0 and once in 18.0.0, 17.0.0 would be the earliest used version.

  • Latest Used Version (1): The earliest used version of this dependency. E.g. if react is used multiple times, once in version 17.0.0 and once in 18.0.0, 18.0.0 would be the latest used version.

  • Latest Available Version (1): This is the latest available version of a dependency as found on package registries.

  • Accepted Version(s): The accepted version for this dependency. See versions to accept for more information.

  • Status: The acceptance status of the dependency. See the dependency screen for an explanation of the different status values.

  • Risk level: Risk level refers to an estimate of the severity of injury that this dependency could permit or inflict, either directly or indirectly, on a patient or operator as a result of dependency failures, design flaws, or simply by virtue of employing the dependency for its intended use.

  • Issues URL (2): The URL to the issues of a dependency.

  • Manufacturer (2): The manufacturer of a dependency.

  • License (2): The license(s) of a dependency.

  • Intended Use (2): The intended use for a dependency.

  • Vulnerabilities: For dependencies discovered by Ketryx automatically (see dependency scanning), Ketryx will attempt to automatically find vulnerabilities. This column will contain the summary of these vulnerbilities. See also cybersecurity. For manual dependencies, this column will contain the contents of the Vulnerabilities input field that's available when creating of editing manually created dependencies. See also manual dependencies.

  • Vulnerability URLs (1): For the found vulnerabilities, this column will contain the relevant URLs as found in the vulnerability database. For manually defined dependencies, this column will be empty.

  • Security Impact: The possible impact the dependency could have on the vulnerability of the device to cyberattack.

  • Security Impact Justification: If a security impact exists for a dependency, the rationale for its inclusion in the device.

  • Reliability Impact: The possible impact this dependency could have on the efficacy and safety of the device were it to be unreliable.

  • Reliability Impact Justification: If a reliability impact exists for a dependency, the rationale for its inclusion in the device.

  • Additional Notes: Field for any other notes about a dependency.

  • CocoaPods

    Objective-C, Swift

    Podfile.lock

    Podfile, Podfile.lock

    Gradle

    Java, Kotlin

    build.gradle

    build.gradle

    npm (v5-v10)

    JavaScript

    app.ketryx.com
    dependency scanning
    dependency editing
    Cybersecurity
    dependencies screen
    dependency scanning
    dependency screen
    dependencies screen
    dependency scanning
    this SemVer document
    GitHub Advisory Database
    Vulnerability Management
    OSV ecosystems
    section 12
    contacting us
    Build API
    supported ecosystems
    SPDX manual
    Advanced Settings
    SBOM review page
    Dependency status tooltip
    Create manual dependency button
    Manual dependency creation screen
    Versions to accept set to ^2.9.0
    Setting a custom version range resulting in rejection
    The dependency details page of the library "steal" showing its dependency tree
    The dependency details page of the library "steal" showing its vulnerabilities and the vulnerabilities of its dependencies
    Projects dashboard
    Create project page
    Selecting multiple dependencies
    Batch approval dialog
    Dependency approval status summary
    Revoke dependency approval

    package-lock.json

    initialSeverityText
  • initialRiskEvaluationText

  • residualOccurrenceProbabilityText

  • residualHarmProbabilityText

  • residualTotalProbability

  • residualSeverityText

  • residualRiskEvaluationText

  • isRiskAcceptable

  • Initial and residual severity

  • Initial and residual total probability

  • Initial and residual risk evaluation

  • Code blocks
  • Title headers

  • Info/warning/error boxes

  • @ mentions for users and Jira tickets

  • Emojis

  • Dates

  • States

  • … and other similar complex constructs that go beyond the recommended list

  • The item status of the risk control

    Residual risk (Dropdown value)
  • Risk acceptability (Acceptable or Not acceptable)

  • Benefit-risk analysis (Rich-text field)

  • Risk items
    FMEA
    Risk configuration items
    Custom item type
    risk management widget
    here
    Item fields
    Risk Configuration
    Risk configuration
    custom risk type based configuration
    strict mode
    strict mode
    risk matrices
    WI-10 Risk
    risk calculation boxes
    strict mode
    strict modes
    blocked
    risk management Jira widget
    Jira widget display
    document templates
    Advanced project settings
    Advanced project settings
    Advanced organization settings page
    Advanced project settings page
    Strict mode settings page
    Approval blocked by harm
    Empty risks page
    Risks page with single item
    Risk management widget
    Risk information box
    Risk table with item
    Risk control table with item
    Hazard analysis popup
    Test analysis popup
    Code blocks
  • Title headers

  • Info/warning/error boxes

  • @ mentions for users and Jira tickets

  • Emojis

  • Dates

  • States

  • … and other similar complex constructs

  • Advanced project settings
    Advanced project settings
    Advanced project settings
    contact our support
    item records
    items
    custom items
    documents as configuration items
    Create item dropdown
    Create item
    The Edit button on the All items page
    The Edit button on the Record details page
    Comments
    Custom relation between two items in the traceability widget
    server/**/requirements.txt
    wwwroot/**
    !tests/**
    compile group: 'com.google.guava', name: 'guava', version: '23.4-jre'
    compileOnly 'com.google.code.findbugs:jsr305:3.0.2'
    implementation (
        'org.apache.tiles:tiles-api:3.0.8',
        'org.apache.tiles:tiles-core:3.0.8',
        'org.apache.tiles:tiles-extras:3.0.8',
    )
    [
      {
        "name": "Custom Risk",
        "fields": [
          {
            "kind": "SYSTEM",
            "fieldKey": "systemCategoriesText",
            "isEditableInKetryx": true
          },
          {
            "kind": "SYSTEM",
            "fieldKey": "riskAssessmentMethodologiesText",
            "isEditableInKetryx": true
          },
          {
            "kind": "SYSTEM",
            "fieldKey": "harm",
            "isEditableInKetryx": true
          },
          {
            "kind": "SYSTEM",
            "fieldKey": "hazardTypeText",
            "isEditableInKetryx": true
          },
          {
            "kind": "SYSTEM",
            "fieldKey": "hazard",
            "isEditableInKetryx": true
          },
          {
            "kind": "SYSTEM",
            "fieldKey": "hazardousSituation",
            "isEditableInKetryx": true
          },
          {
            "kind": "SYSTEM",
            "fieldKey": "sequenceOfEvents",
            "isEditableInKetryx": true
          },
          {
            "kind": "SYSTEM",
            "fieldKey": "initialOccurrenceProbabilityText",
            "isEditableInKetryx": true
          },
          {
            "kind": "SYSTEM",
            "fieldKey": "initialHarmProbabilityText",
            "isEditableInKetryx": true
          },
          {
            "kind": "SYSTEM",
            "fieldKey": "initialSeverityText",
            "isEditableInKetryx": true
          },
          {
            "kind": "SYSTEM",
            "fieldKey": "initialTotalProbability",
            "isEditableInKetryx": false
          },
          {
            "kind": "SYSTEM",
            "fieldKey": "initialRiskEvaluationText",
            "isEditableInKetryx": true
          },
          {
            "kind": "SYSTEM",
            "fieldKey": "riskControlOptions",
            "isEditableInKetryx": true
          },
          {
            "kind": "SYSTEM",
            "fieldKey": "riskControlMeasures",
            "isEditableInKetryx": true
          },
          {
            "kind": "SYSTEM",
            "fieldKey": "residualOccurrenceProbabilityText",
            "isEditableInKetryx": true
          },
          {
            "kind": "SYSTEM",
            "fieldKey": "residualHarmProbabilityText",
            "isEditableInKetryx": true
          },
          {
            "kind": "SYSTEM",
            "fieldKey": "residualSeverityText",
            "isEditableInKetryx": true
          },
          {
            "kind": "SYSTEM",
            "fieldKey": "residualTotalProbability",
            "isEditableInKetryx": false
          },
          {
            "kind": "SYSTEM",
            "fieldKey": "residualRiskEvaluationText",
            "isEditableInKetryx": true
          },
          {
            "kind": "SYSTEM",
            "fieldKey": "isRiskAcceptable",
            "isEditableInKetryx": true
          },
          {
            "kind": "SYSTEM",
            "fieldKey": "riskBenefitAnalysis",
            "isEditableInKetryx": true
          },
          {
            "kind": "SYSTEM",
            "fieldKey": "introducedInVersion",
            "isEditableInKetryx": true
          },
          {
            "kind": "SYSTEM",
            "fieldKey": "obsoleteInVersion",
            "isEditableInKetryx": true
          }
        ],
        "category": "RISK",
        "lifecycle": "LONG_LIVED",
        "shortName": "CRISK",
        "isEditableInKetryx": true
      }
    ]
    {
      "SW_TO_HW": {
        "direction": "upstream",
        "fieldName": "Related to hardware spec",
        "relationName": "relates to HW",
        "sourceItemTypes": [
          "Software Item Spec"
        ],
        "reverseFieldName": "Related to software spec",
        "targetItemFilter": "type:HW",
        "reverseRelationName": "relates to SW",
        "traceabilityWidgetAddLabel": "Add related hardware spec"
      }
    }
    What You'll Create

    How to Use This Guide

    This guide is broken into eleven steps that mirror the medical device development lifecycle by creating and mapping Ketryx Configuration Items to key release documents. In addition to step-by-step instructions on how to populate key information for each type of Configuration Item, the final section of this guide provides an overview of additional default release documents and the key types of Configuration Items that they contain.

    Sections include:

    1. Requirements

    2. Design Specifications

    3. Risk-related items

    4. Versioning

    While many of these Configuration Items can be created in parallel using Ketryx, it is recommended to follow this guide in order (or to at least fully understand why the steps are written in this order) and to diligently populate item metadata and traceability. Once you create your DHF, Ketryx enables you to work in agile, continuously updating and testing individual Configuration Items in parallel.

    This structured approach not only streamlines the generation of essential technical documents like the SRS, SDS, Risk Management File, and Test Reports, but also helps ensure compliance with regulatory requirements from bodies such as the FDA. The continuous use of the Traceability Matrix and incremental versioning practices will further support your organization’s ability to maintain a controlled, traceable, and auditable record throughout the entire medical device lifecycle.

    Tracking Progress

    Continuous Verification with the Traceability Matrix

    It is recommended that you review the Traceability Matrix (see MAN-07 Traceability) early and often and use it as a guide throughout the full lifecycle of Configuration Items being managed in Ketryx. It will help you visualize the relationships required by 21 CFR 820 and ISO 13485 for design controls and also see if anything is missing and what to fix. This is also why it is a required artifact in many regulatory regions.

    Release Progress Check

    The release screen also provides a consolidated view of your readiness, showing which design control activities are complete and which documents are generated (see MAN-02 Software Release Process). Use it as a quick dashboard to identify gaps in your DHF.

    Leveraging AI with Ketryx Assistant

    The Ketryx Assistant can accelerate a variety of tasks and document creation throughout this process. It can analyze existing Configuration Items, identify traceability gaps, and generate drafts of items based on your specific project context.

    Examples of when to use the Assistant:

    Initial Creation

    • Generating first drafts of requirements from user needs

    • Identifying risks based on existing requirements and specifications

    • Creating test cases for verification or validation

    • Drafting initial vulnerability impact assessments

    Analysis & Review

    • Finding traceability gaps

    • Checking for missing risk controls

    • Identifying untested requirements

    • Reviewing completeness of your DHF

    Examples of how to use it effectively include:

    • Requirements & Specification Generation: “Draft user requirements for [my device] that [have these key functions]”

    • Risk Analysis: “Review all requirements and specifications in this project and draft potential risks”

    • Test Case Creation: “Suggest test cases for requirements RQ-001 through RQ-010”

    • Traceability Review: “Check traceability gaps between requirements and test cases and suggest fixes”

    Prerequisites

    Before starting, ensure you have:

    Essential:

    • Ketryx project created and configured

    • Understanding of your device’s intended use and user needs

    • Access and understanding of applicable regulatory standards (ISO 13485, IEC 62304, ISO 14971)

    Recommended:

    • Team members assigned with appropriate roles

    • Quality Management System (QMS) procedures established for:

      • Document control and approval workflows

      • Change management process

      • Risk management approach

    • (e.g. GitHub) for code traceability

    Getting Started

    With prerequisites in place, you’re ready to begin creating Configuration Items that will form your DHF. The following sections guide you through each type of configuration item in a recommended sequence.

    Begin with section 1 (Requirements) as these form the foundation for everything else.\

    1. Requirements

    Key resulting document: System/Software Requirement Specification

    Document description: Provides a written definition of the software functions, which is essential for validation and regulatory submissions.

    Start with:

    • Create Use Case Requirements - see WI-01 Requirement

    • Configuration Item Type: Requirement (with Requirement Type = "Use case")

    • Purpose: Captures user needs and high-level functional goals.

    • Ketryx Traceability column: Use Cases

    Then:

    • Create Design Inputs: System/Software Requirements - also WI-01 Requirement

    • Configuration Item Type: Requirement (all other types except "Use case")

    • Purpose: These are actionable, detailed requirements derived from use cases that explain how a software system can perform the use cases

    • Traceability: Relate to one or more applicable Parent Requirements of Type “Use case”

    • Ketryx Traceability column: Design Inputs

    Metadata:

    • All Requirements: Populate Requirement Type and Context

    • Design Inputs / System-type Requirements: Populate Context where applicable (for example cyber or safety)

    Why:

    • Requirements are the foundation for all design, risk, and test activities. They drive traceability and are central to the SRS and traceability matrix documents

    • Context is used to flag items that should be considered for any associated Risks

    2. Design Specifications

    Creation of Design Specifications and Risk items will often be performed by different people within an organization and can be done in parallel.

    Key resulting document: Software Design Specification / Software Detailed Design

    Document description: Describes the technical implementation of software functions, outlining how the software design fulfills the requirements of the Software Requirements Specification (SRS) and detailing software units, interfaces, and data flow

    Software & Hardware Item Specs:

    • Create Software Item Specs and Hardware Item Specs (if applicable) - see WI-02 Software Item Spec

    • Configuration Item Types: Software Item Spec and Hardware Item Spec

    Metadata:

    • Traceability: Relate to one or more applicable Parent Requirements

    • Traceability: Relate to other applicable SW items to start building the architecture of the device

    • Context: Populated where applicable to flag items to be considered for any associated Risks

    Why:

    • Design specs show how requirements are implemented and are needed for the SDS and architecture documents

    Note about Configuration Item Type: Tasks - see WI-03 Task

    • Tasks are a way to assign team members work. They can provide all the context needed to users to perform the work (e.g. the RQ or SW item to be implemented) and help track that the work is done

    • While Tasks are not the primary Configuration Item type included in any Release Documents, Tasks that trace back to Requirements, Software Item Specs, CAPAs, and other Configuration Items may appear in Release Documents

    • The use of Tasks within an organization is optional. A common reason to use the Task configuration item in Ketryx is to provide developers with additional information on how to perform an implementation that will not show up in regulatory submissions, and/or to track that the information was implemented

    3. Risk-related Items

    Key resulting document: Risk Management File

    Document description: A comprehensive collection of records documenting all risk management activities undertaken throughout the entire lifecycle of a medical device

    Risk Analysis & Management Items:

    • Create Risks, analyze Risks, and define Risk Controls - see MAN-08 Risk Management and WI-10 Risk

    • Configuration Item Types: Risk, Requirement, Software Item Spec, Hardware Item Spec

    Metadata:

    • Traceability: Relate Risks to applicable Requirements where the risk is introduced. Requirements with context Safety, as marked in the above steps, are a good example of where to establish this traceability

    • Traceability: Relate to Requirements and Software Item Specs that Control each Risk

    • For Requirement, Software Item Spec, Hardware Item Spec:

      • Context: Only items with Context = Safety are included in the “Identification of characteristics related to safety” section of your Risk Management File

    Why:

    • Early risk management is required by ISO 14971 and FDA

    • Risks and controls must be traceable to requirements and design

    4. Versioning

    Key resulting document: The Version configuration item is the central organizing entity for all Release documentation

    Particularly during the development process, it can be useful to iterate items often and save pieces of documentation to points in time of your development/testing. To do so:

    • Control all of your Configuration Items created so far

    • Create a Release as a “snapshot”, for example, v0.0.1

    • Generate Release Documents of interest, e.g., SRS and SDS

    • Repeat for successive iterations

    Create:

    • Configuration Item Type: Version - see MAN-02 Software Release Process

    Why:

    • All default Release Reports are generated for a specific version of the product

    • When ramping up with Ketryx at your company, within a new area of your company, etc., it is good practice to regularly review and Approve Configuration Items, per your QMS, rather than creating all Configuration Items and then having to later review and Approve large numbers of items at once. For example, the following can be an effective way for your organization to incrementally adopt Ketryx.

    • Create the first round of Requirements, Software Item Specs, Risks, etc.; create Release Version v0.0.1

    • Work through the process of Releasing v0.0.1 as a non-production version, which will require you to exercise your release process including: Approving each Configuration Item, conducting Risk Management, confirming proper traceability is established, and generating Release Documents

    • As additional Configuration Items are created - creating more Items as described in the above sections as well as additional Types of Items per the following sections of this guide - repeat the above to generate successive non-production snapshot Releases (v0.0.2, etc)

    5. Test Cases, Test Plan, & Test Executions

    Key resulting documents: Test Plan and Testing Report

    Document description: A Test Plan outlines the strategy, scope, objectives, and methodology for software testing, while a Testing Report documents the results, detected defects, and overall outcome of the executed tests

    See MAN-06 Test Management for additional information.

    After creation of Design Specifications and Risk-related items:

    • Create Test Cases

    • Configuration Item Type: Test Case - see WI-04 Test Case

    Metadata:

    • Traceability: Relate to one or more applicable Requirements and Software / Hardware Design Specs

    Why:

    • Test Cases demonstrate that Requirements and Risk Controls are verified and/or validated, supporting the Testing Report and Traceability Matrix

    After creation of Test Cases:

    • Decide which Test Cases are included and excluded for the given Release Version

    • Configuration Item Type: Test Plan

    Metadata:

    • Populate the Rationale for exclusion for any excluded Test Cases

    Why:

    • The Test Plan specifies which Test Cases are required for a particular release. It serves a number of purposes, including traceability and compliance as well as forming part of the documentation required for audits and regulatory submissions

    After creation of Test Cases:

    • Create Test Executions

      • This can be done by creating an independent Configuration Item, from individual Test Cases within Ketryx or Jira, or in bulk from the Ketryx Test Module

    • Configuration Item Type: Test Executions - see WI-05 Test Execution

    Metadata

    • Traceability: Relate to applicable Test Cases. This traceability will be automatically created if the Test Execution is generated directly from a Test Case item or in bulk from the Ketryx Test Module

    Why:

    • Test Executions provide objective evidence for verification and validation for a particular Release, which is required for FDA submissions and other purposes

    6. Dependencies

    Key resulting documents: SBoM - SOUP - Software Configuration Report

    Document description: An SBoM - SOUP - Software Configuration Report identifies and details all software components including commercial, open-source, and Software of Unknown Provenance (SOUP), their dependencies, and configuration settings within the medical device

    See MAN-03 Supply Chain Management: Software Dependencies for additional information.

    Create:

    • Connect GitHub repository to Ketryx or submit dependencies via a supported format, such as SPDX or CycloneDX - see, e.g., MAN-03 and Working with CycloneDX

    Metadata

    • Traceability: Relate to applicable Configuration Items, such as Software Item Specs; available metadata fields are described in MAN-03

    Why:

    • Dependencies in Ketryx are used to manage and track all third-party and internal software components (including open-source and SOUP) that your system relies on

    7. Vulnerabilities & Vulnerability Impact Assessments

    Key resulting document: Vulnerability Report

    Document description: Documents identification, assessment, and summary of known security vulnerabilities in device software, including their potential impact and mitigation status

    Context:

    • Note that a Vulnerability is not a standard Ketryx Configuration Item type in the same way as Requirements, Risks, or Software Items, but it is managed as a first-class record within the Ketryx platform

    • It is highly recommended to enable the Enable Vulnerabilities as Configuration Items setting in your project's Advanced Settings. This ensures that vulnerability impact assessments are treated as full configuration items, requiring them to be controlled before a release, which is critical for regulated environments. See WI-12 Variants and Versions

    Creation:

    • When a Ketryx Project contains dependencies, Ketryx automatically detects vulnerabilities and presents them on the Vulnerabilities page within the SBOM module - see Vulnerability Management

    • Alternatively, vulnerabilities from a scanning tool that you already use can be reported via SPDX or CycloneDX

    • Vulnerabilities are not available in the standard "Create item" dropdown on the All Items page, and cannot be edited in the same way as other configuration items (like Requirements or Risks)

    • Impact assessments should be created for each vulnerability that shows up on the vulnerability page

    Metadata

    • Traceability: Relate to applicable Configuration Items, such as Risks and Risk Controls such as Software Item Specs; available metadata fields are described in MAN-03 - Vulnerability Management

    Why

    • Each Vulnerability is linked to the affected dependencies and can be connected to Requirements, Software Item Specs, Risks, and Test Cases, enabling you to align cybersecurity risk management with your overall product development and compliance processes

    8. Change Requests & CAPAs

    Key resulting documents: Change Request Verification Report and Change Management File - note that these reports are not default Release Documents

    Document description: A Change Management File systematically documents all changes to a medical device software throughout its lifecycle. A Change Request Verification Report confirms that implemented changes have been successfully verified and validated to meet their intended requirements

    Create:

    • Configuration Item Type: Change Request/CAPA

    Metadata:

    • Traceability: Relate to affected items, such as Anomalies and Software Item Specs - see WI-08 Change Request and WI-09 CAPA

    Why:

    • Change Requests and CAPAs in Ketryx ensure that all changes and corrective actions are managed in a controlled, traceable, and compliant manner, supporting both product quality and regulatory requirements

    9. Anomalies & Complaints

    Key resulting document: Problem Report

    Document description: Documents identified software issues or defects, detailing their impact, severity, and resolution, and is used to track the problem's lifecycle

    Create:

    • Configuration Item Type: Anomaly - see WI-06 Anomaly

    Metadata

    • Traceability: Relate to applicable items such as CAPAs, Change Requests, and other Items

    Why:

    • The Problem Report in Ketryx is a document that provides a comprehensive overview of anomalies (problems, bugs, defects) associated with a particular software version

    • It typically includes both new unresolved anomalies and resolved anomalies relevant to the release

    10. Documents as Items

    You may choose to turn on "documents as items" in Ketryx to manage documents from your eDMS with the same Configuration Item system used for your other artifacts. This enables documents to leverage features like custom fields and customer relations, allowing for more granular control, traceability, and integration with your quality management workflows. For example, you can define long-lived or point-wise document types, add custom metadata, and create direct relationships between documents and other configuration items (such as requirements or change requests).

    Key Release Documents that can contain references to Document Configuration Item Types: Release Notes, Traceability Matrix, System Requirements Specification / System Design Specification

    Create:

    • Configuration Item Type: Documents - see WI-11 Document and Document Templating

    11. Additional Ketryx default Release Documents

    The Configuration Items described above also populate into a number of additional Ketryx default Release Documents. We describe these documents in this section and list key Configuration Item types that populate each.

    Traceability Matrix

    Document description: Regulatory standards, such as FDA requirements, ISO 13485, and IEC 62304, require clear evidence that requirements are fulfilled and verified. The Traceability Matrix provides this evidence in a structured, reviewable format - see MAN-07 Traceability

    Release Notes

    Document description: Summary of the changes, enhancements, and fixes introduced in a new version of device software, providing clear information for users and regulators about updates relevant to safety and effectiveness

    Example: Ketryx's Release Notes

    System Architecture Chart

    Document description: Diagrammatic representation that illustrates the major software components, their relationships, and interactions within the device system to support understanding of the software’s structure and data flow - see MAN-01 Ketryx Life Cycle Management

    Training Status Report

    Document description: Overview of the training status and compliance of users within a project, showing which team members have completed required training on controlled documents

    Context:

    • The Training Status Report primarily contains information about Users and their acknowledgement of having trained on training-related Documents

    • Note that Users are not a standard Ketryx Configuration Item type in the same way as Requirements, Risks, or Software Items, but it is managed as a first-class record within the Ketryx platform

    • Provides a summary of the training status of all project members, documenting which users have acknowledged and completed training on required documents to ensure compliance with organizational and regulatory requirements - see WI-11 Document

    Conclusion

    By following this guide, you've created the foundation for a complete DHF that meets FDA requirements.

    Final Checklist

    Moving Forward

    For Production Release: Your non-production iterations have prepared you for a smooth production release. Continue using the same approach for final validation and release activities. Consider following semantic versioning (e.g., 1.0.0 for initial release, 1.1.0 for minor updates, 2.0.0 for major changes) to clearly communicate the scope of changes to regulators and users.

    For Post-Market Surveillance: The configuration items and processes you've established will support ongoing maintenance, complaint handling, and future iterations. Continue to:

    • Log and assess all anomalies

    • Maintain vulnerability monitoring

    • Process changes thorugh formal change control

    • Update documentation with each release

    Need Help?

    If you encounter challenges or have questions about specific regulatory requirements:

    • Consult your QMS or quality management team

    • Review the applicable standards and guidance documents

    • Contact Ketryx support for platform-specific questions

    Remember: A maintained Design History File is not just a regulatory requirement, it's your demonstration of systematic design controls and commitment to patient safety. The effort you invest in proper documentation today prevents costly remediation tomorrow.

    Design History File
    FDA

    MAN-09 Git-Based Configuration Items

    Manual for incorporating Git-based Configuration Items into Ketryx Lifecycle Management

    1. Introduction

    Git-based configuration items allow users to maintain configuration items in Git repositories, i.e., in source code, rather than in or in parallel with a task/work item management tool (e.g., Jira). This way, users can maintain configuration items in the same place where they maintain the source code. By default, this feature works on an opt-in basis.

    1.1. Purpose

    The purpose of this manual is to instruct users on how to opt into Git-based configuration items feature and incorporate configuration items, whose content is managed in a Git repository.

    1.2. Scope

    This manual describes the ways of maintaining configuration items in Git repositories so that Ketryx can easily access them and incorporate them into the lifecycle management process. Furthermore, it instructs users on how to define relevant files locations, within a Git repository, for configuration items.

    2. Opt-in via project settings

    You can opt into Git-based configuration items by defining during the project or process. These glob patterns define the locations of configuration items within a Git repository and Ketryx will scan the repository for files that match these patterns. For example:

    Ketryx will scan the repository for:

    • All files with the .md extension in the src/requirements/ directory and all its subdirectories

    • All files with the .feature extension in the features/ directory and all its subdirectories

    • Omit all README.md

    You can add multiple patterns per repository by defining each pattern in a new line.

    2.1. Choosing a specific parser

    Ketryx supports associating metadata with a glob pattern. This way, you can define the name of the parser that Ketryx should use to parse the content of the files that match the glob pattern. The metadata is defined by prepending the glob pattern with PARSER_NAME:. PARSER_NAME is a built-in parser that Ketryx uses to parse the content of the files. The following parsers are supported:

    • tests - for parsing source code test files. .

    More parsers can be configured on demand.

    2.2. New project setup

    1. Please follow steps 1, 2, and 3 of the general for initial instructions.

    2. Optionally, you may need to enable repository authentication if the repository in question is a private repository. For more specific information on how to do this, see the specific integration guides for , , and .

    3. Activate the Enable Git based Items checkbox and input the desired glob patterns, thus instructing Ketryx where to look for configuration items within the Git repository.

    2.3. Update Project

    1. Log into Ketryx Platform at by using your connected Google or GitHub account, or using your email addresses.

    2. Navigate to the desired project and its Settings.

      • If you want to opt into Git-based configuration items for a repository that is already connected to Ketryx, continue with step 5.

      • If you want to opt into Git-based configuration items for a repository that is not yet connected to Ketryx, continue with step 3.

    3. Defining configuration items (supported file formats and content parsing)

    Currently, Ketryx supports managing configuration items in:

    • Markdown files (support for all item types)

    • Cucumber files using Gherkin syntax (support for items of type Test Case)

    • Java files (currently it supports items of type Test Case)

    • Kotlin files (currently it supports items of type

    Based on the file type, you can define various fields in the content of the file that will be used to define the configuration item. Please have a look at the Item schema section of each item type to see which fields are available for defining the configuration item. Respective item types and their schemas are defined in the following work instructions:

    Git-based item versioning is based on the versioning of the repository. Thus, defining fields like Introduced in version or Obsolete in version has no effect. .

    Depending on the file type, the configuration item is defined in different ways. The following sections describe how to define configuration items and their fields in each of the supported file types.

    itemId is a common field that can be used to uniquely identify a configuration item. If itemId is not explicitly specified, Ketryx will use the file path within the Git repository as a fallback. .

    3.1. Markdown files - All types of configuration items

    Each markdown file is considered to be a single configuration item and can be of any type that is specified in the section.

    3.1.1. Fields in the front matter

    In the front matter of a Markdown file, you can define the following fields:

    • itemId - a unique identifier of the configuration item

    • itemType - the type of the configuration item

    • itemTitle - the title of the configuration item that is used instead of the first heading of the main content

    To define traceability to other configuration items, you can include any field that is defined in the in the front matter of the Markdown file.

    itemId, itemType, itemTitle and traceability fields must be defined using the camelCase notation. Any other field that is defined in the Item schema of the configuration item type must be defined using the "natural language" notation as it is defined in the Item schema (e.g. Requirement type, Context, Test result)

    3.1.2. Fields in the main content

    In the body of a Markdown file you can define all rich text fields that are defined in the Item schema. Here is how you can define the content of the configuration item so that Ketryx can parse it properly:

    • The first heading of the main content is considered to be the title of the configuration item (unless there is an itemTitle defined in the front matter)

    • The rest of the content Ketryx will parse based on the set of rules that are defined in the next section below

    Rules for maintaining item fields in the main content:

    • Ketryx looks for a special section called Item fields in the main content

    • Inside the Item fields, Ketryx looks for headings that match the rich text field names defined in the Item schema of the configuration item type (e.g. Description, Inputs, Outputs, Steps, ...), or Extra fields that have defined in the advanced settings (Ketryx treats these fields in a case-insensitive manner)

      • These headings must be on a lower level than the

    Given the example above, Ketryx will extract the following fields:

    • Title: Add dose suggestion

    • Description:

    • Inputs: Inputs content

    • Outputs: Outputs content

    However, if the Description heading is defined under the Item fields section, the description will be set to the content under the Description heading.

    Given the example above, Ketryx will extract the following fields:

    • Title: Add dose suggestion

    • Description: This is the description of the item

    • Inputs: Inputs content

    • Outputs: Outputs content

    Finally, if the Item fields section is not defined, Ketryx will consider the whole content of the file as the description of the configuration item.

    Given the example above, Ketryx will extract the following fields:

    • Title: Add dose suggestion

    • Description:

    3.1.3. Handling attachments and media files

    When parsing Markdown content, Ketryx automatically detects and extracts references to media files such as images and stores them for persistent access. This feature is particularly useful when generating template documents from Git-based design specifications that must include embedded diagrams or screenshots.

    Supported attachment formats:

    Ketryx can identify and process media references in the following formats:

    • Markdown-style embedded media with external URLs:

    • Markdown references to local relative paths:

    • HTML <img> tags embedded in Markdown files:

    How it works:

    1. When Ketryx parses a Markdown file, it scans the content for media references in all supported formats

    2. For external URLs, Ketryx downloads the media file and stores it for persistent access

    3. For local relative paths, Ketryx looks for the file in the Git repository relative to the Markdown file's location

    4. All extracted media files are stored and associated with the configuration item

    Ketryx only processes attachments when the Markdown file itself changes. If you update an attachment (either an external URL or a local file in the repository) without changing the Markdown file that references it, Ketryx will not detect or reprocess the updated attachment. To ensure Ketryx picks up attachment changes, you must modify the Markdown file that references the attachment.

    3.2. Cucumber files - Test Cases

    Every Scenario in a Cucumber file is considered to be a configuration item of type Test Case. For example:

    Metadata is defined in the tags of a Scenario. In the example above, the following tags are used:

    • @tests:KP-456 - Defines traceability to another configuration item (in this case KP-456 is a Jira work item)

    • @tests:md1-id - Defines traceability to another configuration item (in this case md1-id is another Git-based item)

    • @id:approving-git-based-items

    @implements tag is used to reference an existing Jira Test Case. Ketryx will not create a new Test Case configuration item for the Cucumber Scenarios that use the @implements tag or the @tests tag that references already existing Jira Test Case.

    In the background, Ketryx extracts and stores a testResultId property for each parsed test case. This property is used to connect automated test execution results to the test.

    Main content is defined in the body of a Scenario:

    • The name of the Scenario is considered to be the title of the configuration item.

    • Scenario name, steps and tags are considered to be the description of the configuration item.

    Traceability to other configuration items is defined in the tags of a Scenario. Every tag that starts with @tests is considered to be a traceability field, and it must always point to the item that is being tested.

    If itemId is not explicitly specified, Ketryx will use the {Feature name}-{Scenario name} as a fallback. .

    3.3. Source code - Test Cases

    Define the glob pattern with the tests parser to scan the repository for files that contain test cases.

    By defining a glob pattern with the tests parser, Ketryx will scan the repository for files that match the pattern and parse the content of the files as items of type Test Cases. .

    Metadata is defined in the comments above the test case function:

    • Traceability to other configuration items is maintained in the comments above the test case function. A tag of the form @tests:ABC-123 can be used to associate the test with its tested items.

    In the background, Ketryx extracts and stores a testResultId property for each parsed test case. This property is used to connect automated test execution results to the test. Depending on the language, the testResultId is automatically extracted and cannot be changed by the user.

    Main content is defined as follows:

    • Item title should be in the comment above the test case function and for that purpose, use the @itemTitle:"My Title" or @itemTitle:Title tag. If the tag is not provided, Ketryx will fall back to the function name as the item title.

    • Item description is the body of the test case function.

    Rules for maintaining item properties in the comments above the test case functions:

    • Ketryx supports defining item properties in the first preceding block comment above the test case function

    • Ketryx supports defining item properties in multiple consecutive line comments above the test case function

    3.3.1. Java

    Ketryx will consider extracting the item as a Test Case only if all the following conditions are met:

    • The test case function is a class method

    • The test case function is annotated with the @Test annotation

    • The test case function has a comment (a block comment or multiple line comments) above it that contains at least one @tests tag

    3.3.2. Kotlin

    Ketryx will consider extracting the item as a Test Case only if all the following conditions are met:

    • The test case function is a class method

    • The test case function is annotated with the @Test annotation

    • The test case function has a comment (a block comment or multiple line comments) above it that contains at least one @tests tag

    3.3.3. Swift

    Ketryx will consider extracting the item as a Test Case only if all the following conditions are met:

    • The class is a subclass of XCTestCase

    • The test case function has a comment (a block comment or multiple line comments) above it that contains at least one @tests tag

    4. Uniquely identifying a configuration item

    As mentioned in the previous sections, metadata is used to uniquely identify a configuration item. The itemId field is used for this purpose. The itemId field is a string that uniquely identifies a configuration item within a Git repository. For use cases where you need to define traceability between items within a Git repository, you would need to define the itemId. However, if itemId is not explicitly specified, Ketryx will use an implicit default based on the file type and source code type, to assign the itemId to your configuration item. .

    The user should take care that itemId is unique within the Git repository and Ketryx project.

    4.1. How Ketryx deterministically de-duplicates items with the same itemId

    When Ketryx scans a Git repository for configuration items, it will check if the itemId of the configuration item is unique within the repository. If the itemId is not unique, Ketryx will deterministically use the file path within the Git repository to choose the file from which the item will be extracted. When introducing two items with the same itemId in the same commit or adding a new item with an existing itemId in a new commit, Ketryx will sort the files by their path and choose the first file in the sorted list. The consequence of this could be that the item is extracted from a different file than the user intended. If the itemId is duplicated in the same file, Ketryx will extract the item from the first occurrence of the itemId.

    5. Configuration item types

    Configuration item types are used to define the type of configuration item. The itemType field is used for this purpose and following values can be used:

    6. Traceability to other configuration items

    Traceability to other configuration items is used to define the relationship between configuration items. Depending on the configuration item type, different fields are used for this purpose. Here is the list of all possible fields that can be used for traceability:

    Please check the section for each configuration item type for more information on how to use these fields.

    6.1. Git-based configuration items traceability to Jira-based configuration items

    In a Markdown file, it is possible to define traceability between Git-based and Jira-based configuration items. For example, it is possible to define that a Software Item Spec, whose content is managed in a Git repository, fulfills a Requirement that is managed in Jira. In order to do this, define the itemFulfills field in the metadata of the Software Item Spec, with the itemFulfills field being set to the Jira work item key:

    For Cucumber and source code files that extract items of type Test Case, it is enough to use the Jira work item key as a tag, e.g., @tests:KP-42.

    In Cucumber files, use the @implements tag to reference an existing Jira Test Case.

    6.2. Git-based configuration items traceability to other Git-based configuration items

    In a Markdown file, it is possible to define traceability between Git-based configuration items. For example, it is possible to define that a Software Item Spec, whose content is managed in a Git repository, fulfills a Requirement that is also managed in the same Git repository. In order to do this, define the itemFulfills field in the metadata of the Software Item Spec, with the itemFulfills field being set to the itemId of the Requirement:

    For Cucumber and source code files that extract items of type Test Case, it is enough to use the @tests tag with the itemId of the Requirement, e.g., @tests:some-unique-string-1234.

    6.3. Jira-based configuration items traceability to Git-based configuration items

    All configuration items that are managed in a Git repository and synchronized with Ketryx are automatically exposed in Jira select fields for item relations. Thus, if a configuration item is defined in a Git repository and synced with Ketryx, it will be available in the select field of the Jira work item. For example, if a Task, whose content is managed in Jira, implements a Software Item Spec that is managed in a Git repository, you can select the Software Item Spec from the Git repository in the select field of the Task work item.

    7. Approval and transition flow

    Because of the collaborative nature of Git repositories, it is possible that multiple users are working on the same configuration item at the same time. Having this in mind, Git-based items do not have an owner in Ketryx, thus an approval from an owner is not required.

    Given that Git-based items are synchronized with Ketryx when a developer finishes their work on a configuration item, the transition flow is also different: The initial state of a Git-based configuration item in Ketryx is Resolved. Similarly to Jira-based items, Ketryx will transition a Git-based item to Closed upon full approval, or back from Closed to Resolved if the item changes afterward.

    8. Versioning

    Every Git-based configuration item is associated with one or more commits in the Git repository.

    Given a project version, the relevant commits are determined by the release ref pattern that is defined during the project creation or configuration process. For example, if the release ref pattern is set to refs/tags/v#, Ketryx considers the tag v1.0 to be the relevant commit for version 1.0. Hence, Git-based items found on the v1.0 tag will be considered active for version 1.0.

    For incremental releases based on code change requests (e.g., GitHub pull requests), the relevant commit for the incremental release is the head of the source branch of the code change request.

    Please see the for more information on how to work with Git repositories in Ketryx.

    Traceability Configuration

    Reference of the Ketryx Traceability Configuration

    Ketryx allows full customization for the displayed columns, column relationships / traces, traceability checks, including their corresponding error status messages, and more.

    This page acts as a reference for all the various configurations possible beyond the default traceability setup described in .

    How to configure

    The traceability configuration can be configured in the field and needs to be stored as a valid JSON structure.

    Test Cases, Test Plan, & Test Executions
    Dependencies
    Vulnerabilities & Vulnerability Impact Assessments
    Change Requests & CAPAs
    Anomalies & Complaints
    Documents as Items
    Additional Ketryx default Release Documents
    Connection to your version control system
    files in the
    src/
    directory and all its subdirectories
    Optionally, you can connect a Jira space (formerly project) as well. For more specific information on how to do this, please consult the Jira guide.
  • To finalize the creation of the project, press the Create project button. The configuration items from the repository, matching glob patterns defined in step 2 will be automatically scanned and shown.

  • Press Add repository or Add another repository and input an BitBucket/GitHub/GitLab repository URL.

    • Please look at step 3 on the following link for optional instructions on how to connect a repository.

  • Optionally, you may need to enable repository authentication (if the repository in question is a private repository). For more specific information on how to do this for Bitbucket, GitHub, and GitLab, please see their respective FAQ entries by clicking on the links.

  • Activate Enable Git based Items and input desired glob patterns, thus instructing Ketryx where to look for configuration items within the Git repository.

  • Press the Save changes button. The configuration items from the repository, that match glob patterns defined in step 5, will be automatically scanned and shown.

  • Test Case
    )
  • Swift files (currently it supports items of type Test Case)

  • Risk schema
    All traceability fields that are used to define the relationship between configuration items
  • Any other non rich-text field that is defined in the Item schema of the configuration item type

  • Extra fields that you might have configured to be tracked under advanced settings (Ketryx treats these fields in a case-insensitive manner)

  • Item fields
    heading
  • The content under the heading is considered to be the value of the field

  • If there is no special heading for the Description, then the description is set to the whole content until the Item fields section (or until the end of the file if there is no such section)

  • The media files can be accessed when generating documents or viewing the configuration item

    - Defines the unique identifier of the configuration item
  • @implements:KP-1011 - Defines traceability to another Test Case configuration item that already exists in Jira

  • glob patterns
    creation
    configuration
    Learn more about the tests parser in the section 3.3
    project setup
    Bitbucket
    GitHub
    GitLab
    app.ketryx.com
    Requirement schema
    Software Item Spec schema
    Test Case schema
    Test Execution schema
    Learn more about versioning in the section 8
    Learn more about uniquely identifying a configuration item in the section 4
    configuration item types
    traceability to other configuration items section
    Learn more about uniquely identifying a configuration item in the section 4
    Learn more about using the glob pattern metadata
    Learn more about how Ketryx assigns itemId based on the file type and source code type in the Defining configuration items section
    Work Instructions
    source code integration guide
    Define glob pattern note
    Create project opt-in
    Base example

    The following example represents the default configuration for the strictest project Ketryx schema and will be used to highlight possible configurations in the system.

    The example above will result into a Traceability page similar to:

    Traceability page showing configured columns, cell/row messages and traceability checks

    Configuring status definitions, row status messages and cell status messages

    A user may configure any kind of status that should be represented in an RTM cell, and may be applied through traceability checks.

    They are identified by a capitalized status name (e.g. REQUIREMENT_MISSING) and are later on transformed to a human readable representation via the rowStatusMessages and cellStatusMessages configurations.

    Example:

    Based on the example above, the following behavior will apply:

    1. A new status called REQUIREMENT_MISSING is defined. This status may be referred to in a traceability check later on

    2. A cell with a status of REQUIREMENT_MISSING will show a "Requirement missing"

    3. A traceability row containing a cell with a REQUIREMENT_MISSING status, it will show a status message "1 Use case not covered by a design input", or "X Use cases not covered by a design input" in case there are multiple cells (the message subject will be automatically pluralized based on the cell count)

    Available status levels

    • ERROR: Critical traceability error that needs to be addressed to fulfill all traceability criteria

    • WARNING: Warning or problem that doesn't necessarily concern the fulfillment critiera of the traceability matrix, but still require attention to get all items to a releaseable state (e.g. missing controlled state)

    • MUTED: The status is used for information purposes (such as, test cases that are not part of a test plan). This status has no impact on the fulfillment criteria of the traceability matrix.

    Compound cell status messages

    Depending on the configured traceability checks, a cell may be subject of one or more traceability statuses. A cell message may be based on a particular set or combination of statuses.

    Based on the example above, the following behavior will apply:

    1. A cell with a status of SPEC_MISSING and VERIFICATION_TEST_MISSING will result in the message "Specifiation and test cases missing"

    2. A cell with SPEC_MISSING as its only state will result in the message "Specification missing"

    A cell must match all defined if conditions to be applied. Also, the order of the cell status message array is significant, i.e. the first if condition in the array that matches the criteria will be used. It is recommended to put more specific messages (multiple if status conditions) before less specific ones.

    Configuring columns

    The traceability configuration allows flexible definitions of one or more design and testing columns.

    Design columns

    A design column represents a set of design control items that are put into relation with items of another design column.

    Example:

    The snippet above defines a use case, design input and design output column, whereas a use case may be a parent of a design input and a design output may fulfill a design input.

    • The title field describes the column title represented in the table

    • The itemFilter field describes all the matching items for this particular column, represented as a KQL query

    • The relations field describes all potential relations from the given column, to any other design column

    • The matchCrossReferences field describes if the itemFilter will also match items from configured referenced projects.

    Supported relation kinds

    • direct: All items that directly relate to the given design item

    • indirect: All items that are indirectly related to the given design item through its relations (including direct relations)

    Supported relation types

    • FULFILLS: Specification fulfilling a Requirement

    • HAS_PARENT: Specification/Requirement having another Specification/Requirement as a parent

    Testing columns

    A testing column represents a list of Test cases and/or detected Automated tests testing items of one or more design columns.

    The snippet above configures two columns to represent verification tests and validation tests.

    • The testedItemFilter describes the set of items within the referenced columns to be matched as a KQL query

    • The referencedColumnIds describes the design columns of which items could be targeted by the tests represented in the testing column

    • The matchCrossReferences configuration describes if the testing column will also list any Test Case and Automated Test that traces to a design item that is part of a cross-referenced item (note that this requires matchCrossReferences to be enabled for the referenced column as well to have an observable effect). If enabled, the testing column will also show any dangling Test Case from cross-referenced projects as well.

    Configuring traceability checks

    Based on the previously defined statusDefinitions, the Traceability matrix provides ways to enforce traceability checks for design item coverage, test coverage and controlled item state.

    Traceability checks are represented as traceability check cards on the top of the Traceability page to indicate progress and to allow effective filtering for items that fail the check.

    All of the checks share a common set of fields that will be available to all types:

    • The title field represents the big title in the traceability check card

    • The subtitle field represents a small title under the title to give more context on the check

    • The filterDescription field represents the message shown when selecting/filtering the RTM for a particular check

    Coverage check

    Checks for items of one or more columns to be covered by items of another column.

    Example:

    The snippet above defines a "Use cases" traceability check that will check the items of a "Use case" column to be covered by an item that's part of the "Design input" column.

    • The columnIds field describes the columns that are target of a coverage check (i.e. what items within those columns are not covered by at least one item by the coveredByColumnId column?)

    • The coveredByColumnId field defines the column containing the items that potentially cover items in the columnIds columns

    • The checkCrossReferences field describes if a check will also check any item of a cross-referenced project to be covered by the defined column. This option only has an effect if the checked columnIds have matchCrossReferences enabled.

    • The onFail field describes the traceability status that will be applied to all items that are not covered by any item in the coveredByColumnId column

    Test executions check

    Checks for Test cases without a Test execution or for Test executions without any test result attached.

    The snippet above defines a "Test executions" traceability check that will mark any Test case with a corresponding status.

    • The onMissingManualExecution field describes a status that will be applied to all Automated tests that are missing a manual test execution (given the corresponding project setting "Require a manual test execution for each effective automated test execution" has been enabled)

    • The onMissingExecution field describes a status that will be applied to all Test cases that are missing a related Test execution item

    • The onMissingExecutionResult field describes a status that will be applied to all Test cases that have a related Test execution, but without a concrete "Test result" value set

    • The onNotInTestPlan field describes a status that will be applied to all Test cases that are considered not part of the test plan (usually this status is configured as a MUTED status, since those tests should not impact the final RTM traceability result)

    Failed tests check

    Checks for any potential failed test results in all the detected Test cases and Automated tests.

    • The onFail field describes a status that will be applied to all Test cases or Automated tests that are part of the test plan and have a "Test result" value set to "Failed"

    Controlled check

    Checks for any item shown in the RTM that is not yet controlled.

    This check will only show the controlled states of items shown in the RTM, not necessarily all the items that are part of a release. To get a reliable overview of the controlled state of all the items, use the "Items" page instead.

    • The onTestExecutionNotControlled field describes a status that will be applied to all detected Test cases with at least one Test execution that is not fully controlled yet

    • The onRiskNotControlled field describes a status that will be applied to any item with a detected Risk that is not fully controlled yet

    • The onItemNotControlled field describes a status that will be applied to any item that is not controlled yet

    Note on legacy configurations

    The configuration described in this document requires {"version": "3"} to be configured. If version is not set or {"version": "2"} is set, refer to MAN-07 Traceability.

    Version 2 vs 3

    All of the configurations discussed in this document require the "version": "3" attribute to activate the new RTM customizations. Existing projects not enabling version 3 will still use the version 2 configuration format described in MAN-07 Traceability.

    Starting from June 2024, newly created Ketryx organizations are automatically configured to version 3.

    MAN-07 Traceability
    Advanced Settings >> Traceability configuration

    Ketryx Query Language

    Reference of the Ketryx Query Language (KQL)

    The Ketryx Query Language (KQL) is a language to query configuration items in the Ketryx Platform.

    Items can be filtered based on their field values, relations, and various other metadata.

    Simplified KQL vs. full KQL

    Ketryx separates between "full" KQL and Simplified KQL, which is subset of KQL that focuses on filtering for item types, relations, and particular core item data. This is

    1. When using KQL in the Ketryx web application or document templating engine, full KQL can be used

    2. When using KQL within Ketryx organization/project configurations, only simplified KQL can be used (e.g. when setting up cross-project references)

    This document describes the full feature set of KQL, but will specifically denote features that are not supported by Simplified KQL.

    Examples

    Some frequently used examples:

    KQL
    Meaning
    Supported in Simplified KQL

    Syntax

    KQL consists of expressions which contain the following elements:

    • Symbols are represented by any individual tokens that are not wrapped in quotes (which would make them strings). They can not contain whitespace or certain other special characters such as (, ), :, ".

    • Strings are pieces of text wrapped in quotes ("...").

    Type
    Examples

    Symbols

    Symbols are identifiers that are not strings or special keywords (such as and, or, and not). Symbols can not contain the following special characters:

    • "

    • :

    • ,

    The following symbols are treated specially when matching items (note that these special cases are case-sensitive):

    • * matches any item

    • none matches no item

    • Shorthand for the id: filter:

    Note that, currently, automated test executions can only be filtered using the shorthand type filter TE. Other filters do not apply to automated test executions. The matching based on TE works in simplified KQL filters, e.g., in the context of cross-project references and ; in other contexts such as the All items page, automated test executions are not included.

    Besides these special cases, symbols are treated like strings and are matched against the title of an item (in a case-insensitive way).

    Strings

    Strings are wrapped in (double) quotes (").

    Strings are matched against the title of an item, in a case-insensitive way. For instance, "text" matches any item whose title contains text, Text, TEXT, etc.

    Note that single quotes (') and similar characters such as typographic "curly" quotes (‘, ”, etc.) are not treated as string delimiters in KQL. This can sometimes lead to surprising consequences when copying and pasting text in environments that automatically replace straight quotes with curly quotes.

    Boolean operators

    Boolean operators are evaluated in the following order of decreasing precedence: not before and before or. For instance,

    is equivalent to:

    Boolean operators can also be written in upper-case (NOT, AND, OR), or using the special characters ! (not), && (and), and || (or).

    Boolean operator keyword
    Equivalent operator character

    For instance,

    can also be written as:

    Depending on the operand, the operators and and or can be omitted entirely (see Sequences below).

    Sequences

    Expressions following each other without an explicit boolean operator form a sequence. They can optionally be delimited by a comma (,).

    If not indicated otherwise, the individual expressions are combined using a boolean operator, depending on the type of expressions involved:

    • Symbols referring to mutually exclusive filters are combined using a logical or. For instance, SAMD-1 SAMD-2 refers to an ID-based filter; since each item can only have one ID, the individual expressions are combined using a logical or, making the sequence equivalent to SAMD-1 or SAMD-2, i.e., match all items with an ID of either SAMD-1 or SAMD-2. This includes the following kinds of symbols:

      • Jira work item keys (e.g. SAMD-1

    This usually matches one's intuition and makes simple queries based on IDs or pieces of text more concise. However, when in doubt, one can always write queries with explicit logical operators.

    An empty sequence () matches no items. However, if the overall query is empty, all items are matched.

    Some filters take a sequence of symbols or strings as parameters (string lists), e.g., diff:(new,changed). These are special in the sense that they don't allow arbitrary logical combinations or complex nested expressions.

    Filters

    Filters allow for powerful query criteria, based on various attributes of an item and relations among items.

    In the specifications below, UPPER-CASE parts denote placeholders for other expressions, typically arbitrary query expressions.

    Some filters expect a string list in certain parameters, which can be a single string or symbol (e.g., just new), or a sequence of strings or symbols (e.g., (new,changed) or ("new","changed")). Symbols and strings can generally be used interchangeably; strings have to be used when referring to values that contain spaces or other special characters. (The examples in this documentation generally use the shorter symbol form if possible, and the string form otherwise.)

    Users can be referenced using their full name (e.g. "John Doe") or email addresses (e.g. [email protected]). Generally, email addresses should be preferred since they are guaranteed to be unique. The special value me denotes the calling user.

    to:ITEMS, to:DEPTH:ITEMS

    Items with a relation to a set of other (target) items, optionally filtering for a certain level of depth.

    • ITEMS is an arbitrary query expression to filter for allowed targets of the relation. This expression might involve other, nested filters for relations.

    • DEPTH is an optional parameter to specify a restriction on the relation depth:

      • *: allows any depth of least 1

    The short form to:ITEMS is equivalent to to:1:ITEMS, while to::ITEMS is equivalent to to:*:ITEMS.

    Note that, by default, this filter does not include the target items themselves; e.g., to:TC matches all items that have a relation to a Test Case, without including those Test Cases themselves. To include them, specify a MIN level of 0, e.g.:

    To filter for particular relations, use the syntax to .

    from:ITEMS, from:DEPTH:ITEMS

    Items with a relation from a set of other (source) items, optionally filtering for a certain level of depth.

    Other than referring to the opposite relation direction, this works just like the to: filter.

    diff:KINDS

    Not supported by Simplified KQL

    Items with a difference (compared to another version) of a certain kind.

    • KINDS is , with the following values:

      • new

      • changed

    id:ID

    Items with a certain ID.

    • ID is a string list containing one or more item IDs, which can be one of the following:

      • Jira work item key (e.g., SAMD-42)

      • Jira work item number (e.g., 42)

    type:TYPES

    Items of a certain type.

    • TYPES is a string list containing one or more item type names or short names. In the default Ketryx configuration, the following names can be used:

      • RQ = Requirement

      • SW

    state:STATES, status:STATES

    Items in a certain state (or with a certain Jira status).

    • STATES is a string list containing one or more state names. In the default Ketryx configuration, the following names can be used:

      • Open

      • Reopened

    Custom status names (if configured) can also be used.

    As a courtesy, status: is an equivalent alias for state:.

    is:FLAG

    Items matching a certain (boolean) flag.

    • FLAG can be one of the following:

      • controlled: matches controlled items

      • deleted: matches deleted items

    project:PROJECT

    Items that are in the given project(s).

    This can be useful to filter out items from referenced projects, as opposed to items in the current ("main") project.

    • PROJECT is a string list containing one or more project names or Ketryx project IDs. The special value selected denotes the current project.

    in-test-plan:VERSION

    Not supported by Simplified KQL

    Items that are included in the test plan of a given version.

    • VERSION is a string list containing one or more version names or SemVer version numbers. The special value selected denotes the currently selected version.

    updated-after:ISO_DATE_STRING

    Items with a record creation date equals or after the provided ISO 8601 date.

    Examples:

    • updated-after:"2024-01-01" (Date with its time set to 00:00)

    • updated-after:"2024-05-05T10:00" (Date with explicit time component)

    assignee:USER, owner:USER

    Items with a given assignee.

    • USER is a string list containing one or more user references, which can be given as full names or email addresses (or the special symbol me).

    As a courtesy, owner: is an equivalent alias for assignee:.

    approved:GROUPS

    Not supported by Simplified KQL

    Items approved by the given users or groups.

    • GROUPS is a string list containing one or more user references or group names. Just like in the assignee: filter, users can be referenced by full name or email address (or the special symbol me).

      • owner refers to approval by the owner (= assignee) of the item.

    Filter by relation

    A filter of the form

    or

    queries items with a given relation to or from a set of other items, optionally filtering for a certain level of depth.

    • RELATION is a relation name. The following relations are supported (each specifying the "forward" relation from source to target, and the "reverse" relation in the other direction):

      • contains / "is contained in" (as specified by field Contained tests)

    This is similar to the to: and from: filters, but specifying a particular relation name.

    Filter by field value

    A filter of the form

    queries items with a certain value for a given field.

    • FIELD is a field name, e.g., Description or "Rationale for deferring resolution". This is case-sensitive.

    • VALUE is a single value or a string list denoting the allowed field value(s).

    Textual fields (both plain-text and rich text) are matched in a case-insensitive way. If VALUE is a list of values, all of them need to occur (somewhere) in the item's field value.

    Select fields (with a predefined set of options, e.g., the Requirement type) require an exact match of the value (or one of the given values, if a list is specified).

    Note that version fields, date fields, and relation fields are not supported at this point. However, relations can be queried using the syntax to .

    Additional examples and explanations

    Note: All examples assume the standard configuration of Ketryx. Queries could look differently if Ketryx is configured with different item type names, relations, or fields.

    Item title

    is a sequence of two symbols (some and text) without special meaning that are implicitly combined using the and operator, so this query matches all items whose title contains "some" and "text" (not necessarily in this order and not necessarily directly after each other), e.g., it would match a title of Requirement with some text as well as This text contains some.

    To match an exact text including whitespace, use quotes (i.e., a string rather than symbols):

    matches Requirement with some text but not This text contains some.

    Quotes are also necessary when matching against pieces of text that have a special meaning as symbols, e.g.,

    matches items with a title that contain RQ (or rq or Rq or rQ, since the matching is case-insensitive), not the item type Requirement.

    Requirement or Software Item Spec

    is a sequence of two symbols (RQ and SW) denoting item types that are implicitly combined using the or operator, so this query matches all items that are either a Requirement or a Software Item Spec.

    This is equivalent to:

    All descendants of a particular item

    matches all items that have SAMD-1 as their parent or whose parent has SAMD-1 as their parent, etc., i.e., all direct and indirect descendants of SAMD-1.

    This is equivalent to:

    src/requirements/**/*.md
    features/**/*.feature
    !src/**/README.md
    tests:src/tests/**/*.java
    tests:src/tests/**/*.kt
    tests:src/tests/**/*.ktm
    tests:src/tests/**/*.kts
    tests:src/tests/**/*.swift
    ---
    itemId: some-unique-string-1234
    itemType: Software Item Spec
    itemFulfills: KP-42
    itemImplements: KP-43, KP-44
    Requirement type: Use case
    Test result: Pass
    My extra field: Simple text content
    Context: Clinical
    ---
    # Add dose suggestion
    This is part of the description, unless there's an explicit ### Description under ## Item fields.
    ## Description
    still part of the description
    ## Item fields
    ### Inputs
    Inputs content
    ### Outputs
    Outputs content
    ## Another section
    Another section that will be ignored
    This is part of the description, unless there's an explicit ### Description under ## Item fields.
    ## Description
    still part of the description
    # Add dose suggestion
    This is not part of the description and will be ignored.
    ## Item fields
    ### Description
    This is the description of the item
    ### Inputs
    Inputs content
    ### Outputs
    Outputs content
    ## Another section
    Another section that will be ignored
    # Add dose suggestion
    Everything below the title is considered to be the description of the item.
    ### Inputs
    Inputs content
    ### Outputs
    Outputs content
    ## Another section
    Another section content
    Everything below the title is considered to be the description of the item.
    ### Inputs
    Inputs content
    ### Outputs
    Outputs content
    ## Another section
    Another section content
    ![Alt text](https://example.com/image.png)
    ![Design diagram](./design/image.png)
    ![Screenshot](../assets/screenshot.jpg)
    <img src="https://example.com/diagram.png" alt="System architecture" />
    <img src="./local/image.png" alt="Local image" />
    Feature: Git-based Items
    
      Background:
        Given User is logged into Ketryx
    
      @tests:KP-456 @tests:md1-id @id:adding-glob-patterns
      Scenario: Glob patterns can be defined and properly saved when creating a new Project
        When User creates a project to manage Git-based Items with the following glob pattern
          |src/**/*.md|
          |test/**/*.md|
        And User navigates to "Settings" page
        Then User should see following glob patterns for Git-based Items:
          |src/**/*.md|
          |test/**/*.md|
    
      @tests:KP-789 @id:approving-git-based-items
      Scenario: Approving Git-based Items should work as expected
        When User has a project to manage Git-based Items with the following glob pattern
          |*.md|
        And User navigates to current project
        And User selects the item "Git based items"
        And User approves the selected 1 item
        Then State of "Git based items" item should be changed to "Closed"
        And User selects the item "Git based items"
        And User transitions the selected 1 item to "Resolved"
        Then State of "Git based items" item should be changed to "Resolved"
        
      @implements:KP-1011 @id:no-creating-records
      Scenario: No Records should be created if user does not opt into creating records from the Git repository's files
        When User has created a test project with the GitHub repository "Ketryx/git-based-items"
        And User navigates to current project
        Then Default placeholder text for "All items" page is shown
    tests:src/tests/**/*.java
        package com.example;
        
        class MyTest {
            // @itemTitle:"Title of the item" @tests:ABC-123
            // @tests:ABC-456
            @Test
            public void testAddition() {
                assertEquals(4, 2 + 2);
            }
    
            /**
            * @itemTitle:"Title of the item"
            * @tests:ABC-789 @tests:ABC-1011
            */
            @Test
            public void testSubtraction() {
                assertEquals(0, 2 - 2);
            }
        }
        package com.example
        
        class MyTest {
            // @itemTitle:"Title of the item" @tests:ABC-123
            // @tests:ABC-456
            @Test
            fun testAddition() {
                assertEquals(4, 2 + 2)
            }
    
            /**
            * @itemTitle:"Title of the item"
            * @tests:ABC-789 @tests:ABC-1011
            */
            @Test
            fun testSubtraction() {
                assertEquals(0, 2 - 2)
            }
        }
        import XCTest
        
        class MyTest: XCTestCase {
            /// @itemTitle:"Title of the item" @tests:ABC-123
            /// @tests:ABC-456
            func testAddition() {
                XCTAssertEqual(4, 2 + 2)
            }
    
            /**
            * @itemTitle:"Title of the item"
            * @tests:ABC-789 @tests:ABC-1011
            */
            func testSubtraction() {
                XCTAssertEqual(0, 2 - 2)
            }
        }
    Requirement
    Software Item Spec
    Hardware Item Spec
    Task
    Test Case
    Test Execution
    Anomaly
    Complaint
    Change Request
    CAPA
    Risk
    itemAffects
    itemContainsTests
    itemFoundAnomaly
    itemFulfills
    itemHasParent
    itemHasRootCause
    itemImplements
    itemIntroducesRisk
    itemIsRiskControlledBy
    itemExecutes
    itemRelatesTo
    itemIsRelatedTo
    itemResolvedBy
    itemResultsIn
    itemTests
    itemUses
    itemTriggers
    itemIsTriggeredBy
    ---
    itemFulfills: KP-42
    itemHasParent: KP-40
    ---
    ---
    itemFulfills: some-unique-string-1234
    itemHasParent: some-unique-string-1235
    ---
    {
      "version": "3",
      "rtmApprovalEnabled": false,
      "enforceGreenCheck": true,
      "defaultColumnId": "designInput",
      "statusDefinitions": {
        "REQUIREMENT_MISSING": {
          "level": "ERROR"
        },
        "SPEC_MISSING": {
          "level": "ERROR"
        },
        "MANUAL_TEST_EXECUTION_MISSING": {
          "level": "ERROR"
        },
        "TEST_EXECUTION_MISSING": {
          "level": "ERROR"
        },
        "TEST_EXECUTION_MISSING_RESULT": {
          "level": "ERROR"
        },
        "VERIFICATION_TEST_MISSING": {
          "level": "ERROR"
        },
        "VALIDATION_TEST_MISSING": {
          "level": "ERROR"
        },
        "TEST_EXECUTION_FAILED": {
          "level": "ERROR"
        },
        "NOT_INCLUDED_IN_TEST_PLAN": {
          "level": "MUTED"
        },
        "TEST_EXECUTION_NOT_CONTROLLED": {
          "level": "WARNING"
        },
        "RISK_NOT_CONTROLLED": {
          "level": "WARNING"
        },
        "NOT_CONTROLLED": {
          "level": "WARNING"
        }
      },
      "rowStatusMessages": {
        "REQUIREMENT_MISSING": {
          "message": {
            "subject": "Use case",
            "description": "not covered by a design input."
          }
        },
        "SPEC_MISSING": {
          "message": {
            "subject": "Design input",
            "description": "not covered by a design output."
          }
        },
        "VERIFICATION_TEST_MISSING": {
          "message": {
            "subject": "Design output",
            "description": "not covered by a verification test."
          }
        },
        "VALIDATION_TEST_MISSING": {
          "message": {
            "subject": "Design input",
            "description": "not covered by a validation test."
          }
        },
        "MANUAL_TEST_EXECUTION_MISSING": {
          "message": {
            "subject": "Test Case",
            "description": "without manual test executions for automated tests."
          }
        },
        "TEST_EXECUTION_MISSING_RESULT": {
          "message": {
            "subject": "Test Execution",
            "description": "without a test result."
          }
        },
        "TEST_EXECUTION_MISSING": {
          "message": {
            "subject": "Test Case",
            "description": "without a test execution."
          }
        },
        "TEST_EXECUTION_FAILED": {
          "message": {
            "subject": "Test Execution",
            "description": "failed."
          }
        },
        "NOT_CONTROLLED": {
          "aliases": [
            "RISK_NOT_CONTROLLED",
            "TEST_EXECUTION_NOT_CONTROLLED"
          ],
          "message": {
            "subject": "Item",
            "description": "not fully approved yet."
          }
        }
      },
      "cellStatusMessages": [
        {
          "if": [
            "REQUIREMENT_MISSING"
          ],
          "message": "Requirement missing"
        },
        {
          "if": [
            "SPEC_MISSING",
            "VERIFICATION_TEST_MISSING",
            "VALIDATION_TEST_MISSING"
          ],
          "message": "Specification and test cases missing"
        },
        {
          "if": [
            "SPEC_MISSING",
            "VERIFICATION_TEST_MISSING"
          ],
          "message": "Specification and test case missing"
        },
        {
          "if": [
            "SPEC_MISSING",
            "VALIDATION_TEST_MISSING"
          ],
          "message": "Specification and test case missing"
        },
        {
          "if": [
            "SPEC_MISSING"
          ],
          "message": "Specification missing"
        },
        {
          "if": [
            "VERIFICATION_TEST_MISSING"
          ],
          "message": "Verification test case missing"
        },
        {
          "if": [
            "VALIDATION_TEST_MISSING"
          ],
          "message": "Validation test case missing"
        },
        {
          "if": [
            "NOT_INCLUDED_IN_TEST_PLAN"
          ],
          "message": "Not included in test plan"
        },
        {
          "if": [
            "TEST_EXECUTION_MISSING_RESULT"
          ],
          "message": "Test execution result missing"
        },
        {
          "if": [
            "TEST_EXECUTION_MISSING"
          ],
          "message": "Test execution missing"
        },
        {
          "if": [
            "MANUAL_TEST_EXECUTION_MISSING"
          ],
          "message": "Manual test execution missing for automated test"
        },
        {
          "if": [
            "TEST_EXECUTION_FAILED"
          ],
          "message": "Test execution failed"
        },
        {
          "if": [
            "TEST_EXECUTION_NOT_CONTROLLED"
          ],
          "message": "Missing approval for Manual Test Execution"
        },
        {
          "if": [
            "TEST_EXECUTION_NOT_CONTROLLED"
          ],
          "message": "Missing approval for Manual Test Execution"
        },
        {
          "if": [
            "RISK_NOT_CONTROLLED"
          ],
          "message": "Missing approval for Risk"
        },
        {
          "if": [
            "NOT_CONTROLLED"
          ],
          "message": "Missing approval"
        }
      ],
      "columns": [
        {
          "columnId": "useCase",
          "title": "Use cases",
          "kind": "design",
          "itemFilter": "type:RQ and \"Requirement type\":\"Use case\"",
          "matchCrossReferences": false
        },
        {
          "columnId": "designInput",
          "title": "Design Input",
          "kind": "design",
          "itemFilter": "type:RQ and not \"Requirement type\":\"Use case\" and not \"Requirement type\":\"Intended use\"",
          "relations": [
            {
              "kind": "indirect",
              "relationType": "HAS_PARENT",
              "referencedColumnId": "useCase"
            }
          ],
          "matchCrossReferences": false
        },
        {
          "columnId": "designOutput",
          "title": "Design Output",
          "kind": "design",
          "itemFilter": "type:SW or type:HW",
          "relations": [
            {
              "kind": "direct",
              "relationType": "FULFILLS",
              "referencedColumnId": "designInput"
            }
          ],
          "matchCrossReferences": false
        },
        {
          "columnId": "verificationTest",
          "title": "Verification test",
          "kind": "testing",
          "testedItemFilter": "type:SW or type:HW",
          "referencedColumnIds": [
            "designOutput"
          ],
          "matchCrossReferences": false
        },
        {
          "columnId": "validationTest",
          "title": "Validation test",
          "kind": "testing",
          "testedItemFilter": "type:RQ",
          "referencedColumnIds": [
            "designInput"
          ],
          "matchCrossReferences": false
        }
      ],
      "checks": [
        {
          "checkId": "useCasesCovered",
          "kind": "coverage",
          "title": "Use cases",
          "subtitle": "Covered by design input",
          "filterDescription": "use cases not covered by a design input",
          "columnIds": [
            "useCase"
          ],
          "coveredByColumnId": "designInput",
          "checkCrossReferences": false,
          "onFail": {
            "status": "REQUIREMENT_MISSING"
          }
        },
        {
          "checkId": "designInputsCovered",
          "kind": "coverage",
          "title": "Design input",
          "subtitle": "Covered by design outputs",
          "filterDescription": "design inputs not covered by a design output",
          "columnIds": [
            "designInput"
          ],
          "coveredByColumnId": "designOutput",
          "checkCrossReferences": false,
          "onFail": {
            "status": "SPEC_MISSING"
          }
        },
        {
          "checkId": "verificationTestCoverage",
          "kind": "coverage",
          "title": "Verification",
          "subtitle": "Design outputs covered by tests",
          "filterDescription": "design outputs not covered by a verification test case",
          "columnIds": [
            "designOutput"
          ],
          "coveredByColumnId": "verificationTest",
          "checkCrossReferences": false,
          "onFail": {
            "status": "VERIFICATION_TEST_MISSING"
          }
        },
        {
          "checkId": "validationTestCoverage",
          "kind": "coverage",
          "title": "Validation",
          "subtitle": "Design inputs covered by tests",
          "filterDescription": "design inputs not covered by a validation test case",
          "columnIds": [
            "designInput"
          ],
          "coveredByColumnId": "validationTest",
          "checkCrossReferences": false,
          "onFail": {
            "status": "VALIDATION_TEST_MISSING"
          }
        },
        {
          "checkId": "testExecutions",
          "kind": "testExecutions",
          "title": "Test executions",
          "subtitle": "Created within test plan",
          "filterDescription": "test cases missing a test execution or test result",
          "onMissingManualExecution": {
            "status": "MANUAL_TEST_EXECUTION_MISSING"
          },
          "onMissingExecution": {
            "status": "TEST_EXECUTION_MISSING"
          },
          "onMissingExecutionResult": {
            "status": "TEST_EXECUTION_MISSING_RESULT"
          },
          "onNotInTestPlan": {
            "status": "NOT_INCLUDED_IN_TEST_PLAN"
          }
        },
        {
          "checkId": "failedTests",
          "kind": "failedTests",
          "title": "Failing tests",
          "subtitle": "Within test plan",
          "filterDescription": "failing test executions",
          "onFail": {
            "status": "TEST_EXECUTION_FAILED"
          }
        },
        {
          "checkId": "allItemsControlled",
          "kind": "controlled",
          "title": "Controlled",
          "subtitle": "Items fully approved",
          "filterDescription": "uncontrolled items that need to be approved",
          "checkCrossReferences": false,
          "onTestExecutionNotControlled": {
            "status": "TEST_EXECUTION_NOT_CONTROLLED"
          },
          "onRiskNotControlled": {
            "status": "RISK_NOT_CONTROLLED"
          },
          "onItemNotControlled": {
            "status": "NOT_CONTROLLED"
          }
        }
      ],
      "columnForTestsWithoutTestedItem": "validationTest"
    }
    {
      "statusDefinitions": {
        "REQUIREMENT_MISSING": {
          "level": "ERROR"
        }
      },
      "rowStatusMessages": {
        "REQUIREMENT_MISSING": {
          "message": {
            "subject": "Use case",
            "description": "not covered by a design input."
          }
        },
      },
      "cellStatusMessages": [
        {
          "if": [
            "REQUIREMENT_MISSING"
          ],
          "message": "Requirement missing"
        }
      ]
    }
    {
      "cellStatusMessages": [
          {
            "if": [
              "SPEC_MISSING",
              "VERIFICATION_TEST_MISSING"
            ],
            "message": "Specification and test cases missing"
          },
          {
            "if": [
              "SPEC_MISSING"
            ],
            "message": "Specification missing"
          }
      ]
    }
    {
      "columns": [
        {
          "columnId": "useCase",
          "title": "Use cases",
          "kind": "design",
          "itemFilter": "type:RQ and \"Requirement type\":\"Use case\"",
          "matchCrossReferences": false,
        },
        {
          "columnId": "designInput",
          "title": "Design Input",
          "kind": "design",
          "itemFilter":
            "type:RQ and not \"Requirement type\":\"Use case\"",
          "relations": [
            {
              "kind": "indirect",
              "relationType": "HAS_PARENT",
              "referencedColumnId": "useCase",
            },
          ],
          "matchCrossReferences": false,
        },
        {
          "columnId": "designOutput",
          "title": "Design Output",
          "kind": "design",
          "itemFilter": "type:SW or type:HW",
          "relations": [
            {
              "kind": "direct",
              "relationType": "FULFILLS",
              "referencedColumnId": "designInput",
            },
          ],
          "matchCrossReferences": false,
        }
      ]
    }
    {
      "columns": [
        {
          "columnId": "verificationTest",
          "title": "Verification test",
          "kind": "testing",
          "testedItemFilter": "type:SW or type:HW",
          "referencedColumnIds": [
            "designOutput"
          ],
          "matchCrossReferences": false
        },
        {
          "columnId": "validationTest",
          "title": "Validation test",
          "kind": "testing",
          "testedItemFilter": "type:RQ",
          "referencedColumnIds": [
            "designInput"
          ],
          "matchCrossReferences": false
        }
      ]
    }
    {
      "checks": [
        {
          "checkId": "useCasesCovered",
          "kind": "coverage",
          "title": "Use cases",
          "subtitle": "Covered by design input",
          "filterDescription": "use cases not covered by a design input",
          "columnIds": [
            "useCase"
          ],
          "coveredByColumnId": "designInput",
          "checkCrossReferences": false,
          "onFail": {
            "status": "REQUIREMENT_MISSING"
          }
        }
      ]
    }
    {
      "checks": [
        {
          "checkId": "testExecutions",
          "kind": "testExecutions",
          "title": "Test executions",
          "subtitle": "Created within test plan",
          "filterDescription": "test cases missing a test execution or test result",
          "onMissingManualExecution": {
            "status": "MANUAL_TEST_EXECUTION_MISSING"
          },
          "onMissingExecution": {
            "status": "TEST_EXECUTION_MISSING"
          },
          "onMissingExecutionResult": {
            "status": "TEST_EXECUTION_MISSING_RESULT"
          },
          "onNotInTestPlan": {
            "status": "NOT_INCLUDED_IN_TEST_PLAN"
          }
        }
      ]
    }
    {
      "checks": [
        {
          "checkId": "failedTests",
          "kind": "failedTests",
          "title": "Failing tests",
          "subtitle": "Within test plan",
          "filterDescription": "failing test executions",
          "onFail": {
            "status": "TEST_EXECUTION_FAILED"
          }
        }
      ]
    }
    {
        "checks": [
          {
            "checkId": "allItemsControlled",
            "kind": "controlled",
            "title": "Controlled",
            "subtitle": "Items fully approved",
            "filterDescription": "uncontrolled items that need to be approved",
            "checkCrossReferences": false,
            "onTestExecutionNotControlled": {
              "status": "TEST_EXECUTION_NOT_CONTROLLED"
            },
            "onRiskNotControlled": {
              "status": "RISK_NOT_CONTROLLED"
            },
            "onItemNotControlled": {
              "status": "NOT_CONTROLLED"
            }
          }
        ]
    }
    Update project
    Update project opt-in

    project:selected RQ

    All Requirement items of the current project

    yes

    not is:controlled and not is:deferred

    Items that are not in a controlled state and are not deferred

    partly (is:deferred not supported)

    not approved:me and not approved:(RD,QM)

    Not approved by me and not approved by the groups R&D Leads or Quality Managers

    no

    SW and fulfills:RQ

    Software Item Specs that fulfill a Requirement

    yes

    "Test type":"Verification (unit)"

    Tests with a Test type of Verification (unit)

    yes

    TC and (tests:RC or RC) and intestplan:"Version 1.0"

    Tests for risk controls or that are risk controls themselves, that are in the test plan of Version 1.0

    partly (intestplan not supported)

    tests:(diff:(new,changed))

    Tests that test a new or changed item

    no (diff not supported)

    "is risk-controlled by":(diff:removed)

    Risks with a risk control that was removed in the currently selected version compared to the previous release

    partly (diff not supported)

    "Requirement type":("Use case", "Intended use")

    Requirements of type Use case or Intended use

    yes

    "has parent"::("Requirement type":"Use case")

    Descendants of Requirements of type Use case

    yes

    to:(0,*):("Requirement type":("Intended use","Use case"))

    Items with any relation to Requirements of type Intended use or Use case, including those Requirements themselves

    yes

    TC and (tests:CR or tests:("is affected by":CR or diff:(new,changed,removed)) or diff:new)

    All TCs that either test a Change Request, are affected by a new,changed,removed CR, or are considered new

    yes

    Boolean operators are keywords (or, and, not) or special characters (||, &&, !) to combine expressions into an overall boolean meaning.

  • Groups are wrapped in parentheses ((...)).

  • Sequences are formed by expressions following each other, optionally delimited by a comma (,).

  • Filters are denoted by a filter name (a string or symbol) followed by one or more arguments (other expressions) delimited by :.

  • (, )
  • [, ]

  • &, |, !

  • whitespace (spaces, tabs, newlines)

  • Jira work item keys (e.g., SAMD-12)

  • Ketryx item references (KXITM...)

  • Ketryx item record references (KXREC...)

  • Shorthand for the type: filter:

    • Item type short names (e.g., RQ, SW, TE)

  • Shorthand for the is:risk-control filter:

    • RC (denoting a risk control)

  • )
  • Jira work item numbers (e.g. 1)

  • Ketryx item IDs (KXITM...)

  • Ketryx record IDs (KXREC...)

  • Item type short names (e.g., RQ, SW)

  • Otherwise, the elements in the sequence are combined using a logical and. For instance, RQ RC refers to filters for item types and risk controls (which are not mutually exclusive), i.e., match all items that are of type Requirement and a risk control.

  • 1: allow a depth of exactly 1, i.e. only direct relations

  • N: allows a depth of up to N (where N is an integer number)

  • (MIN MAX) or (MIN, MAX): allows a depth of at least MIN up to MAX (where MIN and MAX are integer numbers; MAX can also be *)

  • removed

  • same

  • Ketryx item ID (e.g., KXITM5QFTEHESAE8P8R9256PX60YXRS)

  • Ketryx item record ID (e.g., KXREC4KX77X9CER95WV7F96XBNP2WQX)

  • =
    "Software Item Spec"
  • TSK = Task

  • TC = Test Case

  • TE = "Test Execution"

  • AN = Anomaly

  • CMPL = Complaint

  • CR = "Change Request"

  • CAPA

  • RISK = Risk

  • HW = "Hardware Item Spec"

  • "In Progress"

  • Resolved

  • Closed

  • risk-control: matches items that are risk controls; this is equivalent to the relation-based filter "risk-controls":*

  • flagged: matches items that have a current re-verification flag

  • Not supported by Simplified KQL:

    • checked: matches checked items, i.e. items that need to be controlled (which does not include deferred items)

    • deferred: matches deferred item

    • unresolved: matches items that are not deferred, not deleted, not controlled, and whose state is neither closed nor resolved

  • full refers to full approval by all required approval groups (including the owner if necessary).
  • For group names, the following shorthand values for the standard Ketryx-defined groups are supported:

    • RD = "R&D Leads"

    • PM = "Product Managers"

    • QM = "Quality Managers"

    • DEV = Developers

    • QC = "Quality Control"

  • "found anomaly" / "was found by" (field Found anomalies)
  • fulfills / "is fulfilled by" (field Fulfilled requirements)

  • "has parent" / "has child" (fields Parent requirements, Parent software items, Parent hardware items)

  • implements / "is implemented by" (field Implemented items)

  • "is risk-controlled by" / "risk-controls" (field Risk control measures)

  • executes / "is executed by" (field Test being executed)

  • "relates to" / "is related to" (field Related issues)

  • "is related to" / "is related to" (field Related items)

  • tests / "is tested by" (field Tested items)

  • affects / "is affected by" (field Affected items)

  • "introduces risk" / "is introduced by" (field Introduced risks)

  • "results in" / "results from" (field New items)

  • "is resolved by" / resolves (field Resolved by)

  • uses / "is used by" (field Used items)

  • ITEMS is an arbitrary query expression to filter for allowed targets (in case of forward relations) or sources (in case of reverse relations) of the relation. This expression might involve other, nested filters for relations.

  • DEPTH is an optional parameter to specify a restriction on the relation depth. See the description of the to: filter for details.

  • SAMD-1 SAMD-2 SAMD-3

    Items with a Jira work item key of SAMD-1, SAMD-2, or SAMD-3

    yes

    RC

    Risk controls

    yes

    RQ SW

    Requirements and Software Item Specs

    yes

    assignee:me

    Items assigned to me

    Symbol

    x v1.2.3 SAMD-12

    String

    "x"

    Boolean operator

    condition1 and condition2 not cond1

    Grouping

    (cond1 and cond2) or (cond3 and cond4)

    Sequence

    (item1, item2) (item1 item2)

    Filter

    filter:arg1:arg2

    not

    !

    and

    &&

    or

    ||

    System of Systems
    filter by relation
    filter by relation

    yes

    a or not x and y or z
    a or ((not x) and y) or z
    a or not x and y or z
    a || !x && y || z
    to:(0 1):TC
    RELATION:ITEMS
    RELATION:DEPTH:ITEMS
    FIELD:VALUE
    some text
    "some text"
    "RQ"
    RQ SW
    type:Requirement or type:"Software Item Spec
    "has parent"::SAMD-1
    "has parent":*:(id:"SAMD-1")

    MAN-01 Ketryx Lifecycle Management

    Manual for the usage of the Ketryx Platform

    1. Introduction

    1.1. Purpose

    The purpose of this manual is to explain the ongoing usage and operations of the Ketryx Platform, a lifecycle management system built to streamline high-quality software development and support FDA software compliance and compliance with standards such as ISO 13485, IEC 62304, ISO 14971 and IEC 61508-3, among others.

    1.2. Scope

    The scope of this manual is the complete usage of the Ketryx Platform. This includes a description of the Ketryx Framework, a logical framework of rules and entities that are implemented within the Ketryx Platform software system.

    1.3. Referenced Documents

    1. ISO 13485

    2. IEC 62304

    3. ISO 14971

    4. IEC 61508-3

    1.4. Definitions and Acronyms

    For the purposes of this document, the terms and definitions given in U.S. QSR (21 CFR Part 820), ISO 13485, IEC 62304:2006-AMD1, and IEC 61508-3 apply. Where contradictory, IEC 62304 and ISO 13485 prevail.

    1. ALM: Application Lifecycle Management

    2. QMS: Quality Management System

    3. QS: Quality System

    4. EDMS: Electronic Data Management System

    1.4.1. Multi-Factor Authentication (MFA) Reset

    When enforced in the organization, there are a couple of common scenarios where you might encounter a prompt to reset your Multi-Factor Authentication (MFA) in Ketryx:

    1. Authenticator Removal: If you have removed or uninstalled the authenticator app linked to your Ketryx account, the system can no longer verify your identity using that method, requiring an MFA reset.

    2. Switching Devices or Browsers: When you change machines, browsers, or use a security key-based authentication method (e.g., TouchID), the associated key might no longer be accessible. In this case, Ketryx may still display the security key as an option, but you won't be able to complete the authentication process.

    You can request your organization owner to reset your MFA status. To avoid interruptions, we recommend designating at least one backup organization owner in addition to your primary owner, in case the primary owner needs to have their MFA reset.

    1.5. Responsibility and Authority

    The Organization shall define responsibilities by assigning Members to Groups. Authority over configuration items is provided to Members and Groups through the project’s Approval Rules, which consist of Approval Steps. These steps can be configured to require approval from either Groups or Members. By default, Ketryx is configured with approval steps based solely on Groups. The approval rules can be found under the project Settings if the Member has permission to view that information. To modify the approval rules and, as a result, the authority of your project’s QMS, you would need to have edit permissions for Approval Rules.

    Ketryx comes with sensible default configurations that can cover many modern software development workflows. For responsibility and authority, Ketryx has five default groups and a set of default approval rules. Ketryx can be configured to add groups and support additional work instructions. The default groups are:

    1. Product Managers

    2. R&D Leads

    3. Developers

    4. Quality Managers

    It is considered best practice to have members assigned to only one group to ensure division of responsibility. Any abstract approval structure, whether based on groups or users, can be created in Ketryx. Organization owners can create additional groups and define permissions for those who can manage groups and approval steps.

    Further information on how to configure a project’s Approval Rules can be found in .

    2. Ketryx

    2.1. Ketryx Framework

    The Ketryx Framework is an object-based, gated, risk-based product development framework for validated application lifecycle management. Users, called Members within an Organization, work collaboratively to create products, set requirements, and collect evidence that those requirements are met through the IT systems used throughout the product lifecycle. Members and Organizations are examples of two types of entities in Ketryx that can interact in a pre-specified, structured manner.

    In Ketryx, Members use Configuration Items (CI) to build Systems, Sub-Systems, and Services. CIs are the atoms from which systems are built and are managed in various tools native to the given task (requirement management, source control, etc.). Each System, Sub-System, and Service is a CI, and it is managed in Ketryx as a Project. Projects can interface with other projects to create the structure needed for complex system engineering.

    Members have authority and permission over CIs and their lifecycle, depending on each project’s Approval Rules. Some Members can author, review, and approve a configuration item for it to become controlled and effective. Others might only have permission to view a Project. If a Group that a Member is a part of has assigned training, Members must perform that training, or they will not be able to perform actions (i.e., approvals) as part of the Group. Specific Groups and/or Members are required to approve the release of the validated product (i.e., project version). Further details on the framework and the different entities (i.e., objects) that exist in it are provided in the following sections.

    2.1.1. Entities

    Ketryx has six different types of entities that interact in pre-defined ways to create the type of structure and traceability safety-critical applications require. The following are the types of entities in Ketryx, and the diagram below shows how they interact:

    1. Organization

      An Organization consists of Members who work together to create products. Each Member must have a role as either an owner or a regular member of the organization. An owner can add other members to the organization and potentially promote them to owners.

    2. Project

      A self-contained Subsystem, System, or Service and related activities that together create a product. Each Project has its own verification, validation, and release lifecycle, its own access control and approval rules, and its own versions. A project is typically done by a Product Team within an organization.

    2.1.2. Configuration Items

    Configuration Items can be combined within Projects to make any arbitrary System, Sub-system, or Service. CIs can govern all aspects of the Total Product Life Cycle (TPLC) and, through the Ketryx Platform, can be used to create evidence for audit or submission. Each controlled configuration item represents an approved record, and a validated system can only be created with controlled configuration items. Evidence of this controlled state can be seen in each release’s electronically signed documentation.

    The following Configuration Items are available in Ketryx, each with its own Work Instruction.

    1. Requirement

    2. Software Item Spec

    3. Task

    Configuration Items are how members build validated systems. They utilize configuration items to construct, validate and perform change control or systems, resulting in validated products. Each configuration item represents a task or task phase, with multiple representing a series of tasks, also known as an activity.

    Members perform tasks as part of the lifecycle activities of Projects. Projects can be nested within each other to form any arbitrary complex system of systems. Generally, a project can represent a System, Sub-system, or Service, which can be connected. Systems can then be validated and verified (V&V) through a Test Plan. An example of a product lifecycle that can be implemented in Ketryx is given below. The Test Plan would indicate which Test Cases need to be performed (through a Test Execution CI) and passed before product approval by the PLT.

    If instead of a V-model, we look at the pre-market lifecycle sequentially, we get the following diagram, which describes the lifecycle process requested in ISO/IEC 62304. In section 5 of this manual, we will review this diagram (and section 5 of ISO/IEC 62304) in detail.

    Looking at it beside the earlier lifecycle process diagram shows how the Ketryx Platform allows the development of products developed under the Ketryx Framework.

    Configuration Item States

    Configuration items managed through work item/task management tools (e.g., Jira) have four native states, described below. Additional states can be added.

    Open - The item is proposed.

    In Progress - The item proposal is being drafted into a final proposal. The ticket can be reviewed and edited.

    Resolved - The ticket is in an immutable state and is pending review and signatures from relevant approval steps.

    Closed - The ticket is closed, and no further actions are needed. For a design ticket, this state would mean the design is verified.

    2.1.3. Components

    The framework focuses on three components:

    Risk Management: systematic application of management policies, procedures, and practices to the tasks of analyzing, evaluating, controlling, and monitoring risk.

    Configuration Management: Configuration Management (CM) is a systems engineering process for establishing and maintaining consistency of a product's performance, functional, and physical attributes with its requirements, design, and operational information throughout its life.

    Agile Software Development: Iterative and flexible approach to software development, focusing on building smaller pieces of functionality.

    These three components are integrated into the Ketryx Framework, Ketryx Platform, and the way Members build validated products. Each is discussed in detail later in this manual.

    2.2. Ketryx Platform

    The Ketryx Platform (“Ketryx”) is a connected application lifecycle management platform that automates the Ketryx Framework. It allows teams to use portions of the Ketryx Framework relevant to their quality system and day-to-day activities.

    Ketryx allows Members to easily integrate a risk-based approach into their software development tooling and centralize their work from a single source of truth. It allows teams to develop software across those tools with full traceability and visibility in a 21 CFR Part 11 validated system.

    Ketryx is built on three principles:

    1. End-to-end traceability: allowing users to understand how everything is connected

    2. Compliant-by-design: guiding users on regulated software development

    3. Minimalist but connected: easy to learn and build in

    The Ketryx Platform consists of several interconnected modules and 3rd-party integrations, such as Jira and Git. These allow users to define requirements and enforce them across IT tools, creating complete and auditable configuration items. These can demonstrate compliance with the Total Product Life Cycle approach that is continuously recorded, viewed, used, and audited in Ketryx.

    Ketryx supports the following common control use cases, with additional ones possible to add:

    1. Design Controls: Record and manage requirements, specifications, and other design control items in Jira.

    2. Configuration Management Controls: Record your source code, build, distribution and deployment directly from your source code management and cloud provider.

    3. Process Controls: Following Compliant-by-Design (CbD) can be provenly enforced across IT systems. Evidence can be generated and collected to show that Design Controls have been met. Design Controls can be recorded and managed in Jira.

    Ketryx easily connects to other systems providing users with a seamless, traceable experience, including guided workflows and evidence generation. The following systems are supported in Ketryx.

    Source Code Repository: Any Git repository works with Ketryx. Specific advanced source code management tools and evidence collection modules currently only work with GitHub.

    Task/Work Item Management: Ketryx connects to Jira Cloud through an . Once installed and connected to a Ketryx Organization, Projects created in Ketryx can be connected to Jira spaces (formerly projects). This will create Ketryx-specific workflows, work types, and screens in Jira and automatically configure the connected Jira spaces with them (unless it contains work items already, in which case the initial configuration is more manual). The Ketryx-specific Jira work types correspond to Configuration Items 1 through 11, while Software Dependencies, Cloud Dependencies, Test Plans, Versions, and Documents are primarily managed natively in Ketryx.

    Cloud Deployment: Ketryx currently supports AWS as a native integration. You can still use any other feature of Ketryx and record evidence as discussed.

    2.2.1 Global Data Loading Indicator

    To optimize performance, Ketryx displays pre-computed data on many pages while simultaneously processing up-to-date information. A loading indicator in the top right corner indicates how current the displayed data is

    When up-to-date data is still computed, the loading indicator will show nine pulsating dots:

    When all data on the current page is up-to-date, the loading indicator will show a check mark:

    Clicking the loading indicator will give additional information about the currentness of the shown data.

    2.3. Related Manuals

    Manual ID
    Manual title

    2.4. Related Work Instructions

    Work Instruction ID
    Work Instruction title

    3. Risk Management

    Associated Deliverable: Risk Management File, Risk Control Matrix, Risk Matrix, V&V Report

    Tooling: Risk Management Screen, Risk Controls Screen, Risk Configuration Item

    Members can conduct project-level and configuration item-level risk analysis. Risks in Ketryx can be used to follow an ISO 14971-like process and are based on Hazardous Situations. The focus should be on what can happen and how to prevent harm to the patient. Risk management can be done continuously in Ketryx for each successive version and each system individually and in a centralized fashion.

    Each risk is managed individually as a Risk configuration item. As a whole, risks can be managed through the manufacturer’s risk management process. While the Ketryx framework provides tools and automation for risk management, management of product and none product risk is the sole responsibility of the finished product manufacturers, which should have an approved risk management plan.

    For a more in-depth guide to risk management in Ketryx, please refer to manual .

    4. Configuration Management

    Deliverable: Design Control documents (SRS, SDS, etc.), Software Bill of Materials, Part 11 Verification Report

    Tooling: Software Dependency Screen, Cloud Configuration Report, Release Configuration Item Screen, Electronic Document Management System (EDMS)

    4.1. QMS Configuration Management

    All QMS documents can be stored in the Ketryx Electronic Data Management System (EDMS).

    4.2. Design Control Configuration Management

    4.2.1. Design Control Artifacts

    Design controls artifacts can be found and tracked in Ketryx through several screens and files. Relevant screens include

    1. the Requirements traceability matrix screen,

    2. the Graph screen (showing the architecture diagram),

    3. the Risk management screen,

    4. the Test management screen, and

    Design control artifacts that can be exported or downloaded directly can be found in the section on .

    To become controlled, each design control configuration item must undergo a design verification step that can be electronically signed. This is the design verification activity for each configuration item, which is done according to the configuration item’s pre-defined Approval Rule.

    4.2.2. Software Supply Chain

    Configuration management for the application software supply chain, including open source, cloud, COTS software, and other dependencies, is further explained in the .

    4.3. Change Management

    Ketryx takes a risk-based approach to change management. The default system configuration supports three tiers for change management: the item level change control, the structured change control using the Change Request CI, and the structured action using the CAPA CI.

    The three risk-based change control levels provide users the flexibility and structure needed to perform change management in large-scale software applications. The exact usage of these depends on your organization and the context of the product you are building.

    1. Item level change control. Completed via the configuration item's native record. This is further discussed in each item’s Work Instruction.

      1. For Jira: change the status from open to In Progress, Resolved, and Closed

      2. For Git:

    Together these three levels of change management, the configuration item level, the Change Request level, and the Action/CAPA level, can allow users to conduct various complex change management activities, which can be used to capture all the information required by the strictest safety-critical industry requirements.

    5. Application Lifecycle Management

    5.1. Software Development Process

    In Ketryx, software development is part of a gated product development process, with each gate having milestones and deliverables.

    When building safety-critical systems across some industries and jurisdictions, it is important to ensure that the design inputs are fully defined by the design output (i.e., realized in/by the design output). As a result, before system validation, it is necessary to review and approve design-related items and the complete system sequentially, starting at the initial requirements and moving toward the final product technical requirements. This waterfall-like approach is supported by Ketryx’s gated approach while still allowing users to develop software using a variety of development methodologies, including agile-based ones. This is done by enforcing structure for deliverables and the design control management process as part of the release process.

    To release software in Ketryx, validation activities must be performed as described in each release’s Test Plan. All Configuration Items that are part of the release must be placed under change control (unless they are unresolved anomalies), the software must be validated per the Test Plan, and the artifacts listed in section 7 of this manual must be generated, reviewed, and approved. Only then can the Groups relevant for Version approval review, approve, and release the software. The below figure notes the software development activities and their deliverables, as well as the audit activities Ketryx can support to ensure needed activities are performed. Further detail on the software release process is provided later in this manual and can also be found in .

    Once the software is released and maintenance is required, a complementary process is used.

    5.2. Default Configuration

    While many aspects of Ketryx can be modified based on a company’s quality system and business activities, there are sensible default configurations built into Ketryx. These include the groups and approval rules for an organization and project, respectively.

    5.2.1. Default Groups

    At the core of Ketryx are the groups that different system users can be a member of. These groups represent the responsibilities users have on their journey to create validated applications.

    The following Groups are defined by default:

    1. R&D Leads

      Group Description: Leads the development of software products and makes the technical decisions about the product. Confirms that specifications and the application meet the requirements.

    2. Product Managers

      Group Description: Leads product development, defines requirements and deals with complaints. Confirms that the application meets users' requirements.

    5.2.2. Default Approval Rules

    By default, the following Approval Steps are defined for configuration items of the respective type. Each Approval Step is based on one of the default Groups, and at least one approval is required for each step. Unless otherwise noted, items of the respective type have an Item Assignee who also needs to approve. These default Approval Rules/Steps can be changed by a user with the proper permissions in the Approval rules page under a project's Settings tab.

    1. Requirement: R&D Leads, Quality Managers, Product Managers

    2. Software Item Spec: R&D Leads, Quality Managers

    3. Task: none (only the Item Assignee needs to approve)

    4. Test Case: R&D Leads, Quality Managers, Quality Control

    Further information on how to configure a project’s Approval Rules can be found in .

    5.3. Processes, Tasks, Items, and Members

    The Ketryx Platform facilitates product creation, management, and retirement. The Ketryx Framework is a set of rules that govern how processes, activities, and tasks can be performed on Items by Members.

    Each configuration item represents the abstract notion of the system component, with each version of it a record of that configuration item. Each approval process of an item involves performing all the tasks required by that configuration item’s work instruction, which checks Ketryx’s Rule Engine and creates a controlled record. Only Ketryx can change the state of an Item to Closed by checking with Ketryx’s Rule Engine, which determines if that Item’s current attributes satisfy its description in the Quality System Format. Each Closed record is then stored in Ketryx.

    The creation of a Requirement, its drafting, and approval constitutes an activity. Specifically, it is a Design Control activity that ensures requirements are developed, verified, and approved in a controlled and documented manner.

    The relationship between processes, activities, and tasks is shown in the diagram below. A process is a set of integrated activities that transform inputs into outputs. An activity is a set of integrated tasks. Generally, Ketryx configuration items are tasks or activities.

    Throughout different lifecycle processes, manufacturers use configuration items to manage the tasks required to create a validated system. As mentioned earlier, each configuration item has four states: Open, In Progress, Resolved, and Closed. Members must conduct tasks to move Items between the four states. For a requirement, for example, to move from Resolved to Closed, all the selected approval steps must verify the design (design verification).

    For an Item to be an effective configuration item in a given Version, it must be Closed, and the Version must match its version range, as specified by the fields Introduced in version and (for long-lived item types) Obsolete in version. There are generally two categories of configuration items in Ketryx:

    1. Long-lived item types have both an Introduced in version (the first version they are effective in, inclusive) and an Obsolete in version field (the first version they are not effective in, exclusive). These include Anomalies, Configuration Items, Requirements, Risks, Software Item Specs, Hardware Item Specs, and Test Cases. If the Introduced in version is not explicitly defined, these items are assumed to be in the first version. If Obsolete in version is not explicitly defined, these items are assumed to be in every subsequent version.

    2. Point-wise item types only have an Introduced in version field, which ties them to the specific Version they are effective in. These include CAPAs, Change Requests, Complaints, Test Executions, and Tasks.

    Note that, for Anomalies, Introduced in version denotes the first version they are known to affect, while Obsolete in version denotes the version they are expected to be resolved in.

    Records of items that are deleted in Jira are still kept in Ketryx. A record that marks the deletion is created in Ketryx, which is essentially treated like an obsolete item w.r.t. release management. If the item has been in a controlled state before, the deletion marker needs to be approved (in Ketryx) for the deletion to be considered controlled, i.e. it starts out in the Resolved state; otherwise (if the item has only been in a draft state), the deletion is considered controlled right away, i.e. it is immediately Closed.

    5.4. Versions and Releases

    The baseline version of each release is determined based on its version number: The latest released version preceding the given version is considered the baseline. By default, Ketryx looks for a -compatible version number within a version's name to derive its version number. This can be customized using advanced setting , and in each version's settings.

    Depending on the configured release controls, a version can only be released if all included items are in a controlled state.

    Wherever a version can be selected (e.g., to filter items), the Current state can usually also be selected, which represents the current "draft" of design controls. This includes all items that are not marked as obsolete in any version (regardless of when they were introduced). Jira-based items on Current show the current content as you would see in Jira. Git-based items, such as SOUP dependencies, on Current are derived from the primary analyzed branch or tag (typically main or master), as opposed to the version-specific release ref pattern (such as a v1.0 tag), configured for each repository in the project settings.

    5.4.1. Release types

    There are three different types of releases in Ketryx:

    1. A full release incorporates all items in their current state. For Jira-based items, this is based on the information you currently see on the Jira work item.

    2. A patch release inherits the state of each long-lived item from its baseline version, while only for items that are explicitly marked as introduced or obsolete in the patch release (based on its version number), their current (controlled) state is incorporated.

    3. A scoped version also incorporates only specific changes, similarly to a patch release. But instead of opting into changes based on a version number, items matching a certain filter are considered in scope for change. In addition, certain items related to any matching items can be incorporated as well, including affected or new items of Change Requests and CAPAs, affected and resolving items of Anomalies, affected items of Complaints, and risk control measures of Risks.

    Patch releases and scoped versions can be used to release small, incremental changes to certain items without being impacted by modifications to other items that might happen in parallel. Scoped versions can also be created based on a selection of items to include in the scope.

    5.4.2. Locking item records for release baselines

    For finer-grained control over which records are used in a version, particular records of each item can be locked to the release baseline. Locked records override the automatic logic described for the different release types above.

    This can be useful when starting to work on a following version while the current release is not finished yet. If you want to edit existing items without affecting the current release, you can lock their current records for this release, so that new records created based on your edits are not incorporated into the release.

    To lock the current record, select items on the All items page and choose Lock selected records for this release baseline from the extended menu (...).

    You can also lock a particular record from the history of each item, by navigating to its record detail page, and managing locks in the Baseline locking section. This can be useful to use a particular historic record of an item in the release baseline, when the item has already been changed in the meanwhile.

    Item locks can be removed by choosing Unlock selected items for this release baseline from the extended menu on the All items page, or on the item record detail page.

    Locking and unlocking records requires the Manage project permission on the project. Locking-related actions show up in the changes associated with the record as well as the project's audit change log.

    You are also able to lock the ‘Last Controlled Record’ to the current release for multiple items in bulk. By navigating to the All Items page & selecting multiple Configuration Items, you will be able to lock the last controlled record of selected items. This bulk action is particularly useful when preparing a release after numerous Configuration Items have been modified, as it ensures the Last Controlled Record of the selected items is locked to the selected release version. This also helps if you forgot to bulk lock your controlled records for a version before starting to work on them again.

    This action will only lock the items that have controlled records - if an item has never been controlled, it will not be locked. A warning message will display before you confirm this action.

    5.4.3. Item variants

    Ketryx allows you to create variants of an item. This is a powerful feature for managing situations where an item's content needs to be different in separate versions, enabling you to work on multiple versions in parallel without affecting each other.

    For instance, the impact of a vulnerability might be different in a new feature version compared to an older, stable version. By creating a variant of the Vulnerability Impact Assessment, each version can have its own independent assessment, without affecting the other.

    Currently, this feature is available only for Vulnerability Impact Assessments. For a detailed walkthrough of how to use this functionality, see the or .

    5.4.4. Monitoring

    Ketryx supports three different monitoring options that you can adjust in the settings page of a version.

    1. Automatic (Default): The release with the highest version number according to Semantic Versioning () is considered currently active.

      1. If the latest automatic release is unreleased, the most recent released version according to SemVer that was marked as automatic is considered the active version.

      2. The only exception to this rule is if the previous release is manually marked as inactive. In this case, no previously automatic release is considered active, effectively disrupting the sequence.

    For dependencies associated with active released versions, you will receive weekly and daily via email. Setting the monitoring option to active is recommended in case you have multiple released versions of your product running in production in parallel.

    Adjusting this setting will only have effect on released versions.

    5.5. Building Products

    Building validated systems that can turn into products that serve safety-critical functions is a complex, detailed, and challenging endeavor. Ketryx is built to reduce the complexity and cognitive load of building such products, allowing teams to focus on what matters most.

    The sections provided below are simplifications of the activities needed to produce validated systems in different industries and jurisdictions. It is expected that the company building the system/product will have the knowledge, resources, and capabilities to build such a system. As a result, the below is only the explanation of Ketryx functions related to these activities and not a description of all the necessary activities.

    Additional details about releasing software in Ketryx can be found in .

    5.5.1. Software Development Planning

    Deliverable: Risk Management File draft

    Once a new product is decided on, a project needs to be created to govern the system(s) that make up that project. As part of this process, a Product Leadership Team (PLT) shall be appointed, consisting of a Member of each of the following Groups:

    • Product Management

    • R&D Leads

    • Quality Management

    Following the formation of the PLT, the project should start. The software development process will consist of the steps described in Figure 2. At each phase below, the activities listed will be conducted. The deliverables mentioned at the beginning of each phase can be generated, reviewed, and stored in the Ketryx Platform.

    5.5.2. Software Requirements Analysis

    Deliverable: System Requirement Specification

    Tooling: Requirement Traceability Matrix

    Members create requirements that can describe a wide variety of systems, environments, contexts, and intended uses. Each requirement is captured in a Requirement type configuration item.

    Requirements can be defined throughout the software development lifecycle but must be approved and under change control before any software verification and validation activities begin. Requirements can be developed and managed in the connected work item/task management platform.

    Further details on the Requirement configuration item can be found in .

    5.5.3. Software Architecture Design

    Deliverable: Software Design Structure Matrix, Software Design Architecture Diagram, Software Item Specification configuration item

    Tooling: Architecture Module

    Members realize requirements into software architecture. This can be done by creating Software Item type configuration items that fulfill the requirements and are combined together to perform different tasks and provide required features and functionalities.

    Software Architecture can be defined through the software development lifecycle but must be approved and under change control before any verification and validation activities. Software architecture is defined through the Software Item Specification configuration item, and is developed and managed in the connected work item/task management platform.

    Further details on the Software Item Specification configuration item can be found in .

    5.5.4. Software Detailed Design

    Deliverable: Software Design Specification, Software Item Specification configuration item

    The detailed software architecture design (i.e., the detailed design) is developed using the Software Item Specification configuration item and is developed and managed in the connected work item/task management platform.

    Further details on the Software Item Specification configuration item can be found in .

    5.5.5. Software Unit Implementation and Verification

    Deliverable: Code Change Review report, Testing report, Test Plan, SOUP Dependencies report

    Tooling: Items screen with filter for specifications, Task, and Test Case configuration items

    Software Items (i.e., blocks of code, units, modules, systems) are implemented using the Task configuration item. Tasks are created as units of work, to be assigned to a Member. For each Task, the Implemented items field shall contain which Software Item Specification or Requirement needs to be implemented during this Task. When a merge request is created, the Task item ID should be mentioned in the merge request description to create traceability between the specific merge request and the Task. When a merge request is not related to a particular Task, it may also reference the implemented Software Item Specification, Requirement, Anomaly, or other relevant configuration items directly.

    Unit testing, module testing, and system testing are governed by the Test Case and Test Execution configuration items. Before the beginning of any verification and validation activities, a Test Plan can be created to define which Test Cases will be executed as part of the release. Note that if no Test Plan is configured, it is assumed that all Test Cases assigned to any CI in the release will be executed. At least all design endpoints (Requirements and Software Item Specifications with no children) will be executed.

    Tasks, Test Cases, and Test Executions are developed and managed in the connected work /task management platform. Further details on the Task, Test Case, and Test Execution configuration items can be found in , , and , respectively.

    5.5.6. Software Integration and Integration Testing

    Deliverable: Verification and Validation Testing Report

    Tooling: Testing Module

    Software integration and integration testing can be performed using the same functionality described in the previous section. Further details on testing can be found in , and .

    5.5.7. Software System Testing

    Deliverable: Verification and Validation Testing Report

    Tooling: Testing Module

    Software system testing can be performed using the same functionality described in the previous section. Further details on testing can be found in , and .

    5.5.8. Software Release

    Software release should be conducted for each new product version. All configuration items should be placed under change control and approved. Once unit, module, and system testing are performed, all unresolved anomalies should be documented, with their Rationale for deferring resolution field filled in.

    The release can only be approved if all configuration items are controlled, required records, deliverables, and artifacts have been generated and approved, and the PLT approves the release. For further information, please refer to .

    5.6. Maintaining Products

    At the core of Ketryx and safety-critical software regulations is the concept of change management and maintenance. While change management is addressed in earlier sections of this manual, due to its criticality to validated systems, it is again reviewed here in the context of maintenance.

    Maintenance is a core part of safety-critical regulatory requirements and is commonly identified as a source of adverse events and harm. As a result, Ketryx requires that maintenance be performed in a controlled manner, using a risk-based approach through traceable configuration items. The main configuration items used as part of maintenance activities are:

    • Complaint

    • Anomaly

    • Change Request

    • Corrective And Preventative Action (CAPA)

    Combined with Ketryx’s deep integration with source code, cloud, and task management systems, these four configuration items provide powerful tools for change management in complex validated systems, like cloud-based, data-driven medical software and robotics systems.

    Typically, a Complaint can lead to one or more Anomalies. As part of each Anomaly activity, a problem report is documented. This problem report might lead to a Change Request or CAPA. These can get implemented across the product (e.g., source code), design controls, and the QMS through additional configuration items, like Tasks or Requirements.

    Software Maintenance Planning

    Software maintenance will be done on a version basis, with internal and external information and feedback leading to maintenance and modifications in the validated system.

    Software maintenance (i.e., software change management) can be done on three tiers:

    1. Configuration Item Level

    2. Structured Change Control through a Change Request configuration item

    3. Structured Action through a CAPA configuration item

    Software maintenance can happen as a result of a wide range of factors. Additional features (i.e., requirements), also known as enhancements, maintenance to existing code, or as a response to external product feedback or adverse events. Among many things, the reason for change and approval of change depends on the intended use, the use environment, and the quality system of the system manufacturer or user. The decision to implement a change can be a result of multiple factors, for example, a desire to mitigate a source of adverse events (i.e., harm), to enhance the system with new functionality, or to correct a design flaw.

    While Ketryx can be used to perform change management, the system manufacturer still must utilize their software maintenance plan for their intended use and use Ketryx’s different tools to implement the change.

    5.6.1. Problem and Modification Analysis

    Deliverable: Release notes, Anomaly configuration item record

    In Ketryx, changes can result from external factors (e.g., customer feedback, adverse events, etc.) or internal factors (e.g., internal feedback, failed testing, etc.). These can be captured using different configuration items, most commonly the Complaint and Anomaly, but in some cases (e.g., enhancements) as a Requirement. As a result of software problems, modifications will be implemented to mitigate and, if possible, eliminate the problem. While the source of the problem can dramatically affect its criticality and priority, the process for modification is generally the same.

    1. External problem reports will be recorded using Complaints, internal problem reports can be recorded using Anomalies. If a problem starts as a Complaint an Anomaly should be created to resolve that Complaint.

    2. For each Anomaly a root cause investigation should be conducted. Once the root cause of the problem is discovered, a Change Request(s) or CAPA shall be created.

    3. Following the Change Request or CAPA,

    Post-Market Surveillance

    Deliverable: Complaint records in Ketryx and other change-related CI records

    Tooling: Complaint configuration item

    Post Market Surveillance (PMS) is the process of recording, investigating, mitigating, and responding to feedback and information about products in the market. Depending on your quality system and process, this might take various forms.

    In Ketryx, the PMS can be performed using the Complaint configuration item and other maintenance and change-related activities. The generic process could involve:

    1. Recording the product feedback or adverse event using the Complaint configuration item

    2. Depending on the type of complaint, create one or more Anomaly type configuration items related to the complaint and investigate the root cause(s) of the anomaly(s).

    3. Utilize a risk-based change control activity to mitigate the anomaly. This would usually be done through a Change Request or CAPA configuration item.

    The specific application of Ketryx tools for PMS depends on the manufacturer’s quality system.

    Anomalies and Problem Reports

    Anomalies (and other deviation types) and problem reports are managed as part of the Anomaly configuration item. This configuration item contains fields to both report and analyze the anomaly, as well as the underlying problem, root cause, and potential solution.

    Further details on the Requirement configuration item can be found in .

    5.6.2. Modification Implementation

    After modifications have been implemented, each change request can be verified using a Test Case to show the change resolved the root cause.

    5.7. Systems of Systems

    Ketryx can be used to manage a System of Systems by structuring work into several projects and creating references across those projects. Consider watching this .

    5.7.1. Cross-Project References

    Before items from one project can cross-reference items in another project, the referenced project (the "target" of the relation) needs to be added in the References settings of the referencing project (the "source" of the relation). Each reference can define a particular set of referencable and incorporated items and give fine-grained control on what items are available to the referencing project.

    The following sections will outline the general concepts of the referencable space and incorporated pool, including the configuration via different selection modes.

    5.7.1.1. Incorporated and Referenceable items

    A project reference differentiates between a set of incorporated and referenceable items:

    • The referenceable items represent the space of items that can be used as a reference within the referencing project

      • Referenceable items will be selectable as a relation within Ketryx and other third party systems (e.g., Jira)

      • As far as third party systems are concerned, only references between two Jira-connected Ketryx projects are possible currently.

    In regular system-of-a-system setups, the referenceable space is commonly defined as a superset of incorporated items, but depending on the system's needs, it is also possible to define arbitrary sets based on KQL filters.

    The project reference may be configured via two different configuration modes:

    1. Filter-based selection of items in referenced projects: This mode allows defining a fine-grained scope of incorporated and referenceable items via queries.

    2. Legacy type-based selection of items in referenced project: This mode allows defining the scope of referenceable items via pre-defined item type and relation options. This mode has been superseded by the more powerful filter-based selection mode and should not be used in new project references.

    Independent of the selected mode, a referencing project may also incorporate the release documents of a referenced project, which exposes those documents in the release and the Design History File. When including transitive documents, the documents of any referenced projects of the referenced project (etc.) are also exposed.

    Note that cross-project references are directed, allowing references from the referencing project (A) to the referenced project (B). To also allow references in the other direction, a "reciprocal" relation from project B to project A needs to be added.

    Software Item Specs in the referencing project may refer to a referenced project as a used service, which declares a dependency on the whole service without specifying which item within the referenced project is used exactly.

    5.7.1.2. Filter-Based Selection

    By default, when the filter-based selection mode has been enabled, all items of the referenced project will be part of the referenceable space, and no items will be part of the incorporated pool. The filters for referenceable and incorporated items can be defined as a simplified KQL statement (i.e. may filter items based on the item types, item relations and core field values only).

    Additionally, a filter-based project reference may be configured to include items from projects that are transitively referenced by the referenced project (as defined by the references within the referenced project).

    5.7.1.3. Legacy Type-Based Selection

    This section is intended to document legacy behavior of existing projects. For new project references, or for complete cross-project traceability across non Test Case / Test Execution items, use the filter-based selection mode instead.

    By default, when the type-based selection mode has been enabled, all items of the referenced project will be part of the referenceable space, including cross-project references to Anomalies and Risks; but it is also possible to define a more granular set of relation targets:

    • Requirements (as parent requirements or fulfilled requirements)

    • Software/Hardware Item Specs (as used items)

    • Tested items

    • Tests

    When tests from another project are included as referenced items, they are treated as incorporated items, and show up on the All items, Test management, and Traceability pages of the referencing project. They can also be used to create Test Executions. By default, they are not included in the referencing project's release test plan, though.

    5.7.2. Cross-Project Referenced Risks and Risk Controls

    Given a project (A) that references another project (B), Ketryx will include any references and item details of risks and risk controls from project B in project A in the following areas, depending on the selected project reference mode:

    • Web pages

      • Risk management page

        • Filter-based selection mode: All the risks that are part of the incorporated pool are shown

    Ketryx includes risks and risk controls from project B in project A by principle of tracing, i.e. identifying relevant items to include by following a chain of risk control and 'introduces risk' relations that originate in project A (as defined by its configured referenceable space of items). Furthermore, any referenceable Test Cases (and resulting Test Executions) that test an item in this relations chain will be included in project A.

    5.7.3. Version-specific Settings

    For each version of the referencing project, a specific used version of each referenced project can be defined in the (referencing) version settings. This allows "locking in" a particular used version, and informs which record to show for each referenced item (which is particularly relevant if the title of the item changes over time). By default (if no specific used version is explicitly defined), the latest version of the referenced version will be used.

    When showing cross-project references in release documents, the referenced project along with its used version (if explicitly defined) is shown as well.

    5.7.4. Systems, Sub-systems, Services

    Complex systems are usually structured in several layers, as follows (from higher to lower level):

    1. a System consisting of one or more of the processes, hardware, software, facilities, and people, that provide a capability to satisfy a stated need or objective

    2. Sub-systems, integrated collections of software items or hardware items organization to accomplish a specific function or set of functions

    3. Services, self-contained and validated systems with specific predefined interface requirements

    Typically,

    • higher-level ("parent") projects would incorporate the release documents of lower-level projects and reference used items in the lower-level ("child") projects (or reference a lower-level project "as a whole", i.e., as an opaque service), while

    • lower-level projects might reference requirements in the higher-level projects.

    See the step-by-step guide about for detailed instructions.

    5.8. Differentiating Regulatory Regions

    Ketryx supports building products for different regulatory regions, and similar cases where different variations of quality documents need to be produced. A "region" could be a geographic region such as EU vs. US, or a more abstract distinction such as Customer X vs. Customer Y.

    At a higher level, different projects can be used for different regions, each having their own lifecycle and release documents. For instance, an EU-specific service could be maintained as its own project, with other projects referencing it as a used service as described .

    At a lower level, individual configuration items can be "labelled" with one or more regions, which makes them specific to those regions. Moreover, certain release documents can be configured to be region-specific. Region-specific release documents only contain items that are explicitly marked for their respective region, as well as region-independent items (not marked with any region).

    The relevant are (to define the set of available regions in a project) and . For other use cases, the field Regions can also be renamed, using the advanced setting .

    5.9 Audit change logs

    Besides tracking changes of the actual work items, Ketryx is also capable of tracking changes to the Ketryx configuration itself to establish audit trails on the process administration level.

    Audit change logs are captured either on the Ketryx organization or project level and include the following information:

    1. Date and time of the change

    2. Author of the change

    3. Change type category

    4. Change content to describe the details of the change (as JSON)

    To view and download the Audit change logs for the current organization, navigate to Organization >> Audit change logs.

    To view and download the Audit change logs for a project, navigate to [Project] >> History >> Audit change logs.

    On each page, the data can be downloaded as a separate Excel file.

    6. Step-by-step starter guide

    6.1. Setting up an Organization

    6.1.1. Step 1. Log into Ketryx

    Log into the Ketryx platform (e.g., )

    6.1.2. Step 2. Add members

    1. Go to Organization.

    2. Here you can change your organization name.

    3. Go to Members. Here you can add users to your organization using the Invite member button. You will need a member's full name, email address, and role in the organization to invite them.

    6.1.3. Step 3. Create groups

    1. Go to Groups. You can add Groups as needed using the Create group button, but the default configuration comes with six Groups that would fit most software development workflows.

    6.1.4. Step 4. Assign members to groups

    1. Go to a specific group's edit page using the Edit button.

    2. You can add users to the groups using the Add user or group button and selecting the desired user or group from the dropdown menu.

    6.2. Setting up a Project

    6.2.1. Step 1. Create a project with repositories

    1. In the Ketryx Projects dashboard, select the Create project button.

    2. Fill out the Name field for the project.

    3. Fill out the Repository URL field. You can add an additional repository using the Add another repository button or add multiple repositories simultaneously using the Add batch button.

    6.2.2. Step 2. Add a repository to an existing project

    1. In an existing project, navigate to Settings.

    2. For projects that already have repositories, use the Add another repository or Add batch button. For projects without repositories, use the Add repository or Add batch button.

    3. Use the Save button to save the changes.

    6.3. Connecting to Task/Work Item Management Tool

    6.3.1. Step 1. Log into Jira

    Log into your Jira organization (e.g., your-company.atlassian.net)

    6.3.2. Step 2. Get the Ketryx app

    1. Go to Explore more apps in the Apps dropdown menu.

    2. Search for 'Ketryx'.

    3. Add the Ketryx for Jira App.

    6.3.3. Step 3. Connect a project to a specific Jira space

    1. In the Ketryx Project dashboard, select the Create project button.

    2. Fill out the name of the project.

    3. Select the specific Jira space from the dropdown menu. Note that a Jira company-managed space must be used when integrating with Ketryx - Ketryx does not support integration with Jira team-managed Projects.

    6.4. Setting up Cross-Project References for a System of Systems

    This guide shows how to set up an interconnected System with a Sub-system and a Service used by it, and generating documents as described by section .

    6.4.1. Step 1. Create and connect projects

    1. Create a Jira space for the System and a corresponding Ketryx project connected to it.

    2. Create a Jira space for a Sub-system and a corresponding Ketryx project connected to it.

    3. Create a Jira space for a Service and a corresponding Ketryx project connected to it.

    6.4.2. Step 2. Create and connect items

    1. In the System Jira space, create a Requirement System Requirement.

    2. In the Sub-system Jira space, create a Requirement Sub-system Requirement.

    3. Add the System Requirement to the Parent requirements of the Sub-system Requirement.

    6.4.3. Step 3. Create and associate versions

    1. In the Service Ketryx project under Releases, create new versions 1.0, 1.1, and 2.0.

    2. In the Sub-system Ketryx project under Releases, create a new version 1.0.

    3. In the Settings for the Sub-system version 1.0, set the referenced project version for the

    6.4.4. Step 4. Create release documents

    1. On the Documents page for the Service version 1.1, generate the System Design Specification. (This document will essentially be empty, since the project does not contain any items. This is just to highlight that the document will also be exposed in the other projects.)

    2. On the Documents page for the Sub-system version 1.0, generate the System Requirements Specification and the System Design Specification.

    3. Note that the documents contain cross-project references, along with version numbers where specified.

    6.5. Connecting to Cloud Provider

    Further detail on connecting to a cloud provider (currently, Ketryx only supports AWS) can be found in .

    6.6. Setting up Git-based configuration items

    Please see for step-by-step instructions on how to set up Git-based configuration items.

    7. Records and Artifacts

    Through Ketryx, teams can collect evidence and establish processes across their IT systems to meet regulatory requirements. Part of this regulatory requirement is to produce records and artifacts that proper design, development, distribution, deployment, and maintenance processes have been conducted.

    This can include Quality Management System artifacts as well as Design Control artifacts and Change Control artifacts. The diagram below shows which artifacts can be created. The list below provides further detail about each artifact that can be automatically produced in Ketryx. Many other artifacts are possible to create, and the Ketryx team would be happy to support your journey of building. Please for further information about artifacts.

    7.1. SOUP dependencies

    The Software Bill of Material Report covers software application dependencies both from open-source package managers and internally or manually entered information.

    7.2. Traceability matrix

    The Requirement Traceability Matrix shows that all tested requirements are traced to specifications and test cases.

    7.3. Risk management file

    Risk management plan, risk assessment demonstrating that risks have been appropriately mitigated, and risk management report.

    7.4. System requirements specification

    The complete documentation describing the needs or expectations for a system or software, presented in an organized format and with sufficient information to understand the traceability of the information with respect to the other software documentation elements (e.g., risk management file software design specification, system and software architecture design charts, software testing as part of verification and validation).

    7.5. Software Design Architecture Diagram

    The software design architecture diagram displays Software Item Spec and Hardware Item Spec Configuration Items in a tree structure. Child-Parent relationships between Software Item Specs are defined by the Parent software items field and represented in the architecture diagram as solid arrows. Child-Parent "uses" relationships between Software Item Specs and between Software Item and Hardware Item Specs are defined by the Used items field and represented in the architecture diagram by a dotted arrow annotated with "uses". The color coding of the blocks in the architecture diagram is defined below.

    7.6. System design specification

    The complete documentation, including sufficient information that would allow the FDA to understand the technical design details of how the software functions, how the software design completely and correctly implements all the requirements of the SRS, and how the software design traces to the SRS in terms of intended use, functionality, safety, and effectiveness.

    7.7. System design structure matrix

    7.8. Unresolved anomalies

    List of remaining software anomalies (e.g., bugs, defects) annotated with an explanation of the impact on safety or effectiveness, including operator usage and human factors, workarounds, and timeframe for correction.

    7.9. Test plan

    The test plan a validated system was tested against. The test plan must be approved before testing should start.

    7.10. Testing report

    Description of the testing activities at the unit, integration, and system levels. System level test case including expected results, observed results, pass/fail determination, and system level test report. unit and integration level test cases, including expected results, observed results, pass/fail determination, and unit and integration level test reports.

    7.11. Cloud configuration report

    The Software Bill of Material Report covers cloud dependencies and their exact configuration during V&V.

    7.12. Code review report

    Report with all the code comments.

    Activity: a set of one or more interrelated or interacting Tasks

  • Configuration Item (CI): an entity that can be uniquely identified at a given reference point

  • Deliverable: required result or output (includes documentation) of an Activity or Task

  • Task: a single piece of work that needs to be done

  • Effective/Controlled Configuration Item: a Configuration Item that is in active use by the system for a given version

  • Traceability: the degree to which a relationship can be established between two or more products of the development Process

  • Process: a set of interrelated or interacting Activities that transform inputs into outputs

  • Verification: confirmation through the provision of objective evidence that specified requirements have been fulfilled

  • Project: a self-contained (sub) system or service with its own verification, validation and release lifecycle, and its own access control and approval rules. Each project defines its own versions. Projects might contain references to other (“sub” or “service”) projects. This is the primary “scoping construct” in Ketryx.

  • System: integrated composite consisting of one or more of the processes, hardware, software, facilities, and people, that provide a capability to satisfy a stated need or objective.

  • Product: a version of a system validated to a test case that meets certain requirements and is provided to users

  • Sub-system: integrated collection of software items or hardware items organized to accomplish a specific function or set of functions

  • Service: a self-contained and validated system with specific predefined interface requirements

  • Organization: an organization or organizational unit (e.g., Center of Excellence, Business Unit), managing its own members and projects. Each project is owned by one organization

  • Member: a user within an Organization. Each Member can be either an owner or a regular organization member.

  • Guest: a user with read-only or view-only access in the Organization. Guests cannot modify or create any data in the system. To learn more about Guest role, please refer to this section.

  • Owner: an owner is a member with an elevated access level. Organizations can have multiple owners due to the significance of this role's permissions. Owner abilities include, but are not limited to:

    1. Enforce Multi-Factor Authentication (MFA) for all electronic signatures within the organization.

    2. Promote other users to organization owners or revoke owner status from others (MFA required). However, owners cannot remove their own owner status.

    3. Reset a user's MFA status, but only if the user has the organization set as their current organization — this prevents malicious actors from adding users to their organizations just to reset their MFA.

  • Group: a group of Members defined in an Organization.

  • COTS: Commercial Off-The-Shelf

  • MFA: multi-factor authentication is a security method that requires multiple types of credentials to verify identity, adding an extra layer of protection. Ketryx supports two MFA methods: WebAuthn (Web Authentication) and OTP (One Time Password).

  • Electronic signature: method of authentication that is used to sign electronic records or documents. It serves as a means to indicate the individual's intent to approve, authenticate, or authorize the content of an electronic record. 21 CFR Part 11 defines it as a "means a computer data compilation of any symbol or series of symbols executed, adopted, or authorized by an individual to be the legally binding equivalent of the individual's handwritten signature." Organizations can require multi-factor authentication (MFA) for electronic signatures in Ketryx, to ensure compliance with 21 CFR Part 11.

  • T2 Tool: Software tool that supports but does not itself perform verification or validation tasks, and whose failure could result in undetected software defects

  • Quality Control

    Member

    Individuals that are part of the Organization.

  • Group

    A set of users within an Organization that has authority/permissions.

  • Permission

    Permissions control what a user (or user group) can do within an organization or project.

  • Configuration Item

    An entity that can be uniquely identified at a given reference point.

  • Test Case

    WI-04 Test Case

  • Test Execution

    WI-05 Test Execution

  • Anomaly

    WI-06 Anomaly

  • Complaint

    WI-07 Complaint

  • Change Request

    WI-08 Change Request

  • CAPA

    WI-09 CAPA

  • Risk

    WI-10 Risk

  • Hardware Item Spec

    Specification of a hardware item, similar to a Software Item Spec.

  • Software Dependency

    Software dependencies are managed through Ketryx Software Supply Chain Management: Software Dependencies.

  • Cloud Dependency

    Cloud dependencies are managed through Ketryx Software Supply Chain Management: Cloud Dependencies.

  • Test Plan

    A set of Test Cases required to release a Version. By default, all Test Cases within the same Project are included in a Version’s Test Plan.

  • Version

    A release of a validated product. Approval rules for versions also apply to release documents associated with a version.

  • Document

    WI-11 Document

    A document in the Ketryx EDMS, potentially relevant for training Members.

  • Cybersecurity Controls: Integrate cybersecurity requirements directly into your product, and scan your code daily for application vulnerabilities and software supply chain vulnerabilities.

  • Release Control: For applications created and managed in Ketryx, releases are carefully managed through a gated approval compliant with relevant quality assurance standards.

  • As described by the Ketryx Framework, Ketryx has 16 entities called Configuration Item(s) (CIs). Together they can represent the Total Product Life Cycle of any arbitrary system.

  • Lifecycle Management: Risk management

    Lifecycle Management: Git-based configuration items

    Managing items in Ketryx

    Approval rules

    Computational control

    Data export

    Complaint

    Change Request

    CAPA

    Risk

    Document

    Variants and Versions

    the Item records screen.

    software item (i.e., source code): completed via a merge request

  • software dependency information record (SOUP record): completed via Ketryx; see MAN-03 Supply Chain Management: Software Dependencies

  • Structured change control using the Change Request CI. Create a Change Request work item in Jira and follow the tasks described in WI-08 Change Request.

  • Structured action using the CAPA CI. Create a CAPA item in Jira and follow WI-09 CAPA to perform an action that can result in change control.

  • Quality Managers

    Group Description: Leads all quality assurance and quality activities and writes and approves tests. Confirms that the product and the company processes comply with relevant regulations.

  • Developers

    Group Description: Implements specifications into working applications and writes unit tests.

  • Quality Control

    Group Description: Writes and executes tests. Tests implementations and confirms that they meet test case acceptance criteria and processes complaints.

  • Test Execution: Quality Managers

  • Anomaly: R&D Leads, Quality Managers

  • Complaint: R&D Leads, Quality Managers, Product Managers

  • Change Request: R&D Leads, Quality Managers

  • CAPA: R&D Leads, Quality Managers, Product Managers

  • Risk: R&D Leads, Quality Managers

  • Hardware Item Spec: : R&D Leads, Quality Managers

  • Dependency: R&D Leads, Quality Managers (no Item Assignee)

  • Test Plan: R&D Leads, Quality Managers (no Item Assignee) Note: Ketryx applies the same default approval rules to all Test Plans, regardless of whether they're Release test plans (managed in the Tests page) or external Test Plan items such as Xray Test Plans (which are synchronized into Ketryx from Jira/Xray)

  • Version: R&D Leads, Quality Managers, Product Managers (no Item Assignee)

  • Document: R&D Leads, Quality Managers, Product Managers (no Item Assignee)

  • Active: Manually marked active releases are always considered active.
  • Inactive: Manually marked inactive releases are always considered inactive.

  • Members
    shall modify different configuration items.
  • As needed, Tasks will be created for required source code modification.

  • Periodically, modifications should be reviewed.

  • The referenceable space also includes all items that belong to the referencing project
  • Referenceable items will not show up on the All items page

  • The incorporated items represent the pool of items that are listed and accessible via the All items page in the referencing project

    • Items within this pool are treated as if they would be part of the referencing project and will show up in all parts of the Ketryx app (Risk management, Test management, Traceability, etc.) and also be rendered in related evidence documents

    • Incorporated cross-referenced items are still complying to the same approval rules and risk configuration settings of the project they are primarily contained in

    • In the case cross-referenced Test Cases, the test management system will consider all incorporated Test Executions (of the referencing project as well as the referenced project) to calculate the latest effective Test Execution

  • Type-based selection mode:
    All the risks of the referencing project are shown
  • Risk controls page

    • Filter-based selection mode: All the items that are part of the incorporated pool and are considered a risk control based on the risk items found in the referenceable space are shown

    • Type-based selection mode: All the items that are considered a risk control based on the risk items found in the referenceable space are shown

  • Risk form

    • Filter-based selection mode: All the risks that are part of the incorporated pool are shown

    • Type-based selection mode: All the risks of the referencing project are shown

  • Documents: The information shown in web pages is also reflected in the corresponding evidence documents, including:

    • Risk matrix

    • Risk control matrix

    • Risk management file

    • Cyber risk management file

  • Select the Create project button.

    Once the app has been added, click on Get started.
  • Select the Complete installation in Ketryx button. You will be redirected to the Ketryx platform.

  • Select the Connect Jira organization button.

  • Select the Create project button.

    In the project settings for the System under References, add the Sub-system as a referenced project.

    • When using the filter-based selection, set the Referencable items and Incorporated items filter to none, then select the options Incorporate the release documents... and Include transitive release documents... (to expose the release documents from both the Sub-system and the Service in System releases).

    • When using the Legacy type-based selection, unselect all referenced items, then select Incorporate the release documents of ... and Include transitive release documents... (to expose the release documents from both the Sub-system and the Service in System releases).

  • In the project settings for the Sub-system under References, add the Service as a referenced project.

    • When using the filter-based selection, set the Referencable items and Incorporated items filter to none, then select References from ... as a used service, and Incorporate release documents ...

    • When using the Legacy type-based selection, unselect all referenced items, then select References from ... as a used service, and Incorporate release documents ...

  • In the project settings for the Sub-system under References, also add the System as a referenced project.

    • When using the filter-based selection, set the Referencable items filter to RQ and Incorporated items filter to none

    • When using the Legacy type-based selection, unselect all referenced items, and select only references to requirements.

  • In the Sub-system Jira space, create a Software Item Spec Sub-system Spec.

  • Add the Sub-system Requirement to the _Fulfilled requirements of the Sub-system Spec, and the Service to its Used services.

  • Service
    to
    1.1
    , to point to that particular version of the used service. Otherwise, by default, the latest version would be chosen. You could also set a fixed version for the "parent"
    System
    project, but usually the
    Latest version
    should be fine.
  • In the System Ketryx project under Releases, create a new version 1.0.

  • In the Settings for the System version 1.0, set the referenced project version for the Sub-system to 1.0.

  • Note the referenced document from the Service at the bottom of the page.

  • On the Documents page for the System version 1.0, generate the System Requirements Specification.

  • Note that the document contains the cross-project reference to the sub-system requirement, along with the version number.

  • Note the referenced documents from the other projects (including the "transitive" document from the Service) at the bottom of the page.

  • MAN-02

    Software Release Process

    MAN-03

    Supply Chain Management: Software Dependencies

    MAN-04

    Supply Chain Management: Cloud Dependencies

    MAN-05

    Lifecycle Management: Milestones

    MAN-06

    Lifecycle Management: Test management

    MAN-07

    Lifecycle Management: Traceability

    WI-01

    Requirement

    WI-02

    Software Item Spec

    WI-03

    Task

    WI-04

    Test Case

    WI-05

    Test Execution

    WI-06

    MAN-11 Approval Rules
    WI-01 Requirement
    WI-02 Software Item Spec
    WI-03 Task
    Atlassian Marketplace app
    MAN-08 Risk Management
    Records and Artifacts
    Ketryx Software Supply Chain Configuration Management Manual
    MAN-02 Software Release Process
    MAN-11 Approval Rules
    SemVer
    Version number pattern
    KQL
    Vulnerability Management manual
    WI-12 Variants and Versions
    SemVer
    vulnerability notifications
    MAN-02 Software Release Process
    WI-01 Requirement
    WI-02 Software Item Specification
    WI-02 Software Item Specification
    WI-03 Task
    WI-04 Test Case
    WI-05 Test Execution
    WI-04 Test Case
    WI-05 Test Execution
    WI-04 Test Case
    WI-05 Test Execution
    MAN-02 Software Release Process
    WI-06 Anomaly
    training on cross-project references
    Simplified KQL
    Setting up Cross-Project References
    above
    advanced settings
    Select text field options
    Region-specific documents
    Field names
    app.ketryx.com
    System of Systems
    MAN-04 Supply Chain Management: Cloud Dependencies
    MAN-09 Git-Based Configuration Items
    reach out
    Figure 1: The Ketryx Organizational Framework
    Figure 2: Configuration Items in the Ketryx Framework
    Figure 3: V-Model (Validation and Verification Model): A software development framework that highlights the critical role of validation and verification throughout the development lifecycle.
    Figure 4: Software Development and Audit Activities based on ISO/IEC 62304 Section 5 and UCRL-ID-114839: Software Reliability and Safety in Nuclear Reactor Protection Systems
    Figure 5: Early vs. current lifecycle process
    Figure 6: Software Development and Audit Activities based on ISO/IEC 62304 Section 5 and UCRL-ID-114839: Software Reliability and Safety in Nuclear Reactor Protection Systems
    Figure 7: Process, Activities, and Tasks Hierarchy
    Locking the current record of selected items
    Locking a particular record of an item
    Bulk Locking of the Last Controlled Record for multiple items.
    If an item does not have any controlled records, it will not be locked with this action.
    Figure 8: Software Development and Audit Activities based on ISO/IEC 62304 Section 5 and UCRL-ID-114839: Software Reliability and Safety in Nuclear Reactor Protection Systems
    Software architecture diagram color coding

    Anomaly

    MAN-08
    MAN-09
    MAN-10
    MAN-11
    MAN-12
    MAN-13
    WI-07
    WI-08
    WI-09
    WI-10
    WI-11
    WI-12

    Document Templating

    Reference of the document templating mechanism in Ketryx

    Ketryx can generate highly customizable documents based on user-managed templates in the form of Word or Excel files.

    Getting started

    To get started with custom templates in Ketryx:

    1. Navigate to a project's Documents page

    2. Create a folder called Templates

    3. Create a folder called Release inside the Templates folder

    4. Upload the sample file sample-template.docx into the Release folder

    Create a few Requirement items and a new version, and navigate to the version's Documents page. The document sample-template.docx should show up as another release document that can be generated and approved.

    For a demonstration of document templating, utilizing many of the concepts discussed on this page, see our and video guides.

    Template locations

    Templates are managed in dedicated folders in the Documents section:

    • Templates/System/[name].{docx,xlsx} with [name] being the name of a system document type, to override the built-in rendering of those documents

    • Templates/Release/[name].{docx,xlsx} to add a custom release document with an arbitrary name to each (unreleased) version

    • Templates/Milestones/[milestone]/[name].{docx,xlsx} to add a custom document with an arbitrary name to milestones that match the name [milestone]

    The following system documents can be overwritten inside the Templates/System folder:

    • Authority Matrix

    • Change Management File

    • Change Request Verification Report

    Template-based release documents are considered out of date when any active records in the relevant project and version change. This may result in documents being indicated as requiring an update, even if regenerating them does not ultimately result in different document content. If this enforcement is too strict, the release control Require up-to-date release documents in the project settings can be deactivated.

    Standard example templates

    The templates at the are designed to closely resemble the out of the box release documents. There are also templates that utilize the feature to draft natural language summaries within the framework of the out of the box release documents.

    If you would like to make small changes to the standard documents or just need a place to start, you can place these files in your project as specified in .

    Template tags

    A template can be a Word or Excel file with any user-defined content. Certain tags delimited by {...} are recognized by the Ketryx document generator and can be used to insert dynamic data from a Ketryx project into the document. The template syntax is inspired by the template language.

    Data

    • {name}: insert template variable name

    • {project.id}: insert the property id of an object project

    Rich-text variables - usually suffixed by *Content - contain HTML content which can be rendered as a block using ~~ or as an inline element using ~. I.e., use HTML for a single word within a sentence, as opposed to the entire paragraph. As example, please refer to .

    Conditions and loops

    • {#condition} … {/}: insert the block within if the given condition is true

    • {#items} … {/}: loop over a list of items, inserting the block within for each of them

    Conditions and loops are expressed using the same template syntax. Whether data is looped over depends on whether it is a list.

    In the block inside a loop, the properties of the item that is currently iterated over become available as template variables. Example (showing the id of each of the iterated items):

    The item as a whole object is available using the special syntax . (a literal dot).

    Loops can be used in tables (including Excel files) to create multiple rows, by putting the starting tag (e.g., {#items}) in the starting cell, and the ending tag {/} on another cell to right in the same row. Example:

    The ending tag {/} is shorthand for repeating the full expression as in {#items} … {/items}.

    If a variable is not set, a corresponding condition hides the contained block. This can be used to "comment out" a part of a document. Example (assuming there is no variable HIDDEN defined):

    Variable assignments

    • {$SET var = value}: set the variable var to the given value

    Querying items

    • {$KQL items = query}: resolve the query query and assign the resulting list of items to the template variable items

    • {$KQL @version:version items = query}: resolve the query query for the given version (specified by its Ketryx ID or by its full name)

    Examples:

    Each item in the resulting list has the data type .

    $KQL expressions are only supported at the "top level" of the document structure, not inside other loops or conditions.

    Traceability matrices

    • {$TRACE rtm}: stores data from the project's requirements traceability matrix in the template variable rtm

    • {$TRACE @version:version rtm}: compute traceability for the given version (specified by its Ketryx ID or by its full name)

    • {$TRACE rtm: extraConfigName}: uses the "extra" traceability configuration with the name extraConfigName

    Example:

    The resulting object has the type .

    $TRACE expressions are only supported at the "top level" of the document structure, not inside other loops or conditions.

    Expressions

    Conditions (as in {#expr}) and some filters (such as where : expr) involve expressions. Expressions may involve constants (e.g., "John", 42) as well as access to template data and properties (e.g. project.id). They may contain the following operators:

    • ternaries: a ? b : c

    • equality/inequality: a == b, a != b

    • relational: a > b, a < b, a >= b

    Parenthesis can be used for grouping, to enforce a particular operator precedence.

    Filters

    Filters can be used to transform data before it is displayed or used in a condition or loop.

    Filters are applied to values using the | operator, potentially followed by one or more arguments separated by :.

    The following filters are available:

    datetime

    • value | datetime: renders the date/time value in the default format

    • value | datetime:"yyyy-MM-dd": uses the specified format, based on the given

    • value | datetime:"yyyy-MM-dd":"US/Eastern": uses the specified format and timezone, based on the given

    where

    • items | where:'...': filter the given items based on the given filter ; the expression can refer to properties of each item

    Example:

    sort

    • items | sort:'...': sort the given items based on the key determined by the given

    When using this to sort by a string, there is no numeric collation and file_100.docx would be sorted before file_11.docx. To sort using numeric collation use sortByNumericTextField.

    Example (sorting items by their id):

    sortByNumericTextField

    • items | sortByNumericTextField:'...': sort the given items based on the key determined by the given

    When using this to sort by a string, numeric collation would sort file_11.docx before file_100.docx.

    Example (sorting items by their id):

    reverse

    • items | reverse: reverse the order of the given items

    Example (sorting items by their id in reverse order):

    group

    • items | group:'...': group the given items based on the key determined by the given ; the resulting list will contain entries with properties groupKey (the unique key of the group) and groupItems (list of items within that group)

    Example (grouping items by their Requirement type and showing the item IDs in each group separately):

    at

    • items | at:N: returns the item at index N in the given list of items; the index is 0-based, so 0 denotes the first item; negative indices count from the end, so -1 denotes the last item

    • object | at:"...": returns the value for the given key in an object such as an ItemRecord's fieldValue object; this could also be done using "dot" access (object.property

    Example (accessing an object property for each vulnerability, equivalent to info.summary):

    Example (accessing a traceability column with a key containing a - dash):

    count

    • items | count: returns the number of items in a given list or properties in a given object

    join

    • values | join: returns all the values in a list concatenated, using ", " as the separator between them

    • values | join:"...": uses the given separator string between values in the list

    Example (rendering list of items using a custom separator):

    inMilestone

    • item | inMilestone: determines whether an item is in the document's milestone

    Example:

    If the document is not generated for a particular milestone, inMilestone returns true.

    inRegion

    • item | inRegion: determines whether an item is in the document's region

    Example:

    If the document is not generated for a particular region, inRegion returns true.

    itemContent

    • {~~ item | itemContent}: display the given item using the standard Ketryx rendering

    • {~~ item | itemContent:"HEADINGS +2"}: shift the levels of headings in item content by 2 levels, to account for nested headings in the template itself while maintaining a sensible navigation hierarchy

    • {~~ item | itemContent:"OMIT Context,Requirement type"}: omit the fields Context

    Example:

    Note the use of . to refer to the currently iterated item, and the use of ~~ to render rich-text (HTML) content. If you omit the ~~ prefix, you might see raw HTML code in the generated file.

    createMap and getFromMap

    createMap creates a hash map and getFromMap allows getting items from that map.

    createMap:<keyProperty>:<conflictResolutionMode> takes two parameters. The first parameter is a string that describes the property that will be used as the map key. The second property is either "first" or "last" and denotes whether the first or last item should be part of the map when duplicate keys are encountered.

    getMap:<key> takes a single value as a parameter and returns the value associated with that key or null if there is no value associated with that key.

    Example:

    Inserting other documents

    • {:include $DOC path}: include the EDMS document with the given path

    • {:include $RELEASEDOC name}: include the release document with the given name

    • {:include $RELEASEDOC milestone / name}: include the milestone document with the given

    Examples:

    Template variables are also available in the specified path with a $ prefix. However, arbitrary expressions are not supported, to avoid ambiguity with regards to where the expression would end. This can be circumvented by assigning an expression to another variable using $SET and using that in the included document path.

    Included documents inherit the styling of the containing template document, including any named . For instance, paragraphs using the Normal style in the included document will be formatted according to the definition of the Normal style in the template.

    Summarizing items

    This is an experimental Assistant feature based on an LLM and not validated. Use at your own risk. Always manually check if summaries are accurate.

    The $SUMMARIZE command allows summarizing an array of objects of the type into a textual summary using an LLM. This command is only available for projects that have Enable AI setting turned on in advanced settings.

    • {$SUMMARIZE mySummary = itemRecords:myItems}: summarize the item records saved in the variable myItems and store the result in the variable mySummary

    • {$SUMMARIZE mySummary = itemRecords:myItems totalWordTarget:200}: summarize the item records saved in the variable myItems with a total target of 200 words

    Example:

    Adding an @ symbol before the $KQL and $SUMMARIZE commands will prevent them from leaving an empty line. Without using the @ symbol, we would have to write all three commands into a single line, which hurts readability.

    Template data

    Templates receive data based on the containing project, version, etc. See the section on below for more information about each type and its available fields.

    Variable
    Type
    Description

    In addition, templates may query for certain items in a project using the $KQL tag (as explained ).

    async variables

    All variables marked as async are asynchronously resolved. These variables cannot be used as sub-parts of other . They have to be output directly or assigned to a variable first using the .

    Data types

    Data in templates consists of objects (with certain properties), lists, strings, numbers, and dates. The following object types may appear.

    Organization

    Property
    Type
    Description

    Project

    Property
    Type
    Description

    ProjectReference

    Property
    Type
    Description

    Version

    Property
    Type
    Description

    When accessing version information through vulnerability templates (via project.version), the scopeDescription field is not available. The version object in this context only contains id, name, and versionNumber.

    Milestone

    Property
    Type
    Description

    MeetingNote

    Property
    Type
    Description

    Document

    Property
    Type
    Description

    Item

    Property
    Type
    Description

    ItemRecordCore

    The core data for an item record contains the following properties:

    Property
    Type
    Description

    For controlled records, controlledRevision counts the number of controlled records so far (starting with 1 for the first controlled record), and uncontrolledRevision is 0. For uncontrolled records, controlledRevision is the controlled revision counter of the upcoming controlled revision (i.e., the controlled revision worked on towards), and uncontrolledRevision counts the number of revisions since the previous controlled revision. These counters can be used to establish a record numbering scheme such as 1-1 (first draft towards the first controlled record), 1-2, …, 1-0 (first controlled record), 2-1, etc.

    Some other properties that are more expensive to compute are only exposed under , to improve performance and avoid a potential infinite recursion.

    ItemRecordFull

    A full item record contains all the properties from , plus the following:

    Property
    Type
    Description

    The keys in the objects fieldContent, fieldValue, fieldChanged, and fieldContentDiff are field names, where spaces are replaced by underscores (_), e.g., Rationale_for_deferring_resolution.

    The values in fieldContent and fieldContentDiff are pieces of rich-text (HTML) content that need to be rendered with a ~~ prefix, similarly to the filter. Example:

    The raw Xray data exposed in xrayData is not currently documented in detail, as it might change depending on their data structure.

    Comment

    Property
    Type
    Description

    Attachment

    Property
    Type
    Description

    The value in renderedContent is a piece of rich-text HTML that can be rendered with a ~~ prefix, similarly to the filter. If isImage is true, then {~~renderedContent} will render an image; otherwise, it will render a link to the resource, using the filename as the displayed text.

    TestRun

    Property
    Type
    Description

    TestStep

    Property
    Type
    Description

    Content fields such as actionContent, dataContent, resultContent, actualResultContent, commentContent are pieces of rich-text HTML that can be rendered with a ~~ prefix, similarly to the filter.

    Actual results and evidence are only available for steps on a , but not on the of the underlying Test Case.

    Iteration

    Property
    Type
    Description

    IterationParameter

    Property
    Type
    Description

    IterationStepResult

    Property
    Type
    Description

    IterationDefect

    Property
    Type
    Description

    Relation

    Property
    Type
    Description

    TraceabilityMatrix

    Property
    Type
    Description

    TraceabilityCheck

    Property
    Type
    Description

    TraceabilityRow

    Property
    Type
    Description

    To access the values of columns using dot property access (e.g., columns.useCase), make sure they don't contain special characters such as spaces or -. Otherwise, direct property access does not work, and the filter should be used instead.

    When using groupedRows, this structures each column as an object. Because of this, each column must be looped over.

    TraceabilityCell

    Property
    Type
    Description

    In a groupedRows loop, use itemRecords instead of itemRecord and testStatuses instead of testStatus. This syntax is to represent the array structure inside the specified trace column that is created when using groupedRows instead of rows.

    TestStatus

    Property
    Type
    Description

    AutomatedTestExecution

    Property
    Type
    Description

    ApprovalData

    Property
    Type
    Description

    User

    Property
    Type
    Description

    TrainingStatus

    Property
    Type
    Description

    TrainingStatusDocument

    Property
    Type
    Description

    TrainingDocument

    Property
    Type
    Description

    Vulnerability

    Property
    Type
    Description

    The value of descriptionContent is a piece of rich-text (HTML) content that needs to be rendered with a ~~ prefix, similarly to the fieldContent field of and the filter. This is the HTML version of the raw value of info.description.

    VulnerabilityInfo

    Property
    Type
    Description

    The originalSeverity is set when the severity of the vulnerability was overwritten by a . It is not available when accessed through .

    VulnerabilitySeverity

    Property
    Type
    Description

    Dependency

    Property
    Type
    Description

    Library

    Property
    Type
    Description

    Standard templates

    When using the standard templates below (unlike the out-of-the-box documents), you will need to manually update the table of contents after generating the document and re-uploading it. If this is cumbersome, it is possible to build the table of contents in a lower-level way. The "System Design Specification with Automatic ToC" document shows the implementation of this method. .

    As an example, an automatic, lower-level implementation of the table of contents exists in the version below of the System Design Specification

    AI Templates

    Additional templates

    Template Approval and Revision Control

    The Require controlled templates setting ensures that only officially approved templates can be used for document creation. This setting is located in the Document Configuration section of your .

    We recommend setting this to 'yes' once you are satisfied with the current version of your templates and wish to approve them and maintain that approved state.

    Note on revisions: When this setting is active, uploading a revision of an already-approved template will not make it immediately available for creating new documents. The system ignores unapproved drafts, and the last controlled (approved) version remains in use. The new version must first complete the required approval workflow before it replaces the previous controlled version on the Release Documents screen.

    Record Change and Deletion Approval

    Items marked for deletion are not immediately removed from Ketryx. The deletion of a record is treated as a formal change to the record, and this change must be approved by authorized users before Ketryx can finalize the removal. This process is essential for ensuring that all record destruction is tracked in the audit trail for compliance purposes.

    Code Review Report
  • Cyber Risk Management File

  • Problem Report

  • Release History

  • Release Notes

  • Risk Control Matrix

  • Risk Management File

  • Risk Matrix

  • System Architecture Chart

  • System Design Specification

  • System Design Structure Matrix

  • System Requirements Specification

  • SBoM SOUP Software Configuration Report

  • Test Plan

  • Testing Report

  • Traceability Matrix

  • Unresolved Anomalies

  • {$KQL @version:(version1,version2) items = query}: resolve the KQL query query for several versions (concatenating the list of all records)

  • {@$KQL items = query}: resolve the KQL query query without leaving an empty line

  • , as defined in the advanced project document setting
    Requirements Traceability Matrix
    (under
    extraConfigurations
    )
    ,
    a <= b
  • logical AND: a && b

  • logical OR: a || b

  • addition: a + b

  • subtraction: a - b

  • multiplication: a * b

  • division: a / b

  • ), but this
    at
    filter can be useful for computed property names or names that contain spaces or other special characters
    and
    Requirement type
    when rendering the item
    name
    from the given
    milestone
  • {:include $RELEASEDOC project -> name}: include a release document from a referenced project

  • {$SUMMARIZE mySummary = itemRecords:myItems wordTargetPerItem:20 instructions:"Some special instructions." systemPromptOverride:"Some special system prompt."}: summarize the item records saved in the variable myItems with a target of 20 words per item, special instructions, and a special system prompt

    versionScopeDescription

    string (async)

    Scope description of the version

    milestone

    Milestone the document is generated for

    milestones

    list of

    All milestones in the version

    document

    Information about the document

    dependencies

    list of

    Dependencies in the project

    vulnerabilities

    list of

    Vulnerabilities in the project

    trainingStatus

    list of

    Training status of users in the project

    trainingDocuments

    list of

    Training documents in the project

    approvals

    list of

    All approvals in the project

    projectReferences

    list of

    References to other projects in the project

    previousVersions

    list of

    All previous versions of the project

    allVersions

    list of

    All versions of the project

    completedAt

    date

    Completion date

    createdAt

    date

    Creation date

    testRailItemId

    string

    TestRail Test Case ID of the item

    testRailItemIdForExecution

    string

    TestRail Test Execution ID of the item

    polarionWorkItemId

    string

    Polarion work item ID

    jamaDocumentKey

    string

    Jama item ID

    typeShortName

    string

    Short name of item type

    revision

    number

    Record revision number

    controlledRevision

    number

    Controlled revision counter

    uncontrolledRevision

    number

    Uncontrolled revision counter

    status

    string

    Status name

    createdAt

    date

    Record creation date

    diff

    "NEW", "CHANGED", "REMOVED", "SAME"

    Diff of the item to the baseline version

    regions

    list of string

    Regions

    introducedInVersion

    string

    Version number introducing this item

    obsoleteInVersion

    string

    Version number obsoleting this item

    assignee

    The user who is assigned to this item (if available)

    isControlled

    boolean

    Whether this record is in a controlled state

    isRiskAcceptable

    boolean

    Whether this risk record has an acceptable risk

    url

    string

    URL of the record's item record detail page

    item

    Item

    comments

    list of (async)

    Comments on the item record

    fieldContent

    object

    Rendered content of each field

    fieldValue

    object

    Raw value of each field

    fieldChanged

    boolean

    Whether the value of each field changed compared to the baseline release

    fieldContentDiff

    object

    Rendered content of the difference ("diff" or "redline") of each field compared to the baseline release

    steps

    list of

    Information for each step on an (Xray) Test Case

    testEnvironments

    list of string

    Test environments associated with an (Xray) Test Case

    testRuns

    list of

    Information for each test run on an (Xray) Test Execution

    xrayData

    object

    Raw data from Xray

    recordRevision

    number

    Record revision the comment is written on

    contentSha256

    string

    Hash of the file contents (Base64-encoded SHA-256 value)

    createdAt

    date

    Timestamp of creation

    url

    date

    Timestamp of creation

    renderedContent

    date

    Timestamp of creation

    isImage

    boolean

    Whether the resource is an image

    test

    Test Case being executed

    testExecution

    Test Execution containing this test run

    comment

    string

    Raw value of the comment field

    commentContent

    object

    Formatted content for the comment field

    evidence

    list of

    Evidence attached to this test run

    iterations

    list of

    Results for parameterized Xray test runs

    xrayId

    string

    ID of the test run in Xray

    xrayData

    object

    Raw data from Xray

    dataContent

    object

    Formatted content for the data field

    result

    string

    Raw value of the result field

    resultContent

    object

    Formatted content for the result field

    actualResult

    string

    Raw value of the actual result field

    actualResultContent

    object

    Formatted content for the actual result field

    defects

    list of strings

    Xray IDs of defects found in this step

    comment

    string

    Raw value of the comment field

    commentContent

    object

    Formatted content for the comment field

    evidence

    list of

    Evidence attached to this step

    attachments

    list of

    Other attachments on this step

    xrayId

    string

    ID of the test step in Xray

    xrayData

    object

    Raw data from Xray

    xrayData

    object

    Raw data from Xray

    actualResultContent

    object

    Formatted content for the actual result field

    defects

    list of

    Defects found in this step

    evidence

    list of

    Evidence attached to this step

    xrayId

    string

    ID of the result in Xray

    xrayData

    object

    Raw data from Xray

    isComplete

    boolean

    Whether the check is complete

    result

    "FAIL", "FAIL_ACCEPTED", "PASS", "PASS_WITH_EXCEPTION"

    Effective test result (if any)

    manualExecutions

    list of

    Effective manual test executions

    automatedExecutions

    list of

    Effective automated test executions

    allManualExecutions

    list of

    All manual test executions, including not effective ones

    record

    date

    Approved item record, if the approval was for an item record

    version

    Approved version, if the approval was for a version

    dependency

    Dependency affected by the vulnerability

    relatedRisks

    list of

    Linked risks

    relatedMitigations

    list of

    Linked mitigations

    urls

    list of string

    Vulnerability URLs

    cveId

    string

    CVE ID of the vulnerability; filled for vulnerabilities coming from the National Vulnerability Database (NVD)

    externalId

    string

    External ID of the vulnerability; filled for vulnerabilities submitted via the Build API

    githubId

    string

    GHSA ID of the vulnerability; filled for vulnerabilities coming from the GitHub Security Advisory (GHSA)

    cweIds

    list of string

    CWE IDs of the vulnerability

    publishedDate

    date

    Date the vulnerability was published

    modifiedDate

    date

    Date the vulnerability was modified

    vulnerabilitySource

    string ("NVD", "GHSA", "Build", "Import", or "Unknown")

    The ingestion source of the vulnerability

    currentSeverity

    Severity information

    originalSeverity

    Original severity information

    cisaVulnerabilityName

    string

    The name of the vulnerability as listed in the CISA Known Exploited Vulnerabilities (KEV) catalog

    cisaExploitAdd

    Date

    The date the vulnerability was added to the CISA KEV catalog

    cisaActionDue

    Date

    The date the required action is due by CISA

    cisaRequiredAction

    string

    The required action to address the vulnerability by CISA

    declaredVersions

    string

    A ;-separated list of all declared versions of the dependency

    lockedVersions

    string

    A ;-separated list of all locked versions of the dependency

    earliestUsedVersion

    string

    Earliest used version of the dependency

    latestUsedVersion

    string

    Latest used version of the dependency

    latestAvailableVersion

    string

    Latest available version of the dependency

    acceptedVersions

    string

    Accepted versions of the dependency

    status

    string

    Review status of the dependency

    riskLevel

    string

    Level of risk of the dependency

    issuesUrl

    string

    Repository issues URL of the dependency

    manufacturer

    string

    Manufacturer of the dependency

    license

    string

    License of the dependency

    intendedUse

    string

    Intended use of the dependency

    securityImpact

    string

    Security impact of the dependency

    securityImpactJustification

    string

    Security impact justification of the dependency

    reliabilityImpact

    string

    Reliability impact of the dependency

    reliabilityImpactJustification

    string

    Reliability impact justification of the dependency

    additionalNotes

    string

    Additional notes of the dependency

    relatedRequirements

    Related requirements of the dependency

    relatedSoftwareItems

    Related software items of the dependency

    relatedRisks

    Related risks of the dependency

    relatedTests

    Related tests of the dependency

    library

    Associated library

    vulnerabilityInfos

    list of

    Information for vulnerabilities of the dependency

    manualVulnerabilities

    string

    Manual vulnerabilities of the dependency

    levelOfSupport

    string

    Level of support for the dependency (e.g., Maintained, Deprecated, Abandoned)

    levelOfSupportDescription

    string

    Description of the level of support for the dependency

    endOfLife

    date

    End of life date for the dependency

    endOfLifeDescription

    string

    Description of the end of life for the dependency

    ecosystem

    string

    Ecosystem name of the library

    ID

    Title

    Type

    {#items}{id}

    {title}

    {typeName}{/}

    Req ID

    Spec ID

    Test Title

    {#rtm.rows}{columns.req.itemRecord.docId}

    {columns.spec.itemRecord.docId}

    {columns.test.testStatus.title}{/}

    ketryxVersion

    string

    Version of Ketryx used to generate the document

    organization

    Organization

    Organization the document is generated in

    project

    Project

    Project the document is generated in

    version

    Version

    Version the document is generated for

    id

    string

    Ketryx ID of the organization

    name

    string

    Organization name

    id

    string

    Ketryx ID of the project

    name

    string

    Project name

    version

    Version

    Referenced version

    depth

    number

    Reference depth

    project

    Project

    Referenced project

    version

    Version

    Referenced version

    id

    string

    Ketryx ID of the version

    name

    string

    Version name

    versionNumber

    string

    Version number

    scopeDescription

    string (async)

    Scope description

    id

    string

    Ketryx ID of the milestone

    name

    string

    Milestone name

    meetingNotes

    list of MeetingNote

    Meeting notes for this milestone

    configurationItems

    list of ItemRecordCore

    Items associated with this milestone

    id

    string

    Ketryx ID of the meeting note

    content

    string

    Content rendered to HTML

    date

    date

    Date of the meeting

    participants

    string

    Plain text string containing meeting participants

    id

    string

    Ketryx ID of the document

    title

    string

    Document title

    date

    date

    Generation date

    id

    string

    Ketryx ID of the item

    jiraIssueKey

    string

    Jira work item key of the item

    repositoryItemId

    string

    User-defined item ID from the source code

    comments

    list of Comment (async)

    Comments on the item

    id

    string

    Ketryx ID of the record

    docId

    string

    Document ID of the record

    title

    string

    Title

    typeName

    string

    Name of item type

    contentSha256

    string

    Hash of the record contents (Base64-encoded SHA-256 value)

    relations

    list of Relation

    Relations from or to this record

    approvals

    list of ApprovalData

    Approvals of this record

    attachments

    list of Attachment

    Attachments to this record

    id

    string

    Ketryx ID of the comment

    author

    User

    Author of the comment

    content

    string

    Content of the comment

    createdAt

    date

    Creation date

    id

    string

    ID of the resource

    filename

    string

    File name associated with the resource

    sizeBytes

    number

    File size in bytes

    contentType

    string

    Content type (as a media type)

    statusName

    string

    Status name

    executedBy

    User

    User who executed this test run (if available)

    assignee

    User

    User who was assigned this test run (if available)

    steps

    list of TestStep

    Information for each step of the executed test

    statusName

    string

    Status name (from Xray)

    action

    string

    Raw value of the action field

    actionContent

    object

    Formatted content for the action field

    data

    string

    Raw value of the data field

    rank

    string

    Index of the step

    statusName

    string

    Execution status of the step in an iteration

    parameters

    list of IterationParameter

    Parameters for the step, specific to each iteration

    stepResults

    list of IterationStepResult

    Results for the step, specific to each iteration

    name

    string

    Unique key

    value

    string

    Value to specific to an iteration

    statusName

    string

    Status name (from Xray)

    comment

    string

    Raw value of the comment field

    commentContent

    object

    Formatted content for the comment field

    actualResult

    string

    Raw value of the actual result field

    id

    string

    Xray ID of the defect

    type

    string

    For system relations will be the built-in type, such as "HAS_PARENT". For custom relations will be the key of the configuration object in the "Custom relations" advanced setting

    name

    string

    Relation name

    other

    ItemRecordCore

    Respective record of the related item

    isReverse

    boolean

    Whether the relation is a reverse relation, i.e. the other item is the source item of the relation

    rows

    list of TraceabilityRow

    Rows in the traceability matrix

    groupedRows

    grouped list of TraceabilityRow

    Grouped rows in the traceability matrix

    checks

    list of TraceabilityCheck

    Results of checks performed in the traceability matrix

    isFulfilled

    boolean

    Whether all checks are fulfilled, i.e. the matrix is "green"

    title

    string

    Title of the check

    progress

    number

    Progress percentage (0 – 100)

    description

    string

    Description of the check

    isPositiveProgress

    boolean

    Whether the check is complete upon reaching 100%

    columns

    object containing TraceabilityCell

    Data for each cell in the row, using each column's ID as the key

    itemRecord

    ItemRecordFull

    Item associated with this cell

    testStatus

    TestStatus

    Test status associated with this cell

    title

    string

    Title of this test

    isInTestPlan

    boolean

    Whether this test is in the test plan

    testCase

    ItemRecordCore

    Test Case item associated with this test (if any)

    executedAt

    date

    Execution time stamp (if any)

    title

    string

    Title of this automated test

    createdAt

    date

    Timestamp

    result

    "FAIL", "FAIL_ACCEPTED", "PASS", "PASS_WITH_EXCEPTION"

    Test status result

    id

    string

    Ketryx ID of the approval

    createdAt

    date

    Timestamp

    revokedAt

    date

    Timestamp of the revocation, if the approval was revoked

    approver

    User

    Approving user

    id

    string

    Ketryx ID of the user

    name

    string

    Full name of the user

    email

    string

    Email of the user

    user

    User

    User the training status is for

    groupNames

    list of string

    Names of groups the user is a member of

    documents

    list of TrainingStatusDocument

    Training status for each relevant document

    document

    TrainingDocument

    Document being trained on

    latestAcknowledgement

    ApprovalData

    Latest acknowledgement of the document by the user

    record

    ItemRecordCore

    Relevant record of the training document

    approvals

    list of ApprovalData

    Approvals of the document

    info

    VulnerabilityInfo

    Vulnerability information

    project

    Project

    Project containing the vulnerability

    descriptionContent

    string

    Rendered content for the vulnerability description

    record

    ItemRecordFull

    Data associated with the vulnerability

    id

    string

    Ketryx ID of the vulnerability

    summary

    string

    Summary

    description

    string

    Description (raw value)

    version

    string

    Affected version(s)

    level

    string

    Qualitative severity ratings

    score

    number

    Numerical severity rating

    vector

    string

    CVSS vector

    name

    string

    Name of the dependency

    project

    Project

    Project containing the dependency

    type

    string

    Type of the dependency

    record

    ItemRecordFull

    Data associated with the dependency (only when dependencies as items is enabled)

    id

    string

    Ketryx ID of the library

    name

    string

    Name of the library

    registry

    string

    Unique identifier of the library's registry

    registryUrl

    string

    URL of the library's registry

    20KB
    sample-template.docx
    Open
    Document Templating Introduction
    Document Templating Deep Dive
    bottom of this page
    Assistant SUMMARIZE
    Template locations
    Mustache
    itemContent
    KQL
    KQL
    ItemRecordFull
    TraceabilityMatrix
    Unicode date format string
    tz timezone ID
    expression
    expression
    expression
    expression
    styles
    ItemRecordFull
    Data types
    here
    expressions
    $SET operation
    ItemRecordFull
    ItemRecordCore
    itemContent
    itemContent
    itemContent
    TestRun
    ItemRecordFull
    at
    ItemRecordFull
    itemContent
    vulnerability impact assessment
    Dependency
    See here for more details
    26KB
    System Requirements Specification.docx
    Open
    21KB
    System Design Specification.docx
    Open
    23KB
    System Design Specification with Automatic ToC.docx
    Open
    27KB
    Test Plan.docx
    Open
    21KB
    Testing Report.docx
    Open
    12KB
    SBoM SOUP Software Configuration Report.xlsx
    Open
    60KB
    Traceability Matrix.xlsx
    Open
    36KB
    Risk Management File (2).docx
    Open
    12KB
    Risk Control Matrix.xlsx
    Open
    13KB
    Risk Matrix.xlsx
    Open
    28KB
    System Requirements Specification with Summary .docx
    Open
    23KB
    System Design Specification with Summary.docx
    Open
    28KB
    Test Plan with Summary.docx
    Open
    23KB
    Testing Report with Summary.docx
    Open
    44KB
    Risk Management File with Summary.docx
    Open
    29KB
    Change Report.docx
    Open
    Advanced Settings
    {#items}
    {id}
    {/}
    {#HIDDEN}
    some text that will not be in the generated document
    {/HIDDEN}
    {$KQL reqs = type:Requirement}
    {#reqs}
    * {title}
    {/}
    {@$KQL items = (RQ and diff:new) CR}
    {#items}
    * {title}
    {/}
    {@$KQL @version:("Version 1.0","Version 2.0") items = RQ}
    {#items}
    * {title}
    {/}
    {$TRACE rtm}
    {#items | where:'typeName=="Requirement"'}
    {id}
    {/}
    {#items | sort:'id'}
    {id}
    {/}
    {#items | sortByNumericTextField:'id'}
    {id}
    {/}
    {#items | sort:'id' | reverse}
    {id}
    {/}
    {#items | group:"fieldValue.Requirement_type"}
    {groupKey}
    
    {#groupItems}
    {id}
    {/}
    
    {/}
    {#vulnerabilities}
    {info | at:"summary"}
    {/}
    {(columns | at:"system-requirements").itemRecord.docId}
    {#trainingStatus}
    {groupNames | join:" - "}
    {/}
    {#items | where:'. | inMilestone'}
    {id}
    {/}
    {#items | where:'. | inRegion'}
    {id}
    {/}
    {#items}
    {~~ . | itemContent}
    {/}
    {$KQL rqs = RQ}
    {$SET rqMap = rqs | createMap:”title”:”first”}
    
    {#rqs}
    {$SET rq1 = rqMap | getFromMap:title}
    {rq1.title} | {rq1.obsoleteInVersion}
    {/}
    {:include $DOC Some folder/Subfolder/Document A}
    
    {:include $RELEASEDOC Test Plan}
    
    {:include $RELEASEDOC First milestone / Test Plan}
    
    {:include $RELEASEDOC Other project -> Test Plan}
    {@$KQL items = (RQ and diff:new) CR}
    {@$SUMMARIZE summary = itemRecords:items totalWordTarget:500 instructions:"Summarize the given items into a release note summary. Do not use bullet points. Use paragraphs. End each paragraph with two newline characters. Add 2 lines between each paragraph."}
    {~~ summary}
    {~~ item.fieldContent.Rationale_for_deferring_resolution}
    Milestone
    Milestone
    Document
    Dependency
    Vulnerability
    TrainingStatus
    TrainingDocument
    ApprovalData
    ProjectReference
    Version
    Version
    User
    Item
    Comment
    TestStep
    TestRun
    ItemRecordCore
    ItemRecordCore
    Attachment
    Iteration
    Attachment
    Attachment
    IterationDefect
    Attachment
    ItemRecordCore
    AutomatedTestExecution
    ItemRecordCore
    Version
    Dependency
    ItemRecordFull
    ItemRecordFull
    VulnerabilitySeverity
    VulnerabilitySeverity
    ItemRecordCore
    ItemRecordCore
    ItemRecordCore
    ItemRecordCore
    Library
    VulnerabilityInfo

    Advanced Settings

    Reference of advanced settings for Ketryx organizations and projects

    Ketryx is highly configurable using advanced settings at the organization and project level.

    To access or change the organization-level settings (under Organization > Advanced), you need to be an organization owner. You can also change project-level default settings at the organization level; projects will inherit these defaults for each setting, unless the setting is explicitly defined at the project level.

    To change the project-level settings (under a project's Settings > Advanced), you need to have the Manage project permission.

    Keep in mind that configuring these advanced settings incorrectly can have undesired consequences for your configuration items, Jira configuration, and member authentication. Proceed with care. When in doubt, please contact Ketryx Support. By design, not all internal settings are exposed. Also note that some parameters might change in future releases.

    Advanced settings are generally specified as JSON values. Watch out for proper delimiters, punctuation, and nesting when editing these values.

    Some settings involve internal IDs (e.g., for item types, document types, or field keys). These IDs are documented in the section at the end of this reference.

    Global item configuration

    Item type names

    Mapping of standard item type names (e.g. "Requirement") to user-defined custom names (e.g. "Feature").

    This is commonly used in combination with custom settings for Item type short names and Superseded item types.

    Warning: If connected to Jira (and not in read-only mode), Ketryx will change some settings (e.g. icons) of issue types matching the names of the configured item types. This will result in a global configuration change in a connected Jira instance.

    Use the item type name "Feature" instead of "Requirement"

    Item type short names

    Mapping of standard item type names (e.g. "Requirement") to user-defined custom short names (e.g. "FEAT").

    Note that the standard type name (e.g. "Requirement") is used even if the type has been renamed (e.g. to "Feature") via the Item type names setting.

    Note: The given short names must be unique.

    Use the short names "FEAT" for Requirements

    Superseded item types

    For each (custom) issue type name, a list of issue types it supersedes (if any). When a superseded issue type exists, it will be renamed to the new name (e.g. "Requirement" -> "Feature"), rather than creating a new issue type.

    This is only effective in combination with a setting for Item type names. It only affects the Jira configuration process in case the new issue type does not exist yet. If both the previous and the new issue type exist already, the previous issue type will not be removed or renamed.

    Warning: This will result in a global configuration change in a connected Jira instance.

    Rename the "Requirement" issue type to "Feature"

    Field names

    Custom name of each field, as a mapping from system field keys to custom names.

    This can be used in combination with Superseded field names when switching from one custom name to another custom name.

    Warning: Fields with custom names are created (or updated) as custom fields in Jira, rather than using the fields provided by the Ketryx Jira app. Previous field values might have to be migrated from the previous field to the new field in Jira (Ketryx will not perform this Jira data migration automatically).

    Note that, by default, Ketryx will not change the available option values for such custom fields, neither the default values nor custom values defined via Select field options. When editing such items in Ketryx, synchronizing changes to Jira might fail if the used values are not configured manually in Jira.

    Rename "Regions" to "Regulatory regions"

    Field descriptions

    Custom description of each field, as a mapping from system field keys to custom descriptions.

    Add description to the "Regulatory regions" field

    Superseded field names

    For each field key with a custom name, a list of field names that it supersedes (if any). When a superseded (custom) field exists, it will be renamed to the new name, rather than creating a new field.

    This is only effective in combination with a setting for Field names. It only affects the Jira configuration process in case the new field does not exist yet. If both the previous and the new field exist already, the previous field will not be removed or renamed.

    Note that this can not be used to rename an app field to a custom field (only from one custom name to another custom name).

    Warning: This will result in a global Jira configuration change.

    Select field options

    Mapping from select field keys (e.g. "capaType") to their custom configuration, which allows to override the name of individual options or to remove some options.

    The name of each option needs to unique among the options for a given field.

    When mapped to null, an option is not exposed to the user.

    Note this mechanism can not be used to add new options.

    Warning: When connected to custom fields in Jira (via the Field names setting), changing this setting will affect the global Jira configuration of those custom fields.

    Rename the "Backend" option for the "CAPA type" field to "Server"

    Remove the "Backend" option for the "CAPA type" field

    Item fields

    Mapping from standard item type names (e.g. "Requirement") to a configuration of fields to show for such items.

    Note that this will affect the corresponding Ketryx screen configurations in Jira.

    Configure Requirement item fields

    Custom item fields configuration

    Configuration of custom fields to allow them to be synced with Jira and edited them on the Ketryx side.

    Fields are not editable on Ketryx by default. Ketryx expects fields to be configured on Jira manually by the user beforehand.

    This configuration supersedes Extra field names in the Project item configuration as it has the same baseline functionality, but allows configuring fields to be editable as well.

    The type LEGACY_INFER_READONLY treats the field the way the current Extra field names setting treats them. They are only read from Jira, but not written back. When displaying the field its type will be inferred from the data received from Jira. This type is not recommended for new fields and only exists for compatibility reasons.

    RICH_TEXT: Rich text fields for formatted content.

    SHORT_TEXT: Short text fields for plain text input.

    SELECT: Single select fields with predefined options.

    MULTI_SELECT: Multi-select fields with predefined options.

    DATE: Date picker fields.

    DATE_TIME: Date and time picker fields.\

    Track various fields in Ketryx

    Relation names

    How to map relation names to Ketryx relation types when fetching data from Jira. There can potentially be several Jira relation names mapped to the same Ketryx relation.

    Note that the direction of the relation in Jira ("inward" vs. "outward") does not matter, as long as the name matches.

    Ketryx has a default mapping for relations names, automatically matching Jira links with names that are exactly what is listed in parentheses to the corresponding Ketryx relation. For example:

    • A Jira link called "affects" will be read as the Ketryx relation AFFECTS

    • A Jira link called "tests" will be read as the Ketryx relation TESTS

    Use the name "is child of" instead of the default relation name "has parent"

    Xray

    Xray-specific configuration.

    This can be used to configure custom status names (other than the default "PASSED" and "FAILED"). For each Ketryx status ("pass", "passWithException", "fail"), a list with an arbitrary number of Xray status names (including potentially an empty list) can be configured.

    Configure custom status names together with default names used in Xray

    Configure custom status names used in Xray

    Custom document types

    A list of custom document types to provide better flexibility in managing documents in your projects' EDMSs.

    Any types defined here will have their own approval steps (configured on each project's "Approval rules" page) and they will be selectable for all EDMS documents in every project.

    NOTE: Changing the "name" of any type will effectively remove the old type and create a new one with the new name. No existing documents with the old type will be automatically transferred over to the new type.

    Add custom document types for Manual and SOP

    Custom item types

    See our for more information.

    A list of custom item types to provide better flexibility in managing the different types of configuration items in your project.

    Any types defined here will have their own approval steps (configured on each project's "Approval rules" page) and they will have the Ketryx default workflow.

    NOTE: Changing the "name" of any type will effectively remove the old type and create a new one with the new name. No existing items with the old type will be automatically transferred over to the new type.

    NOTE: The given names and short names must be unique.

    Add custom item type that can be edited in Ketryx

    Enable Jira configuration

    Whether to push Ketryx configurations (item types, screens, workflows) to a connected Jira instance. Individual projects can also be configured to actually use this configuration or not, using the setting Use Ketryx-specific Jira configuration. Enabled by default.

    Maintain Jira fields

    Whether to maintain Ketryx-defined Jira fields in a connected Jira instance. Enabled by default.

    External user email mapping

    Map users from external systems to Ketryx users, based on their email address. Supported by select integrations only (currently Jama).

    Map external user identifier to Ketryx user email

    Show withdrawn vulnerabilities

    Whether to show withdrawn vulnerabilities in the vulnerability management feature. Disabled by default.

    Custom relations

    See our for more information.

    A list of custom relations to provide better flexibility in managing the relations between different types of configuration items in your project.

    direction is either "upstream" or "downstream". Defaults to "downstream". sourceItemTypes is an array of item type names for the item types that the relation is defined for. targetItemFilter is a KQL filter that is used to find the possible target items for the relation.

    NOTE: All fields (including the object key) must be unique for each custom relation.

    Custom SW -> HW relation

    Authentication configuration

    Authentication providers

    Custom authentication providers for this organization. Supported properties are email, okta, and customOAuth.

    This needs to be configured in combination with a custom email domain for this organization (managed by Ketryx Support).

    1. Okta Authentication:

    Create a new App Integration in your Okta instance and configure it in the following way:

    • Use "OIDC - OpenID Connect" authentication with the application type "Web Application"

    • For Grant type, choose "Client acting on behalf of a user" via an "Authorization Code"

    • Set the Sign-in redirect URL to https://app.ketryx.com/api/auth/callback/okta

    Configure Okta authentication (based on a CLIENT_ID and CLIENT_SECRET retrieved from Okta, and an appropriate Okta URL)

    Allow authentication via Okta in addition to email-based authentication

    Allow authentication via Okta and disable email-based authentication

    Other OIDC-compliant Authentication:

    For authentication via another OpenID Connect-compliant provider, such as Azure AD or Microsoft Entra, follow the following general steps on the OIDC provider side:

    1. Perform the necessary steps on the provider side to register a new application.

    2. Set the Sign-in redirect URL to https://app.ketryx.com/api/auth/callback/CUSTOM_OAUTH_ID. (Note: CUSTOM_OAUTH_ID can be set to any value as long as it matches the value set in the OIDC provider.)

    3. Set the Sign-out redirect URL to https://app.ketryx.com . (Note: if using another domain, edit the Sign-in redirect URL and the

    Configure OIDC-compliant authentication (based on a CLIENT_ID and CLIENT_SECRET retrieved from the provider, and an appropriate URL):

    Allow authentication via OIDC in addition to email-based authentication

    Allow authentication via OIDC and disable email-based authentication

    Notes:

    • If email-based authentication is disabled and users face issues with SSO, please reach out to the Ketryx Client Operations or Support departments for us to reset the email property to true .

    • By default, Ketryx supports login via email, Google and GitHub. However, once custom authentication methods are configured for an organization's domain, only those explicitly configured methods will be available to users logging in with email addresses from that domain.

    Project item configuration

    Issue mapping

    Mapping from Jira issue types to Ketryx items. This array of mapping entries is traversed in order, and the first match is taken; so there can potentially be several mappings from the same Jira issue type or to the same Ketryx item type (based on different other criteria, such as labels). If there is no match, the Jira issue is not synchronized to Ketryx.

    If multiple labels are specified in a single mapping entry, all of them need to match for the mapping to be effective. To specify several labels where any of them should be mapped to a certain item type, use distinct mapping entries.

    In addition to inferring a certain item type, field values can also be predefined for each mapping:

    • fieldValues defines values that are always set, regardless of any explicit value defined on the Jira issue.

    • fieldDefaults defines values that are only set if there is no explicit value defined on the Jira issue.

    Each of these properties is an object, mapping internal field keys (e.g. description for built-in fields or extra:My custom field for extra custom fields) to values as they would be retrieved from Jira.

    An itemType of CUSTOM can be used to define a custom item type in Ketryx, along with an itemTypeName to specify its actual name. Such custom item types are considered "unchecked", i.e. they are not required to be controlled.

    Map issues of type "Folder" or "Epic" to Requirements

    Map Stories with the "Ketryx" label to Requirements

    Map Stories with the "Ketryx" label to Requirements, and (more specifically) Stories with the label "UseCase" to Requirements with a type of "Use case"

    Map the native Jira parent-child hierarchy field per child item type

    Status mapping

    Mapping from Jira status names to Ketryx item states (OPEN, REOPENED, IN_PROGRESS, RESOLVED, or CLOSED).

    Map the status "Backlog" to the Ketryx state Open, and "Done" to Resolved

    Jira field mapping

    Mapping between Jira field names and Ketryx system field keys (or ignoring certain Jira field values).

    Jira fields are identified by their user-facing label, whereas Ketryx fields are identified by their internal field key (e.g. initialOccurrenceProbabilityText), similarly to the Issue mapping setting.

    This affects both reading fields from Jira as well as writing data from Ketryx to Jira, if possible. However, note that some fields (e.g. various risk evaluation fields) are inherently "read-only" as far as Jira is concerned, i.e. Ketryx will not write values to Jira for them, regardless of this configuration.

    This can be used to read field values from Jira that would otherwise be ignored, such as risk evaluation fields which are usually edited in Ketryx. This may be useful for an initial data import, but is not recommended afterwards, since edits in Ketryx may be overwritten by those Jira fields.

    This is similar to the setting Field names, but only affects reading and writing values, without affecting the Jira screen configuration or how fields are displayed in Ketryx. Moreover, this setting can be changed at the project level, whereas Field names is only configurable at the organization level.

    This setting may also be useful in cases where a configured custom item field editable in Ketryx should only be editable in Ketryx, and not in Jira (mapping the Jira custom field to null to ignore any Jira value).

    Warning: Changing the field mapping might have wide-reaching effects, resulting in items transitioning out of their controlled state.

    Note: For changing the mapping of version fields, use the setting Version fields. To read custom fields from Jira as custom fields in Ketryx (rather than as system fields), use the setting Extra field names.

    Read risk evaluation fields from Jira

    Read a custom description field from Jira

    Ignore a certain field value from Jira

    Jira widget display

    Configuration to override the default display of Ketryx widgets within Jira. This includes the Approval, Traceability and Risk widget.

    Updating this setting requires a project sync within Ketryx to take effect.

    Enable the risk widget only for a particular custom Risk type

    Enable the traceability and approvals widgets for chosen Item Types

    In order to configure the Jira widget display setting for specific fields correctly, navigate to Jira Settings > Work Types, find the applicable Work Type names, and populate them in the JSON object as shown above. NOTE: if using this setting to override the default display, the user will now need to explicitly state every Work Type that they want to display the widgets, even if the Work Type previously had it by default.

    Traceability widget configuration

    Configuration of the traceability widget, which allows to display the details of the selected item

    Enable detailed view with specific fields

    Approval workflow

    Mapping from item types (enum values such as 'REQUIREMENT', 'CUSTOM' or plain-text values such as 'Requirement', 'Folder') and Jira status names (e.g. 'Open', 'New') to approval workflow customizations. Note that when overriding some settings for an item type and status, no other specific defaults will be applied, so all desired settings should be specified explicitly. Each entry can have the following properties:

    • instructionText: Text to display to the user in the Approvals widget for this status.

    • isApprovable: Whether to allow approvals for this status.

    • approvalMeaning: The approval meaning when approving an item with this status.

    Enforce that Requirements have a required (extra) field "Acceptance Criteria" before they can be approved

    Jama-integrated workflows

    Approve in Ketryx and transition and lock the Jama item

    Transition in Jama and control the Ketryx item without further approvals

    This is based on the mapped Jama item status field. It is recommended to setup Jama approval workflows for each Jama item type that automatically transition items to the corresponding Jama state once a review is completed. Ketryx will then read those as controlled records and not require further approvals.

    Approval rules

    Custom approval rule overrides, allowing an arbitrary KQL filter. These are applied after the general approval rules of the project (defined by the user) and the backend customizations defined by approvalWorkflow, i.e. these approvalRules are the most specific setting.

    Adjust approval groups for Requirements of type "Intended use"

    Electronic signature item types

    Item types (standard names such as "Requirement" or custom names such as "Folder") that require an electronic signature. The default would be ["Risk", "Test Case", "Test Execution", "Test Plan"].

    Only require electronic signatures on Risk items

    Enable Assistant Sidebar

    Whether to enable the Assistant sidebar. Enabled by default.

    Enable AI

    Whether to enable AI-based features, particularly the AI-based item assistant and the 'Write AI text' button in the 'Create item' dialog. This only has an actual effect if AI usage is allowed at the organization level. Enabled by default.

    Enable enhanced AI-based item creation and editing

    Whether the Assistant should automatically identify and suggest items related to new items suggested or edited by it, in response to a user query. Enabling this feature will prolong response time. This only has an actual effect if AI usage is allowed at the organization level. Disabled by default.

    AI prompt suggestions

    Predefined prompt groups for the Assistant sidebar. Each group represents a expandable selection for defined templates.

    Use custom prompt group with a set of templates

    AI feature configuration

    Custom configuration of the AI-based features such as the item assistant.

    Use a custom OpenAI instance on Azure

    Use a custom OpenAI endpoint

    Enable version deletion

    Whether versions can be deleted by users with the appropriate permissions. Enabled by default.

    Enable item invalidation

    Whether to enable invalidation of items if controlled fields change, based on invalidatedTransitionStatus in the workflow configuration (by default, Closed items are transitioned back to Resolved for invalidation). If this is not set or null, invalidation is enabled unless the project is in observe-only mode (not using the predefined Ketryx workflows).

    Removal status names

    Status names to interpret as removal/obsolescence of an item w.r.t. releases, similarly to deleted items. Defaults to an empty list.

    Treat items with the status of "Cancel" as removed/obsolete

    Deletion status name (controlled)

    Status name to represent deleted items in a controlled state. This status is set by Ketryx when a deletion is detected and does not need to be approved. Defaults to "Closed".

    Deletion status name (uncontrolled)

    Status name to represent deleted items in an uncontrolled state. This status is set by Ketryx when a deletion is detected that still needs to be approved. Defaults to "Resolved".

    Uncontrolled field names

    Names of fields to ignore w.r.t. the controlled state of a record and its content hash. Changing these fields does not influence the record's content hash and does not trigger a transition back into an uncontrolled state.

    Ketryx will still create a new record with the new value, but the status will remain the same (unless other, controlled fields changed as well).

    Allow setting the "Document ID" field even after an item is fully approved

    Extra field names

    List of extra custom field names to read from Jira. These should be defined as custom fields in Jira and added to the desired screens (Ketryx will not perform this Jira configuration automatically). Extra fields can also refer to any field from source systems other than Jira, like Polarion or Jama, when a field cannot be mapped to a system field.

    This is superseded by Custom item fields configuration which allows for more fine-grained configuration.

    Track the extra fields "Acceptance Criteria" and "Source"

    Unchecked items filter

    KQL filter for "unchecked" items, i.e. items that do not need to be controlled before a version can be released. By default, no items are considered unchecked.

    Do not require Anomalies with an Environment of "internal" to be controlled

    Deferred items filter

    KQL filter for deferred items (anomalies). By default (if not specified), all Anomalies with a non-empty Rationale for deferring resolution will be considered deferred. Deferred items do not need to be in a controlled state (like unchecked items).

    Invalid items filters

    KQL filters to determine invalid items, along with error messages to show for them. Invalid items that are active in a version block the release of that version.

    Enforce Anomalies with a Resolution of "Duplicate" to have a status of either "Done" or "Cancel"

    Enforce that all Test Cases that are risk controls are included in the test plan

    Ignored test executions filter

    Filter for Test Executions to ignore for the release test status. Just like "redundant" Test Executions (that are superseded by a later Test Execution), these are still shown in the Items page, but not elsewhere.

    Use Test Executions only based on Test Plan

    Whether to associate Test Executions with versions only based on (Xray) Test Plan items, but not based on their version field. This is off by default, i.e. a Test Execution's version field (Introduced in version) is considered, and only if that is not set, it is associated with a version based on containing Test Plans.

    Enable automatic risk item updates on risk configuration change

    When enabled, Ketryx will make sure to keep all Risk items up-to-date with any risk configuration changes by creating new item records (e.g. updating all the relevant computed initial / residual risk analysis values). Please note that controlled risks may require re-approval after an configuration update. This setting is enabled by default.

    Build documents to be tracked for each project build

    When defined, Ketryx will detect build documents in project builds that contain build artifacts with the configured filenames.

    Build documents will show up on the commits history page and release documents page.

    By default, Ketryx will only allow release approval when all defined build documents have been uploaded for a given version. This behavior can be disabled via the "Require uploaded build documents" Release controls setting.

    Configure different report build documents relevant for a release

    Traceability configuration

    Configuration for the traceability behavior. The Ketryx RTM currently offers two different engines for configuring the traceability: v2 (legacy), which comes with slightly adjustable pre-configured traceability presets, and v3, which allows much more detailed customizations such as configurable design and testing columns, tracing rules, traceability checks and much more.

    (RTM v3) Enable the new RTM v3 mechanism. Defaults to the project's schema config to determine the traceability behavior (equivalent to the v2 presets)

    (RTM v3) Full example for a project using the full schema config tracing use-cases, design inputs (Requirements), design outputs (SW/HW specifications), verification tests (testing design outputs) and validation tests (testing design inputs)

    (RTM v2) Trace "Use case" requirements to other requirements to specs to tests (overriding the behavior from the project's schema config)

    (RTM v2) Only require validation of requirements (overriding the behavior from the project's schema config)

    (RTM v2) Add "Intended use" requirements to the first column (rather than ignoring them, which would be the default)

    Enable the RTM approval workflow for the traceability page

    Additional traceability configurations

    Other traceability configurations that are selectable in addition to the default configuration.

    enforceGreenCheck will make these additional traceability configurations also affect the release checklist.

    Two additional traceability configs

    Allow item transition

    Whether to allow items to be transitioned from the Ketryx side. By default (if not defined or null), transitions are allowed based on the project's observe-only flag: In observe-only mode, transitions are not allowed; otherwise they are allowed.

    Note that, currently, transitions are only supported for built-in Ketryx statuses and workflows. Using different status names or workflows in connected systems (such as Jira) might be a reason to disable this.

    Allow item creation

    Whether to allow items to be created from the Ketryx side (e.g. Risks, Test Executions, other items). By default (if not defined or null), item creation is allowed based on the project's observe-only flag: In observe-only mode, item creation is not allowed; otherwise it is allowed.

    Note that constraints configured in connected systems (such as custom item creation screens and field validations in Jira) are not enforced by Ketryx. Using such constraints might be a reason to disable this.

    Note that this setting also affects whether items can be created via the Ketryx traceability widget in the connected systems (e.g. Jira).

    Allow item editing

    Whether to allow items to be edited from the Ketryx side (e.g. Risks, Test Executions, other items). By default (if not defined or null), item editing is allowed based on the project's observe-only flag: In observe-only mode, item editing is not allowed; otherwise it is allowed.

    Note that constraints configured in connected systems (such as custom item creation screens and field validations in Jira) are not enforced by Ketryx. Using such constraints might be a reason to disable this.

    Note that this setting also affects whether existing items can be linked via the Ketryx traceability widget in the connected systems (e.g. Jira).

    Allow item restoring

    Whether to allow items to be restored from the Ketryx side (e.g. Risks, Test Executions, other items). By default (if not defined or null), item restoring is allowed based on the project's observe-only flag: In observe-only mode, item restoring is not allowed; otherwise it is allowed.

    Enable item approval notifications

    Whether to send notifications regarding item approvals. By default (if not defined or null), notifications are sent unless the project is in observe-only mode. Notifications are not sent for required document training.

    Enable test case creation in Jira

    Configuration for an additional traceability widget button that allows the creation of Xray tests using the Jira dialog. By default, this button is not shown.

    Enable legacy traceability widget button with Test issue type mapping

    Version number pattern

    Pattern for version names, used to extract normalized version number strings.

    Warning: Changing the version number pattern in a non-empty project with existing versions and configuration items might change the association of item records with versions, resulting in wide-reaching effects.

    SemVer version numbers (major.minor.patch-prerelease+build)

    Alphabetical version identifiers (three components, with the second and third one being optional, but being normalized to an empty part)

    Select text field options

    Option values for each select text field in this project (e.g. region values).

    When defining regions, items associated with a specific region will only be shown in region-specific documents, as defined by the document setting Region-specific documents.

    Warning: When connected to custom fields in Jira (via the Field names setting), changing this setting will affect the Jira configuration of those custom fields.

    Predefine two regions "EU" and "US"

    Version fields

    Configuration for how to determine the start and end version for an item (Introduced in version, Obsolete in version).

    This is a mapping from standard item type names (e.g. "Requirement" or "Anomaly") or the wildcard * to a configuration object that lists field keys to consider. The configuration for the wildcard * is used as a fallback, if there is no specific configuration for an item type name.

    By default, uses the Ketryx fields Introduced in version and Obsolete in version; in addition, Jira's built-in field Fix version(s) is taken into account (as the end version for Anomalies, or as the start version for all other item types).

    Warning: Changing version fields in a non-empty project with existing versions and configuration items might change the association of item records with versions, resulting in wide-reaching effects.

    Use an extra custom field "Released Version" as well as Jira's "Fix version(s)" as the introducing version, except for Anomalies where "Fix version(s)" should denote the obsoleting version

    Incremental releases: Include related items

    Whether to include related items in auto-created incremental releases. Disabled by default.

    Incremental releases: Excluded from test plan

    KQL filter for tests to exclude from the test plan in auto-created incremental releases.

    Incremental releases: Omitted documents

    Omitted documents in auto-created incremental releases.

    Incremental releases: Target branch name

    Base ref name (glob pattern) to match against before auto-creating an incremental version. By default, the main analyzed branch is taken.

    Incremental releases: Source branch name

    Head ref name (glob pattern) to match against before auto-creating an incremental version. By default, all head ref names are accepted.

    Create transitive dependency items

    Determines whether all direct and indirect dependencies should be created as dependency items. If true, all dependencies, not just root-level ones, need to be acted upon for a release to happen.

    Ketryx will scan for vulnerabilities in all dependencies, regardless of this setting as long as the dependencies are found, e.g. in an uploaded SPDX file.

    Warning: Be very careful with this setting, as it can lead to a large number of items. Even if this setting is disabled, root-level dependencies will still show their dependencies on their Dependencies tab.

    Disabled by default.

    Enable threat modeling

    Whether to enable the threat modeling feature. Disabled by default.

    Note that this feature requires configuration of certain Custom item types.

    Threat modeling configuration

    Configuration object for the threat modeling feature.

    Any value not specifically set here will be used from the default configuration object.

    Default configuration object:

    Rename threat rich text field

    Hide all rich text fields

    Add another rich text fields. In this case, the default field must be included in the list.

    Bypass adding all threat modeling fields to the vulnerability impact assessment form

    Enable vulnerability management

    Whether to enable the vulnerability management feature. Enabled by default.

    Vulnerability management configuration

    Configuration object for the vulnerability management feature.

    All fields except assessmentHeading and mitigationItemTypes will also affect the Vulnerability Report document. Any value not specifically set here will be used from the default configuration object.

    Setting autoAddFields to false will automatically hide the Risks, Mitigations, and Resolution column in the vulnerabilities table on the SBOM > Vulnerabilities page.

    Default configuration object

    Use a custom assessment heading

    Use a custom resolution configuration

    Rename risk and mitigation rich text fields

    Hide all rich text fields

    Allow only software item specs and test cases as mitigation items

    Disable the Risks, Mitigations, and Resolution column

    Bypass adding all vulnerability management fields to the vulnerability impact assessment form

    Share user reported vulnerabilities across projects

    Whether to share user reported vulnerabilities with all projects in an organization. Enabled by default.

    If disabled, new vulnerabilities reported via the builds API or project import will only be visible within the current project.

    Suggested item type task order

    The item type order used by the guidance task system when suggesting a user which first items to create in a new project. Items should be referenced by their standard item type names (e.g. "Requirement") or custom type names (e.g. "Folder").

    Have a Requirement, Software Item Spec and Test Case, in that order, suggested by the guidance system

    Have a Requirement (which has renamed to "Functional Requirement" through the "Item type names" configuration field), custom "Folder" item type and a Software Item Spec, in that order, suggested by the guidance system

    Webhooks

    Webhooks for Ketryx to notify external systems of certain events.

    For each of the following events, an object can be specified with properties url (required), method ("POST" or "GET", defaulting to "POST"), and authHeader (optional):

    • recordApproval: Approval of an item record

    • releaseApproval: Approval of a version/release

    • milestoneApproval: Approval of a milestone

    See also more details in the .

    Send a webhook upon item record approval

    Send a webhook upon version release approval, using a GET request with a custom Authorization header

    Custom KQL filters

    Using this setting custom KQL filters that should be available on various screens inside Ketryx can be specified.

    The following are valid screens:

    • AllItems

    • Graph

    • RiskControl

    • RiskManagement

    If no screens are specified, the query is shown on all screens. Names of queries must be unique.

    Add custom KQL queries

    New in 2.14

    Agent-based filters

    You can create filters to find items flagged by specific AI agents. These filters help teams quickly identify items that require attention based on agent analysis.

    For example, you can configure a custom filter that filters for items that are part of findings of the Change Request Affected Item Agent:

    Related videos

    CycloneDX field mapping

    This setting allows for flexible mapping of data from a CycloneDX Software Bill of Materials (SBOM) to custom fields on Ketryx DEPENDENCY items. The mapping is defined using a set of rules, where each rule specifies how to extract a value from the SBOM and which custom field to populate.

    Note: CycloneDX field mapping currently only supports mapping to , not default fields in Ketryx.

    Key Concepts:

    • JSONPath Expressions (source): Data is extracted from the SBOM using JSONPath expressions. These expressions provide a standardized way to select parts of a JSON document.

    • Mapping Contexts:

      • $.component: Use this prefix in your JSONPath expression to query fields within the current CycloneDX component being processed. For example, $.component.name

    Configuration Structure:

    The configuration object has the following main properties:

    • mappingSchemaVersion: Must be "1.0.0".

    • supportedVersions: An array of CycloneDX specification versions this mapping configuration is designed for (e.g., ["1.4", "1.5"]).

    • mappingRules: The array of mapping rules as described above.

    Note: Any manual changes made to the values of custom fields that are mapped through this setting will be overwritten the next time a build is reported and a new SBOM is processed.

    Map component type to a custom field

    Map SBOM generation date to a custom field

    Map and transform values for a SELECT custom field

    Map multiple values to a MULTI_SELECT custom field

    Use a default value if a source field is not present

    Handle modified fields across different SBOM specification versions

    Map associated vulnerabilities to a RICH_TEXT custom field

    Use Ketryx-specific Jira configuration

    Determines whether Ketryx should configure the connected Jira space (formerly project) with the Ketryx-specific Jira project configuration for Jira item types, screens, and workflows.

    This is only effective if Jira configuration is enabled at the organization level (via the setting Enable Jira configuration).

    If this is not specified (neither at the project nor at the organization level), the default is to only use the Ketryx configuration if the space is empty and the project is not in observe-only mode.

    Environmental scoring profile

    CVSS Environmental scoring profile configuration that defines default environmental metrics for vulnerability scoring.

    This setting allows you to define multiple environmental scoring profiles as an array. Each profile must specify a version field and version-specific environmental metrics. Environmental metrics help adjust the base CVSS score based on the specific environment where the vulnerability exists.

    Multiple profiles can be defined for each CVSS version, but only the first one will be used.

    When environmental metrics are defined, they will be used as defaults when scoring vulnerabilities, allowing for more accurate risk assessment based on your project's specific environment and requirements.

    CVSS 3.1 environmental profile with high confidentiality requirement

    CVSS 4.0 environmental profile with modified attack vector

    Mixed version environmental profiles

    Integration precedence

    Precedence of integrations connected to the project.

    This setting determines which connected system sets the properties of synchronized versions. The source of a version which appears first in this list will determine properties of the version.

    Default precedence

    Enable vulnerabilities as configuration items

    Whether vulnerabilities are considered as configuration items. This setting is disabled by default.

    When this option is enabled, manual vulnerabilities and automatically detected vulnerabilities with an impact assessment are treated as configuration items, allowing them to be managed like other items. More importantly, those vulnerabilities will be considered as release item types, meaning they may block a release if uncontrolled.

    Enable item rejection

    Whether to enable the item rejection feature. Disabled by default.

    If enabled, users will be able to reject records whenever they are in an approvable state. A rejection will result in a new record being created in the "Open" state with the same content as the original record.

    Require rejection comments

    Whether to require comments when users reject records. Disabled by default.

    If enabled, users will be required to provide a comment when rejecting records.

    Azure DevOps work item mapping

    Mapping between Azure DevOps item types and Ketryx items including fields and relationships.

    • workItemType: The Azure DevOps item type's key or name (both case-sensitive). To apply a mapping to ALL items, use the wildcard "*".

    • itemType: The Ketryx item type used to create items, e.g., REQUIREMENT.

    • fields

    Should a given Azure DevOps item type be mapped multiple times, its mappings will be merged together:

    • itemType: The first Ketryx item type will be used.

    • fields: All distinct Ketryx/Azure DevOps field keys will be used. In case of conflicts, the first one will be used.

    • `"workItemType": "*" is default mapping, i.e., it can be specified only once and will be overridden by more specific item type mappings.

    Map one Azure DevOps item type to one Ketryx type

    Map Azure DevOps item types using global and type-specific field mappings

    Establish traceability between an Azure DevOps project to other source systems

    Default mapping

    Azure DevOps status mapping

    Defines a mapping between Azure DevOps status labels and Ketryx item states (OPEN, REOPENED, IN_PROGRESS, RESOLVED, or CLOSED). This configuration ensures seamless synchronization of work item statuses across systems by translating ADO-specific statuses to their corresponding Ketryx states.

    Map ADO statuses "Proposed" and "Design" to Ketryx state Open, and "Completed" to Closed

    Default mapping

    Azure DevOps work item relations mapping

    Defines how Azure DevOps work item relationships are mapped to corresponding Ketryx relationship types. This configuration enables consistent handling of linked items, such as parent-child relationships, test dependencies, or other custom relations, across both systems.

    Mappings are defined as key-value pairs where the key represents the Azure DevOps relation type (e.g., 'Parent' or 'Tested By') and the value specifies the equivalent Ketryx relation type (e.g., 'HAS_PARENT' or 'TESTS').

    Map Test items

    Map Parent items

    Default mapping

    TestRail sync configuration

    Configuration for TestRail synchronization behavior.

    The configuration consists of:

    • syncFilter: Controls which items are included in the sync

      • milestonePattern: Regular expression pattern to match milestone names

        • '.*' matches all milestones

    Default configuration

    Version-specific configuration

    TestRail field type mapping

    Mapping between different TestRail-specific fields and Ketryx. This mapping is essential for translating fields used in TestRail into their corresponding representations in Ketryx.

    The following types are supported:

    • TEST_PROTOCOL: Mappings for test cases, including defaults and client-specific templates

    • TEST_EXECUTION: Mappings for executing tests

    • TEST_PLAN: Mappings for planning tests

    Map Custom Fields

    TestRail status mapping

    Mapping from TestRail status names to Ketryx item states (OPEN, REOPENED, IN_PROGRESS, RESOLVED, or CLOSED).

    Map the status "Backlog" to the Ketryx state Open, and "Done" to Resolved

    TestRail result mapping

    Mapping from TestRail result names to Ketryx item states (PASSED, FAILED, FAIL_ACCEPTED or PASS_WITH_EXCEPTION).

    Map the result "Passed" to the Ketryx state Passed

    TestRail work item relations mapping

    Mapping between TestRail-specific fields and Ketryx relations. Source field is the field in TestRail, relationType is the relation in Ketryx and targetSystem is the system where the target item is located. targetSystem can be ('Jira', 'ADO', 'TestRail', 'Git').

    Map custom field to map as item affects from jira item

    Jama item mapping

    Mapping between Jama item types and Ketryx items including fields and relationships.

    For each mapped item type, you can specify the following (see examples for each below):

    • jamaItemType: The Jama item type's key or name (both case-sensitive). To apply the same mapping to multiple types, use an array of keys/names; to apply a mapping to ALL items, use the wildcard "*".

    • jamaItemCategory: Anomalies and test cases can also be mapped by the corresponding Jama item type category (Use as); supported categories are DEFECT, TEST_CASE, TEST_PLAN, TEST_RUN

    Should a given Jama item type be mapped multiple times, its mappings will be merged together:

    • itemType: The first Ketryx item type will be used.

    • fieldValues and fields: All distinct Ketryx/Jama field keys will be used. In case of conflicts, the first one will be used.

    • "jamaItemType": "*" and jamaItemCategory are default mappings, i.e., they can specified only once and

    Map one or many Jama item types to one Ketryx type

    Map a Jama item type category to a Ketryx type

    Map Jama item types with static field values

    Map Jama item types using global and type-specific field mappings

    Establish traceability across multiple Jama projects and to other source systems

    Map inverse Jama relationships

    Disable default mappings

    Either disable the entire item type, or specific fields and relationships. For a disabled item type, no new records are created. To remove existing items from Ketryx, they may be excluded on the All items page.

    Jama item status mapping

    Mapping from Jama status names to Ketryx states.

    Map Jama status names

    Jama item relationships mapping

    Mapping from Jama item relationships to Ketryx relations.

    Map Jama item relationships

    Jama field type mapping

    Mapping from Jama-specific fields to Ketryx fields.

    Note: This is deprecated, please use Jama item mapping instead.

    For releases, please be aware that Jama and Ketryx assign items differently. For the best experience, we recommend using two custom release fields.

    Optionally, specify a relation from a field to establish traceability to other source systems like Jira.

    Map item fields

    Jama relations field mapping

    Combination of field- and relation mapping to link items based on a field instead of a relationship, e.g., to establish traceability across source systems.

    Note: This is deprecated, please use Jama item mapping instead.

    The sourceField is the field in Jama and expected to hold the target item's Ketryx ID or the key by which the source system uniquely identifies the item, e.g., for Jira this would be the Jira issue key. relationType is the relation in Ketryx and targetSystem is the system where the target item is located (Ketryx by default). targetSystem can be one of ADO, Confluence, Git, Jama, Jira, Ketryx, Polarion, TestRail

    Use a field to link to other items, including from other source systems

    Jama releases

    Configure how releases are handled in Jama. The default (no configuration) is to use Jama's built-in releases and corresponding fields (use field type mapping to associate items with these releases).

    An alternative mode available through this setting is to use multi-select fields as source for releases. Based on these Jama fields, Ketryx knows which picklists to interpret as Ketryx versions and will then associate corresponding items to each selected version.

    Use custom multi-select picklists instead of Jama releases

    Document configuration

    Omitted documents

    Omitted document types in this project. These documents will not show up on a version's documents page and will not be required for approving a version.

    This is separate from omitting documents "ad-hoc" on a version's Documents page, which only affects that particular version.

    If not defined, a default set of omitted documents will be chosen based on the chosen schema configuration mode of the project.

    Use all available documents

    Omit all documents except for the SRS document

    Region-specific documents

    Documents that should be generated for each region. Possible region values are defined in Select text field options.

    By default, only the SRS document is considered region-specific.

    Generate SRS and SDS document for each region

    Require up-to-date milestone documents

    Whether milestone documents are required to be up-to-date for the milestone to be approvable. Enabled by default.

    Show outdated state for milestone/release documents

    Whether milestone and release documents display an "Outdated" state on the UI when Ketryx determines that they do not contain the latest information. This setting is enabled by default.

    NOTE: Disabling this will only affect release documents if the "Require up-to-date release documents" release control is disabled. Similarly, it will only affect milestone documents if the "Require up-to-date milestone documents" advanced setting is disabled.

    Milestone-independent documents

    Documents that should contain all items (independently of milestones), even if they are generated as milestone documents.

    Default list of documents that are considered milestone-independent

    Require controlled templates

    Whether to only use document templates that are in a controlled state (off by default). If activated, any unapproved draft will be ignored, and the last controlled record of a template will continue to be used instead.

    • Recommendation: We recommend setting this to 'yes' once you are satisfied with the current version of your templates and want to approve them (and maintain approvals).

    • *Note: When this setting is active, uploading a revision of an approved template will not make it immediately available for creating new documents. The new version must first complete the required approval workflow before it replaces the previous controlled version on the Release Documents screen.

    Omitted fields

    Omitted fields for each document type and item type. Word documents showing the details of an item will not show those omitted fields.

    Document types and item types are denoted by their internal identifiers. Fields are denoted by their human-readable name (e.g. "Description", "My custom field").

    Omit the "Expected behavior" field from Test Cases in the Test Plan documents

    Include title page

    Whether to include a title page (on by default).

    Include version page

    Whether to include a page listing the document version history (on by default).

    Word document

    Settings for all generated Word documents.

    Use the setting for Custom template variables to define custom template variables such as $DOC_ID.

    Footer

    Excel spreadsheet

    Settings for all generated Excel spreadsheets.

    Custom template variables

    Allows customizing the template variable input for all document types. A template variable may be configured to be user-adjustable, which would show extra inputs in the release documents UI.

    This is usually used in combination with custom headers and footers.

    Introduce a user-adjustable $DOC_ID variable

    System Requirements Specification

    Customization of SRS output documents.

    Omit a dedicated "Other" section heading if it is the only section in the document

    Requirements Traceability Matrix

    Customization of RTM output documents.

    Omit use cases and specs from the RTM document

    Do not show excluded tests at all

    Do not show excluded tests if there is no "inherited" test in the previous release

    Rename the use-case-related columns, and omit the "Requirement type" column

    Risk Matrix

    Customization of Risk Matrix output documents.

    Rename some columns, and omit the "System categories" column

    Release history

    Customization of Release History documents.

    Default values:

    Remove the Scope description section from the release history document

    Include the V&V section in the release history document

    Release Notes

    Customization of Release Notes documents.

    Default values:

    Remove the Scope description section from the release notes

    Include the V&V section in the release notes

    Only include certain user requirements in the release notes

    Only include corrective anomalies in the release notes

    SBoM – SOUP – Software Configuration report

    Customization of SBoM – SOUP – Software Configuration Report documents.

    Rename the column "Dependency name" to "Name"

    Omit the "Ecosystem" column

    Test Plan

    Customization of Test Plan documents.

    Omit automated tests from the Test Plan Word document

    Testing Report

    Customization of Testing Report documents.

    Only show the last (effective) test execution for each test in the Testing Report Word document

    Risk Management File

    Customization of Risk Management File documents.

    Omit the risk evaluation matrix section from the document

    Omit the general information section from the document

    Date format

    Default date format to render date/time values in template-based documents. Placeholders as defined by can be used.

    ISO 6801-compliant time stamps

    Date time zone

    Default time zone to use for date/time values in template-based documents. Time zones are specified using their .

    Use the New York time zone

    Normalization

    Document normalization settings.

    Enable embedding of EDMS documents

    Whether to enable embedding of EDMS documents. The Assistant uses these embeddings when answering user queries about their documents. If enabled, EDMS documents are sent to a zero data retention service for processing.

    Test result names

    Mapping of internal test result status names to custom ones.

    As a special value, "EXCLUDED" can also be mapped to a custom value (with the default label being "Excluded" in the RTM).

    Use custom test result names

    Short item refs

    Use short item references (usually just the Jira issue key) instead of long references (that also indicate the item type and revision number). Defaults to false if not defined.

    Edit release documents externally

    Use external editors to collaborate on release documents. This requires a connection for the respective system.

    Google Docs

    Risk configuration

    Hazardous situations

    Customization of hazardous situation values.

    Set new hazardous situation values

    Event sequences

    Customization of event sequence values.

    Set a new event sequence value

    Event steps

    Customization of event step values.

    Set new event step values

    Hazards

    Customization of hazard values.

    Set new hazard values

    Harms

    Customization of harm values. A harm may include an associated initial severity. If strict mode is enabled, it is recommended to add the severity.

    Set new harm values

    Hazard types

    Customization of hazard type values.

    Warning: If the Hazard type field is mapped to a custom field in Jira (via Field names), changing this setting will result in a global configuration change of that custom field.

    Set new hazard type values

    System categories

    Customization of system category values.

    Warning: If the System categories field is mapped to a custom field in Jira (via Field names), changing this setting will result in a global configuration change of that custom field.

    Set new system category values

    Risk assessment methodologies

    Customization of risk assessment methodology values.

    Warning: If the Risk assessment methodologies field is mapped to a custom field in Jira (via Field names), changing this setting will result in a global configuration change of that custom field.

    Set new risk assessment methodology values

    Initial harm probability

    Customization of initial harm probability values.

    Providing the font color is optional and should be used to provide contrast to the background color hexColor. By default, the font color is white.

    Warning: If the Initial harm probability field is mapped to a custom field in Jira (via Field names), changing this setting will result in a global configuration change of that custom field.

    Set new harm probability values

    Initial occurrence probability

    Customization of initial occurrence probability values.

    Providing the font color is optional and should be used to provide contrast to the background color hexColor. By default, the font color is white.

    Warning: If the Initial occurrence probability field is mapped to a custom field in Jira (via Field names), changing this setting will result in a global configuration change of that custom field.

    Set new occurrence probability values

    Initial total probability

    Customization of initial total probability values.

    Providing the font color is optional and should be used to provide contrast to the background color hexColor. By default, the font color is white.

    Warning: If the Initial total probability field is mapped to a custom field in Jira (via Field names), changing this setting will result in a global configuration change of that custom field.

    Set new total probability values

    Initial severity

    Customization of initial severity values.

    Providing the font color is optional and should be used to provide contrast to the background color hexColor. By default, the font color is white.

    Warning: If the Initial severity field is mapped to a custom field in Jira (via Field names), changing this setting will result in a global configuration change of that custom field.

    Set new severity values

    Initial risk acceptability evaluation

    Customization of initial risk acceptability evaluation values.

    Providing the font color is optional and should be used to provide contrast to the background color hexColor. By default, the font color is white.

    Warning: If the Initial risk evaluation field is mapped to a custom field in Jira (via Field names), changing this setting will result in a global configuration change of that custom field.

    Set new risk evaluation values

    Residual harm probability

    Customization of residual harm probability values.

    Providing the font color is optional and should be used to provide contrast to the background color hexColor. By default, the font color is white.

    Warning: If the Residual harm probability field is mapped to a custom field in Jira (via Field names), changing this setting will result in a global configuration change of that custom field.

    Set new harm probability values

    Residual occurrence probability

    Customization of residual occurrence probability values.

    Providing the font color is optional and should be used to provide contrast to the background color hexColor. By default, the font color is white.

    Warning: If the Residual occurrence probability field is mapped to a custom field in Jira (via Field names), changing this setting will result in a global configuration change of that custom field.

    Set new occurrence probability values

    Residual severity

    Customization of residual severity values.

    Providing the font color is optional and should be used to provide contrast to the background color hexColor. By default, the font color is white.

    Warning: If the Residual severity field is mapped to a custom field in Jira (via Field names), changing this setting will result in a global configuration change of that custom field.

    Set new severity values

    Residual total probability

    Customization of residual total probability values.

    Providing the font color is optional and should be used to provide contrast to the background color hexColor. By default, the font color is white.

    Warning: If the Residual total probability field is mapped to a custom field in Jira (via Field names), changing this setting will result in a global configuration change of that custom field.

    Set new total probability values

    Residual risk acceptability evaluation

    Customization of residual risk acceptability evaluation values.

    Providing the font color is optional and should be used to provide contrast to the background color hexColor. By default, the font color is white.

    Warning: If the Residual risk evaluation field is mapped to a custom field in Jira (via Field names), changing this setting will result in a global configuration change of that custom field.

    Set new risk evaluation values

    Initial total probability matrix

    Customization of the initial total probability matrix.

    The utilized keys and values in the JSON object must correspond to actual values in the Initial harm probability, Initial occurrence probability and Initial total probability configurations.

    The configuration takes on the following structure:

    The matrix should cover all possible combinations. Doing otherwise will lead to unexpected behavior by the system.

    Set new matrix values

    Initial risk evaluation matrix

    Customization of the initial risk evaluation matrix.

    The utilized keys and values in the JSON object must correspond to actual values in the Initial risk evaluation, Initial severity and Initial total probability configurations.

    The configuration takes on the following structure:

    The matrix should cover all possible combinations. Doing otherwise will lead to unexpected behavior by the system.

    Set new matrix values

    Residual total probability matrix

    Customization of the residual total probability matrix.

    The utilized keys and values in the JSON object must correspond to actual values in the Residual harm probability, Residual occurrence probability and Residual total probability configurations.

    The configuration takes on the following structure:

    The matrix should cover all possible combinations. Doing otherwise will lead to unexpected behavior by the system.

    Set new matrix values

    Residual risk evaluation matrix

    Customization of the residual risk evaluation matrix.

    The utilized keys and values in the JSON object must correspond to actual values in the Residual risk evaluation, Residual severity and Residual total probability configurations.

    The configuration takes on the following structure:

    The matrix should cover all possible combinations. Doing otherwise will lead to unexpected behavior by the system.

    Set new matrix values

    Hazard type-specific configuration

    Customization of hazard type-specific configuration.

    The configuration takes on the following structure:

    Details on how to define each matrix can be found by inspecting the relevant field in the advanced settings page.

    Set Acoustic hazard type-specific initial total probability matrix

    Custom risk type based risk configuration

    Customization of custom risk type based configuration. This configuration is useful for managing multiple types of risks with different risk evaluation schemas.

    The configuration takes on the following structure:

    Details on how to define each matrix / hazard type based configuration can be found by inspecting the relevant field in the advanced settings page.

    Internal IDs

    Item types

    • ANOMALY (Anomaly)

    • CAPA (CAPA)

    • CHANGE_REQUEST (Change Request)

    Document types

    • AUTHORITY_MATRIX (Authority Matrix)

    • CHANGE_MANAGEMENT_FILE (Change Management File)

    • CHANGE_REQUEST_REPORT (Change Request Verification Report)

    Relations

    • AFFECTS (affects)

    • CONTAINS_TESTS (contains)

    • CUSTOM (custom)

    Built-in fields

    • acceptedVersions (Accepted version(s))

    • affectedItems (Affected items)

    • affectedLibraryVersionRange (Affected library version ranges)

  • A Jira link called "is risk-controlled by" will be read as the Ketryx relation IS_RISK_CONTROLLED_BY

  • Set the Sign-out redirect URL to https://app.ketryx.com
  • Make sure that all desired members of the organization are assigned to the app in Okta

  • Configure the authentication provider in Ketryx using Okta's client ID, client secret, and issuer URL, as in the example below

  • Sign-out redirect URL
    to reflect that domain.)
  • Generate the Client Secret and store it safely for use in Ketryx side configuration.

  • Configure the authentication provider in Ketryx using the provider's client ID, client secret, and issuer URL, as in the example below:

  • requiredFieldNames: Names of required fields before an item with this status can be approved. This is a list of human-readable field names (e.g. 'Description', 'My extra custom field').
  • approvalGroups: Approval groups for this step in the workflow. The groups are referenced by their human-readable name (e.g. 'R&D Leads'), and they need to be a subset of the groups used in the full approval rules for the item type. A special entry '#owner' refers to the owner (= assignee) of an item. If not defined, this defaults to the full approval rules for the item type.

  • shouldTransitionWhenApproved: Whether items with this status should be transitioned by Ketryx upon approval. Upon full approval, a new record is created; the status of that new record is set to approvedTransitionStatus if defined (otherwise the status remains the same), and it will be a controlled record depending on the new status' isControlled setting. By default, this is true for the 'Resolved' status.

  • approvedTransitionStatus: The status to transition to upon approval, if shouldTransitionWhenApproved is true. If this is set to null, no state transition will occur upon full approval, i.e. there will be a new (system-created) record with the same status as before. By default, this is 'Closed' for the 'Resolved' status, i.e. upon full approval of a Resolved item, it is transitioned to the Closed status.

  • rejectedTransitionStatus: The status to transition to upon rejection. If this is set to null, no state transition will occur upon rejection, i.e. there will be a new (system-created) record with the same status as before. By default, upon rejection of a Resolved item, it is transitioned to the Open status.

  • invalidatedTransitionStatus: The status to transition to from this state, in case the data of the record is changed or (if activated) a design input changes. If this is set to null, no state transition will occur even if data changes. By default, this is set to 'Resolved' for the 'Closed' status, i.e. an item is "unclosed" by transitioning it from Closed back to Resolved. Changes to fields specified in uncontrolledFieldNames are ignored and do not result in an invalidation transition.

  • isControlled: Whether this status is considered a controlled state. When transitioning into this state (after approval), the new record's isControlled will be set accordingly. By default, this is true for the 'Closed' status.

  • shouldLockSourceItem: When transitioning into this state, lock the source item in the connected system. Only supported for Jama.

  • keepApprovalsWhenTransitionedTo: When transitioning from this status to one of the specified status, approvals will be "carried over" to the new status, as long as only the status changed (but no other fields). This can be used to implement a workflow such as In Progress -> Waiting for Approval -> Approved where the owner approves and triggers the first transition, while another approval happens in another transition (but both approvals still count towards the overall approval state). When set to a literal '*', transitions from this status will always keep approvals.

  • acceptApproval: A list of external systems of which approvals should be accepted as controlled records. An item is considered controlled externally when it reaches a status configured as controlled, and the external system is listed in this setting. Only supported for Jama.

  • uncontrolledFieldNames: Names of fields to consider as "uncontrolled" when keeping approvals after a state transition, i.e. if keepApprovalsWhenTransitionedTo is defined. The state and status names are always ignored, i.e. approvals are kept as long as only state / status name change. Other field names can be added to this list, e.g. to allow users to set fields during a status transition, without invalidating previous approvals. When set to a literal '*', all fields are considered uncontrolled. This is a list of human-readable field names (e.g. 'Description', 'My custom field').

  • documentApproval: Approval of a document in the EDMS
  • testPlanApproval: Approval of a release test plan

  • vulnerabilityApproval: Approval of a vulnerability

  • Tests

  • Traceability

  • extracts the name of the component.
  • $.doc: Use this prefix to access properties from the root of the CycloneDX document. This is useful for mapping metadata that applies to the entire SBOM, such as $.doc.metadata.timestamp.

  • Mapping Rules (mappingRules): This is an array of rule objects. Each rule must have a source (the JSONPath expression) and a target (specifying the customField name).

  • Optional Properties:

    • description: A human-readable description of the rule's purpose.

    • appliesToVersion: An array of CycloneDX specification versions (e.g., ["1.5"]) to which the rule should apply. If omitted, the rule applies to all supported versions.

    • enumMapping: A dictionary to translate source values into different target values, which is particularly useful for SELECT type custom fields.

    • defaultValue: A value to be used if the source JSONPath expression does not find a match in the SBOM.

  • : Mapping of built-in and custom Azure DevOps fields to Ketryx fields (given the field values are compatible). A field mapping can either map field-to-field or field-to-relationship. Such relational fields are especially useful to establish traceability across different systems.

    'v\d+.\d+' matches version milestones (e.g., 'v1.0', 'v2.1')

  • 'release-.*' matches all release milestones

  • 'sprint-\d+' matches sprint milestones (e.g., 'sprint-1', 'sprint-2')

  • baselinePattern: Regular expression pattern to match baseline/suite names

    • '.*' matches all baselines

    • 'master' matches only master baseline

    • 'baseline-\d+' matches numbered baselines (e.g., 'baseline-1', 'baseline-2')

    • 'regression-.*' matches all regression baselines

  • syncOptions: Controls sync behavior

    • includeMasterBaseline: Whether to include the master baseline in the sync

      • true: Master baselines are included (default)

      • false: Master baselines are skipped

    • includeCompletedItems: Controls how completed items are handled

      • milestones: Whether to include completed milestones

        • true: Completed milestones are included (default)

  • syncScope: Controls the overall sync scope

    • 'All': Syncs all items regardless of milestone association (default)

    • 'Milestone': Only syncs items associated with milestones that match the milestonePattern

  • .
  • itemType: The Ketryx item type used to create items, e.g., REQUIREMENT.

  • fieldValues: Static fields that only depend on the item type and are not read from the Jama item.

  • fields: Mapping of built-in and custom Jama fields to Ketryx fields (given the field values are compatible). A field mapping can either map field-to-field or field-to-relationship. Such relational fields are especially useful to establish traceability across different systems or across Ketryx projects. If no targetSystem is specified, it defaults to KETRYX.

  • relationships: Mapping of built-in and custom Jama relationship types to Ketryx relationships. For Jama-to-non-Jama relationships, use the object-syntax and specify a target system.

  • will
    be overridden by more specific item type mappings.
    .
    COMPLAINT (Complaint)
  • CONFIGURATION_ITEM (Configuration Item)

  • DEPENDENCY (Dependency)

  • HARDWARE_ITEM (Hardware Item Spec)

  • REQUIREMENT (Requirement)

  • RISK (Risk)

  • SOFTWARE_ITEM (Software Item Spec)

  • TASK (Task)

  • TEST_EXECUTION (Test Execution)

  • TEST_PLAN (Test Plan)

  • TEST_PROTOCOL (Test Case)

  • VULNERABILITY (Vulnerability)

  • CLOUD_CONFIG_REPORT (Cloud Configuration Report)
  • CODE_REVIEW_REPORT (Code Review Report)

  • CYBER_RISK_MANAGEMENT_FILE (Cyber Risk Management File)

  • PROBLEM_REPORT (Problem Report)

  • RELEASE_HISTORY (Release History)

  • RELEASE_NOTES (Release Notes)

  • RISK_CONTROL_FILE (Risk Control Matrix)

  • RISK_MANAGEMENT_FILE (Risk Management File)

  • RISK_MATRIX (Risk Matrix)

  • SOFTWARE_ARCHITECTURE_CHART (System Architecture Chart)

  • SOFTWARE_DESIGN_SPECIFICATION (System Design Specification)

  • SOFTWARE_DESIGN_STRUCTURE_MATRIX (System Design Structure Matrix)

  • SOFTWARE_REQUIREMENTS_SPECIFICATION (System Requirements Specification)

  • SOUP_DEPENDENCIES (SBoM – SOUP – Software Configuration Report)

  • TEST_PLAN (Test Plan)

  • TESTING_REPORT (Testing Report)

  • TRACEABILITY_MATRIX (Traceability Matrix)

  • TRAINING_STATUS_REPORT (Training Status Report)

  • UNRESOLVED_ANOMALIES (Unresolved Anomalies)

  • VULNERABILITY_REPORT (Vulnerability Report)

  • EXECUTES (executes)
  • FOUND_ANOMALY (found anomaly)

  • FULFILLS (fulfills)

  • HAS_PARENT (has parent)

  • HAS_ROOT_CAUSE (has root cause)

  • IMPLEMENTS (implements)

  • INITIATES_THREAT (initiates threat)

  • INTRODUCES_RISK (introduces risk)

  • IS_CONTAINED_IN_TRUST_BOUNDARY (contained in)

  • IS_EXPLOITED_BY (is exploited by)

  • IS_EXPOSED_BY (is exposed by)

  • IS_IMPACTED_BY (is impacted by)

  • IS_RELATED_TO (is related to)

  • IS_RISK_CONTROLLED_BY (is risk-controlled by)

  • IS_TESTED_BY (dependency is tested by)

  • LINKS_TO (dependency links to)

  • RELATES_TO (relates to)

  • RESOLVED_BY (is resolved by)

  • RESULTS_IN (results in)

  • TESTS (tests)

  • USES (uses)

  • USES_DEPENDENCY (uses dependency)

  • aliases (Aliases)
  • anomalyClassification (Anomaly classification)

  • changeTypes (Change type): ADAPTIVE (Adaptive), CORRECTIVE (Corrective), PERFECTIVE (Perfective), PREVENTIVE (Preventive)

  • complainantContactInformation (Complainant contact information)

  • complaintReceivedDate (Date received)

  • complaintType (Complaint type): ADVERSE_EVENT (Adverse Event), OTHER (Other), PRODUCT_COMPLAINT (Product Complaint), SEVERE_ADVERSE_EVENT (Severe Adverse Event)

  • configurationItemVersion (Configuration item version)

  • containedTests (Contained tests)

  • correctiveActions (Corrective actions)

  • cweIds (CWE IDs)

  • description (Description)

  • endOfLife (End of life)

  • endOfLifeDescription (End of life description)

  • environment (Environment)

  • executedProtocol (Test being executed)

  • expectedBehavior (Expected behavior)

  • externalId (CVE ID)

  • foundAnomalies (Found anomalies)

  • fulfilledRequirements (Fulfilled requirements)

  • harm (Harm)

  • hazard (Hazard)

  • hazardousSituation (Hazardous situation)

  • hazardTypeText (Hazard type; Jira field key hazardTypeChoice)

  • homepageUrl (Homepage)

  • impactCriticality (Impact criticality): HIGH (High), LOW (Low), MEDIUM (Medium)

  • impactOfChange (Impact of change)

  • impactOnSystem (Impact on system)

  • impactScope (Impact scope): LARGE (Large), MEDIUM (Medium), SMALL (Small)

  • implementedItems (Implemented items)

  • initialHarmProbabilityText (Initial likelihood of harm (P2); Jira field key initialHarmProbability)

  • initialOccurrenceProbabilityText (Initial likelihood of occurrence (P1); Jira field key initialOccurrenceProbability)

  • initialRiskEvaluationText (Initial risk evaluation; Jira field key initialRiskEvaluation)

  • initialSeverityText (Initial severity; Jira field key initialSeverity)

  • initialTotalProbability (Initial total probability)

  • inputs (Inputs)

  • interfaces (Interfaces)

  • introducedInVersion (Introduced in version)

  • investigation (Investigation)

  • investigationCompletedDate (Date investigation completed)

  • investigationRequired (Investigation required): NOT_REQUIRED (Not required), REQUIRED (Required)

  • isRiskAcceptable (Risk acceptability): ACCEPTABLE (Acceptable), NOT_ACCEPTABLE (Not acceptable)

  • issuesUrl (Issues URL)

  • levelOfSupport (Level of support)

  • levelOfSupportDescription (Level of support description)

  • license (License)

  • linksTo (Dependency links to)

  • manufacturer (Manufacturer)

  • medicalDeviceName (Name of medical device)

  • modifiedAt (Modified at)

  • newItems (New items)

  • notes (Additional notes)

  • observedBehavior (Observed behavior)

  • obsoleteInVersion (Obsolete in version)

  • originalCustomerComplaint (Original customer complaint)

  • outputs (Outputs)

  • parentHardwareItems (Parent hardware items)

  • parentRequirements (Parent requirements)

  • parentSoftwareItems (Parent software items)

  • preventiveActions (Preventive actions)

  • problemReportType (Problem report type): ADAPTIVE (Adaptive), CORRECTIVE (Corrective), PERFECTIVE (Perfective), PREVENTIVE (Preventive)

  • publishedAt (Published at)

  • rationale (Rationale)

  • rationaleForDeferringResolution (Rationale for deferring resolution)

  • reasonForChange (Reason for change)

  • regions (Regions)

  • relatedIssues (Related issues)

  • relatedItems (Related items)

  • relevantStandards (Relevant standards)

  • reliabilityImpact (Reliability impact)

  • reliabilityImpactJustification (Reliability impact justification)

  • replyToComplainant (Reply to complainant)

  • reportedOn (Reported on)

  • reporterType (Reporter type): EXTERNAL (External), INTERNAL (Internal)

  • repositoryUrl (Repository URL)

  • requirementContext (Context): CLINICAL (Clinical), EXTERNAL (External), REGULATORY (Regulatory), SAFETY (Safety), SECURITY (Security)

  • requirementType (Requirement type): ACCOMPANYING_DOCUMENTS (Accompanying documents), ALARMS_WARNINGS_MESSAGES (Alarms, warnings and messages), DATA_AND_DATABASES (Data and databases), DOCUMENTATION (Documentation), ENVIRONMENT (Environment), ESSENTIAL_FUNCTION_PROTECTION (Essential function protection), EXTERNAL_INTERFACES (External interfaces), FAULT_HANDLING (Fault handling), FUNCTIONAL (Functional), IMMUNITY_SHARED_HARDWARE (Immunity to unintended influence using shared hardware), INSTALLATION_AND_ACCEPTANCE_ONSITE (Installation and acceptance onsite), INTENDED_USE (Intended use), INTERFACES (System interfaces), INTEROPERABILITY (Interoperability), LEGAL (Legal), LOCALIZATION_AND_LANGUAGE_SUPPORT (Localization and language support), METHOD_OF_OPERATIONS_AND_MAINTENANCE (Method of operations and maintenance), PERFORMANCE (Performance), PRODUCT_CONFIGURATION_RECOVERY (Product configuration recovery by authenticated users), REGULATORY (Regulatory), RISK_CONTROL_INITIAL (Risk control based on initial risk assessment), SAFETY (Safety), SECURITY (Security/Privacy), SECURITY_DETECTION (Security detection), SOFTWARE_IO (Software I/O), SOFTWARE_SYSTEM (Software system), SOFTWARE_UPDATE_AND_DISTRIBUTION (Software update and distribution), SUSCEPTIBILITY_SHARED_HARDWARE (Susceptibility to unintended influence using shared hardware), SYSTEM (System), TECHNICAL (Technical), USABILITY (Usability), USE_CASE (Use case), USER (User/Marketing), USER_DOCUMENTATION_TO_BE_DEVELOPED (User documentation to be developed), USER_INTERFACE (User interface requirement), USER_INTERFACE_SPECIFICATION (User interface specification), USER_MAINTENANCE (User maintenance)

  • residualHarmProbabilityText (Residual likelihood of harm (P2); Jira field key residualHarmProbability)

  • residualOccurrenceProbabilityText (Residual likelihood of occurrence (P1); Jira field key residualOccurrenceProbability)

  • residualRiskEvaluationText (Residual risk evaluation; Jira field key residualRiskEvaluation)

  • residualSeverityText (Residual severity; Jira field key residualSeverity)

  • residualTotalProbability (Residual total probability)

  • resolvedBy (Resolved by)

  • riskAssessmentMethodologiesText (Risk assessment methodologies; Jira field key riskAssessmentMethodology)

  • riskBenefitAnalysis (Benefit-risk analysis)

  • riskClass (Safety risk class): CLASS_A (Class A), CLASS_B (Class B), CLASS_C (Class C), MDDS (MDDS), NONE (None)

  • riskControlMeasures (Risk control measures)

  • riskControlOptions (Risk controls description)

  • riskLevel (Risk level): MAJOR (Major), MINOR (Minor), MODERATE (Moderate), null (Unspecified)

  • risks (Introduced risks)

  • rootCauseAnalysis (Root cause analysis)

  • securityImpact (Security impact)

  • securityImpactJustification (Security impact justification)

  • securityRiskClass (Security risk class): HIGH (High), LOW (Low), MEDIUM (Medium)

  • sequenceOfEvents (Sequence of events)

  • softwareItemType (Software item type): CONTRACTED (Contracted), FUNCTION (Function), INTERFACE (Interface), LIBRARY (Library), MDDS (MDDS), MEDICAL_DEVICE (Medical Device), SAFETY (Safety), SECURITY (Security), SOUP (SOUP)

  • steps (Steps)

  • systemCategoriesText (System categories; Jira field key systemCategories)

  • testedBy (Dependency is tested by)

  • testEnvironments (Test environments)

  • testResult (Test result): FAIL (Fail), PASS (Pass), PASS_WITH_EXCEPTION (Pass with exception)

  • tests (Tested items)

  • testType (Test type): VALIDATION (Validation), VERIFICATION (Verification), VERIFICATION_INTEGRATION (Verification (integration)), VERIFICATION_REGRESSION (Verification (regression)), VERIFICATION_SYSTEM (Verification (system)), VERIFICATION_UNIT (Verification (unit))

  • usedDependencies (Used dependencies)

  • usedItems (Used items)

  • usedServices (Used services)

  • vulnerabilityReferences (References)

  • vulnerabilitySeverity (Severity classification)

  • vulnExternalUrl (External URL)

  • withdrawnAt (Withdrawn at)

  • Internal IDs
    here
    reference page on Custom Item Types
    reference page on Custom Relations
    webhooks API reference
    Agent Filter Setup Demo
    custom fields
    Unicode TR35
    TZ identifier
    {
      "Requirement": "Feature"
    }
    {
      "Requirement": "FEAT"
    }
    {
      "Feature": [
        "Requirement"
      ]
    }
    {
      "regions": "Regulatory regions"
    }
    {
      "regions": "The regulatory regions in which the item is applicable."
    }
    {
      "capaType": {
        "BACKEND": "Server"
      }
    }
    {
      "capaType": {
        "BACKEND": null
      }
    }
    {
      "Requirement": {
        "addedFields": [
          "impactScope",
          {
            "kind": "SYSTEM",
            "fieldKey": "impactCriticality"
          },
          {
            "kind": "CUSTOM",
            "name": "Customer commitment"
          }
        ],
        "removedFields": [
          "relevantStandards",
          "requirementContext"
        ]
      }
    }
    {
      "Acceptance criteria": {
        "type": "LEGACY_INFER_READONLY"
      },
      "Customer commitment date": {
        "type": "LEGACY_INFER_READONLY"
      },
      "Audit notes": {
        "type": "RICH_TEXT",
        "isEditableInKetryx": true,
        "syncToExternalSystem": true
      },
      "Internal feedback": {
        "type": "RICH_TEXT",
        "isEditableInKetryx": false,
        "syncToExternalSystem": true
      },
      "Customer contact data": {
        "type": "SHORT_TEXT",
        "isEditableInKetryx": true,
        "syncToExternalSystem": true
      },
      "Assigned team": {
        "type": "SELECT",
        "isEditableInKetryx": true,
        "syncToExternalSystem": true,
        "options": [
          {
            "value": "Team Red"
          },
          {
            "value": "Team Blue"
          },
          {
            "value": "Team Green",
            "deprecated": true
          }
        ]
      },
      "Supported operating systems": {
        "type": "MULTI_SELECT",
        "isEditableInKetryx": true,
        "syncToExternalSystem": true,
        "options": [
          {
            "value": "Ubuntu 22.04.2"
          },
          {
            "value": "Windows XP",
            "deprecated": true
          },
          {
            "value": "Windows 10"
          },
          {
            "value": "Windows 11"
          }
        ]
      },
      "Development start": {
        "type": "DATE",
        "syncToExternalSystem": true,
        "isEditableInKetryx": true
      },
      "Time of incident": {
        "type": "DATETIME",
        "syncToExternalSystem": true,
        "isEditableInKetryx": true
      }
    }
    {
      "HAS_PARENT": [
        "is child of"
      ]
    }
    {
      "testStatusNames": {
        "pass": [
          "PASSED",
          "OK"
        ],
        "passWithException": [
          "Passed with note"
        ],
        "fail": [
          "FAILED",
          "Not OK"
        ]
      }
    }
    {
      "testStatusNames": {
        "pass": [
          "OK"
        ],
        "passWithException": [
          "Passed with note"
        ],
        "fail": [
          "Not OK"
        ]
      }
    }
    [
      {
        "name": "Manual",
        "shortName": "MAN"
      },
      {
        "name": "SOP",
        "shortName": "SOP"
      }
    ]
    [
      {
        "lifecycle": "LONG_LIVED",
        "name": "Use Case",
        "shortName": "UC",
        "isEditableInKetryx": true,
        "fields": [
          {
            "kind": "SYSTEM",
            "fieldKey": "description",
            "isEditableInKetryx": true
          },
          {
            "kind": "SYSTEM",
            "fieldKey": "introducedInVersion",
            "isEditableInKetryx": true
          },
          {
            "kind": "SYSTEM",
            "fieldKey": "obsoleteInVersion",
            "isEditableInKetryx": true
          },
          {
            "kind": "SYSTEM",
            "fieldKey": "parentRequirements",
            "isEditableInKetryx": true
          },
          {
            "kind": "SYSTEM",
            "fieldKey": "relevantStandards",
            "isEditableInKetryx": true
          },
          {
            "kind": "SYSTEM",
            "fieldKey": "requirementType",
            "isEditableInKetryx": true
          },
          {
            "kind": "SYSTEM",
            "fieldKey": "requirementContext",
            "isEditableInKetryx": true
          },
          {
            "kind": "SYSTEM",
            "fieldKey": "risks",
            "isEditableInKetryx": true
          },
          {
            "kind": "SYSTEM",
            "fieldKey": "rationale",
            "isEditableInKetryx": true
          },
          {
            "kind": "SYSTEM",
            "fieldKey": "regions",
            "isEditableInKetryx": true
          },
          {
            "kind": "CUSTOM",
            "name": "Custom checkbox field",
            "isEditableInKetryx": true
          },
          {
            "kind": "CUSTOM",
            "name": "Custom paragraph field",
            "isEditableInKetryx": true
          },
          {
            "kind": "CUSTOM",
            "name": "Custom short text field",
            "isEditableInKetryx": true
          },
          {
            "kind": "CUSTOM",
            "name": "Custom date picker field",
            "isEditableInKetryx": true
          },
          {
            "kind": "CUSTOM",
            "name": "Custom radio button field",
            "isEditableInKetryx": true
          },
          {
            "kind": "CUSTOM",
            "name": "Custom date time picker field",
            "isEditableInKetryx": true
          },
          {
            "kind": "CUSTOM",
            "name": "Custom select list single choice field",
            "isEditableInKetryx": true
          },
          {
            "kind": "CUSTOM",
            "name": "Custom select list multiple choices field",
            "isEditableInKetryx": true
          }
        ]
      }
    ]
    {
      "[email protected]": "[email protected]"
    }
    {
      "SW_USES_HW": {
        "direction": "downstream",
        "fieldName": "Uses HW component",
        "reverseFieldName": "Is used by SW component",
        "relationName": "uses HW",
        "reverseRelationName": "is used by SW",
        "sourceItemTypes": [
          "Software Item Spec"
        ],
        "targetItemFilter": "type:HW",
        "traceabilityWidgetAddLabel": "Add used HW component"
      }
    }
    {
      "okta": {
        "clientId": "CLIENT_ID",
        "clientSecret": "CLIENT_SECRET",
        "issuer": "https://ORGNAME.okta.com",
        "allowDangerousEmailAccountLinking": true
      }
    }
    {
      "okta": {
        "clientId": "CLIENT_ID",
        "clientSecret": "CLIENT_SECRET",
        "issuer": "https://ORGNAME.okta.com",
        "allowDangerousEmailAccountLinking": true
      },
      "email": true
    }
    {
      "okta": {
        "clientId": "CLIENT_ID",
        "clientSecret": "CLIENT_SECRET",
        "issuer": "https://ORGNAME.okta.com",
        "allowDangerousEmailAccountLinking": true
      },
      "email": false
    }
    {
      "customOAuth": {
        "clientId": "CLIENT_ID",
        "clientSecret": "CLIENT_SECRET",
        "issuer": "https://ORGNAME.[identity provider].com",
        "allowDangerousEmailAccountLinking": true
      }
    }
    {
      "customOAuth": {
        "clientId": "CLIENT_ID",
        "clientSecret": "CLIENT_SECRET",
        "issuer": "https://ORGNAME.[identity provider].com",
        "allowDangerousEmailAccountLinking": true
      },
      "email": true
    }
    {
      "customOAuth": {
        "clientId": "CLIENT_ID",
        "clientSecret": "CLIENT_SECRET",
        "issuer": "https://ORGNAME.[identity provider].com",
        "allowDangerousEmailAccountLinking": true
      },
      "email": false
    }
    [
      {
        "issueType": "Folder",
        "itemType": "REQUIREMENT"
      },
      {
        "issueType": "Epic",
        "itemType": "REQUIREMENT"
      }
    ]
    [
      {
        "issueType": "Story",
        "labels": [
          "Ketryx"
        ],
        "itemType": "REQUIREMENT"
      }
    ]
    [
      {
        "issueType": "Story",
        "labels": [
          "Ketryx",
          "UseCase"
        ],
        "itemType": "REQUIREMENT",
        "fieldValues": {
          "requirementType": {
            "value": "Use case"
          }
        }
      },
      {
        "issueType": "Story",
        "labels": [
          "Ketryx"
        ],
        "itemType": "REQUIREMENT"
      }
    ]
    [
      {
        "issueType": "Epic",
        "itemType": "REQUIREMENT"
      },
      {
        "issueType": "Story",
        "itemType": "REQUIREMENT",
        "fields": {
          "parent": {
            "type": "references",
            "relationType": "HAS_PARENT",
            "targetSystem": "Jira"
          }
        }
      }
    ]
    {
      "Backlog": "OPEN",
      "Done": "RESOLVED"
    }
    {
      "Initial likelihood of occurrence (P1)": "initialOccurrenceProbabilityText",
      "Initial likelihood of occurrence (P2)": "initialHarmProbabilityText",
      "Initial severity": "initialSeverityText",
      "Initial risk evaluation": "initialRiskEvaluation",
      "Residual likelihood of occurrence (P1)": "residualOccurrenceProbabilityText",
      "Residual likelihood of occurrence (P2)": "residualHarmProbabilityText",
      "Residual severity": "residualSeverityText",
      "Residual risk evaluation": "residualRiskEvaluation"
    }
    {
      "My description field": "description"
    }
    {
      "My custom field": null
    }
    {
      "risksIssueTypeNames": [
        "Risk",
        "My Custom Risk type"
      ]
    }
    {
      "approvalsIssueTypeNames": [
        "Customer Requirement (migrated)",
        "SRS (migrated)",
        "Security and Privacy",
        "FMEA (SaMD Product)",
        "Security-Privacy-Assessment",
        "XRay Test",
        "Test Execution",
        "Defect"
      ],
      "traceabilityIssueTypeNames": [
        "Customer Requirement (migrated)",
        "SRS (migrated)",
        "Security and Privacy",
        "Security-Privacy-Assessment",
        "FMEA (SaMD Product)",
        "XRay Test",
        "Test Execution",
        "Defect"
      ]
    }
    {
      "detailView": {
        "enabled": true,
        "fields": [
          {
            "fieldKey": "description",
            "kind": "SYSTEM"
          },
          {
            "name": "Custom Field 1",
            "kind": "CUSTOM"
          }
        ],
        "extraFields": [
          "Extra Field 1"
        ]
      }
    }
    {
      "REQUIREMENT": {
        "Resolved": {
          "isApprovable": true,
          "approvalMeaning": "REVIEWED",
          "requiredFieldNames": [
            "Acceptance Criteria"
          ],
          "approvedTransitionStatus": "Closed",
          "invalidatedTransitionStatus": "Resolved",
          "shouldTransitionWhenApproved": true
        }
      }
    }
    {
      "REQUIREMENT": {
        "Resolved": {
          "isApprovable": true,
          "approvalMeaning": "REVIEWED",
          "approvedTransitionStatus": "Closed",
          "shouldTransitionWhenApproved": true
        },
        "Closed": {
          "isControlled": true,
          "shouldLockSourceItem": true
        }
      }
    }
    {
      "REQUIREMENT": {
        "Closed": {
          "isControlled": true,
          "acceptApproval": [ "Jama" ]
        }
      }
    }
    [
      {
        "itemFilter": "type:RQ and !\"Requirement type\":\"Intended use\"",
        "groupNamesToRemove": [
          "Quality Managers"
        ],
        "groupNamesToKeep": [
          "R&D Leads"
        ]
      }
    ]
    [
      "Risk"
    ]
    [
      {
        "name": "Search & Find",
        "suggestions": [
          {
            "label": "Find all anomalies with high criticality",
            "prompt": "List me all anomalies with 'Impact criticality' set to 'High'"
          }
        ]
      }
    ]
    {
      "providers": {
        "openAi": {
          "endpointUrl": "https://instance-yourcompany.openai.azure.com/openai/deployments/DeploymentYourCompanyGpt35t16k",
          "apiKey": "sk-proj-XXXXXXXXxxxxxxxxXXXXXXXXxxxxxxxxXXXXXXXXxxxxxxxx"
        }
      }
    }
    {
      "providers": {
        "openAi": {
          "endpointUrl": "https://api.openai.com/v1",
          "apiKey": "sk-proj-XXXXXXXXxxxxxxxxXXXXXXXXxxxxxxxxXXXXXXXXxxxxxxxx"
        }
      }
    }
    [
      "Cancel"
    ]
    [
      "Document ID"
    ]
    [
      "Acceptance Criteria",
      "Source"
    ]
    "Environment:\"internal\""
    [
      {
        "filter": "type:Anomaly and Resolution:\"Duplicate\" and not status:(Done, Cancel)",
        "message": "Duplicate anomalies need to have a status of either Done or Cancel"
      }
    ]
    [
      {
        "filter": "TC and RC and not intestplan:selected",
        "message": "All tests that are risk controls need to be in the test plan"
      }
    ]
    [
      {
        "id": "owasp-report",
        "filename": "owasp-report.json"
      },
      {
        "id": "code-coverage-report",
        "filename": "code-coverage-report.pdf"
      }
    ] 
    {
      "version": "3"
    }
    {
      "version": "3",
      "rtmApprovalEnabled": false,
      "enforceGreenCheck": true,
      "defaultColumnId": "designInput",
      "statusDefinitions": {
        "REQUIREMENT_MISSING": {
          "level": "ERROR"
        },
        "SPEC_MISSING": {
          "level": "ERROR"
        },
        "MANUAL_TEST_EXECUTION_MISSING": {
          "level": "ERROR"
        },
        "TEST_EXECUTION_MISSING": {
          "level": "ERROR"
        },
        "TEST_EXECUTION_MISSING_RESULT": {
          "level": "ERROR"
        },
        "VERIFICATION_TEST_MISSING": {
          "level": "ERROR"
        },
        "VALIDATION_TEST_MISSING": {
          "level": "ERROR"
        },
        "TEST_EXECUTION_FAILED": {
          "level": "ERROR"
        },
        "NOT_INCLUDED_IN_TEST_PLAN": {
          "level": "MUTED"
        },
        "TEST_EXECUTION_NOT_CONTROLLED": {
          "level": "WARNING"
        },
        "RISK_NOT_CONTROLLED": {
          "level": "WARNING"
        },
        "NOT_CONTROLLED": {
          "level": "WARNING"
        }
      },
      "rowStatusMessages": {
        "REQUIREMENT_MISSING": {
          "message": {
            "subject": "Use case",
            "description": "not covered by a design input."
          }
        },
        "SPEC_MISSING": {
          "message": {
            "subject": "Design input",
            "description": "not covered by a design output."
          }
        },
        "VERIFICATION_TEST_MISSING": {
          "message": {
            "subject": "Design output",
            "description": "not covered by a verification test."
          }
        },
        "VALIDATION_TEST_MISSING": {
          "message": {
            "subject": "Design input",
            "description": "not covered by a validation test."
          }
        },
        "MANUAL_TEST_EXECUTION_MISSING": {
          "message": {
            "subject": "Test Case",
            "description": "without manual test executions for automated tests."
          }
        },
        "TEST_EXECUTION_MISSING_RESULT": {
          "message": {
            "subject": "Test Execution",
            "description": "without a test result."
          }
        },
        "TEST_EXECUTION_MISSING": {
          "message": {
            "subject": "Test Case",
            "description": "without a test execution."
          }
        },
        "TEST_EXECUTION_FAILED": {
          "message": {
            "subject": "Test Execution",
            "description": "failed."
          }
        },
        "NOT_CONTROLLED": {
          "aliases": [
            "RISK_NOT_CONTROLLED",
            "TEST_EXECUTION_NOT_CONTROLLED"
          ],
          "message": {
            "subject": "Item",
            "description": "not fully approved yet."
          }
        }
      },
      "cellStatusMessages": [
        {
          "if": [
            "REQUIREMENT_MISSING"
          ],
          "message": "Requirement missing"
        },
        {
          "if": [
            "SPEC_MISSING",
            "VERIFICATION_TEST_MISSING",
            "VALIDATION_TEST_MISSING"
          ],
          "message": "Specification and test cases missing"
        },
        {
          "if": [
            "SPEC_MISSING",
            "VERIFICATION_TEST_MISSING"
          ],
          "message": "Specification and test case missing"
        },
        {
          "if": [
            "SPEC_MISSING",
            "VALIDATION_TEST_MISSING"
          ],
          "message": "Specification and test case missing"
        },
        {
          "if": [
            "SPEC_MISSING"
          ],
          "message": "Specification missing"
        },
        {
          "if": [
            "VERIFICATION_TEST_MISSING"
          ],
          "message": "Verification test case missing"
        },
        {
          "if": [
            "VALIDATION_TEST_MISSING"
          ],
          "message": "Validation test case missing"
        },
        {
          "if": [
            "NOT_INCLUDED_IN_TEST_PLAN"
          ],
          "message": "Not included in test plan"
        },
        {
          "if": [
            "TEST_EXECUTION_MISSING_RESULT"
          ],
          "message": "Test execution result missing"
        },
        {
          "if": [
            "TEST_EXECUTION_MISSING"
          ],
          "message": "Test execution missing"
        },
        {
          "if": [
            "MANUAL_TEST_EXECUTION_MISSING"
          ],
          "message": "Manual test execution missing for automated test"
        },
        {
          "if": [
            "TEST_EXECUTION_FAILED"
          ],
          "message": "Test execution failed"
        },
        {
          "if": [
            "TEST_EXECUTION_NOT_CONTROLLED"
          ],
          "message": "Missing approval for Manual Test Execution"
        },
        {
          "if": [
            "TEST_EXECUTION_NOT_CONTROLLED"
          ],
          "message": "Missing approval for Manual Test Execution"
        },
        {
          "if": [
            "RISK_NOT_CONTROLLED"
          ],
          "message": "Missing approval for Risk"
        },
        {
          "if": [
            "NOT_CONTROLLED"
          ],
          "message": "Missing approval"
        }
      ],
      "columns": [
        {
          "columnId": "useCase",
          "title": "Use cases",
          "kind": "design",
          "itemFilter": "type:RQ and \"Requirement type\":\"Use case\""
        },
        {
          "columnId": "designInput",
          "title": "Design Input",
          "kind": "design",
          "itemFilter": "type:RQ and not \"Requirement type\":\"Use case\" and not \"Requirement type\":\"Intended use\"",
          "relations": [
            {
              "kind": "indirect",
              "relationType": "HAS_PARENT",
              "referencedColumnId": "useCase"
            }
          ]
        },
        {
          "columnId": "designOutput",
          "title": "Design Output",
          "kind": "design",
          "itemFilter": "type:SW or type:HW",
          "relations": [
            {
              "kind": "direct",
              "relationType": "FULFILLS",
              "referencedColumnId": "designInput"
            }
          ]
        },
        {
          "columnId": "verificationTest",
          "title": "Verification test",
          "kind": "testing",
          "testedItemFilter": "type:SW or type:HW",
          "referencedColumnIds": [
            "designOutput"
          ]
        },
        {
          "columnId": "validationTest",
          "title": "Validation test",
          "kind": "testing",
          "testedItemFilter": "type:RQ",
          "referencedColumnIds": [
            "designInput"
          ]
        }
      ],
      "checks": [
        {
          "checkId": "useCasesCovered",
          "kind": "coverage",
          "title": "Use cases",
          "subtitle": "Covered by design input",
          "filterDescription": "use cases not covered by a design input",
          "columnIds": [
            "useCase"
          ],
          "coveredByColumnId": "designInput",
          "checkCrossReferences": true,
          "onFail": {
            "status": "REQUIREMENT_MISSING"
          }
        },
        {
          "checkId": "designInputsCovered",
          "kind": "coverage",
          "title": "Design input",
          "subtitle": "Covered by design outputs",
          "filterDescription": "design inputs not covered by a design output",
          "columnIds": [
            "designInput"
          ],
          "coveredByColumnId": "designOutput",
          "checkCrossReferences": true,
          "onFail": {
            "status": "SPEC_MISSING"
          }
        },
        {
          "checkId": "verificationTestCoverage",
          "kind": "coverage",
          "title": "Verification",
          "subtitle": "Design outputs covered by tests",
          "filterDescription": "design outputs not covered by a verification test case",
          "columnIds": [
            "designOutput"
          ],
          "coveredByColumnId": "verificationTest",
          "checkCrossReferences": true,
          "onFail": {
            "status": "VERIFICATION_TEST_MISSING"
          }
        },
        {
          "checkId": "validationTestCoverage",
          "kind": "coverage",
          "title": "Validation",
          "subtitle": "Design inputs covered by tests",
          "filterDescription": "design inputs not covered by a validation test case",
          "columnIds": [
            "designInput"
          ],
          "coveredByColumnId": "validationTest",
          "checkCrossReferences": true,
          "onFail": {
            "status": "VALIDATION_TEST_MISSING"
          }
        },
        {
          "checkId": "testExecutions",
          "kind": "testExecutions",
          "title": "Test executions",
          "subtitle": "Created within test plan",
          "filterDescription": "test cases missing a test execution or test result",
          "onMissingManualExecution": {
            "status": "MANUAL_TEST_EXECUTION_MISSING"
          },
          "onMissingExecution": {
            "status": "TEST_EXECUTION_MISSING"
          },
          "onMissingExecutionResult": {
            "status": "TEST_EXECUTION_MISSING_RESULT"
          },
          "onNotInTestPlan": {
            "status": "NOT_INCLUDED_IN_TEST_PLAN"
          }
        },
        {
          "checkId": "failedTests",
          "kind": "failedTests",
          "title": "Failing tests",
          "subtitle": "Within test plan",
          "filterDescription": "failing test executions",
          "onFail": {
            "status": "TEST_EXECUTION_FAILED"
          }
        },
        {
          "checkId": "allItemsControlled",
          "kind": "controlled",
          "title": "Controlled",
          "subtitle": "Items fully approved",
          "filterDescription": "uncontrolled items that need to be approved",
          "checkCrossReferences": true,
          "onTestExecutionNotControlled": {
            "status": "TEST_EXECUTION_NOT_CONTROLLED"
          },
          "onRiskNotControlled": {
            "status": "RISK_NOT_CONTROLLED"
          },
          "onItemNotControlled": {
            "status": "NOT_CONTROLLED"
          }
        }
      ],
      "columnForTestsWithoutTestedItem": "validationTest"
    }
    {
      "mode": "SYSTEM_REQUIREMENT_AND_SPECIFICATION"
    }
    {
      "mode": "REQUIREMENT_VALIDATION_ONLY"
    }
    {
      "mode": "SYSTEM_REQUIREMENT_AND_SPECIFICATION",
      "columnNames": {
        "USE_CASE_COLUMN": "User requirement"
      },
      "useCaseColumnRequirementTypes": [
        "USE_CASE",
        "INTENDED_USE"
      ],
      "ignoredRequirementTypes": []
    }
    {
      "rtmApprovalEnabled": true
    }
    [
      {
        "name": "RTM v3 standard",
        "config": {
          "version": "3"
        },
        "enforceGreenCheck": true
      },
      {
        "name": "RTM v3 full",
        "config": {
          "version": "3",
          "rtmApprovalEnabled": false,
          "enforceGreenCheck": true,
          "defaultColumnId": "designInput",
          "statusDefinitions": {
            "REQUIREMENT_MISSING": {
              "level": "ERROR"
            },
            "SPEC_MISSING": {
              "level": "ERROR"
            },
            "MANUAL_TEST_EXECUTION_MISSING": {
              "level": "ERROR"
            },
            "TEST_EXECUTION_MISSING": {
              "level": "ERROR"
            },
            "TEST_EXECUTION_MISSING_RESULT": {
              "level": "ERROR"
            },
            "VERIFICATION_TEST_MISSING": {
              "level": "ERROR"
            },
            "VALIDATION_TEST_MISSING": {
              "level": "ERROR"
            },
            "TEST_EXECUTION_FAILED": {
              "level": "ERROR"
            },
            "NOT_INCLUDED_IN_TEST_PLAN": {
              "level": "MUTED"
            },
            "TEST_EXECUTION_NOT_CONTROLLED": {
              "level": "WARNING"
            },
            "RISK_NOT_CONTROLLED": {
              "level": "WARNING"
            },
            "NOT_CONTROLLED": {
              "level": "WARNING"
            }
          },
          "rowStatusMessages": {
            "REQUIREMENT_MISSING": {
              "message": {
                "subject": "Use case",
                "description": "not covered by a design input."
              }
            },
            "SPEC_MISSING": {
              "message": {
                "subject": "Design input",
                "description": "not covered by a design output."
              }
            },
            "VERIFICATION_TEST_MISSING": {
              "message": {
                "subject": "Design output",
                "description": "not covered by a verification test."
              }
            },
            "VALIDATION_TEST_MISSING": {
              "message": {
                "subject": "Design input",
                "description": "not covered by a validation test."
              }
            },
            "MANUAL_TEST_EXECUTION_MISSING": {
              "message": {
                "subject": "Test Case",
                "description": "without manual test executions for automated tests."
              }
            },
            "TEST_EXECUTION_MISSING_RESULT": {
              "message": {
                "subject": "Test Execution",
                "description": "without a test result."
              }
            },
            "TEST_EXECUTION_MISSING": {
              "message": {
                "subject": "Test Case",
                "description": "without a test execution."
              }
            },
            "TEST_EXECUTION_FAILED": {
              "message": {
                "subject": "Test Execution",
                "description": "failed."
              }
            },
            "NOT_CONTROLLED": {
              "aliases": [
                "RISK_NOT_CONTROLLED",
                "TEST_EXECUTION_NOT_CONTROLLED"
              ],
              "message": {
                "subject": "Item",
                "description": "not fully approved yet."
              }
            }
          },
          "cellStatusMessages": [
            {
              "if": [
                "REQUIREMENT_MISSING"
              ],
              "message": "Requirement missing"
            },
            {
              "if": [
                "SPEC_MISSING",
                "VERIFICATION_TEST_MISSING",
                "VALIDATION_TEST_MISSING"
              ],
              "message": "Specification and test cases missing"
            },
            {
              "if": [
                "SPEC_MISSING",
                "VERIFICATION_TEST_MISSING"
              ],
              "message": "Specification and test case missing"
            },
            {
              "if": [
                "SPEC_MISSING",
                "VALIDATION_TEST_MISSING"
              ],
              "message": "Specification and test case missing"
            },
            {
              "if": [
                "SPEC_MISSING"
              ],
              "message": "Specification missing"
            },
            {
              "if": [
                "VERIFICATION_TEST_MISSING"
              ],
              "message": "Verification test case missing"
            },
            {
              "if": [
                "VALIDATION_TEST_MISSING"
              ],
              "message": "Validation test case missing"
            },
            {
              "if": [
                "NOT_INCLUDED_IN_TEST_PLAN"
              ],
              "message": "Not included in test plan"
            },
            {
              "if": [
                "TEST_EXECUTION_MISSING_RESULT"
              ],
              "message": "Test execution result missing"
            },
            {
              "if": [
                "TEST_EXECUTION_MISSING"
              ],
              "message": "Test execution missing"
            },
            {
              "if": [
                "MANUAL_TEST_EXECUTION_MISSING"
              ],
              "message": "Manual test execution missing for automated test"
            },
            {
              "if": [
                "TEST_EXECUTION_FAILED"
              ],
              "message": "Test execution failed"
            },
            {
              "if": [
                "TEST_EXECUTION_NOT_CONTROLLED"
              ],
              "message": "Missing approval for Manual Test Execution"
            },
            {
              "if": [
                "TEST_EXECUTION_NOT_CONTROLLED"
              ],
              "message": "Missing approval for Manual Test Execution"
            },
            {
              "if": [
                "RISK_NOT_CONTROLLED"
              ],
              "message": "Missing approval for Risk"
            },
            {
              "if": [
                "NOT_CONTROLLED"
              ],
              "message": "Missing approval"
            }
          ],
          "columns": [
            {
              "columnId": "useCase",
              "title": "Use cases",
              "kind": "design",
              "itemFilter": "type:RQ and \"Requirement type\":\"Use case\""
            },
            {
              "columnId": "designInput",
              "title": "Design Input",
              "kind": "design",
              "itemFilter": "type:RQ and not \"Requirement type\":\"Use case\" and not \"Requirement type\":\"Intended use\"",
              "relations": [
                {
                  "kind": "indirect",
                  "relationType": "HAS_PARENT",
                  "referencedColumnId": "useCase"
                }
              ]
            },
            {
              "columnId": "designOutput",
              "title": "Design Output",
              "kind": "design",
              "itemFilter": "type:SW or type:HW",
              "relations": [
                {
                  "kind": "direct",
                  "relationType": "FULFILLS",
                  "referencedColumnId": "designInput"
                }
              ]
            },
            {
              "columnId": "verificationTest",
              "title": "Verification test",
              "kind": "testing",
              "testedItemFilter": "type:SW or type:HW",
              "referencedColumnIds": [
                "designOutput"
              ]
            },
            {
              "columnId": "validationTest",
              "title": "Validation test",
              "kind": "testing",
              "testedItemFilter": "type:RQ",
              "referencedColumnIds": [
                "designInput"
              ]
            }
          ],
          "checks": [
            {
              "checkId": "useCasesCovered",
              "kind": "coverage",
              "title": "Use cases",
              "subtitle": "Covered by design input",
              "filterDescription": "use cases not covered by a design input",
              "columnIds": [
                "useCase"
              ],
              "coveredByColumnId": "designInput",
              "checkCrossReferences": true,
              "onFail": {
                "status": "REQUIREMENT_MISSING"
              }
            },
            {
              "checkId": "designInputsCovered",
              "kind": "coverage",
              "title": "Design input",
              "subtitle": "Covered by design outputs",
              "filterDescription": "design inputs not covered by a design output",
              "columnIds": [
                "designInput"
              ],
              "coveredByColumnId": "designOutput",
              "checkCrossReferences": true,
              "onFail": {
                "status": "SPEC_MISSING"
              }
            },
            {
              "checkId": "verificationTestCoverage",
              "kind": "coverage",
              "title": "Verification",
              "subtitle": "Design outputs covered by tests",
              "filterDescription": "design outputs not covered by a verification test case",
              "columnIds": [
                "designOutput"
              ],
              "coveredByColumnId": "verificationTest",
              "checkCrossReferences": true,
              "onFail": {
                "status": "VERIFICATION_TEST_MISSING"
              }
            },
            {
              "checkId": "validationTestCoverage",
              "kind": "coverage",
              "title": "Validation",
              "subtitle": "Design inputs covered by tests",
              "filterDescription": "design inputs not covered by a validation test case",
              "columnIds": [
                "designInput"
              ],
              "coveredByColumnId": "validationTest",
              "checkCrossReferences": true,
              "onFail": {
                "status": "VALIDATION_TEST_MISSING"
              }
            },
            {
              "checkId": "testExecutions",
              "kind": "testExecutions",
              "title": "Test executions",
              "subtitle": "Created within test plan",
              "filterDescription": "test cases missing a test execution or test result",
              "onMissingManualExecution": {
                "status": "MANUAL_TEST_EXECUTION_MISSING"
              },
              "onMissingExecution": {
                "status": "TEST_EXECUTION_MISSING"
              },
              "onMissingExecutionResult": {
                "status": "TEST_EXECUTION_MISSING_RESULT"
              },
              "onNotInTestPlan": {
                "status": "NOT_INCLUDED_IN_TEST_PLAN"
              }
            },
            {
              "checkId": "failedTests",
              "kind": "failedTests",
              "title": "Failing tests",
              "subtitle": "Within test plan",
              "filterDescription": "failing test executions",
              "onFail": {
                "status": "TEST_EXECUTION_FAILED"
              }
            },
            {
              "checkId": "allItemsControlled",
              "kind": "controlled",
              "title": "Controlled",
              "subtitle": "Items fully approved",
              "filterDescription": "uncontrolled items that need to be approved",
              "checkCrossReferences": true,
              "onTestExecutionNotControlled": {
                "status": "TEST_EXECUTION_NOT_CONTROLLED"
              },
              "onRiskNotControlled": {
                "status": "RISK_NOT_CONTROLLED"
              },
              "onItemNotControlled": {
                "status": "NOT_CONTROLLED"
              }
            }
          ],
          "columnForTestsWithoutTestedItem": "validationTest"
        },
        "enforceGreenCheck": false
      }
    ]
    {
      "enableLegacyTraceabilityWidgetButton": true,
      "mapTestCaseToIssueType": {
        "name": "Test"
      }
    }
    "$0(.$0)(.$0)[-$x][+$x]"
    "$A(.$A)(.$A)"
    {
      "regions": [
        {
          "value": "EU"
        },
        {
          "value": "US"
        }
      ]
    }
    {
      "*": {
        "introducedFieldKeys": [
          "extra:Released Version",
          "jira:fixVersions"
        ]
      },
      "Anomaly": {
        "introducedFieldKeys": [
          "extra:Released Version"
        ],
        "obsoleteFieldKeys": [
          "jira:fixVersions"
        ]
      }
    }
    {
      "autoAddFields": true,
      "threatRichTextFields": ["Rationale for connecting threats"]
    }
    {
      "threatRichTextFields": [
        "Justification for connecting threats"
      ]
    }
    {
      "threatRichTextFields": []
    }
    {
      "threatRichTextFields": [
        "Rationale for connecting threats",
        "Suggested mitigation"
      ]
    }
    {
      "autoAddFields": false
    }
    {
      "autoAddFields": true,
      "assessmentHeading": "Vulnerability impact assessment",
      "resolutionLabel": "Resolution",
      "resolutionOptions": [
        "Not relevant",
        "Exploitable",
        "Poses threat"
      ],
      "resolutionRichTextFields": [
        "Justification for resolution"
      ],
      "riskRichTextFields": [
        "Rationale for connecting risks"
      ],
      "mitigationRichTextFields": [
        "Rationale for connecting mitigations"
      ],
      "mitigationItemTypes": [],
      "tableConfiguration": {
        "externalId": false,
        "library": false,
        "originalSeverity": false,
        "kev": false,
        "modifiedDate": false,
        "cisaVulnerabilityName": false,
        "cisaExploitAdd": false,
        "cisaActionDue": false,
        "cisaRequiredAction": false,
        "risks": true,
        "mitigations": true,
        "resolution": true
      }
    }
    {
      "assessmentHeading": "Vulnerability risk analysis"
    }
    {
      "resolutionLabel": "Overall risk level",
      "resolutionOptions": [
        "None",
        "Low",
        "Medium",
        "High"
      ],
      "resolutionRichTextFields": [
        "Reasoning for risk level"
      ]
    }
    {
      "riskRichTextFields": [
        "Reasoning for related risks"
      ],
      "mitigationRichTextFields": [
        "Reasoning for related mitigations"
      ]
    }
    {
      "resolutionRichTextFields": [],
      "riskRichTextFields": [],
      "mitigationRichTextFields": []
    }
    {
      "mitigationItemTypes": [
        "SOFTWARE_ITEM",
        "TEST_PROTOCOL"
      ]
    }
    {
      "tableConfiguration": {
        "risks": false,
        "mitigations": false,
        "resolution": false
      }
    }
    {
      "autoAddFields": false
    }
    [
      "Requirement",
      "Software Item Spec",
      "Test Case"
    ]
    [
      "Requirement",
      "Folder",
      "Test Case"
    ]
    {
      "recordApproval": {
        "url": "https://example.com/api/on-record-approval"
      }
    }
    {
      "releaseApproval": {
        "url": "https://example.com/api/on-record-approval",
        "method": "GET",
        "authHeader": "Bearer some-secret-token-to-be-sent-along"
      }
    }
    [
      {
        "name": "My filter",
        "kqlFilter": "RQ",
        "screens": [
          "ALL_ITEMS",
          "RISK_MANAGEMENT",
          "TRACEABILITY"
        ]
      },
      {
        "name": "My other filter that is shown on all screens",
        "kqlFilter": "SW or HW"
      },
      {
        "name": "Completely hidden filter that is shown on no screens",
        "kqlFilter": "RISK",
        "screens": []
      }
    ]
    {
        "name": "Requirement Conflict Detection Filter",
        "kqlFilter": "has-agent-finding-from:\"Change Request Affected Item Agent\"",
    }
    {
      "mappingSchemaVersion": "1.0.0",
      "mappingRules": [
        {
          "source": "$.component.type",
          "target": {
            "customField": "Software component type"
          }
        }
      ]
    }
    {
      "mappingSchemaVersion": "1.0.0",
      "mappingRules": [
        {
          "source": "$.doc.metadata.timestamp",
          "target": {
            "customField": "SBOM generation date"
          }
        }
      ]
    }
    {
      "mappingSchemaVersion": "1.0.0",
      "mappingRules": [
        {
          "source": "$.component.type",
          "target": {
            "customField": "Component Category"
          },
          "enumMapping": {
            "library": "Software Library",
            "framework": "Software Framework",
            "application": "Application"
          }
        }
      ]
    }
    {
      "mappingSchemaVersion": "1.0.0",
      "mappingRules": [
        {
          "source": "$.component.externalReferences[*].type",
          "target": {
            "customField": "Reference Types"
          }
        }
      ]
    }
    {
      "mappingSchemaVersion": "1.0.0",
      "mappingRules": [
        {
          "source": "$.component.properties[?(@.name=='Build Number')].value",
          "target": {
            "customField": "Build Number"
          },
          "defaultValue": "N/A"
        }
      ]
    }
    {
      "mappingSchemaVersion": "1.0.0",
      "supportedVersions": [
        "1.4",
        "1.5",
        "1.6"
      ],
      "mappingRules": [
        {
          "description": "Map from component.author for spec versions < 1.6",
          "appliesToVersion": [
            "1.4",
            "1.5"
          ],
          "source": "$.component.author",
          "target": {
            "customField": "Component Author"
          }
        },
        {
          "description": "Map from component.authors for spec version 1.6",
          "appliesToVersion": [
            "1.6"
          ],
          "source": "$.component.authors[*].name",
          "target": {
            "customField": "Component Author"
          }
        }
      ]
    }
    {
      "mappingSchemaVersion": "1.0.0",
      "mappingRules": [
        {
          "source": "$.doc.vulnerabilities[?(@.affects[?(@.ref === @root.component['bom-ref'])])].id",
          "target": {
            "customField": "Associated Vulnerabilities"
          }
        }
      ]
    }
    [
      {
        "version": "3.1",
        "confidentialityRequirement": "H",
        "integrityRequirement": "M",
        "availabilityRequirement": "L"
      }
    ]
    [
      {
        "version": "4.0",
        "confidentialityRequirement": "H",
        "modifiedAttackVector": "L",
        "modifiedAttackComplexity": "H"
      }
    ]
    [
      {
        "version": "3.1",
        "confidentialityRequirement": "H",
        "integrityRequirement": "H",
        "availabilityRequirement": "M",
        "modifiedAttackVector": "A"
      },
      {
        "version": "4.0",
        "confidentialityRequirement": "H",
        "integrityRequirement": "H",
        "modifiedAttackVector": "N",
        "modifiedAttackComplexity": "L"
      }
    ]
    [
      "Jira",
      "TestRail",
      "Jama",
      "ADO"
    ]
        For each mapped item type, you can specify the following (see examples for each below):
    [
      {
        "workItemType": "CR",
        "itemType": "CHANGE_REQUEST"
      }
    ]
    [
      {
        "workItemType": "*",
        "fields": {
          "name": "title",
          "description": "description"
        }
      },
      {
        "workItemType": "Risk evaluation",
        "itemType": "RISK",
        "fields": {
          "description": "sequenceOfEvents"
        }
      }
    ]
    [
      {
        "workItemType": "Software Specification",
        "itemType": "SOFTWARE_ITEM",
        "fields": {
          "Tests Jira item": {
            "type": "references",
            "relationType": "TESTS",
            "targetSystem": "Jira"
          }
        }
      },
      {
        "workItemType": "Risk evaluation",
        "itemType": "RISK",
        "fields": {
          "isControlledBy": {
            "type": "references",
            "relationType": "IS_RISK_CONTROLLED_BY",
            "targetSystem": "Git"
          }
        }
      }
    ]
    [
      {
        "itemType": "REQUIREMENT",
        "workItemType": "Issue",
        "fields": {
          "Title": "title",
          "State": "state",
          "Requirement Type": "requirementType",
          "Description": "description",
          "Steps": "steps",
          "Benefit risk analysis": "riskBenefitAnalysis",
          "Harm": "harm",
          "Hazard": "hazard",
          "Hazardous situation": "hazardousSituation",
          "Hazard type": "hazardTypeText",
          "Probability": "initialOccurrenceProbabilityText",
          "Risk controls description": "riskControlOptions",
          "Sequence of events": "sequenceOfEvents",
          "Introduced in version": "introducedInVersion",
          "Obsolete in version": "obsoleteInVersion"
        }
      },
      {
        "itemType": "REQUIREMENT",
        "workItemType": "Feature",
        "fields": {
          "Title": "title",
          "State": "state",
          "Requirement Type": "requirementType",
          "Description": "description",
          "Steps": "steps",
          "Benefit risk analysis": "riskBenefitAnalysis",
          "Harm": "harm",
          "Hazard": "hazard",
          "Hazardous situation": "hazardousSituation",
          "Hazard type": "hazardTypeText",
          "Probability": "initialOccurrenceProbabilityText",
          "Risk controls description": "riskControlOptions",
          "Sequence of events": "sequenceOfEvents",
          "Introduced in version": "introducedInVersion",
          "Obsolete in version": "obsoleteInVersion"
        }
      },
      {
        "itemType": "REQUIREMENT",
        "workItemType": "Epic",
        "fields": {
          "Title": "title",
          "State": "state",
          "Requirement Type": "requirementType",
          "Description": "description",
          "Steps": "steps",
          "Benefit risk analysis": "riskBenefitAnalysis",
          "Harm": "harm",
          "Hazard": "hazard",
          "Hazardous situation": "hazardousSituation",
          "Hazard type": "hazardTypeText",
          "Probability": "initialOccurrenceProbabilityText",
          "Risk controls description": "riskControlOptions",
          "Sequence of events": "sequenceOfEvents",
          "Introduced in version": "introducedInVersion",
          "Obsolete in version": "obsoleteInVersion"
        }
      },
      {
        "itemType": "TEST_PROTOCOL",
        "workItemType": "Test Case",
        "fields": {
          "Title": "title",
          "State": "state",
          "Requirement Type": "requirementType",
          "Description": "description",
          "Steps": "steps",
          "Benefit risk analysis": "riskBenefitAnalysis",
          "Harm": "harm",
          "Hazard": "hazard",
          "Hazardous situation": "hazardousSituation",
          "Hazard type": "hazardTypeText",
          "Probability": "initialOccurrenceProbabilityText",
          "Risk controls description": "riskControlOptions",
          "Sequence of events": "sequenceOfEvents",
          "Introduced in version": "introducedInVersion",
          "Obsolete in version": "obsoleteInVersion"
        }
      },
      {
        "itemType": "TEST_EXECUTION",
        "workItemType": "Test Execution",
        "fields": {
          "Title": "title",
          "State": "state",
          "Requirement Type": "requirementType",
          "Description": "description",
          "Steps": "steps",
          "Benefit risk analysis": "riskBenefitAnalysis",
          "Harm": "harm",
          "Hazard": "hazard",
          "Hazardous situation": "hazardousSituation",
          "Hazard type": "hazardTypeText",
          "Probability": "initialOccurrenceProbabilityText",
          "Risk controls description": "riskControlOptions",
          "Sequence of events": "sequenceOfEvents",
          "Introduced in version": "introducedInVersion",
          "Obsolete in version": "obsoleteInVersion"
        }
      },
      {
        "itemType": "TEST_PLAN",
        "workItemType": "Test Plan",
        "fields": {
          "Title": "title",
          "State": "state",
          "Requirement Type": "requirementType",
          "Description": "description",
          "Steps": "steps",
          "Benefit risk analysis": "riskBenefitAnalysis",
          "Harm": "harm",
          "Hazard": "hazard",
          "Hazardous situation": "hazardousSituation",
          "Hazard type": "hazardTypeText",
          "Probability": "initialOccurrenceProbabilityText",
          "Risk controls description": "riskControlOptions",
          "Sequence of events": "sequenceOfEvents",
          "Introduced in version": "introducedInVersion",
          "Obsolete in version": "obsoleteInVersion"
        }
      },
      {
        "itemType": "ANOMALY",
        "workItemType": "Bug",
        "fields": {
          "Title": "title",
          "State": "state",
          "Requirement Type": "requirementType",
          "Description": "description",
          "Steps": "steps",
          "Benefit risk analysis": "riskBenefitAnalysis",
          "Harm": "harm",
          "Hazard": "hazard",
          "Hazardous situation": "hazardousSituation",
          "Hazard type": "hazardTypeText",
          "Probability": "initialOccurrenceProbabilityText",
          "Risk controls description": "riskControlOptions",
          "Sequence of events": "sequenceOfEvents",
          "Introduced in version": "introducedInVersion",
          "Obsolete in version": "obsoleteInVersion"
        }
      },
      {
        "itemType": "TASK",
        "workItemType": "Task",
        "fields": {
          "Title": "title",
          "State": "state",
          "Requirement Type": "requirementType",
          "Description": "description",
          "Steps": "steps",
          "Benefit risk analysis": "riskBenefitAnalysis",
          "Harm": "harm",
          "Hazard": "hazard",
          "Hazardous situation": "hazardousSituation",
          "Hazard type": "hazardTypeText",
          "Probability": "initialOccurrenceProbabilityText",
          "Risk controls description": "riskControlOptions",
          "Sequence of events": "sequenceOfEvents",
          "Introduced in version": "introducedInVersion",
          "Obsolete in version": "obsoleteInVersion"
        }
      },
      {
        "itemType": "RISK",
        "workItemType": "Risk",
        "fields": {
          "Title": "title",
          "State": "state",
          "Requirement Type": "requirementType",
          "Description": "description",
          "Steps": "steps",
          "Benefit risk analysis": "riskBenefitAnalysis",
          "Harm": "harm",
          "Hazard": "hazard",
          "Hazardous situation": "hazardousSituation",
          "Hazard type": "hazardTypeText",
          "Probability": "initialOccurrenceProbabilityText",
          "Risk controls description": "riskControlOptions",
          "Sequence of events": "sequenceOfEvents",
          "Introduced in version": "introducedInVersion",
          "Obsolete in version": "obsoleteInVersion"
        }
      },
      {
        "itemType": "REQUIREMENT",
        "workItemType": "Requirement",
        "fields": {
          "Title": "title",
          "State": "state",
          "Requirement Type": "requirementType",
          "Description": "description",
          "Steps": "steps",
          "Benefit risk analysis": "riskBenefitAnalysis",
          "Harm": "harm",
          "Hazard": "hazard",
          "Hazardous situation": "hazardousSituation",
          "Hazard type": "hazardTypeText",
          "Probability": "initialOccurrenceProbabilityText",
          "Risk controls description": "riskControlOptions",
          "Sequence of events": "sequenceOfEvents",
          "Introduced in version": "introducedInVersion",
          "Obsolete in version": "obsoleteInVersion"
        }
      }
    ]
    {
      "Proposed": "OPEN",
      "Design": "OPEN",
      "Completed": "CLOSED"
    }
    {
      "Proposed": "OPEN",
      "Design": "OPEN",
      "Planning": "OPEN",
      "Active": "RESOLVED",
      "In Progress": "IN_PROGRESS",
      "Ready": "RESOLVED",
      "Resolved": "RESOLVED",
      "Closed": "CLOSED",
      "Completed": "CLOSED",
      "Inactive": "CLOSED"
    }
    {
      "Tested By": "TESTS"
    }
    {
      "Parent": "HAS_PARENT"
    }
    {
      "Microsoft.VSTS.Common.Affects-Forward": "AFFECTS",
      "System.LinkTypes.Hierarchy-Forward": "HAS_PARENT",
      "System.LinkTypes.Related": "RELATES_TO",
      "Microsoft.VSTS.Common.TestedBy-Forward": "TESTS"
    }
    {
      "syncFilter": {
        "milestonePattern": ".*",
        "baselinePattern": ".*"
      },
      "syncOptions": {
        "includeMasterBaseline": true,
        "includeCompletedItems": {
          "milestones": true,
          "baselines": true,
          "runs": true,
          "plans": true
        }
      },
      "syncScope": "All"
    }
    {
      "syncFilter": {
        "milestonePattern": "v\\d+\\.\\d+",
        "baselinePattern": "master"
      },
      "syncOptions": {
        "includeMasterBaseline": true,
        "includeCompletedItems": {
          "milestones": false,
          "baselines": false,
          "runs": false,
          "plans": false
        }
      },
      "syncScope": "Milestone"
    }
    {
      "TEST_PROTOCOL": {
        "DEFAULT": {
          "refs": "refs",
          "description": "custom_description",
          "introducedInVersion": "custom_prd_ver",
          "steps": "custom_steps_separated",
          "expectedBehavior": "custom_expected"
        },
        "My Custom Template": {
          "refs": "refs",
          "description": "custom_description_for_steps",
          "introducedInVersion": "custom_version",
          "steps": "custom_steps",
          "expectedBehavior": "custom_expected_behavior"
        }
      },
      "TEST_EXECUTION": {
        "description": "custom_execution_desc",
        "introducedInVersion": "custom_exec_prd_ver",
        "steps": "custom_step_results",
        "expectedBehavior": "custom_expected_exec"
      },
      "TEST_PLAN": {
        "refs": "refs",
        "description": "custom_plan_desc"
      }
    }
    {
      "Backlog": "OPEN",
      "Done": "RESOLVED"
    }
    {
      "passed": "PASS",
      "failed": "FAIL"
    }
    [
      {
        "sourceField": "my_custom_field",
        "relationType": "AFFECTS",
        "targetSystem": "Jira"
      }
    ]
    [
      {
        "jamaItemType": "CR",
        "itemType": "CHANGE_REQUEST"
      },
      {
        "jamaItemType": [
          "RISK",
          "HRM",
          "HAZ"
        ],
        "itemType": "RISK"
      }
    ]
    [
      {
        "jamaItemCategory": "DEFECT",
        "itemType": "ANOMALY"
      }
    ]
    [
      {
        "jamaItemType": "Use Case",
        "itemType": "REQUIREMENT",
        "fieldValues": {
          "requirementType": {
            "value": "Use case"
          }
        }
      }
    ]
    [
      {
        "jamaItemType": "*",
        "fields": {
          "name": "title",
          "description": "description"
        }
      },
      {
        "jamaItemType": "Risk evaluation",
        "itemType": "RISK",
        "fields": {
          "description": "sequenceOfEvents",
          "severity": {
            "type": "mapToMany",
            "toFields": [
              "initialSeverity",
              "residualSeverity"
            ]
          }
        }
      }
    ]
    [
      {
        "jamaItemType": "Software Specification",
        "itemType": "SOFTWARE_ITEM",
        "relationships": {
          "Fulfills": "FULFILLS",
          "Related to": {
            "relationType": "IS_RELATED_TO",
            "targetSystem": "Jira"
          }
        }
      },
      {
        "jamaItemType": "Risk evaluation",
        "itemType": "RISK",
        "fields": {
          "isControlledBy": {
            "type": "references",
            "relationType": "IS_RISK_CONTROLLED_BY",
            "targetSystem": "Jira"
          }
        }
      }
    ]
    [
      {
        "jamaItemType": "Requirement",
        "itemType": "REQUIREMENT",
        "fields": {
          "introducesTest": {
            "relationType": "TESTS",
            "targetSystem": "Jama",
            "isUpstream": true
          }
        },
        "relationships": {
          "Fulfilled by": {
            "relationType": "FULFILLS",
            "targetSystem": "Jama",
            "isUpstream": true
          }
        }
      }
    ]
    [
      {
        "jamaItemType": "VER",
        "itemType": null
      },
      {
        "jamaItemType": "RQ",
        "itemType": "REQUIREMENT",
        "fields": {
          "description": null
        },
        "relationships": {
          "Related to": null
        }
      }
    ]
    {
      "To Do": "OPEN"
    }
    {
      "Related to": "RELATES_TO"
    }
    {
      "status": "statusName",
      "assignedTo": "assignee",
      "release1": "introducedInVersion",
      "release2": "obsoleteInVersion"
    }
    [
      {
        "sourceField": "myCustomField",
        "relationType": "AFFECTS",
        "targetSystem": "Jira"
      }
    ]
    {
      "picklist": {
        "pinnedVersionFields": [
          "customReleaseField"
        ]
      }
    }
    []
    [
      "AUTHORITY_MATRIX",
      "CHANGE_REQUEST_REPORT",
      "CHANGE_MANAGEMENT_FILE",
      "CLOUD_CONFIG_REPORT",
      "CODE_REVIEW_REPORT",
      "CYBER_RISK_MANAGEMENT_FILE",
      "PROBLEM_REPORT",
      "RELEASE_NOTES",
      "RISK_MANAGEMENT_FILE",
      "RISK_CONTROL_FILE",
      "RISK_MATRIX",
      "SOFTWARE_ARCHITECTURE_CHART",
      "SOFTWARE_DESIGN_SPECIFICATION",
      "SOFTWARE_DESIGN_STRUCTURE_MATRIX",
      "SOUP_DEPENDENCIES",
      "TRAINING_STATUS_REPORT",
      "TEST_PLAN",
      "TESTING_REPORT",
      "TRACEABILITY_MATRIX",
      "UNRESOLVED_ANOMALIES",
      "VULNERABILITY_REPORT"
    ]
    [
      "SOFTWARE_REQUIREMENTS_SPECIFICATION",
      "SOFTWARE_DESIGN_SPECIFICATION"
    ]
    [
      "CYBER_RISK_MANAGEMENT_FILE",
      "PROBLEM_REPORT",
      "RELEASE_NOTES",
      "TEST_PLAN",
      "TESTING_REPORT",
      "UNRESOLVED_ANOMALIES"
    ]
    {
      "TEST_PLAN": {
        "TEST_PROTOCOL": [
          "Expected behavior"
        ]
      }
    }
    {
      "footer": {
        "content": [
          {
            "left": {
              "text": "Electronically controlled document by My Corporation",
              "style": {
                "size": 8,
                "fontName": "Tahoma"
              }
            },
            "middle": {
              "text": "Confidential",
              "style": {
                "bold": true,
                "size": 10,
                "italics": true,
                "fontName": "Tahoma"
              }
            },
            "right": {
              "text": "Document ID $DOC_ID",
              "style": {
                "size": 8,
                "fontName": "Tahoma"
              }
            }
          }
        ],
        "borderTop": {
          "size": 10,
          "color": "333333",
          "style": "thick"
        }
      }
    }
    {
      "$DOC_ID": {
        "value": "",
        "description": "Document ID",
        "userAdjustable": true
      }
    }
    {
      "omitSingleOtherSection": true
    }
    {
      "showUseCases": false,
      "showSpecs": false
    }
    {
      "showExcludedTests": "never"
    }
    {
      "showExcludedTests": "if-inherited-execution"
    }
    {
      "columnNames": {
        "Use case ID": "User requirement ID",
        "Use case title": "User requirement title",
        "Requirement type": null
      }
    }
    {
      "columnNames": {
        "Item ID": "ID",
        "System categories": null,
        "Foreseeable sequence of events": "Sequence of events"
      }
    }
    {
      "includeScopeDescriptionSection": true,
      "omitVVReportSection": true
    }
    {
      "includeScopeDescriptionSection": false
    }
    {
      "omitVVReportSection": false
    }
    {
      "includeScopeDescriptionSection": true,
      "omitVVReportSection": true
    }
    {
      "includeScopeDescriptionSection": false
    }
    {
      "omitVVReportSection": false
    }
    {
      "itemFilters": {
        "newRequirements": "\"Requirement type\":(\"User/Marketing\", \"Intended use\")",
        "changedRequirements": "\"Requirement type\":(\"User/Marketing\", \"Intended use\")",
        "removedRequirements": "\"Requirement type\":(\"User/Marketing\", \"Intended use\")"
      }
    }
    {
      "itemFilters": {
        "newUnresolvedAnomalies": "\"Problem report type\":Corrective",
        "resolvedAnomalies": "\"Problem report type\":Corrective"
      }
    }
    {
      "columnNames": {
        "Dependency name": "Name"
      }
    }
    {
      "columnNames": {
        "Ecosystem": null
      }
    }
    {
      "showAutomatedTests": false
    }
    {
      "onlyLastTestExecution": true
    }
    {
      "showEvaluationMatrices": false
    }
    {
      "showGeneralInformation": false
    }
    "yyyy-MM-dd'T'HH:mm:ssXXX"
    "America/New_York"
    {
      "PASS": "Passed",
      "PASS_WITH_EXCEPTION": "Passed with exception",
      "FAIL_ACCEPTED": "Failed but accepted",
      "FAIL": "Failed",
      "EXCLUDED": "Excluded"
    }
    {
      "googleDocs": {
        "folderId": "1AB0VbQpyD0pHpBQAbRaptfNDsVTbgXfaF"
      }
    }
    [
      "Patient harm",
      "Inaccurate readings",
      "Communication failure"
    ]
    [
      {
        "name": "Medication Dosage Error Risk",
        "steps": [
          {
            "name": "Prescription Entry"
          },
          {
            "name": "Dosage Calculation"
          },
          {
            "name": "Dispensing Medication"
          },
          {
            "name": "Administering Medication"
          }
        ]
      }
    ]
    [
      {
        "name": "Prescription Entry"
      },
      {
        "name": "Patient Identification"
      },
      {
        "name": "Medication Verification"
      }
    ]
    [
      "Contamination",
      "Overdose",
      "Burns"
    ]
    [
      {
        "name": "Organ Damage",
        "defaultInitialSeverity": "High"
      },
      {
        "name": "Infection"
      }
    ]
    [
      "Acoustic",
      "Electrical",
      "Mechanical"
    ]
    [
      "Environment",
      "Mechanical",
      "Software"
    ]
    [
      "FMEA",
      "FTA"
    ]
    [
      {
        "name": "Low",
        "hexColor": "39A31A",
        "fontHexColor": "EBFFE4"
      },
      {
        "name": "Medium",
        "hexColor": "D08300",
        "fontHexColor": "FFF7E4"
      },
      {
        "name": "High",
        "hexColor": "B50531",
        "fontHexColor": "FFEDF3"
      }
    ]
    [
      {
        "name": "Low",
        "hexColor": "39A31A",
        "fontHexColor": "EBFFE4"
      },
      {
        "name": "Medium",
        "hexColor": "D08300",
        "fontHexColor": "FFF7E4"
      },
      {
        "name": "High",
        "hexColor": "B50531",
        "fontHexColor": "FFEDF3"
      }
    ]
    [
      {
        "name": "Rare",
        "hexColor": "39A31A",
        "fontHexColor": "EBFFE4"
      },
      {
        "name": "Probable",
        "hexColor": "D08300",
        "fontHexColor": "FFF7E4"
      },
      {
        "name": "Certain",
        "hexColor": "B50531",
        "fontHexColor": "FFEDF3"
      }
    ]
    [
      {
        "name": "Low",
        "hexColor": "39A31A",
        "fontHexColor": "EBFFE4"
      },
      {
        "name": "Medium",
        "hexColor": "D08300",
        "fontHexColor": "FFF7E4"
      },
      {
        "name": "High",
        "hexColor": "B50531",
        "fontHexColor": "FFEDF3"
      }
    ]
    [
      {
        "name": "Minor",
        "hexColor": "39A31A",
        "fontHexColor": "EBFFE4",
        "acceptable": "ACCEPTABLE"
      },
      {
        "name": "Moderate",
        "hexColor": "D08300",
        "fontHexColor": "FFF7E4",
        "acceptable": "NOT_ACCEPTABLE"
      },
      {
        "name": "Major",
        "hexColor": "B50531",
        "fontHexColor": "FFEDF3",
        "acceptable": "NOT_ACCEPTABLE"
      }
    ]
    [
      {
        "name": "Low",
        "hexColor": "39A31A",
        "fontHexColor": "EBFFE4"
      },
      {
        "name": "Medium",
        "hexColor": "D08300",
        "fontHexColor": "FFF7E4"
      },
      {
        "name": "High",
        "hexColor": "B50531",
        "fontHexColor": "FFEDF3"
      }
    ]
    [
      {
        "name": "Low",
        "hexColor": "39A31A",
        "fontHexColor": "EBFFE4"
      },
      {
        "name": "Medium",
        "hexColor": "D08300",
        "fontHexColor": "FFF7E4"
      },
      {
        "name": "High",
        "hexColor": "B50531",
        "fontHexColor": "FFEDF3"
      }
    ]
    [
      {
        "name": "Low",
        "hexColor": "39A31A",
        "fontHexColor": "EBFFE4"
      },
      {
        "name": "Medium",
        "hexColor": "D08300",
        "fontHexColor": "FFF7E4"
      },
      {
        "name": "High",
        "hexColor": "B50531",
        "fontHexColor": "FFEDF3"
      }
    ]
    [
      {
        "name": "Rare",
        "hexColor": "39A31A",
        "fontHexColor": "EBFFE4"
      },
      {
        "name": "Probable",
        "hexColor": "D08300",
        "fontHexColor": "FFF7E4"
      },
      {
        "name": "Certain",
        "hexColor": "B50531",
        "fontHexColor": "FFEDF3"
      }
    ]
    [
      {
        "name": "Minor",
        "hexColor": "39A31A",
        "fontHexColor": "EBFFE4",
        "acceptable": "ACCEPTABLE"
      },
      {
        "name": "Moderate",
        "hexColor": "D08300",
        "fontHexColor": "FFF7E4",
        "acceptable": "NOT_ACCEPTABLE"
      },
      {
        "name": "Major",
        "hexColor": "B50531",
        "fontHexColor": "FFEDF3",
        "acceptable": "NOT_ACCEPTABLE"
      }
    ]
    {
      "[Occurrence probability value]": {
        "[Harm probability value]": "[Total probability value]"
      }
    }
    {
      "Low": {
        "Low": "Rare",
        "Medium": "Rare",
        "High": "Rare"
      },
      "Medium": {
        "Low": "Rare",
        "Medium": "Probable",
        "High": "Probable"
      },
      "High": {
        "Low": "Rare",
        "Medium": "Probable",
        "High": "Certain"
      }
    }
    {
      "[Total probability value]": {
        "[Severity value]": "[Risk evaluation value]",
      }
    }
    {
      "Rare": {
        "Low": "Minor",
        "Medium": "Minor",
        "High": "Moderate"
      },
      "Probable": {
        "Low": "Minor",
        "Medium": "Moderate",
        "High": "Major"
      },
      "Certain": {
        "Low": "Minor",
        "Medium": "Moderate",
        "High": "Major"
      }
    }
    {
      "[Occurrence probability value]": {
        "[Harm probability value]": "[Total probability value]",
      }
    }
    {
      "Low": {
        "Low": "Rare",
        "Medium": "Rare",
        "High": "Rare"
      },
      "Medium": {
        "Low": "Rare",
        "Medium": "Probable",
        "High": "Probable"
      },
      "High": {
        "Low": "Rare",
        "Medium": "Probable",
        "High": "Certain"
      }
    }
    {
      "[Total probability value]": {
        "[Severity value]": "[Risk evaluation value]",
      }
    }
    {
      "Rare": {
        "Low": "Minor",
        "Medium": "Minor",
        "High": "Moderate"
      },
      "Probable": {
        "Low": "Minor",
        "Medium": "Moderate",
        "High": "Major"
      },
      "Certain": {
        "Low": "Minor",
        "Medium": "Moderate",
        "High": "Major"
      }
    }
    {
      "[Hazard type value]": {
        "initialTotalProbabilityMatrix": {...},
        "initialRiskEvaluationMatrix": {...},
        "residualTotalProbabilityMatrix": {...},
        "residualRiskEvaluationMatrix": {...},
      }
    }
    {
      "Acoustic": {
        "initialRiskEvaluationMatrix": {
          "Rare": {
            "Low": "Major",
            "High": "Major",
            "Medium": "Major"
          },
          "Certain": {
            "Low": "Minor",
            "High": "Major",
            "Medium": "Moderate"
          },
          "Probable": {
            "Low": "Minor",
            "High": "Major",
            "Medium": "Moderate"
          }
        }
      }
    }
    {
      "[Risk type name]": {
        "initialTotalProbabilityMatrix": {...},
        "initialRiskEvaluationMatrix": {...},
    
        "residualTotalProbabilityMatrix": {...},
        "residualRiskEvaluationMatrix": {...},
    
        "initialHarmProbability": [...],
        "initialOccurrenceProbability": [...],
        "initialTotalProbability": [...],
        "initialSeverity": [...],
        "initialRiskEvaluation": [...],
    
        "residualHarmProbability": [...],
        "residualOccurrenceProbability": [...],
        "residualSeverity": [...],
        "residualTotalProbability": [...],
        "residualRiskEvaluation": [...],
    
        "hazardousSituations": [...],
        "eventSequences": [...],
        "eventSteps": [...],
    
        "hazards": [...],
        "harms": [...],
    
        "dataByHazardType": {
          "[Hazard type value]": {
            "initialTotalProbabilityMatrix": {...},
            "initialRiskEvaluationMatrix": {...},
            "residualTotalProbabilityMatrix": {...},
            "residualRiskEvaluationMatrix": {...},
          }
        }
      }
    }
    false: Completed milestones are skipped
  • baselines: Whether to include completed baselines

    • true: Completed baselines are included (default)

    • false: Completed baselines are skipped

  • runs: Whether to include completed test runs

    • true: Completed test runs are included (default)

    • false: Completed test runs are skipped

  • plans: Whether to include completed test plans

    • true: Completed test plans are included (default)

    • false: Completed test plans are skipped

  • Agent Filters Introduction