diff --git a/site/faq/faq-inventory.qmd b/site/faq/faq-inventory.qmd index cbe623d9d..81e411ec5 100644 --- a/site/faq/faq-inventory.qmd +++ b/site/faq/faq-inventory.qmd @@ -27,6 +27,10 @@ categories: ["inventory", "record registration", "inventory customization", "rec By default, the [{{< fa code >}} Developer]{.bubble} role[^2] has sufficient permissions to register records. +## Can submitters register records before the final inventory type is known? + +Yes. When Record Intake is available, you can flag an inventory record type for intake so submitters register a holding record first; a classification workflow (or an admin) then converts it in place to the correct type, or rejects and archives it.^[[Record Intake](/guide/inventory/record-intake.qmd)] + ## Are registration questionnaires customizable? - Yes, along with default fields provided by {{< var vm.product >}} as part of your basic record (model) information, you can add additional record information and make these custom fields required when creating records.[^3] diff --git a/site/guide/_sidebar.yaml b/site/guide/_sidebar.yaml index 62b615481..98a9483bd 100644 --- a/site/guide/_sidebar.yaml +++ b/site/guide/_sidebar.yaml @@ -87,6 +87,7 @@ website: contents: - guide/inventory/manage-inventory-record-types.qmd - guide/inventory/manage-inventory-fields.qmd + - guide/inventory/record-intake.qmd - text: "Working with the inventory" file: guide/inventory/working-with-the-inventory.qmd contents: diff --git a/site/guide/inventory/_add-edit-record-types.qmd b/site/guide/inventory/_add-edit-record-types.qmd index e7cc4cff0..f144aea01 100644 --- a/site/guide/inventory/_add-edit-record-types.qmd +++ b/site/guide/inventory/_add-edit-record-types.qmd @@ -16,6 +16,7 @@ c. Include optional information for your record type: - Enter a **Description** to indicate the purpose of the record type displayed on the list of record types. - Enter a URL-safe **Slug** where a list of records of this type will be accessible in your {{< var validmind.platform >}} URL under the inventory path.[^url-slug] + - If Record Intake is available for your organization, select **This Inventory Record Type will be used for intake.** when creating a holding type for later classification.^[[Record Intake](/guide/inventory/record-intake.qmd)] Only one type can be flagged for intake; document and artifact types do not apply to intake types. - Select the **Document Types** available to be created for this record type.^[[Manage document types](/guide/templates/manage-document-types.qmd)] - Select the **Artifact Types** available to be logged on this record type.^[[Manage artifact types](/guide/validation/manage-artifact-types.qmd)] - Select the **Stakeholder Types** that should be displayed on this record type.^[[Manage record stakeholder types](/guide/configuration/manage-record-stakeholder-types.qmd)] diff --git a/site/guide/inventory/archive-delete-records.qmd b/site/guide/inventory/archive-delete-records.qmd index 93d98b825..924190e38 100644 --- a/site/guide/inventory/archive-delete-records.qmd +++ b/site/guide/inventory/archive-delete-records.qmd @@ -66,6 +66,8 @@ c. Click **Yes, Archive Record** to confirm archival of that record. Archived records can be reactivated to make them available for use again in the inventory. +For intake records, admins can also use **Reject intake** on the record overview to archive the submission with a required reason without converting it to another inventory record type.^[[Record Intake](record-intake.qmd#reject-intake)] + #### Activate records a. Select any stage other than Archived from the **{Record} Stage** drop-down menu where `{Record}` is the type of record. diff --git a/site/guide/inventory/manage-inventory-record-types.qmd b/site/guide/inventory/manage-inventory-record-types.qmd index e1f44f801..72664db01 100644 --- a/site/guide/inventory/manage-inventory-record-types.qmd +++ b/site/guide/inventory/manage-inventory-record-types.qmd @@ -27,6 +27,22 @@ date: last-modified {{< include /guide/inventory/_add-edit-record-types.qmd >}} +## Flag a type for Record Intake + +If Record Intake is available for your organization, you can flag an inventory record type for intake when you create it: + +1. In the left sidebar, click **{{< fa gear >}} Settings**. + +2. Under {{< fa cube >}} Inventory, select **Inventory Record Types**. + +3. Click **{{< fa plus >}} Add Inventory Record Type**. + +4. Enter a **Name** for the holding type, then select **This Inventory Record Type will be used for intake.** + +Only one inventory record type can be flagged for intake. {{< var vm.product >}} creates special stages for that type; document and artifact types do not apply. To use a different type for intake later, delete the existing intake type and create another with the option selected. + +**Learn more:** [Record Intake](record-intake.qmd) + ## Enable or disable record types {{< include /guide/inventory/_enable-disable-record-types.qmd >}} diff --git a/site/guide/inventory/record-intake.qmd b/site/guide/inventory/record-intake.qmd new file mode 100644 index 000000000..f4bcfb3e6 --- /dev/null +++ b/site/guide/inventory/record-intake.qmd @@ -0,0 +1,152 @@ +--- +# Copyright © 2023-2026 ValidMind Inc. All rights reserved. +# Refer to the LICENSE file in the root of this repository for details. +# SPDX-License-Identifier: AGPL-3.0 AND ValidMind Commercial +title: "Record Intake" +description: "Flag an inventory record type for intake, classify submissions with workflows, convert records in place, and reject intake when needed." +date: last-modified +--- + +Use **Record Intake** when non-expert submitters need a simple way to register a new entry, and authorized users later classify it into the correct inventory record type (for example Agent, Model, or Tool). + +Intake is an opt-in holding inventory record type that you name yourself. Only one inventory record type in an organization can be flagged for intake. Records keep the same identifier when they convert, so activity history continues on the converted record. + +::: {.callout} +## Availability + +Record Intake appears in {{< var vm.product >}} only when it is available for your organization. If you do not see the intake option when adding an inventory record type, contact {{< var vm.product >}} Support. +::: + +::: {.attn} + +## Prerequisites + +- [x] {{< var link.login >}} +- [x] You are a [{{< fa hand >}} Customer Admin]{.bubble} or assigned another role with sufficient permissions to perform the tasks in this guide.[^1] + +::: + +## Flag an inventory record type for intake + +1. In the left sidebar, click **{{< fa gear >}} Settings**. + +2. Under {{< fa cube >}} Inventory, select **Inventory Record Types**. + +3. Click **{{< fa plus >}} Add Inventory Record Type**. + +4. Enter a **Name** for your intake holding type (for example Intake, Discovery Queue, or New Submissions). + +5. Select **This Inventory Record Type will be used for intake.** + + {{< var vm.product >}} creates special stages for the type so records can be held until they are classified. Document types and artifact types do not apply to intake types and are unavailable while the option is selected. + +6. Complete any other details (such as slug or stakeholder types), then click **Create**. + +::: {.callout} +## Only one intake type + +Only one inventory record type can be flagged for intake. If an intake type already exists, the option is unavailable when you add another type. To use a different type for intake, delete the existing intake type, then create a new one with the intake option selected. You cannot turn the intake flag on or off when editing an existing type. +::: + +## Register Intake records + +1. In the left sidebar, click **{{< fa cubes >}} Inventory**. + +2. Select the inventory view for your intake record type (or choose it in the inventory record type selector). + + When an intake type is configured and you have not yet chosen an inventory view, {{< var vm.product >}} can open that intake view on first visit so submitters land in the right place. + +3. Click **Register {Record}** where `{Record}` is your intake record type, and complete the registration fields configured for that type.^[[Register records in the inventory](register-records-in-inventory.qmd)] + +Submitting an intake record is recorded in record activity as an intake submission.^[[View record activity](/guide/reporting/view-record-activity.qmd)] + +::: {.callout} +## Documents and artifacts after conversion + +While a record is still on the intake type, document and artifact navigation for that record is hidden. Those surfaces become available after the record converts to its real inventory record type. +::: + +## Configure an Intake classification workflow + +Classify intake records with a workflow scoped to your intake inventory record type:^[[Configure workflows](/guide/workflows/configure-workflows.qmd)] + +1. Collect the information reviewers need (for example with **{{< fa arrow-pointer >}} User Action**, **{{< fa maximize >}} Condition Branch**, and **{{< fa users >}} Approval** steps).^[[Workflow step types](/guide/workflows/workflow-step-types.qmd)] + +2. Finish the path with an **{{< fa layer-group >}} Inventory Record Type Change** step that converts the record in place to the target type. + + - The step is available in the workflow builder when the workflow is scoped to the inventory record type flagged for intake. + - Select a fixed target inventory record type. + - Set **Classification Method** to **Automated routing** or **Manual review**. This labels how the type was assigned in record activity; it does not change whether the conversion runs when the step executes. + - Target options exclude the intake type and disabled inventory record types. + +3. Publish the workflow.^[[Configure workflows](/guide/workflows/configure-workflows.qmd#publish-workflow)] + +::: {.callout} +## Automated routing vs Manual review + +Selecting **Manual review** on **Inventory Record Type Change** does **not** pause the workflow or open a review UI on that step. It only records that a human chose the type. + +When the step runs (with either method), {{< var vm.product >}}: + +- Converts the intake record in place to the target inventory record type (same record identifier) +- Remaps the record to the target type's initial stage +- Keeps custom field values; fields that apply to the new type become available +- Writes an activity event labeled as automated routing or after manual review +- Can start matching target-type workflows that listen for a record-type-changed trigger (best effort) + +Use **Manual review** when an earlier step collected a human decision — typically a **{{< fa arrow-pointer >}} User Action** or **{{< fa maximize >}} Condition Branch** that routes to a path with the matching fixed target type. Use **Automated routing** when the workflow itself decides the target (for example via conditions that lead to a fixed type).^[[Inventory Record Type Change](/guide/workflows/workflow-step-types.qmd#inventory-record-type-change)] +::: + +After conversion, the record URL updates to the new inventory record type so you stay on the converted record instead of seeing a "not found" error. + +## Change inventory record type + +Admins can reclassify a record without waiting for the classifier workflow: + +1. Open the record overview. + +2. Click **Change inventory record type**. + +3. Select the **New inventory record type**. An intake type cannot be selected as a migrate target. + +4. (Optional) Enter a **Reason** for the activity history. + +5. Review the compatibility preview, acknowledge any warnings, and confirm **Change inventory record type**. + +The change keeps the same record identifier and continues the activity history on the new type. + +## Reject intake + +If an intake submission should not be converted: + +1. Open the intake record overview. + +2. Click **Reject intake**. + +3. Enter a **Reason** (for example duplicate or out of scope). + +4. Click **Reject and archive**. + +Rejecting archives the intake record via its **Archived** stage without converting it. The record remains available under the archived filter, and the reason is preserved in activity.^[[Archive and delete records](archive-delete-records.qmd)] + +## Track Intake activity + +On the record **{{< fa wifi >}} Activity** page, Intake lifecycle events can include:^[[View record activity](/guide/reporting/view-record-activity.qmd)] + +- Submitted for intake +- Classified or reclassified (from type → to type), including whether assignment used automated routing, manual review, or an admin change, and how many fields carried over +- Rejected and archived, with the reason + +When classification ran through a workflow, use **View workflow execution** to open the related execution on the record's Workflows tab. + +## What's next + +- [Manage inventory record types](manage-inventory-record-types.qmd) +- [Workflow step types](/guide/workflows/workflow-step-types.qmd#inventory-record-type-change) +- [Configure workflows](/guide/workflows/configure-workflows.qmd) +- [View record activity](/guide/reporting/view-record-activity.qmd) + + + + +[^1]: [Manage permissions](/guide/configuration/manage-permissions.qmd) diff --git a/site/guide/inventory/register-records-in-inventory.qmd b/site/guide/inventory/register-records-in-inventory.qmd index b535f7ac4..a2cf0f2b4 100644 --- a/site/guide/inventory/register-records-in-inventory.qmd +++ b/site/guide/inventory/register-records-in-inventory.qmd @@ -12,6 +12,8 @@ tbl-cap-location: bottom Register records with {{< var vm.product >}} as the first step towards streamlining your organization's risk management oversight. +When Record Intake is available for your organization and an inventory record type is flagged for intake, submitters can register holding records for later classification.^[[Record Intake](record-intake.qmd#register-intake-records)] + ::: {.attn} ## Prerequisites diff --git a/site/guide/inventory/setting-up-the-inventory.qmd b/site/guide/inventory/setting-up-the-inventory.qmd index e108b251d..a46f19624 100644 --- a/site/guide/inventory/setting-up-the-inventory.qmd +++ b/site/guide/inventory/setting-up-the-inventory.qmd @@ -14,6 +14,7 @@ listing: contents: - manage-inventory-record-types.qmd - manage-inventory-fields.qmd + - record-intake.qmd --- Set up the {{< var validmind.platform >}} to support your organization's requirements by customizing what record types and associated fields are available in the inventory. diff --git a/site/guide/inventory/working-with-the-inventory.qmd b/site/guide/inventory/working-with-the-inventory.qmd index 5bed54c6b..97885f131 100644 --- a/site/guide/inventory/working-with-the-inventory.qmd +++ b/site/guide/inventory/working-with-the-inventory.qmd @@ -13,6 +13,7 @@ listing: fields: [title, description] contents: - register-records-in-inventory.qmd + - record-intake.qmd - customize-inventory-layout.qmd - edit-inventory-fields.qmd - customize-record-overview-page.qmd diff --git a/site/guide/reporting/_view-record-activity-overview.qmd b/site/guide/reporting/_view-record-activity-overview.qmd index d6a86f8eb..772f0e75e 100644 --- a/site/guide/reporting/_view-record-activity-overview.qmd +++ b/site/guide/reporting/_view-record-activity-overview.qmd @@ -13,4 +13,5 @@ The record **{{< fa wifi >}} Activity** page shows a history of activities for t - User comment creation and replies on documents - Stakeholders added or removed - Workflow activity +- Record Intake lifecycle events when an intake inventory record type is configured — submitted for intake, classified or reclassified (including automated routing, manual review, or admin changes), and rejected and archived^[[Record Intake](/guide/inventory/record-intake.qmd#track-intake-activity)] diff --git a/site/guide/workflows/_conditional-requirements.qmd b/site/guide/workflows/_conditional-requirements.qmd index 609183e81..a1cd90cfe 100644 --- a/site/guide/workflows/_conditional-requirements.qmd +++ b/site/guide/workflows/_conditional-requirements.qmd @@ -8,6 +8,15 @@ Conditional requirements are required or optional for the following step types:^ ### {{< fa cube >}} Inventory Record Stage Change [optional]{.smallercaps .pink} +1. Under **When These Conditions Are Met**, set your `AND` and `OR` conditions. +2. Add a single independent rule or a linked condition group. These rules and groups can be nested if desired: + + - Click **{{< fa plus >}} Add Rule** to add an independent rule. + - Click **{{< fa plus-minus >}} Add Group** to add a linked group of rules that all must be true to qualify. + +### {{< fa layer-group >}} Inventory Record Type Change [optional]{.smallercaps .pink} + + 1. Under **When These Conditions Are Met**, set your `AND` and `OR` conditions. 2. Add a single independent rule or a linked condition group. These rules and groups can be nested if desired: @@ -179,6 +188,8 @@ Configure conditional requirements for the following step types: - {{< fa cube >}} Inventory Record Stage Change **[optional]{.smallercaps}** +- {{< fa layer-group >}} Inventory Record Type Change **[optional]{.smallercaps}** + - {{< fa tag >}} Artifact Status Change **[optional]{.smallercaps}** - {{< fa arrow-pointer >}} User Action **[optional]{.smallercaps}** diff --git a/site/guide/workflows/_workflow-step-types.qmd b/site/guide/workflows/_workflow-step-types.qmd index c98c76d31..044bd8ab2 100644 --- a/site/guide/workflows/_workflow-step-types.qmd +++ b/site/guide/workflows/_workflow-step-types.qmd @@ -16,6 +16,31 @@ SPDX-License-Identifier: AGPL-3.0 AND ValidMind Commercial --> | **Set Inventory Record Stage To** | Select the record stage to transition to. | : **{{< fa cube >}} Inventory Record Stage Change** step configuration {.hover tbl-colwidths="[40,60]"} +### {{< fa layer-group >}} Inventory Record Type Change + + +- Converts a record to a different inventory record type in place (same record identifier; activity history continues).^[[Record Intake](/guide/inventory/record-intake.qmd)] +- Available when configuring workflows for the inventory record type flagged for intake. +- Target options exclude the intake type and disabled inventory record types. + +| Field | Description | +|---:|---| +| **When These Conditions Are Met** (optional) | Add conditional requirements to qualify for this step.^[[Conditional step requirements](/guide/workflows/conditional-step-requirements.qmd#inventory-record-type-change)] | +| **Target Inventory Record Type** | Select the fixed inventory record type to convert to. | +| **Classification Method** | Select **Automated routing** or **Manual review**. Labels how the type was assigned in record activity. Both options convert the record immediately when this step runs — **Manual review** does not pause the workflow or open a review UI on this step. | +: **{{< fa layer-group >}} Inventory Record Type Change** step configuration {.hover tbl-colwidths="[40,60]"} + +::: {.callout} +## Classification Method is audit metadata + +**Classification Method** is author-declared on the step because the runtime cannot reliably infer whether a human reviewed the selection. + +- **Automated routing** — Same in-place conversion; activity records the assignment as automated routing. +- **Manual review** — Same in-place conversion; activity records the assignment as after manual review. + +Typical **Manual review** pattern: earlier in the intake workflow, a reviewer chooses the path (for example with a **{{< fa arrow-pointer >}} User Action** or **{{< fa maximize >}} Condition Branch**). Configure each path's **Inventory Record Type Change** step with the matching fixed target type and **Manual review** so activity labels the conversion as after manual review. +::: + ### {{< fa tag >}} Artifact Status Change @@ -261,6 +286,10 @@ Sends a HTTP request with optional additional conditions.^[[Conditional step req Transitions a record into another stage. +#### {{< fa layer-group >}} Inventory Record Type Change + +Converts a record to a different inventory record type in place (for example Intake → Agent). + #### {{< fa tag >}} Artifact Status Change Transitions an artifact into another status.