Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
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.
Manual for project data export, particularly related to 21 CFR Part 11 data retention policy compliance
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.
The scope of this manual is the data export mechanism 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.
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 .
Ketryx provides programmatic access to manage configuration items and records, including data export. Please refer to the for further guidance.
API to manage groups in Ketryx
Ketryx exposes an API to manage groups programmatically. See also the documentation on authentication and API keys.
Guide on integrating GitLab with Ketryx
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.
Guide on integrating Azure DevOps with Ketryx
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.
Guide on working with source code and Git repositories in Ketryx
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:
Create project: whether new projects can be created
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.
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:
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.
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.
Please see GitLab's documentation. The scope read_repository scope should be selected.
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.
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.
Maintain a consistent workflow between both platforms
This guide provides step-by-step instructions for installing, configuring, and using the Chrome extension.
To install and set up the Ketryx Chrome extension:
Open the Chrome Web Store and search for "Ketryx" (or use this link)
Click "Add to Chrome" to install the extension
Click the extension icon in your Chrome toolbar
Click on the options page
Configure your settings:
Enter your Ketryx instance URL
(Optional) Enter your custom TestRail instance URL if using a self-hosted version
Save your settings
When viewing a TestRail test case, test run or testplan:
The extension automatically detects the current TestRail record
A "See in Ketryx" button appears in the TestRail interface
Click the button to open the corresponding record in Ketryx in a new tab
The extension provides the following configuration options:
TestRail Instance URL: (Optional) Custom URL for self-hosted TestRail instances
Click the extension icon in your Chrome toolbar
Click "open options page"
Update the TestRail Instance URL field
Click Save
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
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.
The Ketryx Chrome extension:
Only stores configuration data locally
Does not collect or transmit personal information
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 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.
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
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/#.
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.
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.
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.
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:
Log into Ketryx
In Jira, install the Ketryx Connector for Jira app from the Atlassian Marketplace
Complete the installation process of the Jira app by pressing Get started and Complete installation in Ketryx
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).
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.
There are two main reasons for this:
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.
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.
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.
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.

Authorization: Bearer KXTK_...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.
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:
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.
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.
Please see Azure DevOps's documentation.
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.
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.
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.
Guide on integrating Bitbucket with Ketryx
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.
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 .
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:
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.
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.
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.
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:
Repository: Read
Pull requests: Read
When entering the authentication credentials in Ketryx, set the following:
Username: x-token-auth (as a verbatim value, as documented )
Password: (the access token)
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.
For information on how to use the Code Change Review feature, please see the .
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:
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.
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.
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
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.
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.
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, ).
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 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 settings are used to configure the design verification process for a project.
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.
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:
Guide on using Google Docs for quality management in Ketryx.
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.
Reference of the Glob Pattern Matching Algorithm
If this is activated, an item can only be approved once all its design inputs are in a controlled state.
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.
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
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.
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.
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.
If this is activated, failing test executions do not block a release, as long as they are in a controlled state.
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.
If enabled, a Test Execution will only be taken into account if it was created after the Test Case entered a controlled state.
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.
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.
If this is activated, a release can only be approved if all dependencies are in a controlled state.
If this is activated, a release can only be approved if all items are in a controlled state.
If this is activated, a release can only be approved if the test plan is in a controlled state.
If this is activated, a release can only be approved if all required release documents are generated.
If this is activated, a release can only be approved if all required build documents are uploaded.
If this is activated, a release can only be approved if all required release documents are up-to-date.
If this is activated, a release can only be approved if all required release documents are approved.
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.
If this is activated, a release can only be approved if all milestones are in a controlled state.
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.
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.
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.
If enabled, users are not able to modify the derived risk analysis fields (i.e. initial and residual risk evaluation, risk acceptability).
If enabled, users are not able to set a custom hazard. Instead, they may only select a pre-defined hazard.
If enabled, users are not able to set a custom hazardous situation. Instead, they may only select a pre-defined hazardous situation.
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

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.
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.
Navigate to Organization > Advanced
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")
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.
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.
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.
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):
You can create the link from the Software Item Spec
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
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.
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 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
**
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.jsonThe scope of this manual is the configuration of approval rules within Ketryx.
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.
There are four different approval options available:
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.
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.
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.
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.
NOTE: Out of the above four, the first two are only relevant for group-based 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 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:
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.
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.
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.
The project-level approval rules can be configured further using the following advanced settings:
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.
The configuration of item-level approval rules happens on the Record details page of an item by clicking on the Edit approval rules button.
This will open a dialog that allows the user to configure the approval rules for the item.
NOTE: There are a few specific limitations/behaviors related to item-level approval rules:
Editing an item-level approval rule always requires MFA to be enabled.
Editing an item-level approval rule will result in the creation of a new record.
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.
The item-level approval rule will get reset whenever the item is transitioned out of a "Closed" state.
The "Approval rules" and "Approval workflow" advanced settings will not have an effect on items that have item-level approval rules configured.
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.
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).
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:
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.
Log into Ketryx.
Navigate to Connections in the organization settings menu.
Find the Google Workspace section and take note of the Client ID and Client Email. You will need both in subsequent steps.
Follow these instructions to set up domain-wide delegation for Ketryx’s Service Account.
This is a one-time setup for each Google workspace.
Use the Client ID from the previous step.
Grant the non-sensitive scope https://www.googleapis.com/auth/drive.file
In your Google Drive, either create a new designated Shared Drive or select an existing one.
Create or select a designated folder in the Shared Drive (e.g. containing your QM documents)
Share the folder with the Ketryx Service Account using the Client Email found on the Ketryx Connections page, and grant at least Editor access.
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
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)
Navigate to the Advanced settings of your organization or a project for which you want to enable the integration.
Find the External EDMS mapping setting and enable Google using the Google Workspace folder ID and Ketryx folder name copied earlier:
In Ketryx, navigate to the folder you have configured to sync to Google Workspace and click on “Import new documents”.
To pull in changes made to a document in Google Drive, open the details view of the document in Ketryx and click “Sync”.
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.
The user can view any data, including audit trails.
The user can trigger a synchronization of Ketryx with external systems.
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:
Organization Owners can invite Guests:
Go to Organization
Navigate to Members
Use the Invite Member button
Enter the following information:
User's full name
Email address
The role the user has at your company
Ketryx user role: Change Member (default) to Guest
[Optional] Add a rationale for inviting this member. For example: "External auditor for internal audit"
Use the Invite button
The invited user should receive an invitation email.
Organization Owners can change an existing user's role to Guest:
Go to Organization
Navigate to Members
Find the user you want to change to Guest
Use the Make guest button within the Action column of the table
Confirm the user role change
Organization Owners can view which users have Guest access:
Go to Organization
Navigate to Members
Find the user within the table
Look for Guest in the Role column
Manual for submitting dependencies via SPDX files using Ketryx Software Supply Chain Management
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.
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.
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.
To submit dependencies via the Build API using SPDX in JSON format, three prerequisites must be met:
A project must be set up in Ketryx
Either:
A version must exist within the project, or
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.
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.
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.
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.
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 .
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 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.
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.
Guide on integrating GitHub with Ketryx
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.
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 .
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:
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.
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.
Please see or follow the following steps to create a PAT:
Go to your GitHub account settings
Navigate to Developer settings and then Personal access tokens
Click on Generate new token (classic)
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.
Please see for more information on how to create a fine-grained PAT.
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.
For information on how to use the Code Change Review feature, please see the .
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:
Added your GitHub repository to your Ketryx project (see section 3)
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
Guide on integrations with user authentication providers
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.
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 .
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:
User enters [email protected] on the Ketryx login page and presses Continue with email
Custom authentication methods are determined based on the email domain example.com
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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:
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.
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.
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.
When creating an agent, you can control who has access to the agent and its results:
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
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.
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
Ketryx is continuously improving. If you have any feedback or encounter any issues, please and let us know!
Manual for cloud dependency configuration management using Ketryx Software Supply Chain Management
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 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.
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
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.
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























Once a new user is authenticated, they automatically become a member of the organization based on the email domain
https://app.ketryx.comMake 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

{
"okta": {
"clientId": "CLIENT_ID",
"clientSecret": "CLIENT_SECRET",
"issuer": "https://ORGNAME.okta.com",
"allowDangerousEmailAccountLinking": true
}
}The definitions of this document conform to the ones of ISO/IEC 62304.
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)
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.
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.
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
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.
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.
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.
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.
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.
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.
Selecting a listed Cloud Configuration Item will show you the record details with all configuration parameters.
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.
The cloud configuration report will contain all version-related cloud configuration items grouped by all recorded environments.
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.
A re-verification flag is created for a design output when all of the following are true:
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.
Design input was previously controlled
The design input item was in a controlled/approved state according to your project’s approval rules.
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.
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).
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).
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)
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.
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.
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.
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)
Go to your organization's Members page by selecting Organization → Members from the main navigation.
Click the Bulk invite button located at the top left of the Members page.
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
Open the CSV and fill out the CSV template with your user information:
Enter one user per row
Ensure all email addresses are unique
Specify either "Member" or "Guest" for the Role column
For group assignments, select the group the user should be assigned to by marking it with a character (e.g., "x").
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
Click Upload CSV or drag and drop your prepared file
Wait for the file to upload
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
Once validated
Click Invite members to proceed with adding all users
The system will process the bulk import
Each new user will receive an invitation email automatically
Guide on recording and reporting Code Change Reviews using Ketryx
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.
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 .
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 .
Please see our SOUP documentation for more information about adding your repository to Ketryx:
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.
Open the settings area of the project
Add the repository from which you want to pull the Code Change Reviews
Click Enable repository authentication,
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:
repo
read:user
For the fine-grained Personal Access Token, the following permissions are required:
Contents
Metadata
Pull requests
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:
Repository: Read
Pull requests: Read
When entering the authentication credentials in Ketryx, set the following:
Username: x-token-auth (as a verbatim value, as documented )
Password: (the access token)
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.
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.
Unlike the static CCR report, AI-assisted analysis supports an interactive workflow:
Request analysis of specific commits, branches, or pull requests
Review findings with detailed explanations
Ask follow-up questions to clarify recommendations
Get suggestions for creating or updating configuration items (requirements, test cases, risks)
The AI-assisted analysis is designed to complement, not replace, the formal Code Change Review report:
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 .
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
Navigate to the organization's advanced settings, scroll down and select “Yes” for the enable documents as items option
Navigate to the Documents page
Upload or create a new document
Click the Edit button in the upper left corner
You will be able to see an option to select one of the three document types: Document / Long-lived Document / Pointwise Document
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.
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.
Choosing one of the options: Long-lived Document or Pointwise Document
Only users who have the "Control documents" permission (Organization level) can change the document type.
Choose the custom relations that you want to create
For any custom field, you need to:
Add a Custom Item Fields Configuration.
Add the relevant Item Fields.
Add a ‘custom’ section under Custom Item Types
Note: You can choose different types of custom fields by using this .
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.
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.
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.
Navigate to Organization > Advanced
Add the Folder item type into the Custom item types setting:
Add the Folder item type into the Issue mapping setting (this can also be done in a specific project's advanced settings):
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.
Navigate to Projects > Test Project > Settings > Approval rules
Add approval groups for the Folder item type
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.
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
Click Add work type
Name: Folder
Now, both the Jira and Ketryx projects are configured to track Folder items.
Ketryx ID of the project to query items for
Index to start at. Defaults to 0.
0Maximum number of results to return
1000Successful response
Error response
Ketryx ID of the project
Ketryx ID of the item
Index to start at. Defaults to 0.
0Maximum number of results to return
1000Successful response
Error response
Ketryx ID of the project
KQL query string
Index to start at. Defaults to 0.
0Maximum number of results to return
1000Successful response
Error response
Work Instruction for managing vulnerability impact assessments across versions using variants
Work Instruction for documents in the Electronic Document Management System (EDMS)
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.
Guide on using Google Docs for release document management in Ketryx






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
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
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)
Click Copy
Give the scheme a descriptive name, such as "Ketryx issue type scheme (Test Project)"
Empty the Description field
Drag-and-drop the Folder issue type from Available Work Types into Work Types for Current Scheme
Click Save
Create a new screen. This will define what fields are shown when someone creates, views, or edits the work item.
From the left-hand menu, navigate to Screens
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)
Click Copy
Give the screen a descriptive name, such as "Ketryx Folder screen"
Empty the Description field
Click Copy
The following steps are only required for long-lived item types:
Filter for "ketryx folder" and click the "..." button for Ketryx Folder screen
Click Configure
Add the
Create a screen scheme. This will associate your new screen with the new work type
From the left-hand menu, navigate to Screen schemes
Click Add screen scheme
Give the screen scheme a descriptive name, such as "Ketryx Folder screen scheme"
Default Screen: Ketryx Folder screen
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.
From the left-hand menu, navigate to Work type screen schemes
Filter for "ketryx" and click the "..." button for Ketryx issue type screen scheme
Click Copy
Give the issue type screen scheme a descriptive name, such as "Ketryx issue type screen scheme (Test Project)"
Empty the Description field
Click Copy
Filter for "ketryx" and click the "..." button for Ketryx issue type screen scheme (Test Project)
Click Configure
Click Associate an issue type with a screen scheme
Issue Type: Folder
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.
Click the cogwheel button in the top right and navigate to Jira Settings > Spaces
Click the "..." button for Test Project
Click Space settings
From the left-hand menu, navigate to Work items > Types
Click Actions > Use a different scheme
Select Ketryx issue type scheme (Test Project)
From the left-hand menu, navigate to Work items > Screens
Click Actions > Use a different scheme
Select Ketryx issue type screen scheme (Test Project)
Click Associate

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.
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.
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.
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.
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.
The following sections describe how to manage vulnerability impact assessments (VIAs) when a vulnerability affects multiple versions of a product.
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.
Navigate to the Releases page in your project.
Click the Create version button.
In the dialog that appears, enter a name for your new version (e.g., 1.0.0).
Click Create.
The new version will now appear on the Releases page and can be selected throughout Ketryx.
When a vulnerability is identified, you create an initial impact assessment.
Navigate to the SBOM > Vulnerabilities page in your project.
Select the vulnerability you want to assess.
Click the Create impact assessment button.
Fill in the details for the assessment, such as severity, resolution, and rationale.
In the Introduced in version field, select the version where this assessment first becomes effective (e.g., 1.0.0).
Leave the Obsolete in version field empty. This ensures the assessment remains effective for all subsequent versions until a new variant is created.
Save the assessment.
This first assessment now applies to version 1.0.0 and all future versions.
Before you create a variant for a new version, the version itself must exist in Ketryx.
Navigate to the Releases page.
From an existing version (e.g., 1.0.0), click the Create new version from baseline button.
A dialog appears where you can configure the new version.
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.
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.
Click Create new version.
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.
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.
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.
From the Vulnerabilities page, select version 2.0.0 from the version picker.
Select the same vulnerability. You will see the existing assessment from version 1.0.0 is currently effective.
You will be presented with an option to Create variant for the existing impact assessment.
Clicking this will open a new assessment form, pre-populated with the information from the original assessment.
The Introduced in version field will be automatically set to 2.0.0.
Update the fields to reflect the new assessment for version 2.0.0.
Save the new assessment.
You have now created a new variant of the impact assessment.
Ketryx makes it easy to see which assessment is effective for each version, and to compare assessments.
Navigate to the SBOM > Vulnerabilities page.
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.
Click the expand icon on the right of a vulnerability's row to expand its detail panel.
The panel shows the details of the effective assessment for the version you selected.
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.
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.
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.
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.
Setting up the Xray integration will require ..
.. Jira Ketryx app is installed, and a Jira connection is set up in Ketryx (see Jira | 2.
.. the Manage connections permission within Ketryx.
To fetch data from Xray, Ketryx needs an Xray API key. The following steps need to be completed:
Create an Xray API key in Xray
Provide the Xray API key in Ketryx
Review how Xray is now connected with your Ketryx projects
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.
In Ketryx, navigate to Organization > Connections, locate the Xray section, set the Client ID and Client Secret, and then save.
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:
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)
Create an Xray Test in the Jira space
Navigate to the Ketryx All items page and synchronize the project
Review that the Xray Test Case is now synced with Ketryx, including the Xray data associated with it, such as Steps
By default, Xray issue types Test Plan, Test, and Text Execution are synced with Ketryx. The mapping can be customized.
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.
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.
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:
Select the relevant version to be released
Activate the filter Not contained in Xray test plan
Select all filtered tests by clicking the checkbox in the top-left corner of the table
Exclude the selected tests by choosing Manage release test plan > Exclude selected items
Confirm the exclusion and approve the test plan
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.
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.
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.
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:
If a Test Case is executed ad hoc, the Test Case is related as Executed by to the 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)
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.
This work instruction covers all technical functionalities of the EDMS, aimed at achieving effective document control and training implementation.
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.
EDMS - Electronic Document Management System
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.
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.
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
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.
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.
!
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.
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.
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.
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.
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.
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.
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.
With the new view, you can add any field in your organization (including custom fields) to the table as a column.
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.
To quickly adjust the widths of all columns in the view to accommodate the data contained in the cells, click Autosize 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.
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.
To group or sort all of the rows by a particular column, hover to the right of the column name to find options.
If you configure Custom KQL Filters for the Risks page, they will be accessible in the filter button.
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:
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.
To enable the Google Drive integration, you need to have administrative privileges in your Ketryx organization and Google Workspace. Follow these steps:
Log into Ketryx.
Navigate to Connections in the organization settings menu.
Find the Google Workspace section and take note of the Client ID and Client Email.
Follow the instructions to set up domain-wide delegation for our Service Account.
Note, this is a one-time setup for each Google workspace.
Use the Client ID found on the Ketryx Connections page.
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.
Prepare Google Drive
Either create a new designated Shared Drive or select an existing one.
Create or select a designated folder in the Shared Drive for Ketryx to store release documents.
Share the folder with the Ketryx Service Account using the Client Email found on the Ketryx Connections page and grant at least
In Ketryx, navigate to the Advanced settings of your organization or a project for which you want to enable the integration.
Find the Edit release documents externally setting and enable Google using the folder ID copied earlier:
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.
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.
When you select "Send to Google Drive", Ketryx will:
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).
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).
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).\
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.
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.
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.
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.








Manual for the software release process using Ketryx Lifecycle Management
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.
This document defines tasks, activities, procedures, resources, responsibilities, and deliverables related to software releases of the Product.
This plan was developed to support the creation, release, and maintenance of the Product.
This plan was developed in compliance with ISO 13485, IEC 62304, ISO 14971, and 21 CFR Part 820.
Tools used to develop and release a product with Ketryx Lifecycle Management are provided in .
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.
To release a new version of the Product to the production environment, the following activities are performed.
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 , , ).
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.
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 .
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.
Once a final Release Candidate is deployed, formal Verification & Validation (V&V) is started.
Test Executions for all Test Cases contained in the Test Plan are created and executed as per the Work Instruction .
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.
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 .
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.
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.
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.
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 .
Work Instruction for Task configuration items
This Work Instruction provides the set of tasks required to be performed as part of the Task configuration item lifecycle.
This Work Instruction covers the complete Task lifecycle, from creation to obsolescence.
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
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.
Anyone
Log into your Jira organization, e.g., your-company.atlassian.net.
Anyone
Press the Create button in the top-level navigation to open the form to create a new Jira work item.
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.
Define an appropriate title in the Summary field.
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.
Anyone
Change the work item status to In Progress using the work item status selector.
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.
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:
Anyone
Once the Task is completed and ready for design verification, change its status to Resolved.
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.
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.
{height=70%}
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.
A Task implements the following items:
Requirement
Software Item Spec
Hardware Item Spec
Change Request
Manual for documenting threat models in Ketryx using custom item types
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.
The purpose of this manual is to instruct users on how to use Ketryx for documenting threat models, focusing on the STRIDE methodology.
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.
AAMI TIR57: 2016/(R)2019: Principles for medical device security – Risk management
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.
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:
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.
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.
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.
Gets a list of Ketryx projects in the current organization. Only non-deleted (active) projects are returned.
Project name to filter for
Start listing projects at the given index. Defaults to 0.
Maximum number of projects to return. Defaults to no limit.
OK
The request is not valid.
The requester is not authenticated.
The requester is unauthorized.
The resource was not found.
Name of the new project
My projectOK
The request is not valid.
The requester is not authenticated.
The requester is unauthorized.
The resource was not found.
OK
The request is not valid.
The requester is not authenticated.
The requester is unauthorized.
The resource was not found.
Object with advanced setting names as keys and a JSON value for each setting
{ "statusMapping": { "Backlog": "OPEN", "Done": "RESOLVED" } }OK
The request is not valid.
The requester is not authenticated.
The requester is unauthorized.
The resource was not found.
Deletion successful, no content returned
The request is not valid.
The requester is not authenticated.
The requester is unauthorized.
The resource was not found.
No content
Gets a list of versions in the given project.
OK
The request is not valid.
The requester is not authenticated.
The requester is unauthorized.
The resource was not found.
My projectOK
The request is not valid.
The requester is not authenticated.
The requester is unauthorized.
The resource was not found.
OK
The request is not valid.
The requester is not authenticated.
The requester is unauthorized.
Deletion successful, no content returned
The request is not valid.
The requester is not authenticated.
The requester is unauthorized.
The resource was not found.
No content
Ketryx project ID. This is required.
Ketryx version ID. If not specified, defaults to using the "current draft" state.
SBOM format to return. Defaults to "xslx".
cyclonedxPossible values: File contents in binary format
The request is not valid.
The requester is not authenticated.
The requester is unauthorized.
The resource was not found.
Guide on the Ketryx integration with Azure DevOps
[
{
"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
}
]
Click Add
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)



























































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

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.
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.)
Create a personal access token (PAT) for authentication.
Navigate to Azure DevOps and go to User Settings > Personal Access Tokens.
Click New Token and specify a name, expiration date, and necessary permissions.
Click Create Token and take note of the generated PAT.
As a Ketryx admin, log in to Ketryx.
Navigate to Organization, then Connections and click Add Azure DevOps connection.
Provide the URL of your Azure DevOps instance and the generated PAT to establish the connection.
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.
By default, Ketryx synchronizes the following work items between the platforms:
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:
Related, Predecessor, Successor
Is Related To
Parent
Has Parent
Tested By
Tests
How Ketryx handles test items:
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.
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.
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.
When any item is deleted in Azure DevOps, it is marked as deleted in Ketryx but remains linked for traceability.
You can create custom work item fields in Azure DevOps to track versions.
To associate a work item with a particular version, create a custom field in Azure DevOps.
Configure the field in the Azure DevOps field mapping setting, using the field introducedInVersion and obsoleteInVersion.
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).
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
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.
Given a custom relation with ID SW_TO_RQ:
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
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.
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.
{
"Asset": {
"addedFields": ["exposedByThreatSurface", "impactedThreats", "risks"]
},
"Threat": {
"addedFields": ["risks"]
},
"Threat Source": {
"addedFields": ["initiatedThreats"]
},
"Threat Surface": {
"addedFields": ["containedInTrustBoundary", "exploitedByThreats"]
}
}[
{
"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"
}
][
{
"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"
}binaryGET /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"
}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.
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










Work Instruction for Test Execution configuration items
This Work Instruction provides the set of tasks required to be performed as part of the Test Execution configuration item lifecycle.
This Work Instruction covers the complete Test Execution lifecycle.
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
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.
Anyone
Log into your Jira organization, e.g., your-company.atlassian.net.
Anyone
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.
Open the Test management page in Ketryx.
Select the version being tested.
Select the Test Cases to execute.
Press Create executions for selection and confirm.
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.
Open a Test Case for which you would like to create a Test Execution in Jira.
In the Traceability widget, press Add test execution.
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.
Press the Create button in the top-level navigation of Jira to open the form to create a new Jira work item.
Select Test Execution as the work type.
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.\
Anyone
Using the popover shown by Jira or through the all work page, navigate to the Jira page of the Test Execution.
Item Assignee
If you are not yet the Assignee of the ticket, assign the ticket to yourself by pressing Assign to me.
Select the status button and move the ticket to In Progress by clicking Start Progress.
Item Assignee
Carry out the steps of the Test Execution and document the observed behavior in the Test Execution.
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.
If the observed behavior matches the expected behavior, record the Test Execution as Pass. If not, record it as Fail.
Item Assignee
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).
Link the newly created Anomaly in the Found anomalies field.
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.
Item Assignee
Select the status button and move the ticket to Resolved by clicking Ready for Review.
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.
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.
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.
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.
The following relations can be defined from a Test Execution to other configuration items:
Test Execution executes Test Case
Test Execution finds Anomaly
Work Instruction for Corrective and Preventive Action (CAPA)
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.
This Work Instruction covers the complete CAPA lifecycle. Records for each CAPA will be held based on the records and retention policy.
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
CAPA: Corrective and Preventive Action
Corrective Action: Action taken to eliminate the causes of non-conformities or other undesirable situations, to prevent a recurrence
Preventative Action: Action taken to prevent the occurrence of such non-conformities, generally as a result of a risk analysis.
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.
Anyone
Log into your Jira organization, e.g., your-company.atlassian.net.
Anyone
In Jira, select create
Make sure the work type is CAPA
Make sure to set the Introduced in version to the version that will include the described changes.
Draft the template, adding information as needed. The only required field is the Summary, marked by a red asterisk (*).
Anyone
Using the popover shown by Jira or through other means, navigate to the Jira page of the CAPA.
Anyone
Select the Status button
Click Start Progress
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.
Item Assignee
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.
During RCA, ensure that proper subject matter experts (e.g., Cloud R&D, AI Validation) are part of the analysis.
Put the findings into the Root Cause Analysis field.
Item Assignee
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.
Put the findings in the Corrective Action field.
Item Assignee
Determine the preventive actions to prevent the recurrence of a nonconformance that has been identified and addressed through corrective action.
Put the findings in the Preventive Action field.
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.
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.
Item Assignee
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.
Select the Status button.
Click Ready for Review.
Item Assignee
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.
Find the Approvals widget.
Press Approve.
R&D Lead
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.
Find the Approvals widget.
Press Approve.
Quality Manager
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.
Find the Traceability widget.
Ensure the Traceability widget shows a related Test Case that tests for the implemented corrective and preventive actions.
Quality Manager
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.
Find the Approvals widget.
Press Approve as reviewed.
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.
Anyone
If a CAPA needs to be reopened:
Select the status button.
Press Reopen.
Go back to Step 3.
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.
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
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.
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).
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.
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 .
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.
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:
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:
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.
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.
Manual for submitting dependencies via CycloneDX files using Ketryx Software Supply Chain Management
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.



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.
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.
CycloneDX (CDX)
A standard format for documenting the components, licenses, and vulnerabilities of software packages.
To submit dependencies via the Build API using CycloneDX in JSON format, three prerequisites must be met:
A project must be set up in Ketryx
Either:
A version must exist within the project, or
A commit must be associated with the project
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.
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:
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.
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.
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.
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.
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.
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.
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 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.
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.
Here are some examples of how to configure the mapping.
This example demonstrates two basic mappings:
The component's type is mapped to a Software component type custom field.
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.
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.
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.
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.
{
"Software component type": {
"type": "SHORT_TEXT",
"isEditableInKetryx": true,
"syncToExternalSystem": false
},
"SBOM generation date": {
"type": "DATETIME",
"isEditableInKetryx": true,
"syncToExternalSystem": false
}
}{
"Dependency": {
"addedFields": [
{ "kind": "CUSTOM", "name": "Software component type" },
{ "kind": "CUSTOM", "name": "SBOM generation date" }
]
}
}{
"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"
}
}
]
}{
"Component Category": {
"type": "SELECT",
"options": [{ "value": "Software Library" }, { "value": "Software Framework" }, { "value": "Application" }],
"isEditableInKetryx": true,
"syncToExternalSystem": false
}
}{
"Dependency": {
"addedFields": [
{ "kind": "CUSTOM", "name": "Component Category" }
]
}
}{
"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"
}
}
]
}{
"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" }
]
}
}{
"Dependency": {
"addedFields": [
{ "kind": "CUSTOM", "name": "Reference Types" }
]
}
}{
"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.
(Optionally) Define an appropriate Assignee, i.e., Item Assignee.
Press Create.
Test result: Is it filled out?
Found anomalies: In case of failure, has an anomaly been filed and linked to the Test Execution?
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.












R&D Lead: The person that verifies the CAPA is executable. The R&D Lead is consulted to approve that the CAPA is actionable.
Press Approved as reviewed.
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.
CAPA resolves Anomaly, Complaint









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.
OK
The request is not valid.
The requester is not authenticated.
The requester is unauthorized.
The resource was not found.
Work Instruction for Anomaly configuration items
This Work Instruction provides the set of tasks required to be performed as part of the Anomaly configuration item lifecycle.
This Work Instruction covers the complete Anomaly lifecycle. Records for each Anomaly will be held based on the records and retention policy.
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)
Approvals widget: A dedicated Jira ticket section showing the current approval state within Ketryx.
CAPA: Corrective and Preventive Actions
RCI: Root Cause Investigation
RCA
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
Anyone
Log into your Jira organization, e.g., your-company.atlassian.net.
Anyone
In Jira, select Create
Make sure the work type is Anomaly.
Draft the template, adding information as needed. The only required field is the Summary, marked by a red asterisk (*).
Anyone
Using the popover shown by Jira or through other means, navigate to the Jira page of the Anomaly.
Anyone
Select the Status button and click Start Progress.
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.
Item Assignee
Following the RCI, plan the scope of the needed change, trace and document affected items.
If not defined already, set the Introduced in version field to the first version known to be affected by the Anomaly.
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.
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.
Item Assignee
Introduce the necessary changes according to the plan.
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.
Use the work item status button to select Ready for Review.
Item Assignee
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.
Find the Approvals widget.
Press Approve.
R&D Lead
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.
Find the Approvals widget.
Press Approve.
Quality Manager
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.
Find the Traceability widget.
Ensure the Traceability widget shows a related Test Case that tests for this Anomaly.
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.
Anyone
If an Anomaly needs to be reopened:
Select the status button.
Press Reopen.
Go back to Step 4.
R&D Lead
Deferred Anomalies should be re-assessed regularly:
In Jira, find all Anomaly tickets with the status Open and a non-empty Rationale for deferring resolution.
Check each item or notify the responsible person to ensure the rationale remains valid.
In case of an out-of-date rationale, update the content accordingly.
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).
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
Manual for computational controls in Ketryx
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.
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.
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.
The content is organized to mirror the Ketryx framework's hierarchy:
Task Level: Configuration item controls
Activity Level: Module controls
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.
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.
Approval Rules
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.\
[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. \
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
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.\
[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:
Traceability
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.\
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
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.
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.\
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
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.
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:
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
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.\
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.\
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.
Release Checklist
Note: All of these controls are enabled by default, but can be disabled at the project level to relax certain constraints.
Disabling Require controlled and accepted dependencies allows dependencies managed in the SBOM module to not be reviewed and approved to complete a release.\
Disabling Require controlled items allows other configuration items (ex: requirements, specifications) to not be reviewed at the configuration item level to complete a release.\
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.
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:
Require re-verification of accepted items after change control
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.
Work Instruction for Change Request configuration items
This Work Instruction provides the tasks required to be performed as part of the Change Request configuration item lifecycle.
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 .
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
CI - Configuration Item
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
Anyone
Log into your Jira organization, e.g., your-company.atlassian.net.
Anyone
Press the Create button in the top-level navigation to open the form to create a new Jira work item.
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.
Define an appropriate title in the Summary field.
Anyone
Using the popover shown by Jira or through other means, navigate to the Jira page of the Change Request.
Anyone
Change the work item status to In Progress using the work item status selector.
Item Assignee
In the description field of the Change Request, provide an explanation of the purpose 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:
What are the potential impacts and risks of this change?
What related systems and components would be affected?
What are the risks associated with this change? What adverse events can happen?
Consult Subject Mater Experts on the change. If unsure about the impact, refer to the expertise of an expert.
Item Assignee
Describe why the change is necessary and whether the benefit is worth the risk in the Reason for Change text field.
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.
Item Assignee
If any, add in the New items field any items created as a result of this change using the traceability widget.
Item Assignee
If any, add in the Affected Items field any items affected by this change using the traceability widget.
Item Assignee
Select in the Change type field the nature of this change.
Item Assignee
Select in which version this change should be introduced.
Anyone
Once the Change Request is completed and ready for verification, change its status to Resolved.
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.
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.
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.
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.
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.
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.
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
Guide on using the Ketryx Assistant to accelerate safety-critical work
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.
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.
Throughout the platform, the magic wand icon (🪄) indicates the availability of assistant support.
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.
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.
If you would like to set default prompts for your organization or project, use the .
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"
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"
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
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?"
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
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?"
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
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?"
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"
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.
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!
Guide on the Ketryx integration with Polarion
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
}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.
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 resolves Anomaly, Complaint

















"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"
"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?"
Code Quality Review: Evaluate code against best practices
"Analyze the latest commits and propose needed updates to design controls"

















Ketryx project ID
KXPRJ49GQYFQ5RR9KRTPWTRTC39YZ9WKetryx version ID or the full version name. Either this or the commitSha must be set.
KXVSN352CZED7078FC8DN23YYZVM59DCommit 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.
ad4db8ac1e70bd41aa8bcee6f00a3a1e36bb0e01Build name. For each unique name, the latest build is part of the set of effective builds for a project. Empty by default.
ci-e2e-batch1Log output to store for this build
Source URL associated with this build. This is used for documentation purposes and to link back to the build from the Ketryx interface.
https://github.com/Ketryx/ketryx/actions/runs/4991785273This 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.
["https://github.com/Ketryx/ketryx"]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.
Whether to perform a check of dependencies in the associated commit(s). If not all dependencies are accepted and in a controlled state
Whether to perform a check of the overall release of the associated version(s).
Ketryx ID of the project to upload the file to
KXPRJ49GQYFQ5RR9KRTPWTRTC39YZ9WOK
The request is not valid.
The requester is not authenticated.
The requester is unauthorized.
The resource was not found.
Unresolved Anomalies (with details)
Traceability widget: A dedicated Jira ticket section showing the item relations within Ketryx
Press Approve.
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
Anomaly related to Anomaly, Complaint







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 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.
This Work Instruction covers the complete Software Item Spec lifecycle, from creation to obsolescence.
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
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.
Anyone
Log into your Jira organization, e.g., your-company.atlassian.net.
Anyone
Press the Create button in the top-level navigation to open the form to create a new Jira work item.
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.
Define an appropriate title in the Summary field.
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.
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.
Anyone
Change the work item status to In Progress using the work item status selector.
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.
Anyone
Once the Software Item Spec is completed and ready for design verification, change its status to Resolved.
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.
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.
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.
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.
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.
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).
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
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.
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.)
Create a personal access token (PAT) for a user in Polarion.
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.
Click Personal Access Token.
Enter a name and an expiration date.
Click Create Token and take note of the generated PAT.
As Ketryx admin, log in to Ketryx.
Navigate to Organization, then Connections and click Add Polarion connection.
Provide the URL of your Polarion instance and the generated PAT to establish the connection.
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.
Ketryx provides a Polarion plugin that allows you to add the traceability widget to the Polarion work item form.
To install the plugin:
Download the plugin JAR file from the Ketryx admin portal under Organization -> Connections -> Polarion -> Download plugin.
Copy the JAR file to the YOUR-POLARION-INSTALL-DIR/polarion/plugins directory on your Polarion server.
Restart the Polarion server to load the plugin.
Before configuring the traceability widget, you will need to create an API key:
In Ketryx, navigate to Organization -> Connections -> Polarion.
Click Create API key.
When prompted, authenticate with multi-factor authentication.
Click Create API key in the dialog.
Copy the generated key.
Then, add the traceability widget in Polarion:
Navigate to Administration -> Global Administration -> Work Items -> Form Configuration (or Administration -> Work Items -> Form Configuration for project-specific configuration).
In the "Form Layouts" section, click "Edit" for one of the work item types where you want to add the widget.
Add the following XML to the form layout configuration:
Replace YOUR-API-KEY with the API key generated earlier.
Save the form layout configuration.
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.
By default, Ketryx synchronizes the following work items between the platforms:
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:
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.
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.
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.
When any item is deleted in Polarion it is marked as deleted in Ketryx but remains linked for traceability.
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").
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
General advanced settings can be relevant, too, such as Approval workflow to enable approvals. See Advanced settings for a complete list of available settings.
Mapping between Polarion work item types and Ketryx items. Note that matching is case-sensitive.
Map additional Polarion work item types:
Overwrite a default mapping using type ID or type name:
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.
Mapping from Polarion status IDs to Ketryx states. This maps statuses for both, work items and test runs.
Map a Polarion status with ID "draft" to the state "OPEN":
Refer to Status mapping for a complete list of Ketryx statuses.
Mapping from Polarion work item link IDs to Ketryx relations. This mapping also works with custom relations.
Map Polarion work item link with ID "verifies" to system relation "TESTS":
Given a custom relation with ID SW_TO_RQ:
Refer to Relations for a complete list of Ketryx relation types.
Mapping from Polarion test result IDs to Ketryx results.
Map test result IDs:
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.
Map a Polarion field with ID "customField" to the field "Custom Field":
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.
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.
Synchronize all collections as versions:
Synchronize some collections, ignore the rest:
Synchronize some collections as specific versions, ignore the rest:
Ignore specific collections, synchronize the rest:
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.
This Work Instruction covers the complete Test Case lifecycle, from creation to obsolescence.
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
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.
Anyone
Log into your Jira organization, e.g., your-company.atlassian.net.
Anyone
Press the Create button in the top-level navigation to open the form to create a new Jira work item.
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.
Define an appropriate title in the Summary field.
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.
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.
Anyone
Change the work item status to In Progress using the work item status selector.
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.
Anyone
Once the Test Case is completed and ready for design verification, change its status to Resolved.
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.
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.
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.
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.
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.
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.
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).
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
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
Manual for managing manual and automated tests with Ketryx Platform
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.
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:
On the Ketryx Test management page by selecting Test Cases, selecting a particular version, and pressing Create executions for selection.
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.
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).
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.
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:
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:
Report test results: allows reporting of automated test results to Ketryx
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 .
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.
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:
The Ketryx project ID must be passed via the project parameter.
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.
Build artifacts (including test result files) should be uploaded via the API at
See the for details.
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.
Use an annotation of the form @tests:ID or @implements:ID on a Scenario in syntax.
Use the json reporter ("formatter") to generate a JSON report to send to Ketryx.
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.
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.
Use the @tests:ID annotations in comments above test methods. .
Generate a JUnit XML report to send to Ketryx.
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).
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.
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.
Manual for milestone management as part of the release process using Ketryx Lifecycle Management
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.
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.
This document defines tasks, activities, procedures, resources, responsibilities, and deliverables related to software development using milestones of the Product.
This plan was developed to support the creation, release, and maintenance of the Product.
This plan was developed in compliance with ISO 13485, IEC 62304, ISO 14971, and 21 CFR Part 820.
Tools used to develop and release a product with Ketryx Lifecycle Management are provided in . The release process is described in detail in .
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.
To develop a new version of the Product using milestones, the following activities are performed.
To create a new version or select an existing unreleased version where milestones need to be defined, proceed as follows:
On the Versions and Releases page, locate the option to create a new version.
Click on the Create Version button to initiate the creation process.
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:
Ensure that you have the necessary permissions to manage the project. Only authorized users will have access to the milestone management functionality.
In the sidebar menu, find and select the Milestones option.
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.
Click on the Add Configuration Item milestone button to initiate the milestone creation process
Enter a meaningful name for the milestone, such as "System Requirements Specification Generation"
Select the Requirement item type from the available item type options (selected by default)
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.
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:
Open. A milestone with this status will be ready for approval as soon as all approval conditions have been met.
Ready. A milestone with this status implies that all milestone conditions have been met. This milestone can be approved.
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:
On the Releases and versions page locate the version for which milestones have been configured
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
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.
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.
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.
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.
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.
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.
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:
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.
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.
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.
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.
To add milestones to the project, follow these steps:
On the milestone configuration page, click on the Add Project milestone or Add Configuration Item milestone button
Provide the necessary details and specifications for the new milestone, such as the milestone name, description, and associated criteria
Add an optional change note and save the changes to add the milestone to the configuration
To remove a milestone from the configuration, follow these steps:
On the milestone configuration page, locate the specific milestone you wish to remove
Click on the trash-can icon for removing milestones
Confirm the removal action when prompted to ensure the milestone is removed from the configuration
To change the position or order of milestones, follow these steps:
On the milestone configuration page, locate the specific milestones you wish to reposition
Click on the arrow icons next to each milestone to move the milestones up or down in the desired order
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.
To load milestone configurations from other projects within the same organization, follow these steps:
On the milestone configuration page, locate the option for loading previous configurations in the right side bar
Click on Load milestones configuration
Choose the desired project from which you wish to import the milestone configurations
Confirm the action to load the selected milestone configurations into the current version
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:
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.
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.
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.
Each value can include optional color coding for visual distinction:
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:
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 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:
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.
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
Matrices follow this JSON structure, where row and column values must exactly match the values defined in your probability and severity configurations (above):
This maps occurrence probability (rows) and harm probability (columns) to total probability values:
This maps total probability (rows) and severity (columns) to risk evaluation values:
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.
Define the types of potential sources of harm:
Define circumstances where patients are exposed to hazards:
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.
Define templates for sequence of events that lead from hazard to harm:
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.
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.
For organizations (e.g., patient risks vs. cybersecurity risks), configure type-specific settings:
When the following settings are enabled on the page:
Only harms defined in configuration can be selected
Initial severity is automatically set based on harm's defaultInitialSeverity
Users cannot override the associated severity
Risk acceptability is enforced from matrices, without the ability to change it manually
Free text entry is disabled
Only pre-configured values can be selected
Ketryx applies configurations in order of specificity:
Project level + Custom risk type + Hazard type specific
Project level + Custom risk type
Project level + Hazard type specific
Project level general
The most specific applicable configuration always takes precedence.
Define all probability and severity values before creating matrices
Ensure all matrix combinations are defined
Test configuration changes in a sandbox project first
Work Instruction for Risk configuration items
This Work Instruction provides the tasks required to be performed as part of the Risk configuration item lifecycle.
This Work Instruction covers the complete Risk lifecycle, from creation to obsolescence.
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
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.
Anyone
Log into your Ketryx organization via and select the Ketryx project connected to the relevant Jira space (formerly project).
Anyone
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.
Navigate to the Risks page via the left-hand sidebar.
Press the Add risk button to open the form to create a new risk item.
Anyone
You can change the work item status to In Progress, either in Jira or Ketryx.
Transition an item on the All items page
Navigate to the All items page via the left-hand sidebar.
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
Navigate to the Risks page via the left-hand sidebar.
For the relevant Risk item, click the Edit risk button.
Select In Progress in the State dropdown.
Save the changes.
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.
Item Assignee
Navigate to the Risks page via the left-hand sidebar.
For the relevant Risk item, click the Edit risk button.
Item Assignee
As needed, fill in the relevant information in the Risk form:
Select one or more System categories.
Select one or more Risk assessment methodologies.
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)
Item Assignee
Set the Initial likelihood of occurrence (P1).
Set the Initial likelihood of harm (P2).
Set the Initial severity (may be pre-selected depending on the Harm provided).
Item Assignee
As needed, add some details in the Risk control description field.
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.
Item Assignee
Set the Residual likelihood of occurrence (P1).
Set the Residual likelihood of harm (P2).
Set the Residual severity.
After P1, P2 and severity have been set, the
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.
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 .
Approval in Jira
Access the item in Jira via a link in Ketryx (e.g. in the item details page, risk management page or all items page).
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
Navigate to the All items page via the left-hand sidebar.
Select the item in question and approve it by clicking the Approve button.
Approval on the Risk management page
Navigate to the Risks page via the left-hand sidebar.
For the relevant item, click the Approve button.
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 .
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 .
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.
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.
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).
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.
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
Work Instruction for Complaint configuration items
This Work Instruction provides the tasks required to be performed as part of the Complaint configuration item lifecycle.
This Work Instruction covers the complete Complaint lifecycle.
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
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
Anyone
Log into your Jira organization, e.g., your-company.atlassian.net.
Anyone
Press the Create button in the top-level navigation to open the form to create a new Jira work item.
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.
Define an appropriate title in the Summary field.
Define an appropriate Assignee (the Item Assignee).
Provide additional preliminary information in the extra fields. (All fields can still be edited later.)
Anyone
Using the popover shown by Jira or through the Jira work item link, navigate to the Jira page of the Complaint.
Anyone
Change the work item status to In Progress using the work item status selector.
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.
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
Item Assignee
Information about the original customer complaint can be filled in in different fields.
Complaint received data: within the Original customer complaint field, describe the actual complaint.
Name of medical device: describe the device that caused the complaint.
Date received: the date when the complaint was filed and received.
Item Assignee
The contact information about the complainant can be added under the Complainant contact information field.
Item Assignee
Depending on whether an investigation is required or not, choose Required or Not required for the field Investigation required.
Perform the required investigation to understand and solve the complaint. Document it under the Investigation field.
After the investigation, choose the date on which the investigation was completed.
Item Assignee
Select which configuration items are affected by this complaint
Select which anomalies were found as part of the complaint investigation
Select which configuration items resolve this complaint
Add related tasks if applicable
Item Assignee
After identifying anomalies during the investigation, all anomalies should be fixed and resolved. All necessary tests and results should be documented.
Item Assignee
After the investigation was completed and found anomalies were fixed, fill in reply to the complainant.
Anyone
Once the Complaint is completed and ready for verification, change its status to Resolved.
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.
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.
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.
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.
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.
Anyone
If a Complaint needs to be reopened, change its status to Reopen.
Complaint Type: The nature of the complaint
Severe Adverse Event
Adverse Event
Product Complaint
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
Reference library for Ketryx release notes
{
"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:selectedSW 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

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?















/api/v1/build-artifacts/buildsArtifacts 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.







Residual Harm Probability - Post-mitigation P2 values
Residual Total Probability - Post-mitigation P0 values
Organization level (same hierarchy as above)
System defaults
{
"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 successfullydescribe('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:
Regulatory
System
User Interface Requirement
Security/Privacy
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









Risk matrix
System requirements specification (relations)
System design specification (relations)
System design specification (with details)
Test plan (relations)
Traceability matrix
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.
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.
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.
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














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





















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.
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.
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:
Multi-layered security is enforced to prevent native file system access or destructive actions, ensuring only a defined set of GitHub operations are allowed.
All code changes, analysis, and agent operations are logged for auditability.
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.
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
Work Instruction for Requirement configuration items
This Work Instruction provides the set of tasks required to be performed as part of the Requirement configuration item lifecycle.
This Work Instruction covers the complete Requirement lifecycle, from creation to obsolescence.
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
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
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
Two authoring paths may be used. Jump to 2.14 to see the steps for authoring on Ketryx with the AI assistant.
Anyone
Log into your Jira organization, e.g., your-company.atlassian.net.
Anyone
Press the Create button in the top-level navigation to open the form to create a new Jira work item.
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.
Define an appropriate title in the Summary field.
Anyone
Using the popover shown by Jira or by clicking the "All work" tab, navigate to the Jira page of the Requirement.
Anyone
Change the work item status to In Progress using the work item status selector.
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.
Anyone
Once the Requirement is completed and ready for design verification, change its status to Resolved.
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.
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.
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.
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.
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.
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.
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).
Anyone
Navigate to your Ketryx project in the web application at app.ketryx.com or, if applicable, your dedicated organization URL.
Anyone
You have two options for creating a Requirement in Ketryx:
Option A (recommended): AI-Assisted Creation
Open the Ketryx AI Assistant sidebar (click the AI assistant icon 🪄 in the top right of the page)
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
Click the "+ Create" button in the top navigation bar or on the All Items page
From the item type dropdown, select "Requirement"
Define an appropriate title in the Title field
Define an appropriate Assignee (the Item Assignee)
Anyone
After creation, the all items page will automatically open, filtered on newly created item or items.
Then, for each item created:
Click on the item title to open the item record details page
Click on edit item
Add an assignee
Change status to in progress
Item Assignee
3.4.1 AI-Assisted Field Completion and enhanced quality checks
Open the Ketryx Assistant sidebar
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
For relationship fields (e.g., Parent requirements, Introduced risks), click the 🪄 Suggest button next to the field.
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"
Review the suggestions and select appropriate items
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.
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









Risk matrix
System requirement specification (with details)
System design specification
Test plan
Traceability matrix
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.
"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
[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
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 is tested by Test Case
Requirement is affected by CAPA, Change Request, Anomaly
Requirement resolves Anomaly, Complaint
Requirement results from Change Request, CAPA












Guide on the Ketryx integration with TestRail
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.
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.)
Log into TestRail.
Make sure Enable API is active on the Administration->API page.
Navigate to your settings and API KEYS.
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.
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
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.
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.
If you add custom fields in TestRail, you can update the Ketryx configuration to recognize them using the setting.
There are multiple ways to handle versioning between Ketryx and TestRail. These options are prioritized in descending order:
Custom Field Mapping: Create a custom field in TestRail and map it to introducedInVersion in Ketryx.
Version Field: Use the default version field in TestRail results.
Parent Milestone: If the milestone name in TestRail matches the , it will be used as the version.
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.
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:
In TestRail, navigate to Administration > Integrations > Webhooks
Click Add Webhook
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.
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:
TestRail field type mapping: Matches TestRail fields to Ketryx attributes for test cases, test executions, and test plans.
TestRail status mapping: Aligns TestRail statuses with Ketryx item states.
TestRail result mapping: Converts TestRail test result statuses to Ketryx result states.
TestRail work item relations mapping: Maps TestRail fields to create relational links in Ketryx with items in external systems.
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.
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.
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.
TestRail field type mapping:
Extra field names:
The TestRail status mapping aligns TestRail status names with Ketryx item states such as OPEN, REOPENED, IN_PROGRESS, RESOLVED, or CLOSED.
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.
The TestRail result mapping converts TestRail test result statuses to Ketryx result states like PASSED, FAILED, or PASS_WITH_EXCEPTION.
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.
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.
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.
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:
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 '.*'
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
syncScope
Controls the overall sync scope:
'All': Syncs all items, regardless of milestone.
'Milestone': Syncs only items associated with milestones that match milestonePattern.
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
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.
Guide on the Ketryx integration with Jama
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.
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.)
Create API credentials
As an organization admin, log into Jama.
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 .
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.
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 .
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.
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).
When any item is deleted in Jama it is marked as deleted in Ketryx but remains linked for traceability.
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.
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:
Default release field: Use Jama's built-in default release field and map it to introducedInVersion in Ketryx.
Custom release fields: Use one, or ideally two, custom release1 and release2 fields and map them to introducedInVersion and obsoleteInVersion, respectively, in Ketryx.
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.
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 .
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.
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:
Jama item mapping: Matches Jama item types to Ketryx item types including default types such as Test Plan but also your own custom types.
Jama item status mapping: Aligns Jama statuses with Ketryx item states.
Jama item relationships mapping: Maps Jama fields to create relational links in Ketryx with items in external systems.
Jama field type mapping
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.
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.
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
Refer to and for a complete list of built-in types and fields available in Ketryx.
The Jama item status mapping aligns Jama status names with Ketryx item states such as OPEN, REOPENED, IN_PROGRESS, RESOLVED, or CLOSED.
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.
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.
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.
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 .
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.
For the Ketryx organization configure
a custom item type for Jama folders
and a custom relation for the Jama location.
For the Ketryx organization or project settings configure
For more detailed instructions and advanced configuration options, please refer to the section of the documentation.
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.


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.
Version Number Pattern.https://app.ketryx.com/api/integrations/testrail/webhookConfigure the webhook to trigger on relevant events (e.g., test case updates, test result changes)
data.url (optional): URL related to the eventbaselinePattern: 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
Only syncs milestone-related items
Uses the default 1-day edit window for test results
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.
Navigate to Organization, then Connections and click Add Jama connection.
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.
requirementTypetestTypefields: 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
configure a custom traceability matrix for the Jama hierarchy with as many levels as needed.
In document templates, use grouping to reflect the hierarchy.
Feel free to use the following template to get started:
{
"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" }
}
]Before determining your validation needs, let’s clarify the regulatory landscape:
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 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.
(Video guides included)
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 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
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
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
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.”
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]”
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
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
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.
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.
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.
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.
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
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.
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:
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
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
Manual for the Ketryx traceability matrix and its traceability mechanism
This manual describes the setup and processes for interpreting, maintaining and verifying the traceability matrix of a Ketryx project.
RTM: Requirements Traceability Matrix.
Specification: A Ketryx specification item, namely Software Item- and Hardware Item Specifications. A specification fulfills a Requirement with relevant details for the concrete implementation
Requirement: A Ketryx requirement item. A Requirement may have a requirement type assigned to make them more specific, such as Use case requirement types
The traceability mode dictates certain traceability behavior and rulesets in the traceability matrix that are derived from the Ketryx project schema configuration.
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)
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
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.
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).
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.
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.
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.
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
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
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.
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.
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.
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.
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.
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.
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
To remove a relation, hover over a link in the graph and click the remove button, represented by a cross icon.
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.
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
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.
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 .
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.
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:
Use case id: Unique identifier for a Use case related to the given Requirement
Use case title: The title of the Use case related to the given Requirement
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.
Ketryx allows the following customization for the Traceability feature and behavior
Requires manage project permissions.
For the desired project, navigate to the Settings page
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.
The Traceability Matrix document can be configured to omit certain columns and rename column names.
Refer to the page for details.
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.
Manual for the vulnerability management using Ketryx Software Supply Chain Management
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.
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.
This document describes the features and functionality of the Vulnerability management module in Ketryx Software Supply Chain Management.
The definitions of this document conform to the ones of ISO/IEC 27001, ANSI/AAMI SW96:2023, and AAMI TIR57:2016/(R)2019.
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.
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:
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.
Reported on: The date the vulnerability was reported.
Severity: The severity of the vulnerability and its score.
Risks: The number of risks associated with the vulnerability, if any.
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.
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.
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
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.
When nothing is selected, severity level is set to UNKNOWN.
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).
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.
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.
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:
Introduced in version: The first product version this assessment is effective in.
Obsolete in version: The first product version this assessment is no longer effective in.
Severity: This section can be used to modify the severity of the selected vulnerabilities.
CVSS vectors of version 3.0, 3.1, and 4.0 are supported.
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.
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:
Select a vulnerability in the Vulnerabilities list that already has an impact assessment.
Click the Create variant button.
This opens the Create variant page, pre-populated with the details from the original (base) assessment.
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.
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.
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.
Expand the detail panel for any vulnerability by clicking the expand icon on the right side of its row.
The panel displays the detailed information for the assessment that is currently effective.
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.
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.
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.
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.
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.
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.
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.
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.
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:
Title: The title of the vulnerability.
Severity: The severity of the vulnerability.
Score: The score of the vulnerability.
Ecosystem: The ecosystem of the vulnerability.
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.
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 .
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
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
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




















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.
External URL
Reported On
Severity (Severity level and/or Severity CVSS Vector string)
Additional fields for assessing the vulnerability impact (see section 6)
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.
For a comprehensive history of a single assessment item, click the "Record details" link, which will direct you to its complete record history page.
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














Manual for software dependency configuration management using Ketryx Software Supply Chain Management
This manual assumes you have access to Ketryx Software Supply Chain Configuration Management, and have created an Organization with Members and Groups.
The purpose of this manual is to instruct users on how to use Ketryx Software Supply Chain Configuration Management to manage software dependencies.
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).
The definitions of this document conform to the ones of ISO/IEC 62304.
User logs into Ketryx Platform at by using their connected Google or GitHub account, or using their email addresses.
User presses the Create project button to create a new project.
User inputs a project name and Git repository URL.
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:
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 .
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.
To approve one or more dependencies, click on the “Approve dependencies” button, then the “Approve” button at the bottom of the dependency approval dialog.
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.
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.
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.
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.
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
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.
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 .
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.
Once a dependency is approved, a user can revoke their approval.
Navigate to the history page by clicking History in the sidebar menu. Each given approval will show up as an individual row.
To revoke a particular approval for a dependency, click the Revoke approval button on the right-hand side of the row.
Confirm and approve the approval revocation.
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.
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.
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:
Below is a detailed description of how Ketryx scans for dependencies in each language.
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.
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.
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 *.
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.
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.
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.
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 .
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.
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.
Manual for risk management using the Ketryx Lifecycle Management
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.
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.
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.
ALM: Application Lifecycle Management
P1: Likelihood of occurrence
P2: Likelihood of harm
Po: Total ("overall") Probability
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.
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.
It is possible to perform risk analysis on a configuration item level, which can be done for the following item types:
Requirement
Software Item Spec
Hardware Item Spec
Change Request
If a configuration item results or is associated with a risk, it is referred to as an item with introduced risks.
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.
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.
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 .
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.
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.
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.
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.
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
Non-strict mode will enable the following behavior:
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.
The initial severity field may be selected freely and is not coupled to any harm (but may default to a harm's configured severity).
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:
On a risk configuration change, only empty fields on an uncontrolled Risk item will be modified, if necessary
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.
Ketryx provides a multitude of strict enforcements for various aspects of the risk management feature, namely:
Requiring the selection of a pre-defined harm value and its associated initial severity value
Enforcement of any risk analysis values derived from the default or customized
Requiring the selection of a pre-defined hazard value
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:
Ketryx will apply the enforced risk configuration to any uncontrolled Risk items and consequently create new records
Controlled items will remain in a controlled state and therefore unaffected
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.
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.
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 .
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.
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:
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.
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).
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 .
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.
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 .
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.
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.
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.
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
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.
The controlled risk and arising risks (if any) status indicate whether the relevant risks are in a controlled state.
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.
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 .
Columns in the risk matrix release document may be renamed or omitted. See the Risk matrix field under Document configuration on the page.
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.
Manual for creating and editing items in Ketryx
The purpose of this manual is to instruct users on how to manage items within Ketryx and what the limitations are.
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.
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 .
To create an item, at least the Title field must be filled in.
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 .
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.
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.
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.
Extra field names specified in the project item configuration are currently not supported in the form.
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.
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 .
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.
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 .
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.
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.
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.
[
{
"version": "3.1",
"confidentialityRequirement": "H",
"integrityRequirement": "H",
"availabilityRequirement": "M",
"modifiedAttackVector": "A"
},
{
"version": "4.0",
"confidentialityRequirement": "H",
"integrityRequirement": "H",
"modifiedAttackVector": "N",
"modifiedAttackComplexity": "L"
}
]


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
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.0Locked 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














package-lock.json
initialSeverityTextinitialRiskEvaluationText
residualOccurrenceProbabilityText
residualHarmProbabilityText
residualTotalProbability
residualSeverityText
residualRiskEvaluationText
isRiskAcceptable
Initial and residual severity
Initial and residual total probability
Initial and residual risk evaluation
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
Risk acceptability (Acceptable or Not acceptable)
Benefit-risk analysis (Rich-text field)












Title headers
Info/warning/error boxes
@ mentions for users and Jira tickets
Emojis
Dates
States
… and other similar complex constructs







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"
}
}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:
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.
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.
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.
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”
Before starting, ensure you have:
Essential:
Understanding of your device’s intended use and user needs
Recommended:
Team members assigned with appropriate roles
Quality Management System (QMS) procedures established for:
Risk management approach
(e.g. GitHub) for code traceability
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.\
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
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
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
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
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
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)
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
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
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
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
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
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
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
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
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.
Manual for incorporating Git-based Configuration Items into Ketryx Lifecycle Management
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.
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.
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.
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
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.
Please follow steps 1, 2, and 3 of the general for initial instructions.
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 .
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.
Log into Ketryx Platform at by using your connected Google or GitHub account, or using your email addresses.
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.
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.
Each markdown file is considered to be a single configuration item and can be of any type that is specified in the section.
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
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:
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:
When Ketryx parses a Markdown file, it scans the content for media references in all supported formats
For external URLs, Ketryx downloads the media file and stores it for persistent access
For local relative paths, Ketryx looks for the file in the Git repository relative to the Markdown file's location
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.
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
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.
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
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
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
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
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.
itemIdWhen 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.
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:
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.
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 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.
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.
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.
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.
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 .
The traceability configuration can be configured in the field and needs to be stored as a valid JSON structure.

src/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.
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.
Swift files (currently it supports items of type Test Case)
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)
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
@implements:KP-1011 - Defines traceability to another Test Case configuration item that already exists in Jira


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:
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:
A new status called REQUIREMENT_MISSING is defined. This status may be referred to in a traceability check later on
A cell with a status of REQUIREMENT_MISSING will show a "Requirement missing"
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)
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.
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:
A cell with a status of SPEC_MISSING and VERIFICATION_TEST_MISSING will result in the message "Specifiation and test cases missing"
A cell with SPEC_MISSING as its only state will result in the message "Specification missing"
The traceability configuration allows flexible definitions of one or more design and testing 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.
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)
FULFILLS: Specification fulfilling a Requirement
HAS_PARENT: Specification/Requirement having another Specification/Requirement as a parent
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.
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
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
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)
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"
Checks for any item shown in the RTM that is not yet controlled.
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
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.
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.
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
When using KQL in the Ketryx web application or document templating engine, full KQL can be used
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.
Some frequently used examples:
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 ("...").
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 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 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).
For instance,
can also be written as:
Depending on the operand, the operators and and or can be omitted entirely (see Sequences below).
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 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:ITEMSItems 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:ITEMSItems 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:KINDSNot 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:IDItems 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:TYPESItems 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:STATESItems 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:FLAGItems matching a certain (boolean) flag.
FLAG can be one of the following:
controlled: matches controlled items
deleted: matches deleted items
project:PROJECTItems 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:VERSIONNot 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_STRINGItems 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:USERItems 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:GROUPSNot 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.
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.
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 .
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.
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.
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:
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.mdtests: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 ignoredThis 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 contentEverything below the title is considered to be the description of the item.
### Inputs
Inputs content
### Outputs
Outputs content
## Another section
Another section content
<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 showntests: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
RiskitemAffects
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"
}
}
]
}


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
||
yes
a or not x and y or za or ((not x) and y) or za or not x and y or za || !x && y || zto:(0 1):TCRELATION:ITEMSRELATION:DEPTH:ITEMSFIELD:VALUEsome text"some text""RQ"RQ SWtype:Requirement or type:"Software Item Spec"has parent"::SAMD-1"has parent":*:(id:"SAMD-1")Manual for the usage of the Ketryx Platform
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.
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.
ISO 13485
IEC 62304
ISO 14971
IEC 61508-3
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.
ALM: Application Lifecycle Management
QMS: Quality Management System
QS: Quality System
EDMS: Electronic Data Management System
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:
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.
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.
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:
Product Managers
R&D Leads
Developers
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 .
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.
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:
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.
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.
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.
Requirement
Software Item Spec
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.
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.
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:
End-to-end traceability: allowing users to understand how everything is connected
Compliant-by-design: guiding users on regulated software development
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:
Design Controls: Record and manage requirements, specifications, and other design control items in Jira.
Configuration Management Controls: Record your source code, build, distribution and deployment directly from your source code management and cloud provider.
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.
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.
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 .
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)
All QMS documents can be stored in the Ketryx Electronic Data Management System (EDMS).
Design controls artifacts can be found and tracked in Ketryx through several screens and files. Relevant screens include
the Requirements traceability matrix screen,
the Graph screen (showing the architecture diagram),
the Risk management screen,
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.
Configuration management for the application software supply chain, including open source, cloud, COTS software, and other dependencies, is further explained in the .
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.
Item level change control. Completed via the configuration item's native record. This is further discussed in each item’s Work Instruction.
For Jira: change the status from open to In Progress, Resolved, and Closed
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.
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.
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.
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:
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.
Product Managers
Group Description: Leads product development, defines requirements and deals with complaints. Confirms that the application meets users' requirements.
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.
Requirement: R&D Leads, Quality Managers, Product Managers
Software Item Spec: R&D Leads, Quality Managers
Task: none (only the Item Assignee needs to approve)
Test Case: R&D Leads, Quality Managers, Quality Control
Further information on how to configure a project’s Approval Rules can be found in .
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:
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.
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.
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.
There are three different types of releases in Ketryx:
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.
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.
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.
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.
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 .
Ketryx supports three different monitoring options that you can adjust in the settings page of a version.
Automatic (Default): The release with the highest version number according to Semantic Versioning () is considered currently active.
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.
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.
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 .
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.
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 .
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 .
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 .
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.
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 .
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 .
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 .
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:
Configuration Item Level
Structured Change Control through a Change Request configuration item
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.
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.
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.
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.
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:
Recording the product feedback or adverse event using the Complaint configuration item
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).
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 .
After modifications have been implemented, each change request can be verified using a Test Case to show the change resolved the root cause.
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 .
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:
Filter-based selection of items in referenced projects: This mode allows defining a fine-grained scope of incorporated and referenceable items via queries.
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
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.
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.
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.
Complex systems are usually structured in several layers, as follows (from higher to lower level):
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
Sub-systems, integrated collections of software items or hardware items organization to accomplish a specific function or set of functions
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.
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 .
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:
Date and time of the change
Author of the change
Change type category
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.
Log into the Ketryx platform (e.g., )
Go to Organization.
Here you can change your organization name.
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.
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.
Go to a specific group's edit page using the Edit button.
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.
In the Ketryx Projects dashboard, select the Create project button.
Fill out the Name field for the project.
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.
In an existing project, navigate to Settings.
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.
Use the Save button to save the changes.
Log into your Jira organization (e.g., your-company.atlassian.net)
Go to Explore more apps in the Apps dropdown menu.
Search for 'Ketryx'.
Add the Ketryx for Jira App.
In the Ketryx Project dashboard, select the Create project button.
Fill out the name of the project.
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.
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 .
Create a Jira space for the System and a corresponding Ketryx project connected to it.
Create a Jira space for a Sub-system and a corresponding Ketryx project connected to it.
Create a Jira space for a Service and a corresponding Ketryx project connected to it.
In the System Jira space, create a Requirement System Requirement.
In the Sub-system Jira space, create a Requirement Sub-system Requirement.
Add the System Requirement to the Parent requirements of the Sub-system Requirement.
In the Service Ketryx project under Releases, create new versions 1.0, 1.1, and 2.0.
In the Sub-system Ketryx project under Releases, create a new version 1.0.
In the Settings for the Sub-system version 1.0, set the referenced project version for the
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.)
On the Documents page for the Sub-system version 1.0, generate the System Requirements Specification and the System Design Specification.
Note that the documents contain cross-project references, along with version numbers where specified.
Further detail on connecting to a cloud provider (currently, Ketryx only supports AWS) can be found in .
Please see for step-by-step instructions on how to set up Git-based configuration items.
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.
The Software Bill of Material Report covers software application dependencies both from open-source package managers and internally or manually entered information.
The Requirement Traceability Matrix shows that all tested requirements are traced to specifications and test cases.
Risk management plan, risk assessment demonstrating that risks have been appropriately mitigated, and risk management report.
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).
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.
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.
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.
The test plan a validated system was tested against. The test plan must be approved before testing should start.
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.
The Software Bill of Material Report covers cloud dependencies and their exact configuration during V&V.
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:
Enforce Multi-Factor Authentication (MFA) for all electronic signatures within the organization.
Promote other users to organization owners or revoke owner status from others (MFA required). However, owners cannot remove their own owner status.
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
Test Execution
Anomaly
Complaint
Change Request
CAPA
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.
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.
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)
Inactive: Manually marked inactive releases are always considered inactive.
As needed, Tasks will be created for required source code modification.
Periodically, modifications should be reviewed.
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
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.
Select the Complete installation in Ketryx button. You will be redirected to the Ketryx platform.
Select the Connect Jira organization 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.
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.
Software Release Process
Supply Chain Management: Software Dependencies
Supply Chain Management: Cloud Dependencies
Lifecycle Management: Milestones
Lifecycle Management: Test management
Lifecycle Management: Traceability
Requirement
Software Item Spec
Task
Test Case
Test Execution










































Anomaly



















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.
To get started with custom templates in Ketryx:
Navigate to a project's Documents page
Create a folder called Templates
Create a folder called Release inside the Templates folder
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.
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
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 .
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.
{name}: insert template variable name
{project.id}: insert the property id of an object project
{#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):
{$SET var = value}: set the variable var to the given value
{$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 .
{$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 .
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 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:
datetimevalue | 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
whereitems | where:'...': filter the given items based on the given filter ; the expression can refer to properties of each item
Example:
sortitems | 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):
sortByNumericTextFielditems | 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):
reverseitems | reverse: reverse the order of the given items
Example (sorting items by their id in reverse order):
groupitems | 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):
atitems | 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):
countitems | count: returns the number of items in a given list or properties in a given object
joinvalues | 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):
inMilestoneitem | 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.
inRegionitem | 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:
createMap and getFromMapcreateMap 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:
{: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.
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.
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.
In addition, templates may query for certain items in a project using the $KQL tag (as explained ).
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 in templates consists of objects (with certain properties), lists, strings, numbers, and dates. The following object types may appear.
OrganizationProjectProjectReferenceVersionMilestoneMeetingNoteDocumentItemItemRecordCoreThe core data for an item record contains the following properties:
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.
ItemRecordFullA full item record contains all the properties from , plus the following:
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.
CommentAttachmentThe 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.
TestRunTestStepContent 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.
IterationIterationParameterIterationStepResultIterationDefectRelationTraceabilityMatrixTraceabilityCheckTraceabilityRowTraceabilityCellTestStatusAutomatedTestExecutionApprovalDataUserTrainingStatusTrainingStatusDocumentTrainingDocumentVulnerabilityThe 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.
VulnerabilityInfoThe originalSeverity is set when the severity of the vulnerability was overwritten by a . It is not available when accessed through .
VulnerabilitySeverityDependencyLibraryThe 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.
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 ReportCyber 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
extraConfigurationsa <= blogical AND: a && b
logical OR: a || b
addition: a + b
subtraction: a - b
multiplication: a * b
division: a / b
atRequirement typenamemilestone{: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 promptversionScopeDescription
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 the document is generated in
project
Project the document is generated in
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
Referenced version
depth
number
Reference depth
project
Referenced project
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
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 who executed this test run (if available)
assignee
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
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
Item associated with this cell
testStatus
Test status associated with this cell
title
string
Title of this test
isInTestPlan
boolean
Whether this test is in the test plan
testCase
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
Approving user
id
string
Ketryx ID of the user
name
string
Full name of the user
email
string
Email of the 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
Document being trained on
latestAcknowledgement
Latest acknowledgement of the document by the user
record
Relevant record of the training document
approvals
list of ApprovalData
Approvals of the document
info
Vulnerability information
project
Project containing the vulnerability
descriptionContent
string
Rendered content for the vulnerability description
record
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 containing the dependency
type
string
Type of the dependency
record
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


{#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}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.
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.
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.
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.
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.
Custom description of each field, as a mapping from system field keys to custom descriptions.
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.
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.
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.
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.\
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.
Use the name "is child of" instead of the default relation name "has parent"
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.
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.
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.
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.
Whether to maintain Ketryx-defined Jira fields in a connected Jira instance. Enabled by default.
Map users from external systems to Ketryx users, based on their email address. Supported by select integrations only (currently Jama).
Whether to show withdrawn vulnerabilities in the vulnerability management feature. Disabled by default.
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 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).
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
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:
Perform the necessary steps on the provider side to register a new application.
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.)
Set the Sign-out redirect URL to https://app.ketryx.com . (Note: if using another domain, edit the Sign-in redirect URL and the
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.
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.
Mapping from Jira status names to Ketryx item states (OPEN, REOPENED, IN_PROGRESS, RESOLVED, or CLOSED).
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.
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
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.
Configuration of the traceability widget, which allows to display the details of the selected item
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.
Approve in Ketryx and transition and lock the Jama item
Transition in Jama and control the Ketryx item without further approvals
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.
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"].
Whether to enable the Assistant sidebar. Enabled by default.
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.
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.
Predefined prompt groups for the Assistant sidebar. Each group represents a expandable selection for defined templates.
Custom configuration of the AI-based features such as the item assistant.
Whether versions can be deleted by users with the appropriate permissions. Enabled by default.
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).
Status names to interpret as removal/obsolescence of an item w.r.t. releases, similarly to deleted items. Defaults to an empty list.
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".
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".
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).
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.
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.
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).
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.
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.
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.
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.
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.
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.
Other traceability configurations that are selectable in addition to the default configuration.
enforceGreenCheck will make these additional traceability configurations also affect the release checklist.
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.
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).
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).
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.
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.
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.
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.
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.
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.
Whether to include related items in auto-created incremental releases. Disabled by default.
KQL filter for tests to exclude from the test plan in auto-created incremental releases.
Omitted documents in auto-created incremental releases.
Base ref name (glob pattern) to match against before auto-creating an incremental version. By default, the main analyzed branch is taken.
Head ref name (glob pattern) to match against before auto-creating an incremental version. By default, all head ref names are accepted.
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.
Whether to enable the threat modeling feature. Disabled by default.
Note that this feature requires configuration of certain Custom item types.
Configuration object for the threat modeling feature.
Any value not specifically set here will be used from the default configuration object.
Default configuration object:
Whether to enable the vulnerability management feature. Enabled by default.
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.
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.
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").
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 .
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.
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
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.
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.
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.
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.
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.
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.
Whether to require comments when users reject records. Disabled by default.
If enabled, users will be required to provide a comment when rejecting records.
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.
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.
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').
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
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
Mapping from TestRail status names to Ketryx item states (OPEN, REOPENED, IN_PROGRESS, RESOLVED, or CLOSED).
Mapping from TestRail result names to Ketryx item states (PASSED, FAILED, FAIL_ACCEPTED or PASS_WITH_EXCEPTION).
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').
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
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.
Mapping from Jama status names to Ketryx states.
Mapping from Jama item relationships to Ketryx relations.
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.
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
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.
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.
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.
Whether milestone documents are required to be up-to-date for the milestone to be approvable. Enabled by default.
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.
Documents that should contain all items (independently of milestones), even if they are generated as milestone documents.
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 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").
Whether to include a title page (on by default).
Whether to include a page listing the document version history (on by default).
Settings for all generated Word documents.
Use the setting for Custom template variables to define custom template variables such as $DOC_ID.
Settings for all generated Excel spreadsheets.
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.
Customization of SRS output documents.
Customization of RTM output documents.
Customization of Risk Matrix output documents.
Customization of Release History documents.
Default values:
Customization of Release Notes documents.
Default values:
Customization of SBoM – SOUP – Software Configuration Report documents.
Customization of Test Plan documents.
Customization of Testing Report documents.
Customization of Risk Management File documents.
Default date format to render date/time values in template-based documents. Placeholders as defined by can be used.
Default time zone to use for date/time values in template-based documents. Time zones are specified using their .
Document normalization settings.
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.
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 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.
Use external editors to collaborate on release documents. This requires a connection for the respective system.
Customization of hazardous situation values.
Customization of event sequence values.
Customization of event step values.
Customization of hazard values.
Customization of harm values. A harm may include an associated initial severity. If strict mode is enabled, it is recommended to add the severity.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
ANOMALY (Anomaly)
CAPA (CAPA)
CHANGE_REQUEST (Change Request)
AUTHORITY_MATRIX (Authority Matrix)
CHANGE_MANAGEMENT_FILE (Change Management File)
CHANGE_REQUEST_REPORT (Change Request Verification Report)
AFFECTS (affects)
CONTAINS_TESTS (contains)
CUSTOM (custom)
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
https://app.ketryx.comMake 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
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 EDMStestPlanApproval: Approval of a release test plan
vulnerabilityApproval: Approval of a vulnerability
Tests
Traceability
$.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.
'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.
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)
{
"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": {...},
}
}
}
}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