/** Iterates and executes the list of batchEventPhases. */
  private void doBatchEventPhases() {
    // Must be called after initialization and before anything else.
    detailSplitter.prePhaseExecute();

    // Get checkpoint from context after checkpoint phase.initialize().
    if (checkpointService != null) {
      traversDetailWithCheckpoint(checkpointService.getCheckpoint());
    } else {
      traversDetailWithOutCheckpoint();
    }
  }