---
alias: user-guide-protocol-index
description: "This documentation outlines a workflow management system for exception handling processes"
---
# Protocol
:lock: Protocol.**Show**
## Overview
**Protocols** are used to address Exception Management, sometimes referred to as NCR (Non-Conformance Report) or OCAPS (Out-of-Control Action Plan System).
The Exception Management contains essentially two objects:
* **Protocol** - represents the definition of the workflow.
* **Protocol Instance** - are run-time occurrences of the workflow based on the **Protocol** definition.
Each **Protocol** defines a workflow, as well as a set of parameters that can be used in the different **Protocol** states. Each **Protocol** state can have a specific role associated, a [Checklist](../checklist/index.md), parameters , dispositions for the associated materials, notes and tasks.
A **Protocol Instance** can be associated with one or more **Materials**. There are two important **Protocol Instance** properties which apply to all the **Materials** associated with the **Protocol Instance**:
* Inhibit Ship - the Materials cannot be shipped to another Facility while the **Protocol Instance** is open.
* Inhibit Move From Step - the *Material Step* cannot be changed while the **Protocol Instance** is open.
!!! info
Protocols are part of *Exception Management* which is a Critical Manufacturing optional module.
## Versioned Data
A **Protocol** is a change-controlled object and contains versioned data components. All versions must be associated with a *Change Set* to follow an approval cycle, as shown in the next picture.
```mermaid
graph TD
subgraph Protocol
Main1["Global Data
(Without Change Control)"] --- A1[None]
Main2["Versioned Data
(With Change Control)"] --- A2[All other]
end
classDef mermaid_title color:#000, fill:#fafafa, stroke:#fafafa, stroke-width:0x, font-size:100%, font-weight:200;
classDef mermaid_start color:#000, fill:#fafafa, stroke:#fafafa, color:#fafafa, stroke-width:0x, font-size:100%, visibility: hidden;
classDef mermaid_businessdata color:#000, fill:#65CDE8, stroke:#65CDE8, stroke-width:0px, font-size:100%;
classDef mermaid_nonbusinessdata color:#000, fill:#B7DEE8, stroke:#B7DEE8, stroke-width:0px, font-size:100%;
classDef mermaid_entity color:#000, fill:#FB9F53, stroke:#FB9F53, stroke-width:0px, font-size:100%;
classDef mermaid_entitylinked color:#000, fill:#FCD5B5, stroke:#FCD5B5, stroke-width:0px, font-size:100%;
classDef mermaid_context color:#000, fill:#B9CDE5, stroke:#B9CDE5, stroke-width:0px, font-size:100%;
classDef mermaid_optional color:#000, fill:#B7DEE8, stroke:#65CDE8, stroke-width:1px, font-size:100%, stroke-dasharray: 5 5;
classDef mermaid_state color:#000, fill:#d7e4bd, stroke:#000, stroke-width:1px, font-size:100%, font-weight:300;
class Main1,Main2 mermaid_entity
class A1,A2 mermaid_entitylinked
```
## Tying Everything Together
```mermaid
graph LR
A1[Task] --- L1[Protocol Task]
A2[Material] --- L2[Protocol Material]
B1[Resource] --- B2[Protocol Resource]
B3[Material Deviation] --- L3
B4[Chart Data Point Occurrence] --- L3
B2 --- L3
L2 --- L3[Protocol Instance]
L3 ---|Related| L3
A3[Employee] -.- Main[Protocol]
A4[Chart Rule] --- Main
A5[Data Collection Parameter] --- Main
L3 ==== Main
L1 --- L3
L2 === Main
Main --- A6[State Model]
A6 --- A7[State Model State]
A7 --- L4[Protocol State Detail]
L4 -.- A8[Roles]
L4 -.- A9[Checklist]
Main === L5[Protocol Parameter]
Main === L4
L4 --- L6[Protocol State Detail Parameter]
L5 --- L6
L3 --- L7[Protocol Path]
L7 --- L8[Protocol Path Parameter]
L5 --- L8
L7 -.- A8
L7 -.- L9[Checklist Instance]
L3 -.- A10[Product]
L3 -.- A11[Facility]
L3 -.- A12[Flow]
L3 -.- A13[Step]
classDef mermaid_title color:#000, fill:#fafafa, stroke:#fafafa, stroke-width:0x, font-size:100%, font-weight:200;
classDef mermaid_start color:#000, fill:#fafafa, stroke:#fafafa, color:#fafafa, stroke-width:0x, font-size:100%, visibility: hidden;
classDef mermaid_businessdata color:#000, fill:#65CDE8, stroke:#65CDE8, stroke-width:0px, font-size:100%;
classDef mermaid_nonbusinessdata color:#000, fill:#B7DEE8, stroke:#B7DEE8, stroke-width:0px, font-size:100%;
classDef mermaid_entity color:#000, fill:#FB9F53, stroke:#FB9F53, stroke-width:0px, font-size:100%;
classDef mermaid_entitylinked color:#000, fill:#FCD5B5, stroke:#FCD5B5, stroke-width:0px, font-size:100%;
classDef mermaid_context color:#000, fill:#B9CDE5, stroke:#B9CDE5, stroke-width:0px, font-size:100%;
classDef mermaid_optional color:#000, fill:#B7DEE8, stroke:#65CDE8, stroke-width:1px, font-size:100%, stroke-dasharray: 5 5;
class Main mermaid_entity
class A1,A2,B1,B3,B4,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13 mermaid_businessdata
class L1,L2,B2,L3,L4,L5,L6,L7,L8,L9 mermaid_entitylinked
class C1,C2,C3,C4,C5,C6 mermaid_context
class N1,N2,N3,N4,N5,N6 mermaid_nonbusinessdata
click Main "../../business-data/protocol"
click A1 "../../business-data/task"
click A2 "../../business-data/material"
click A3 "../../business-data/employee"
click A4 "../../business-data/chart"
click A5 "../../business-data/parameter"
click A6 "../../administration>state_models"
click A7 "../../administration>state_models"
click A8 "../../administration/security/roles"
click A9 "../../business-data/checklist"
click A10 "../../business-data/product"
click A11 "../../business-data/facility"
click A12 "../../business-data/flow"
click A13 "../../business-data/step"
click L3 "../../business-data/protocol/protocol-instance"
```
## Sequence Of Steps
The necessary steps for using a **Protocol** are the following:
1. Create the necessary **Checklists** with the scope *Exception Management*. Note that the **Checklists** themselves are versioned entities.
2. Create a **Protocol** - note that it is necessary to associate the **Protocol Version** with a **Change Set**.
3. Approve the **Change Set**, which contains the **Protocol Version** that has been created.
4. Open as many Protocol Instances as desired.
!!! info
For convenience, the **Protocol** can be configured to use implicit *Change Sets*. Please refer to the [Change Set](../change-set/index.md) section for more information on this topic.
{{ generate_index() }}