<?xml version="1.0" encoding="UTF-8"?>
<org.eclipse.epf.uma:ContentDescription xmi:version="2.0"
    xmlns:xmi="http://www.omg.org/XMI" xmlns:org.eclipse.epf.uma="http://www.eclipse.org/epf/uma/1.0.5/uma.ecore"
    xmlns:epf="http://www.eclipse.org/epf" epf:version="1.5.0" xmlns:rmc="http://www.ibm.com/rmc"
    rmc:version="7.5.0" xmi:id="-I4UMQVeS-fzpOhgrCHdKFw"
    name="new_guideline,_sfzMkKlSEd2XsY8-UtPVvw" guid="-I4UMQVeS-fzpOhgrCHdKFw" changeDate="2008-11-02T18:55:12.734-0800"
    version="7.5.0">
  <mainDescription>&lt;p>&#xD;
    &lt;a class=&quot;elementLink&quot; href=&quot;./../../../core.default.uma_concept.base/guidances/concepts/practice_F5C8EAAB.html&quot;&#xD;
    guid=&quot;_qhCTAFRREd2CWscN8Mx6rg&quot;>Practice&lt;/a>&amp;nbsp;customizations are stored in a separate plug-ins from&#xD;
    the&amp;nbsp;practice being customized. Customizations to things that are delayed assigned (role, domain and discipline&#xD;
    assignments) are defined in Practice Assign plug-ins. All other practice customizations are defined in Practice Extend&#xD;
    plug-ins. For more information on delayed assignment, see &lt;a class=&quot;elementLinkWithType&quot;&#xD;
    href=&quot;./../../../core.mdev.common.base/guidances/concepts/delayed_assignment_24142865.html&quot;&#xD;
    guid=&quot;_rlrykJcbEd2sTqxclDgvog&quot;>Concept: Delayed Assignment&lt;/a>. For more information on Practice Extend and Assign&#xD;
    plug-ins, see &lt;a class=&quot;elementLinkWithType&quot;&#xD;
    href=&quot;./../../../core.mdev.common.base/guidances/concepts/practice_lib_plugin_types_3EA8002F.html&quot;&#xD;
    guid=&quot;__428YO6cEdygKbJMUVNEtg&quot;>Concept: Practice Library Plug-In Types&lt;/a>.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    There are a number of different ways that you can customize an existing practice.&amp;nbsp;You can:&amp;nbsp;&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        Add a new practice-specific role, task, or work product (and possibly practice-specific processes that assembles&#xD;
        those elements)&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Customize (not just by adding guidance) an existing practice-specific role, task, or work product (and possibly&#xD;
        customizing practice-specific processes that assembles those elements)&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Add new practice-specific guidance and associate that guidance to an existing practice element&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Customize existing practice-specific guidance&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Change the practice role assignments (and customize any practice-specific processes to use the new role&#xD;
        assignments)&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Change the practice domain or discipline&amp;nbsp;assignments&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
    The following sections describe how you would structure these practice customizations.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    &lt;strong>Add a new practice-specific work product&lt;/strong>&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Perform the following steps to structure the addition of a new &lt;a class=&quot;elementLink&quot;&#xD;
    href=&quot;./../../../core.default.uma_concept.base/guidances/termdefinitions/work_product_826E4C22.html&quot;&#xD;
    guid=&quot;_H4JXwB_SEdq6CKKKq4D7YA&quot;>work product&lt;/a>&amp;nbsp;to the practice:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        If one does not exist, create a Practice Extend plug-in to contain the new work product.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        In the Extends plug-in, create the new work product.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        In the Extends plug-in, customize the necessary tasks to include the new work product as an input or an output (see&#xD;
        &lt;a class=&quot;elementLinkWithType&quot;&#xD;
        href=&quot;./../../../core.mdev.common.base/guidances/guidelines/customizing_method_content_element_87D73FFF.html&quot;&#xD;
        guid=&quot;_5cHsoFJsEd2SzrMjC_svdw&quot;>Guideline: Customizing a Method Content Element&lt;/a>)..&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        In the Extends plug-in, if the new work product is produced by the practice, then you need to specify what &lt;a&#xD;
        class=&quot;elementLink&quot; href=&quot;./../../../core.mdev.common.base/guidances/concepts/work_product_slot_D5B44CE7.html&quot;&#xD;
        guid=&quot;_Er1OcJIfEdybeduord13cg&quot;>Work Product Slot&lt;/a>&amp;nbsp;the work product fills.&lt;br />&#xD;
        &amp;nbsp;&amp;nbsp;&amp;nbsp;&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        If one does not exist, create a new Assign plug-in to contain the assignment of the work product to a responsible&#xD;
        role.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        In the new Assign plug-in, customize the appropriate role to be responsible for the new work product (see &lt;a&#xD;
        class=&quot;elementLinkWithType&quot;&#xD;
        href=&quot;./../../../core.mdev.common.base/guidances/guidelines/customizing_method_content_element_87D73FFF.html&quot;&#xD;
        guid=&quot;_5cHsoFJsEd2SzrMjC_svdw&quot;>Guideline: Customizing a Method Content Element&lt;/a>).&lt;br />&#xD;
        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        In the Extends plug-in, if the new work product affects an existing practice-specific process, customize that&#xD;
        process to include the new work product and&amp;nbsp;the tasks that&amp;nbsp;produce or consume it, as well as any refined&#xD;
        role assignments&amp;nbsp;(see &lt;a class=&quot;elementLinkWithType&quot;&#xD;
        href=&quot;./../../../core.mdev.common.base/guidances/guidelines/customizing_process_E26AC308.html&quot;&#xD;
        guid=&quot;_5e_qMFTMEd2N4vZAlUIPvw&quot;>Guideline: Customizing a Process&lt;/a>).&amp;nbsp;&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        In the Extends plug-in, if you want to include the new new work product and&amp;nbsp;the tasks that&amp;nbsp;produce or&#xD;
        consume it in a new practice-specific process, create the process (see &lt;a class=&quot;elementLinkWithType&quot;&#xD;
        href=&quot;./../../../core.mdev.common.base/guidances/guidelines/defining_processes_756EDFA.html&quot;&#xD;
        guid=&quot;_Y_JroEyDEdu4NY1n_hCY0w&quot;>Guideline: Defining Processes&lt;/a>).&lt;br />&#xD;
        &amp;nbsp;&amp;nbsp;&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        In the Extends plug-in, customize the practice guidance element to add an association to the new work product and&#xD;
        any new practice-specific processes (see &lt;a class=&quot;elementLinkWithType&quot;&#xD;
        href=&quot;./../../../core.mdev.common.base/guidances/guidelines/customizing_method_content_element_87D73FFF.html&quot;&#xD;
        guid=&quot;_5cHsoFJsEd2SzrMjC_svdw&quot;>Guideline: Customizing a Method Content Element&lt;/a>).&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
    &amp;nbsp;&amp;nbsp;&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    &lt;strong>Add a new practice-specific task&lt;/strong>&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Perform the following steps to structure the addition&amp;nbsp;of&amp;nbsp;a new &lt;a class=&quot;elementLink&quot;&#xD;
    href=&quot;./../../../core.default.uma_concept.base/guidances/termdefinitions/task_6C1FF051.html&quot;&#xD;
    guid=&quot;_x459ktnmEdmO6L4XMImrsA&quot;>task&lt;/a>&amp;nbsp;to the practice:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        If one does not exist, create a new Extends plug-in to contain the new task.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        In the Extends plug-in, create the new task, specifying the tasks input and output work products (see &lt;a&#xD;
        class=&quot;elementLinkWithType&quot;&#xD;
        href=&quot;./../../../core.mdev.common.base/guidances/guidelines/defining_method_content_elements_21A491E3.html&quot;&#xD;
        guid=&quot;_XQqJkCAmEdy1y5bWsXfCCg&quot;>Guideline: Defining Method Content Elements&lt;/a>).&amp;nbsp;&lt;br />&#xD;
        &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        If one does not exist, create a new Assign plug-in to contain the assignment of a performing role to the new task.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        In the new Assign plug-in, customize the new task to add a primary performing role (see &lt;a&#xD;
        class=&quot;elementLinkWithType&quot;&#xD;
        href=&quot;./../../../core.mdev.common.base/guidances/guidelines/customizing_method_content_element_87D73FFF.html&quot;&#xD;
        guid=&quot;_5cHsoFJsEd2SzrMjC_svdw&quot;>Guideline: Customizing a Method Content Element&lt;/a>).&lt;br />&#xD;
        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        In the Extends plug-in, if the new task affects an existing practice-specific process, customize that process to&#xD;
        include the new&amp;nbsp;task&amp;nbsp;(see &lt;a class=&quot;elementLinkWithType&quot;&#xD;
        href=&quot;./../../../core.mdev.common.base/guidances/guidelines/customizing_process_E26AC308.html&quot;&#xD;
        guid=&quot;_5e_qMFTMEd2N4vZAlUIPvw&quot;>Guideline: Customizing a Process&lt;/a>).&amp;nbsp;&amp;nbsp;&amp;nbsp;&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        In the Extends plug-in, if you want to include the new new task in a new practice-specific process, create the&#xD;
        process (see &lt;a class=&quot;elementLinkWithType&quot;&#xD;
        href=&quot;./../../../core.mdev.common.base/guidances/guidelines/defining_processes_756EDFA.html&quot;&#xD;
        guid=&quot;_Y_JroEyDEdu4NY1n_hCY0w&quot;>Guideline: Defining Processes&lt;/a>).&lt;br />&#xD;
        &amp;nbsp;&amp;nbsp;&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        In the Extends plug-in, customize the practice guidance element to add an association to the new task and any new&#xD;
        practice-specific processes (see &lt;a class=&quot;elementLinkWithType&quot;&#xD;
        href=&quot;./../../../core.mdev.common.base/guidances/guidelines/customizing_method_content_element_87D73FFF.html&quot;&#xD;
        guid=&quot;_5cHsoFJsEd2SzrMjC_svdw&quot;>Guideline: Customizing a Method Content Element&lt;/a>).&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
    &amp;nbsp;&amp;nbsp;&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    &lt;strong>Add a new practice-specific role&lt;/strong>&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Perform the following steps to structure the addition of&amp;nbsp;a new &lt;a class=&quot;elementLink&quot;&#xD;
    href=&quot;./../../../core.default.uma_concept.base/guidances/termdefinitions/role_37A0C602.html&quot;&#xD;
    guid=&quot;_yUefQNnmEdmO6L4XMImrsA&quot;>role&lt;/a>&amp;nbsp;or &lt;a class=&quot;elementLink&quot;&#xD;
    href=&quot;./../../../core.default.uma_concept.base/guidances/termdefinitions/work_product_826E4C22.html&quot;&#xD;
    guid=&quot;_H4JXwB_SEdq6CKKKq4D7YA&quot;>work product&lt;/a>&amp;nbsp;to the practice:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        If one does not exist, create a new Assign plug-in to contain the new role.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        In the new Assign plug-in, create the new role, as well as any role assignments (e.g., responsibility for work&#xD;
        products, primary performer for tasks).&amp;nbsp; For more information, see &lt;a class=&quot;elementLinkWithType&quot;&#xD;
        href=&quot;./../../../core.mdev.common.base/guidances/guidelines/defining_method_content_elements_21A491E3.html&quot;&#xD;
        guid=&quot;_XQqJkCAmEdy1y5bWsXfCCg&quot;>Guideline: Defining Method Content Elements&lt;/a>.&lt;br />&#xD;
        &amp;nbsp;&amp;nbsp;&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        If one does not exist, create a new Extends plug-in to contain practice customizations resulting from the new role.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        If the new role affects an existing practice-specific process, in the Extends plug-in, customize the process to&#xD;
        include the new role, the tasks it performs and the work products it is responsible for (see &lt;a&#xD;
        class=&quot;elementLinkWithType&quot;&#xD;
        href=&quot;./../../../core.mdev.common.base/guidances/guidelines/customizing_process_E26AC308.html&quot;&#xD;
        guid=&quot;_5e_qMFTMEd2N4vZAlUIPvw&quot;>Guideline: Customizing a Process&lt;/a>).&amp;nbsp;&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        If you want to include the new role, the tasks it performs and the work products it is responsible for in a new&#xD;
        practice-specific process, in the Extends plug-in, create the process (see &lt;a class=&quot;elementLinkWithType&quot;&#xD;
        href=&quot;./../../../core.mdev.common.base/guidances/guidelines/defining_processes_756EDFA.html&quot;&#xD;
        guid=&quot;_Y_JroEyDEdu4NY1n_hCY0w&quot;>Guideline: Defining Processes&lt;/a>).&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Associate the role and any new practice-specific processes to the practice guidance element.&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
    &amp;nbsp;&amp;nbsp;&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    &lt;strong>Customize (not just by adding guidance) an existing&amp;nbsp;practice-specific role or work product&lt;/strong>&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Perform the following steps to structure the customization (not just by adding guidance) an&#xD;
    existing&amp;nbsp;practice-specific &lt;a class=&quot;elementLink&quot;&#xD;
    href=&quot;./../../../core.default.uma_concept.base/guidances/termdefinitions/role_37A0C602.html&quot;&#xD;
    guid=&quot;_yUefQNnmEdmO6L4XMImrsA&quot;>role&lt;/a>&amp;nbsp;or &lt;a class=&quot;elementLink&quot;&#xD;
    href=&quot;./../../../core.default.uma_concept.base/guidances/termdefinitions/work_product_826E4C22.html&quot;&#xD;
    guid=&quot;_H4JXwB_SEdq6CKKKq4D7YA&quot;>work product&lt;/a>:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        If one does not exist, create an Extends&amp;nbsp;plug-in to contain the practice customizations.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Customize the method content elements (see &lt;a class=&quot;elementLinkWithType&quot;&#xD;
        href=&quot;./../../../core.mdev.common.base/guidances/guidelines/customizing_method_content_element_87D73FFF.html&quot;&#xD;
        guid=&quot;_5cHsoFJsEd2SzrMjC_svdw&quot;>Guideline: Customizing a Method Content Element&lt;/a>).&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        If the customized elements affect an existing practice-specific process, customize that process (see &lt;a&#xD;
        class=&quot;elementLinkWithType&quot;&#xD;
        href=&quot;./../../../core.mdev.common.base/guidances/guidelines/customizing_process_E26AC308.html&quot;&#xD;
        guid=&quot;_5e_qMFTMEd2N4vZAlUIPvw&quot;>Guideline: Customizing a Process&lt;/a>).&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        If you want to include the customized elements in a new practice-specific process, create the process (see &lt;a&#xD;
        class=&quot;elementLinkWithType&quot;&#xD;
        href=&quot;./../../../core.mdev.common.base/guidances/guidelines/defining_processes_756EDFA.html&quot;&#xD;
        guid=&quot;_Y_JroEyDEdu4NY1n_hCY0w&quot;>Guideline: Defining Processes&lt;/a>).&amp;nbsp;&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Associate any new practice-specific processes to the practice guidance element.&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&#xD;
&lt;/p>&#xD;
&lt;h3>&#xD;
    Add new practice-specific guidance&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    Perform the following steps to structure the addition of &lt;a class=&quot;elementLink&quot;&#xD;
    href=&quot;./../../../core.default.uma_concept.base/guidances/termdefinitions/guidance_549AC394.html&quot;&#xD;
    guid=&quot;_83ttAB_NEdq6CKKKq4D7YA&quot;>guidance&lt;/a>&amp;nbsp;to the practice:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        If one does not exist, create an Extends plug-in to contain the practice customizations.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Create the guidance and associate with the appropriate practice elements (see &lt;a class=&quot;elementLinkWithType&quot;&#xD;
        href=&quot;./../../../core.mdev.common.base/guidances/guidelines/defining_method_content_elements_21A491E3.html&quot;&#xD;
        guid=&quot;_XQqJkCAmEdy1y5bWsXfCCg&quot;>Guideline: Defining Method Content Elements&lt;/a>).&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Associate the guidance to the practice guidance element.&amp;nbsp;&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
    &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&#xD;
&lt;/p>&#xD;
&lt;h3>&#xD;
    Customize existing practice-specific guidance&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    Perform the following steps to structure the customization of&amp;nbsp;existing practice-specific &lt;a class=&quot;elementLink&quot;&#xD;
    href=&quot;./../../../core.default.uma_concept.base/guidances/termdefinitions/guidance_549AC394.html&quot;&#xD;
    guid=&quot;_83ttAB_NEdq6CKKKq4D7YA&quot;>guidance&lt;/a>:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        If one does not exist, create an Extends plug-in to contain the practice customizations.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Customize the guidance (see &lt;a class=&quot;elementLinkWithType&quot;&#xD;
        href=&quot;./../../../core.mdev.common.base/guidances/guidelines/customizing_method_content_element_87D73FFF.html&quot;&#xD;
        guid=&quot;_5cHsoFJsEd2SzrMjC_svdw&quot;>Guideline: Customizing a Method Content Element&lt;/a>).&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&#xD;
&lt;/p>&#xD;
&lt;h3>&#xD;
    Change the practice role assignments&amp;nbsp;&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    Perform the following steps to structure the changing of the&amp;nbsp;practice &lt;a class=&quot;elementLink&quot;&#xD;
    href=&quot;./../../../core.default.uma_concept.base/guidances/termdefinitions/role_37A0C602.html&quot;&#xD;
    guid=&quot;_yUefQNnmEdmO6L4XMImrsA&quot;>role&lt;/a>&amp;nbsp;assignments (what roles perform what tasks or what roles are responsible&#xD;
    for what work products):&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        Make a copy of the Practices Assign plug-in to create a new Assign plug-in.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        In the new Assign plug-in,&amp;nbsp;define any new roles&amp;nbsp;(see &lt;a class=&quot;elementLinkWithType&quot;&#xD;
        href=&quot;./../../../core.mdev.common.base/guidances/guidelines/defining_method_content_elements_21A491E3.html&quot;&#xD;
        guid=&quot;_XQqJkCAmEdy1y5bWsXfCCg&quot;>Guideline: Defining Method Content Elements&lt;/a>).&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        In the new Assign plug-in, change the desired task-to primary performing-role assignments and the role-responsible&#xD;
        for-work product assignments (update the contributors).&amp;nbsp;&lt;br />&#xD;
        &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        If the practice contains processes that are affected by the role assignment changes, then perform the following to&#xD;
        update the practice processes to use the new role assignments:&#xD;
    &lt;/li>&#xD;
    &lt;li style=&quot;LIST-STYLE-TYPE: none&quot;>&#xD;
        &lt;ul>&#xD;
            &lt;li>&#xD;
                Create an Extends plug-in to contain the practice customizations resulting from the role assignment&#xD;
                changes.&#xD;
            &lt;/li>&#xD;
            &lt;li>&#xD;
                Make a copy of the default configuration for the process to be updated.&#xD;
            &lt;/li>&#xD;
            &lt;li>&#xD;
                In the new configuration, add the new Extends plug-in, remove the original Practice Assign plug-in and&#xD;
                select the new Assign plug-in.&#xD;
            &lt;/li>&#xD;
            &lt;li>&#xD;
                In the Extends plug-in, for each affected process in the original practice: &#xD;
                &lt;ul>&#xD;
                    &lt;li>&#xD;
                        Create new process by copying the original process&#xD;
                    &lt;/li>&#xD;
                    &lt;li>&#xD;
                        Change the default configuration of the new process to the new construction configuration.&#xD;
                    &lt;/li>&#xD;
                    &lt;li>&#xD;
                        Synchronize the new process against the new configuration. For more information on descriptors and&#xD;
                        process synchronization, see &lt;a class=&quot;elementLinkWithType&quot;&#xD;
                        href=&quot;./../../../core.mdev.common.base/guidances/guidelines/defining_processes_756EDFA.html&quot;&#xD;
                        guid=&quot;_Y_JroEyDEdu4NY1n_hCY0w&quot;>Guideline: Defining Processes&lt;/a>. The process now should reflect&#xD;
                        the new role assignments.&lt;br />&#xD;
                        &amp;nbsp;&amp;nbsp;&amp;nbsp;&#xD;
                    &lt;/li>&#xD;
                &lt;/ul>&#xD;
            &lt;/li>&#xD;
        &lt;/ul>&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;h3>&#xD;
    Change the practice domain or discipline assignments&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    Perform the following steps to structure the changing of the&amp;nbsp;practice &lt;a class=&quot;elementLink&quot;&#xD;
    href=&quot;./../../../core.default.uma_concept.base/guidances/termdefinitions/domain_D8238B93.html&quot;&#xD;
    guid=&quot;_yHEVYdnmEdmO6L4XMImrsA&quot;>domain&lt;/a>&amp;nbsp;or &lt;a class=&quot;elementLink&quot;&#xD;
    href=&quot;./../../../core.default.uma_concept.base/guidances/termdefinitions/discipline_7667F451.html&quot;&#xD;
    guid=&quot;_yGUuidnmEdmO6L4XMImrsA&quot;>discipline&lt;/a>&amp;nbsp;assignments:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        Make a copy of the Practices Assign plug-in to create a new Assign plug-in.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        In the new Assign plug-in,&amp;nbsp;define any new domains or disciplines (see &lt;a class=&quot;elementLinkWithType&quot;&#xD;
        href=&quot;./../../../core.mdev.common.base/guidances/guidelines/categorizing_method_elements_using_std_cats_854BD33A.html&quot;&#xD;
         guid=&quot;_thsRIMjnEdyoXMhaXAJ-6g&quot;>Guideline: Categorizing Method Elements Using Standard Categories&lt;/a>).&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        In the new Assign plug-in, change the desired domain to work product or discipline to task categorizations (update&#xD;
        the contributors).&amp;nbsp;&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        In order to see the standard category changes, you need to browse a configuration that includes the new Assign&#xD;
        plug-in instead of the original Assign plug-in.&#xD;
    &lt;/li>&#xD;
&lt;/ul></mainDescription>
</org.eclipse.epf.uma:ContentDescription>
