<?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="-JkSC1YDXGrB9_LWawZTXQQ"
    name="customizing_process,_5e_qMFTMEd2N4vZAlUIPvw" guid="-JkSC1YDXGrB9_LWawZTXQQ"
    changeDate="2008-11-02T03:00:57.453-0800" version="7.5.0">
  <mainDescription>&lt;p>&#xD;
    This guideline describes how to customize an existing &lt;a class=&quot;elementLink&quot;&#xD;
    href=&quot;./../../../core.default.uma_concept.base/guidances/termdefinitions/process_68E308B4.html&quot;&#xD;
    guid=&quot;_yQ5m2NnmEdmO6L4XMImrsA&quot;>process&lt;/a>.&amp;nbsp;For more information on key process definition concepts like&#xD;
    activities, capability patterns, delivery processes, process diagrams, descriptors, and so on, 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>.&#xD;
&lt;/p>&#xD;
&lt;div>&#xD;
    When customizing a process, it is important to explicitly identify what process you will actually customize (remember:&#xD;
    a specific process may be defined in one place and &quot;applied&quot; in many other processes,&amp;nbsp;either copied or linked to).&#xD;
    Once you have identified what process to customize, you can execute the scenarios described in this document on that&#xD;
    process.&#xD;
&lt;/div>&#xD;
&lt;div>&#xD;
    &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&#xD;
&lt;/div>&#xD;
&lt;div>&#xD;
    The following questions can help you decide what process to customize:&#xD;
&lt;/div>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        Do you want to change an overall process?&#xD;
    &lt;/li>&#xD;
    &lt;li style=&quot;LIST-STYLE-TYPE: none&quot;>&#xD;
        &lt;ul>&#xD;
            &lt;li>&#xD;
                If so, then that process is the process&amp;nbsp;to be customized.&lt;br />&#xD;
                &amp;nbsp;&amp;nbsp;&#xD;
            &lt;/li>&#xD;
        &lt;/ul>&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Do you want to change an activity in a process (i.e., the elements it contains or its flow)?&#xD;
    &lt;/li>&#xD;
    &lt;li style=&quot;LIST-STYLE-TYPE: none&quot;>&#xD;
        &lt;ul>&#xD;
            &lt;li>&#xD;
                If so, is the activity you want to change a reference to process/activity that is defined elsewhere (i.e.,&#xD;
                what it created by extending or copying a capability pattern/activity defined in another process)?&#xD;
            &lt;/li>&#xD;
            &lt;li style=&quot;LIST-STYLE-TYPE: none&quot;>&#xD;
                &lt;ul>&#xD;
                    &lt;li>&#xD;
                        If so, do you want to change all instances of the activity?&#xD;
                    &lt;/li>&#xD;
                    &lt;li style=&quot;LIST-STYLE-TYPE: none&quot;>&#xD;
                        &lt;ul>&#xD;
                            &lt;li>&#xD;
                                If so, find the base definition of the process that the activity was created from. That&#xD;
                                process is the process to be customized.&#xD;
                            &lt;/li>&#xD;
                            &lt;li>&#xD;
                                If not, the current process is the process to be customized.&#xD;
                            &lt;/li>&#xD;
                        &lt;/ul>&#xD;
                    &lt;/li>&#xD;
                    &lt;li>&#xD;
                        If not, then the activity you want to change is defined in this process, so this process is the&#xD;
                        process to be customized.&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;li>&#xD;
        Do you want to change a role, task or work product descriptor in the process?&amp;nbsp; &#xD;
        &lt;ul>&#xD;
            &lt;li>&#xD;
                If so, is the descriptor linked to a method content element? &#xD;
                &lt;ul>&#xD;
                    &lt;li>&#xD;
                        If so, do you want the change to affect all occurrences of the role, task or work product?&amp;nbsp;&#xD;
                    &lt;/li>&#xD;
                    &lt;li style=&quot;LIST-STYLE-TYPE: none&quot;>&#xD;
                        &lt;ul>&#xD;
                            &lt;li>&#xD;
                                If so, you need to customize the method content elements (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>) and&#xD;
                                then update the process to pick up the changes (see the &quot;Update a process to include&#xD;
                                changes made to the underlying method content &quot; scenario in this guideline).&#xD;
                            &lt;/li>&#xD;
                            &lt;li>&#xD;
                                If not, you will be making a &lt;a class=&quot;elementLink&quot;&#xD;
                                href=&quot;./../../../core.mdev.common.base/guidances/termdefinitions/local_process_change_DDE09573.html&quot;&#xD;
                                 guid=&quot;_OQgikFTTEd2N4vZAlUIPvw&quot;>local process change&lt;/a>&amp;nbsp;to the descriptors. For more&#xD;
                                information, see the &quot;Change the role, task or work product descriptors&quot; scenario in this&#xD;
                                guideline.&#xD;
                            &lt;/li>&#xD;
                        &lt;/ul>&#xD;
                    &lt;/li>&#xD;
                    &lt;li>&#xD;
                        If not, you will be making a &lt;a class=&quot;elementLink&quot;&#xD;
                        href=&quot;./../../../core.mdev.common.base/guidances/termdefinitions/local_process_change_DDE09573.html&quot;&#xD;
                         guid=&quot;_OQgikFTTEd2N4vZAlUIPvw&quot;>local process change&lt;/a>&amp;nbsp;to the descriptors. For more&#xD;
                        information, see the &quot;Change the role, task or work product descriptors&quot; scenario in this&#xD;
                        guideline.&#xD;
                    &lt;/li>&#xD;
                &lt;/ul>&#xD;
            &lt;/li>&#xD;
        &lt;/ul>&#xD;
    &lt;/li>&#xD;
&lt;/ul>&lt;br />&#xD;
&lt;div>&#xD;
    Once the process has been customized, you need to decide if you want to customize other processes that were originally&#xD;
    dependent on (or built from) the process that you customized. If so, then you need to perform the &quot;Replace an existing&#xD;
    activity with another activity &quot; scenario for those processes so they reflect the customizations you&#xD;
    made.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br />&#xD;
&lt;/div>&#xD;
&lt;p>&#xD;
    It is assumed that the process&amp;nbsp;being customized cannot be modified directly. Thus, all process changes must be&#xD;
    stored in a separate plug-in from the process being customized. To see the resulting changes, you need to browse or&#xD;
    publish a configuration that includes the element being customized and the customizations. If&amp;nbsp;you can modify the&#xD;
    process directly, you should follow the guidelines described in &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;/p>&#xD;
&lt;p>&#xD;
    The following are some ways you can customize a process:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        Update a process to include changes made to the underlying method content&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Change the textual descriptions of the process itself or its elements&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Add new activities&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Add new roles, tasks or work products&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Replace an existing activity with another activity&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Change the role, task or work product descriptors&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Change the process flow&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Add a new, or change an existing, process diagram&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
    The following sections describe these scenarios in more detail.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    &amp;nbsp;&amp;nbsp;&#xD;
&lt;/p>&#xD;
&lt;h3>&#xD;
    Update a process to include changes made to the underlying method content&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    Perform the following steps to customize a process to include changes made to underlying method content:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        If one does not already exist, create a new plug-in to contain the customized process.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Make a copy of the default configuration for the process to be customized.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        In the new configuration, add the new plug-in and the plug-ins that contain the method content changes.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Copy the original process and place the copy in the new plug-in.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Change the default configuration of the new process to the new configuration.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Synchronize the new process against the new configuration. For more information on descriptors and process&#xD;
        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>.&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
    The method content changes should now be picked up.&amp;nbsp;&amp;nbsp;&#xD;
&lt;/p>&lt;br />&#xD;
&lt;h3>&#xD;
    Add a new role, task or work product to the process&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    Roles, tasks and work products are represented as descriptors in a process. For more information on descriptors, 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>.&lt;br />&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Perform the following steps to add a new role, task or work product (descriptor) to an existing process:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        If one does not already exist, create a new plug-in to contain the customized process.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Make a copy of the default configuration for the process to be customized.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        In the new configuration, add the new plug-in and the plug-ins that contain the method content elements to be&#xD;
        added.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Copy the original process and place the copy in the new plug-in.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Change the default configuration of the new process to the new configuration.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Synchronize the new process against the new configuration. For more information on descriptors and process&#xD;
        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>.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Drag and drop the role, task or work product to be added into the process. Descriptors are created.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Refine the flow between the new element and the existing element, as needed (for example, adding predecessors to&#xD;
        the new task descriptor, or specifying the new task descriptor&amp;nbsp;as a predecessor to an existing task&#xD;
        descriptor). The method content elements are now part of the process.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Change the definition of the new process to specify that it is to replace the original process.&#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;
    Replace an existing activity with another activity&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    Perform the following steps to replace an activity with another activity:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        Create a new plug-in to contain the customized process.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Make a copy of the default configuration for the process to be customized.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        In the new configuration, add the new plug-in and the plug-ins that contain the method content changes.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Copy the original process and place the copy in the new plug-in.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Change the default configuration of the new process to the new configuration.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Synchronize the new process against the new configuration. For more information on descriptors and process&#xD;
        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>.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Change the definition of the activity to be replaced so that the activity is an extension of the new activity. The&#xD;
        process now includes the new activity.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Change the definition of the new process to specify that it is to replace the original process.&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
    &amp;nbsp;&amp;nbsp;&#xD;
&lt;/p>&#xD;
&lt;h3>&#xD;
    Change the role, task or work product descriptors&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    Roles, tasks and work products are represented as descriptors in a process. For more information on descriptors, 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>. The relationships between the descriptors are created&#xD;
    at the time the elements are added to the process and those relationships reflect the relationships as resolved in the&#xD;
    process'es default configuration.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    The descriptor text and relationships can be changed directly in the process. If the descriptors are associated with&#xD;
    method content elements, such descriptor changes do not affect the associated method content elements (they are&#xD;
    considered &lt;a class=&quot;elementLink&quot;&#xD;
    href=&quot;./../../../core.mdev.common.base/guidances/termdefinitions/local_process_change_DDE09573.html&quot;&#xD;
    guid=&quot;_OQgikFTTEd2N4vZAlUIPvw&quot;>local process change&lt;/a>s).&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Perform the following steps to change the role, task or work product descriptors directly in a customized process:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        Create a new plug-in to contain the customized process.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Copy the original process and place the copy in the new plug-in.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Change the descriptor textual descriptions or relationships directly in the new process. The process now includes&#xD;
        the descriptor changes.&amp;nbsp;&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Change the definition of the new process to specify that it is to replace the original process.&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
    &amp;nbsp; &amp;nbsp;&amp;nbsp;&#xD;
&lt;/p>&#xD;
&lt;h3>&#xD;
    Change the process flow&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    The process flow is the flow between the activities or task (descriptors in the process. You can change the flow by&#xD;
    changing the predecessors of the activities and the task descriptors). This can be done directly in the work breakdown&#xD;
    structure, or, if there is an associated activity diagram,&amp;nbsp;by changing the control between the elements on the&#xD;
    activity diagram. For more information creating a new or changing and existing activity diagram, see the process&#xD;
    diagram section of this guideline.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Even if the elements in the process are associated with method content elements, changing the flow between the elements&#xD;
    in a process does not affect the associated method content elements (flow changes are considered &lt;a class=&quot;elementLink&quot;&#xD;
    href=&quot;./../../../core.mdev.common.base/guidances/termdefinitions/local_process_change_DDE09573.html&quot;&#xD;
    guid=&quot;_OQgikFTTEd2N4vZAlUIPvw&quot;>local process change&lt;/a>s).&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Perform the following steps to change the process flow of an existing process:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        Create a new plug-in to contain the customized process.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Copy the original process and place the copy in the new plug-in.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Change the predecessors in the work breakdown structure, as needed to obtain the desired flow, or, if there is an&#xD;
        associated activity diagram,&amp;nbsp;change the control flow in the activity diagram. The process flow is now&#xD;
        changed.&amp;nbsp;&amp;nbsp;&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Change the definition of the new process to specify that it is to replace the original process.&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
    &amp;nbsp;&amp;nbsp;&#xD;
&lt;/p>&#xD;
&lt;h3>&#xD;
    Add a new, or change an existing, process diagram&amp;nbsp;&amp;nbsp;&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    There are two types of process diagrams, activity diagrams and activity detail diagrams. For more information on these&#xD;
    diagrams and when and how they can be used, 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;/p>&#xD;
&lt;p>&#xD;
    Perform the following steps to add a new, or change an existing, process diagram:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        Create a new plug-in to contain the customized process.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Copy the original process and place the copy in the new plug-in.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Create a new or change an existing process diagram, at the desired levels in the process. The process now contains&#xD;
        the desired process diagram.&amp;nbsp;&amp;nbsp;&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Change the definition of the new process to specify that it is to replace the original process.&amp;nbsp;&#xD;
    &lt;/li>&#xD;
&lt;/ul></mainDescription>
</org.eclipse.epf.uma:ContentDescription>
