public static SortedSet<DegreeModuleScope> run(String degreeCurricularPlanID, AcademicInterval academicInterval)
throws FenixServiceException {
final DegreeCurricularPlan degreeCurricularPlan = FenixFramework.getDomainObject(degreeCurricularPlanID);
final ComparatorChain comparator = new ComparatorChain();
comparator.addComparator(new BeanComparator("curricularYear"));
comparator.addComparator(new BeanComparator("curricularSemester"));
comparator.addComparator(new BeanComparator("curricularCourse.externalId"));
comparator.addComparator(new BeanComparator("branch"));
final SortedSet<DegreeModuleScope> scopes = new TreeSet<DegreeModuleScope>(comparator);
for (DegreeModuleScope degreeModuleScope : degreeCurricularPlan.getDegreeModuleScopes()) {
if (degreeModuleScope.isActiveForAcademicInterval(academicInterval)) {