<?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="-iX4p3xdGFx7HgBxeSG1_uA"
    name="customizing_method_content_element,_5cHsoFJsEd2SzrMjC_svdw" guid="-iX4p3xdGFx7HgBxeSG1_uA"
    changeDate="2008-11-02T05:07:09.718-0800" version="7.2.0">
  <mainDescription>&lt;p>&#xD;
    Any &lt;a class=&quot;elementLink&quot;&#xD;
    href=&quot;./../../../core.default.uma_concept.base/guidances/termdefinitions/method_content_6972AE81.html&quot;&#xD;
    guid=&quot;_Ts2joB_MEdq6CKKKq4D7YA&quot;>method content&lt;/a>&amp;nbsp;element can be customized. The different ways you can customize&#xD;
    an element include:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        adding guidance to existing method content elements&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        adding new roles, tasks and work products&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        adding text and/or relationships to an existing method content element&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        replacing an existing method content element&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        renaming an existing method content element&amp;nbsp;&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        changing method content relationships (e.g., changing&amp;nbsp;the role that is responsible for a work&#xD;
        product,&amp;nbsp;changing the primary performing role for a task, changing the input and/or output work products of a&#xD;
        task)&amp;nbsp;&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        deleting existing method content elements&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
    It is assumed that the method content element being customized cannot be modified directly. Thus, all changes must be&#xD;
    stored in a separate plug-in from the method content elements being customized. The customizations are then defined&#xD;
    using method content variability. To see the resulting changes, you need to browse or publish a configuration that&#xD;
    includes the element being customized and the customizations. For more information, see &lt;a class=&quot;elementLinkWithType&quot;&#xD;
    href=&quot;./../../../core.mdev.common.base/guidances/guidelines/using_method_content_variability_DCE37365.html&quot;&#xD;
    guid=&quot;_8YIMYCNQEdycLddDalDmbA&quot;>Guideline: Using Method Content Variability&lt;/a>. If&amp;nbsp;you can modify the elements&#xD;
    directly, you should follow the guidelines described in &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;/p>&#xD;
&lt;p>&#xD;
    If you customize a method content element that participates in a process, then&amp;nbsp;you will need to customize that&#xD;
    process to use the customized method content.&amp;nbsp;For more information, see &lt;a class=&quot;elementLinkWithType&quot;&#xD;
    href=&quot;./../../../core.mdev.common.base/guidances/guidelines/customizing_processes_E26AC308.html&quot;&#xD;
    guid=&quot;_5e_qMFTMEd2N4vZAlUIPvw&quot;>Guideline: Customizing a Process&lt;/a>.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    If you add a new element that is categorized, then&amp;nbsp;you may need to add the new elements to the appropriate&#xD;
    standard categories.&amp;nbsp;For more information, 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;/p>&#xD;
&lt;p>&#xD;
    The following sections provide specific information on how to customize method content elements.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    &amp;nbsp;&amp;nbsp;&#xD;
&lt;/p>&#xD;
&lt;h3>&#xD;
    Add guidance to an existing method content element&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    Perform the following steps to add guidance to existing method content elements:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        If one does not already exist, define the plug-in to contain the customization&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        In the new plug-in, define the guidance element.&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>.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Determine what method elements the guidance should be associated with/referenced from and where those elements&#xD;
        exist.&amp;nbsp;&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        In the new plug-in, define an element that contributes to the original and add the association to the guidance in&#xD;
        the contributor.&amp;nbsp;For more information on contribution, see &lt;a class=&quot;elementLinkWithType&quot;&#xD;
        href=&quot;./../../../core.mdev.common.base/guidances/guidelines/using_method_content_variability_DCE37365.html&quot;&#xD;
        guid=&quot;_8YIMYCNQEdycLddDalDmbA&quot;>Guideline: Using Method Content Variability&lt;/a>.&#xD;
    &lt;/li>&#xD;
&lt;/ul>&lt;br />&#xD;
&lt;h3>&#xD;
    Add a new role&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    Perform the following steps to add new method &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>:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        If one does not already exist, create a plug-in to to contain the new role.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        In the new plug-in, create the new role and specify what work products the role should own. For more information,&#xD;
        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;
        If&amp;nbsp;you want to add the role as a performer of an existing task, in the new plug-in, create a task that&#xD;
        contributes to the task you want to change. In the contributor, add an association to the new role.&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
    &amp;nbsp;&amp;nbsp;&#xD;
&lt;/p>&#xD;
&lt;h3>&#xD;
    Add a new task&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    Perform the following steps to add new method &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>:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        If one does not already exist, create a plug-in to to contain the new task.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        In the new plug-in, create the new task, being sure to&amp;nbsp;specify&amp;nbsp;what role performs the task and what work&#xD;
        products are input and output. 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>.&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;
    Add a new work product&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    Perform the following steps to add new method &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 already exist, create a plug-in to to contain the new work product.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        In the new plug-in, create the new work product. 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>.&amp;nbsp;&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        If&amp;nbsp;you want to add the work product as an input or an output&amp;nbsp;of&amp;nbsp;an existing task, in the new&#xD;
        plug-in, create a task that contributes to the task you want to change. In the contributor, add an association to&#xD;
        the work product.&#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&amp;nbsp;text and/or relationships to an existing method content element&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    Anything (text and/or associations can be added to any method content element using contribution, a type of method&#xD;
    content variability. For more information, see &lt;a class=&quot;elementLinkWithType&quot;&#xD;
    href=&quot;./../../../core.mdev.common.base/guidances/guidelines/using_method_content_variability_DCE37365.html&quot;&#xD;
    guid=&quot;_8YIMYCNQEdycLddDalDmbA&quot;>Guideline: Using Method Content Variability&lt;/a>.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Perform the following steps to add text and/or associations to an existing method content element:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        If one does not already exist, create a plug-in to to contain the method content element additions.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        In the new plug-in, create an element of the same type as the element you want to add to an make that element&#xD;
        contribute to the element you want to add to. For example, if I wanted to add an input work product to a task, I&#xD;
        would create a task contributor.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        In the contributor, add whatever it is you want to add to the original element. For example, if I wanted to add an&#xD;
        input work product to a task, I would create a an input work product to the task contributor. For more information,&#xD;
        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>.&amp;nbsp;&amp;nbsp;&lt;br />&#xD;
        &amp;nbsp;&amp;nbsp;&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;h3>&#xD;
    Replace an existing method content element&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    Any method content element can be replaced using replaces, a type of method content variability. For more information,&#xD;
    see &lt;a class=&quot;elementLinkWithType&quot;&#xD;
    href=&quot;./../../../core.mdev.common.base/guidances/guidelines/using_method_content_variability_DCE37365.html&quot;&#xD;
    guid=&quot;_8YIMYCNQEdycLddDalDmbA&quot;>Guideline: Using Method Content Variability&lt;/a>.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Perform the following steps to replace an existing method content element (e.g., a &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>, &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>, &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;or &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 already exist, create a plug-in to to contain the method content element that will be replacing the&#xD;
        original.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        In the new plug-in, create the element you want to replace the existing element with (they must be of the same&#xD;
        type). For example, if I wanted to replace a task with a new task, I would create a new task.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Specify that the new task is to replace the original task (replaces variability).&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Add the replacers outgoing relationships and textual descriptions. For example, if I wanted to replace task, I&#xD;
        would specify the task's primary performing role and input and output work products. For more information, 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;&amp;nbsp;&lt;br />&#xD;
        &amp;nbsp;&amp;nbsp;&amp;nbsp;&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;h3>&#xD;
    Rename an existing method content element&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    Any method content element can be renamed using extends-replaces, a type of method content variability. For more&#xD;
    information, see &lt;a class=&quot;elementLinkWithType&quot;&#xD;
    href=&quot;./../../../core.mdev.common.base/guidances/guidelines/using_method_content_variability_DCE37365.html&quot;&#xD;
    guid=&quot;_8YIMYCNQEdycLddDalDmbA&quot;>Guideline: Using Method Content Variability&lt;/a>.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Perform the following steps to rename an existing method content element (e.g., a &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>, &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>, &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;or &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 already exist, create a plug-in to to contain the method content element with the new name.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        In the new plug-in, create a method content element of the same type as the one you want to rename and give it the&#xD;
        name you want to use as the new name. For example, if I wanted to rename a task to MyTask, I would create a new&#xD;
        task and name it MyTask. 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>.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Specify that the new task is to extends-replace the original task (extends-replaces variability).&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
    &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&#xD;
&lt;/p>&#xD;
&lt;h3>&#xD;
    Change the role that is responsible for a work product&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    A &lt;a class=&quot;elementLink&quot; href=&quot;./../../../core.default.uma_concept.base/guidances/termdefinitions/role_37A0C602.html&quot;&#xD;
    guid=&quot;_yUefQNnmEdmO6L4XMImrsA&quot;>role&lt;/a>&amp;nbsp;may be responsible for one or more work products. A work product may have&#xD;
    only one responsible role. The role &quot;owns&quot; the role-responsible for-work product association.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Perform the following steps to change the responsible role for an existing work product:&#xD;
&lt;/p>&#xD;
&lt;ul class=&quot;noindent&quot;>&#xD;
    &lt;li>&#xD;
        If one does not already exist, create a plug-in to to contain the customizations.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        In the new plug-in, role and make it contributor to the role that you want to assign the work product to.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        In the role contributor, add an association to the work product.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        If there are now two roles that are responsible for the work product, the original responsibility must be removed.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Define a role that extends and replaces the original responsible role. In the extends-replaces element, add all of&#xD;
        the role-responsible for-work product associations that existed in the original role, except for the one your just&#xD;
        replaced.&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;
    Change the primary performing role for a task&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    A &lt;a class=&quot;elementLink&quot; href=&quot;./../../../core.default.uma_concept.base/guidances/termdefinitions/task_6C1FF051.html&quot;&#xD;
    guid=&quot;_x459ktnmEdmO6L4XMImrsA&quot;>task&lt;/a>&amp;nbsp;may only have one primary performing &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>. The task &quot;owns&quot; the task-primarily perform by-role association.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Perform the following steps to change the primary performing role for an existing task:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        If one does not already exist, create a plug-in to to contain the customizations.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        In the new plug-in, define a task that extends and replaces the original task.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        In the new task, specify the role as the primary performer. There is no need to make any more changes since every&#xD;
        task can only have one primary performing role.&lt;br />&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;h3>&#xD;
    Change the input and/or output work products of a task&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    A &lt;a class=&quot;elementLink&quot; href=&quot;./../../../core.default.uma_concept.base/guidances/termdefinitions/task_6C1FF051.html&quot;&#xD;
    guid=&quot;_x459ktnmEdmO6L4XMImrsA&quot;>task&lt;/a>&amp;nbsp;may only have any number of input and output &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>s. The task &quot;owns&quot; the task-work product associations.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Perform the following steps to change the input and/or output work products of an existing task:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        If one does not already exist, create a plug-in to to contain the customizations.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        In the new plug-in, define a task that extends and replaces the original task.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        In the new task, specify the desired input and output work products for the task, including those from the original&#xD;
        that you want to carry forward, plus the associations to your new work products.&amp;nbsp;&lt;br />&#xD;
        &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;h3>&#xD;
    Delete existing method content elements&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    Perform the following steps to remove an existing method element:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        If one does not already exist, define a new plug-in to contain the customizations.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        In the new plug-in, create a custom category; name it something like &quot;do not publish&quot;. Assign the elements you want&#xD;
        removed to that category. For more information, see &lt;a class=&quot;elementLinkWithType&quot;&#xD;
        href=&quot;./../../../core.mdev.common.base/guidances/guidelines/categorizing_method_elements_using_custom_cats_F66C3F90.html&quot;&#xD;
         guid=&quot;_V7qwIMjpEdyoXMhaXAJ-6g&quot;>Guideline: Categorizing Method Elements Using Custom Categories&lt;/a>.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Define a new &lt;a class=&quot;elementLink&quot;&#xD;
        href=&quot;./../../../core.default.uma_concept.base/guidances/termdefinitions/method_configuration_C2B8FA8A.html&quot;&#xD;
        guid=&quot;__V7pAMaEEduMlb2cQZNTYw&quot;>method configuration&lt;/a>&amp;nbsp;that includes everything you want to publish. Specify&#xD;
        not to publish the new custom category.&amp;nbsp; For more information, see &lt;a class=&quot;elementLinkWithType&quot;&#xD;
        href=&quot;./../../../core.mdev.common.base/guidances/guidelines/defining_method_configurations_2B25CEA5.html&quot;&#xD;
        guid=&quot;_l77zcIB-EduaS6LQ8n6xUQ&quot;>Guideline: Defining Method Configurations&lt;/a>. When you publish that configuration,&#xD;
        those elements will not appear.&#xD;
    &lt;/li>&#xD;
&lt;/ul></mainDescription>
</org.eclipse.epf.uma:ContentDescription>
