--- alias: tutorials-exception-management-creating-a-protocol glightbox: false description: "Create a protocol by associating a change set, configuring properties, and setting it as effective" --- # Creating a Protocol To create a **Protocol**, follow the sequence of steps shown below: 1. Associate a **Change Set** to the new **Protocol** being opened. 2. Configure **Protocol** properties and states. 3. Set **Protocol** as Effective. ## Step 1: Associate a Change Set Since the **Protocol** entity is a versioned object, you must always start by associating a change set when you create this object. ## Step 2: Fill out General Data The **General Data** tab holds most of the **Protocol** properties. On this tab, you need to name the object being created in the system, define some mandatory properties, as well as which actions should be allowed or restricted in future instances. On the below image, you find an example where it was filled a set of values on the main Protocol Properties. The General Data is divided into multiple sections: - **General Data** section, which holds the set of properties that defines the object identity and type; - **Information** section, where it's defined the purpose of the protocol and its ownership; - **Overrides** section, which allows the user to set the level of flexibility that he intends to have when execution the instances related with the **Protocol**; - **Options** section, where user can configure the system to condition material transactions and system behaviors while executing the **Protocol Instance**; - **Notifications** section, when enabled the system sends out notification to relevant users: the protocol initiator; the protocol owner; and members associated to the executor roles defined for each protocol state. ![Protocolcreationgeneraldata](../../../images/protocolcreationgeneraldata.png) Watch the following video for a detailed explanation of the options described above. {% set video_id = '98cedeb65b1821981b2b0eb2f639f7a3' %} {% include-markdown 'includes/cloudflare_stream.md' %} !!! info For more information, see [[user-guide-create-protocol]]. ## Step 3: Define Dispositions When configuring the **Dispositions** tab, you can define which actions can occurr in a future instance. From the available configuration options, you can set values for: - **Allow Full Record Loss** - **Allow Rework** - **Allow Temporary Off Flow** The **Protocol** Dispositions can be commonly used among all **Protocol** states where dispositions are allowed. Watch the video below for a detailed explanation of each option. {% set video_id = '1a0be32ddc0fab3b9840c2b0e691916f' %} {% include-markdown 'includes/cloudflare_stream.md' %} !!! info For more information, see [[user-guide-create-protocol]]. ## Step 4: Set Parameters The **Parameters** tab is where you need to add all the parameters that you want to use in each **Protocol** state. These set of parameters are independent objects being created specifically for that **Protocol** use and that are not related with any existing object created from the **Parameter** entity. Watch the video below to see how to set parameters for your **Protocol**. {% set video_id = '1814a3dabe2ad6566fd262cbfc1cb1cb' %} {% include-markdown 'includes/cloudflare_stream.md' %} ## Step 5: Configure Protocol States At this stage, you need to outline the different **Protocol** states which are representative of the workflow, as well as the different transitions between them. The following video demonstrates how you can configure each **Protocol** state. {% set video_id = '2895ae4d3ee9bc6f53be4ad4c77688e9' %} {% include-markdown 'includes/cloudflare_stream.md' %} ### General Data The **Protocol** state configuration starts with the definition of the **Protocol** state name. Optionally, it is possible to restrict its execution to a specific executor role and to add an existing **Checklist** that can be part of the execution. Finally, if you want to have a different state change behavior from the one previously defined for the whole **Protocol**, you can do it at this stage. Watch the video below to see this in action. {% set video_id = 'e3930d2996fb781a9bb6a382f5d107e5' %} {% include-markdown 'includes/cloudflare_stream.md' %} ### Tasks When configuring the **Tasks** tab, you can set the permission to create tasks when executing that **Protocol** state. If task creation is allowed, you can configure the Task Creation State in each **Protocol** state, as shown in the video below. {% set video_id = '715927b8a606b8395215847bda5912ac' %} {% include-markdown 'includes/cloudflare_stream.md' %} ### Dispositions In each **Protocol** state, you can define whether the **Material** disposition should be allowed, and if so, whether it requires approval and what should be its disposition mode: Allow, Approve, Execute or Require. The following video explains the options mentioned above. {% set video_id = 'fd65986a377cac62f52c6bbb787450d3' %} {% include-markdown 'includes/cloudflare_stream.md' %} ### Parameters From the list of parameters that were previously added at the **Protocol** level, you should pick which ones you intend to use in a given **Protocol** state, as shown in the video below. {% set video_id = '4d113e33f3627ab239b4b204e8bb4730' %} {% include-markdown 'includes/cloudflare_stream.md' %} ## Step 6: Set Protocol Version as Effective Setting the **Protocol** version as Effective makes that object ready to be used in the system. From this moment, the **Protocol** can be configured in a given system context and a new **Protocol Instance** can be executed. For more information, see [[user-guide-set-version-effective]]. !!! info To continue learning, proceed to [[tutorials-exception-management-execute-protocol-instance]] or [[tutorials-exception-management-rules]].