Index: lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java =================================================================== diff -u -r2027920d8ebc25042b825f7ba175a93f725f15dc -rcb4de7d73e8ebd0c8526649244a2f30a0f285757 --- lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java (.../LearnerService.java) (revision 2027920d8ebc25042b825f7ba175a93f725f15dc) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java (.../LearnerService.java) (revision cb4de7d73e8ebd0c8526649244a2f30a0f285757) @@ -907,7 +907,9 @@ } Activity parentActivity = currentActivity.getParentActivity(); - if (parentActivity != null && parentActivity.isOptionsActivity()) { + Activity grandParentActivity = parentActivity == null ? null : parentActivity.getParentActivity(); + if (parentActivity != null && (parentActivity.isOptionsActivity() + || (grandParentActivity != null && grandParentActivity.isOptionsWithSequencesActivity()))) { // it is the optional activity which controls gate flow, not the nested tool return null; } @@ -916,20 +918,12 @@ Transition transition = currentActivity.getTransitionFrom(); if (transition != null) { nextActivity = transition.getToActivity(); - } else if (currentActivity.getParentActivity() != null) { - // check parent activity like Optional activities - currentActivity = currentActivity.getParentActivity(); - transition = currentActivity.getTransitionFrom(); + } else if (grandParentActivity != null) { + // if it is branching, then it is activity -> sequence activity -> branching activity + // and the branching activity is what we need to check + transition = grandParentActivity.getTransitionFrom(); if (transition != null) { nextActivity = transition.getToActivity(); - } else if (currentActivity.getParentActivity() != null) { - // if it is branching, then it is activity -> sequence activity -> branching activity - // and the branching activity is what we need to check - currentActivity = currentActivity.getParentActivity(); - transition = currentActivity.getTransitionFrom(); - if (transition != null) { - nextActivity = transition.getToActivity(); - } } }