The resolution of dependencies in the current plan

In the current plan a dependency is resolved as the occurrence is added by dialogue, programming interfaces (PIF), event-triggered tracking (ETT), or automatic recovery (AR).

When in the AD the end of an interval is defined to be after (A) the IA of the successor, the match with a predecessor can lead to linking to an occurrence with IA that is later than that of an added occurrence. When this happens, an extra check can be run for archived completed occurrences in order to avoid unwanted forward links. To this effect, you can configure the BATCHOPT LTPREMSHIFT parameter so that the occurrences that completed within up to seven days before the first uncompleted occurrence - which are normally deleted at the first extend/replan of the plan - are instead kept in the new plan. To find a matching predecessor, the dependency resolution mechanism starts first from the IA of the successor and moves back in time; if no match is found, the mechanism then searches forward (starting again from the IA of the successor). Use LTPREMSHIFT to favor the resolution with a preceding occurrence.

Note that archived completed occurrences do not show operation details, even when they provide the best match.

When a predecessor dependency is of type mandatory control ( C ) and the predecessor is not found, a mandatory dependency is created and the IA visible from the dialogue is the right side of the interval defined for resolution.

When a predecessor dependency is of type mandatory Plan (P ) and the predecessor is not found, the occurrence is not added (the process is stopped) even if the solve required option is set to NO in the dialogue.

When a mandatory pending predecessor is created, it is flagged in the dialogue with the **MANDATORY PRED or **MANDATORY PEND PRED text. When the dependency is resolved for an operation waiting for its mandatory pending predecessors, it is flagged in the dialogue with the **MANDATORY SUCC text.

In the case of mandatory dependencies with successors - in opposition to the resolution mechanism used for non mandatory dependencies, which is satisfied by the best match - the approach is to seek and resolve not only the best matching successor, but also all those operations in the plan that are waiting for a predecessor occurring in the time interval being added.

Like for any other modifications made on the Application Description, any changes made on the matching criteria of a dependency in the database must be followed by:
  1. Running the Modify the long term plan for all applications batch job
  2. Extending the current plan
to make the changes effective in the plan.

For a smooth dependency resolution process, if you use multiple calendars - defined in the AD, in the dialog, in BATCHOPT, or also the DEFAULT calendar - keep a consistent work day end time in all of them. In the specific scenario of a dynamically added mandatory predecessor defined for the same scheduled date at control (C) level where the input arrival time of the successor falls on the work day end time, the dependency could be resolved with an unexpected predecessor if the work day end time is not the same throughout the calendars.

In the normal processing of the daily plan, dependencies involving mandatory pending predecessors are resolved first and normal dependencies next. And while dependencies with mandatory pending predecessors are resolved based on operation IA times, normal dependencies are resolved based on occurrence IA times. This can lead to unexpected situations. For example:
The predecessor application is APPLRELPRED1 (1 operation).

The successor application is APPLRELSUCC1 (3 operations). The operations are:

001-has external predecessor APPLRELPRED1-001 with with Relative interval 
 (30 mins before IA and 30 mins after IA)
002-has external predecessor APPLRELPRED1-001 with with Relative interval 
 (30 mins before IA and 30 mins after IA)
003-has external predecessor APPLRELPRED1-001 with with Relative interval 
 (30 mins before IA and 30 mins after IA)

Operation 002 has time defined: same day, 15.00

All dependencies have Mandatory resolution set to C.

Dynamically add successor APPLRELSUCC1 with IA: 13/05/09 - 11.31. You then find the 
following mandatory pending dependencies:

-------------------------------------------------------------------------------
EQQMARXL - RESOLVING EXTERNAL AND CONDITIONAL DEPENDENCIES IN  Row 1 to 3 o
Command ===>                                                  Scroll ===> P

Enter CREATE in the command line to create new dependencies                    
for this occurrence.
Enter the row command D to delete unwanted dependencies.
(Delete is not allowed for conditional dependencies).

Application         : APPLRELSUCC1                                       
Input arrival       : 13/05/09 11.31                                     
Deadline            : 13/05/09 23.59                                     

Row Operation in application   Dependency                                  
cmd ws   no.  text             Application id   Input arrival         WS   No. T  
 '  CPU1 001 **MANDATORY PEND. APPLRELPRED1     13/05/09 12.01             001 P  
 '  CPU1 002 **MANDATORY PEND. APPLRELPRED1     13/05/09 15.30             001 P  
 '  CPU1 003 **MANDATORY PEND. APPLRELPRED1     13/05/09 12.01             001 P  
--------------------------------------------------------------------------------

If you dynamically add predecessor APPLRELPRED1 with IA: 13/05/09 - 12.01 and
again look at the dependencies for APPLRELSUCC1, you see:

-------------------------------------------------------------------------------
EQQMARXL - RESOLVING EXTERNAL AND CONDITIONAL DEPENDENCIES IN  Row 1 to 4 o
Command ===>                                                  Scroll ===> P

Enter CREATE in the command line to create new dependencies                    
for this occurrence.
Enter the row command D to delete unwanted dependencies.
(Delete is not allowed for conditional dependencies).                            

Application           : APPLRELSUCC1                                       
Input arrival         : 13/05/09 11.31                                     
Deadline              : 13/05/09 23.59                                     

Row Operation in application   Dependency                                  
cmd ws   no. text              Application id   Input arrival   WS     No. T  
 '  CPU1 001                   APPLRELPRED1     13/05/09 12.01 CPU1 001 P  
 '  CPU1 002                   APPLRELPRED1     13/05/09 12.01 CPU1 001 P  
 '  CPU1 002 **MANDATORY PEND. APPLRELPRED1     13/05/09 15.30      001 P  
 '  CPU1 003                   APPLRELPRED1     13/05/09 12.01 CPU1 001 P  
-------------------------------------------------------------------------------

Apparently, occurrence APPLRELPRED1 with IA: 13/05/09 - 12.01 is outside the relative interval specified for operation APPLRELSUCC1-002, which has IA: 13/05/09 - 15.00 and the dependency should not be resolved. In reality the process works correctly, because the chain to operation 002 with IA 15.00 is added by the normal successor resolution process and not by the mandatory pending resolution process (and in fact APPLRELPRED1 with IA: 13/05/09 - 15.30 still shows as mandatory pending). This is because the two processes use different IA times, one based on occurrence and the other on operation. Moreover, the resolution of mandatory pending predecessors is an additional process that is run before the normal successor resolution process.

On ISPF and on the Dynamic Workload Console you can browse and modify operations in the current plan that are in waiting status for pending and mandatory pending predecessors. When you enter the 5.3 menu fast path on ISPF and display the SELECTING OPERATIONS (EQQSOPFP) panel, you can request lists of operations that are waiting for pending predecessors, for mandatory pending predecessors, or for either or both. From the ensuing list, you can then browse operation details or run any of the possible actions.