Auto-Promoting Tasks Based on Deliverable Promotions

You can have tasks be auto-promoted based on the promotion of their deliverables. Auto-promotion behavior is defined on task state trigger objects.

Below is the mapping of deliverable states to task states:

Deliverable Lifecycle StateTask Lifecycle State
In WorkIn Work
Frozen or ApprovedIn Review
ReleasedComplete

General rules for auto-promotion include:

  • Auto-promotion applies only to tasks, and not to phases, gates, or milestones.
  • Auto-promotion will not occur for tasks containing more than one deliverable.
  • Promoting a deliverable associated to a summary task will not promote the associated task over other task promotion check constraints such as child task status (triggerCheckChildrenStates).
  • A deliverable in any state can be added to a task. No additional constraints or behaviors are applied to the action of adding a deliverable and no auto-promotion is taken. For example, a “Released” deliverable connected to an Active task will not promote the task to Complete.
  • A deliverable can be associated to one or more tasks. The auto-promote will be performed for each associated task.
  • The context in which the deliverable is being promoted may not allow permissions to promote the task. In such cases, the user will receive an appropriate message.
  • Demoting a deliverable will have no effect on task state.
  • Promoting a deliverable may promote the associated task more than one state. For example, a Preliminary Drawing Print might be associated to a task in the Preliminary state. When the Drawing Print is subsequently promoted to Review, the task would be promoted through Ready to In Review.
  • Trigger objects can be defined and installed for these deliverable types OOTB: Document, Part, Part Specification, CAD Model, CAD Drawing, Drawing Print, and Requirement. Other deliverable types can be configured for auto-promotion of tasks.

  1. Activate the following triggers in MQL:

    promote bus  'eService Trigger Program Parameters' 'TaskStateAssignDeliverablePromoteAction' 'autoPromoteTask';
    
    promote bus  'eService Trigger Program Parameters' 'TaskStateActiveDeliverablePromoteAction' 'autoPromoteTask';
    
    promote bus  'eService Trigger Program Parameters' 'TaskStateReviewDeliverablePromoteAction' 'autoPromoteTask';
    
    promote bus  'eService Trigger Program Parameters' 'TaskStateCompleteDeliverablePromoteAction' 'autoPromoteTask';

    For information about MQL, see the MQL Concepts. For more information about triggers, see the Collaboration and Approvals Administration Guide.

  2. To configure auto-promote functionality for a new deliverable type, follow these steps:

    You need the creator context in MQL for running the commands. In the examples below, the type "Sketch" is used to promote the Task to Complete when the Sketch gets promoted to Complete.

    1. Determine the policy and state mapping information of the Deliverable type:

      print relationship 'Task Deliverable' select totype[];
      print type Sketch select policy;
      print policy 'ECR Supporting Document' select state.name state.trigger;

      The output, which is used to determine the trigger name to update for the context deliverable type, is shown below:

      state[Preliminary].name = Preliminary
          state[Complete].name = Complete
          state[Preliminary].trigger = PromoteAction:emxTriggerManager(PolicyECRSupportingDocumentStatePreliminaryPromoteAction)

    2. Add the correct trigger event to the Deliverable policy state being promoted from.

      This command needs to include any existing triggers currently defined. The trigger events to use with this functionality include:

      • TaskStateAssignDeliverablePromoteAction
      • TaskStateActiveDeliverablePromoteAction
      • TaskStateReviewDeliverablePromoteAction
      • TaskStateCompleteDeliverablePromoteAction

      The MQL would look something like this:

      modify policy 'Sketch' 
         state Preliminary
         add trigger promote action emxTriggerManager input 
         "PolicyECRSupportingDocumentStatePreliminaryPromoteAction
         TaskStateCompleteDeliverablePromoteAction";