Releases: UniTime/unitime
Releases · UniTime/unitime
UniTime 4.5 build 100 (Beta 2)
Student Scheduling
Advisor Course Recommendations
- A page for the advisor to fill with a student while advising him/her on what courses to take the next term.
- It looks a lot like the Student Course Requests page, with a few fields added (credits per course, notes, etc.).
- When opened, the advisor can look up a student and the page gets pre-populated with the existing data.
- The page automatically offers course suggestions (but it is possible to put in a free text too), fills in credits, count the credit totals, etc.
- When submitted, there is a PDF version generated that can be printed and signed by the student.
- Allows for student status change when submitted; no need for the advisor to use the dashboard to change the student status.
- UniTime keeps record of these advisor course requests for possible auditing/reporting (what students requested versus what they have been advised, list students that have been already advised that did not fill their course requests in, etc.).
- Student Course Requests page can be pre-populated with these courses, or a student can review the courses filled in by the advisor.
Important Course Requests
- Added ability to put a multiple levels to critical courses: Critical > Important > Normal.
- Critical course request are assigned first, then important requests, then the rest.
- More levels can be defined in the future, if needed.
Alternative Majors
- Added ability to load critical courses and degree plans from an alternative major.
- Alternative majors are identified by a student group of a particular type a student is in.
- By default group type is "1st Choice", and the group abbreviation is area abbv - major code.
- Custom class CriticalCoursesExplorers makes use of these (implementing both CriticalCoursesProvider and DegreePlansProvider interfaces).
Priority Students
- Added ability to identify priority students (to be assigned first) by a filter query.
- Improved handling of priority students by the solver.
Reservation Restrictions
- Added ability to define on a reservation whether it is inclusive or not.
- There is a new mode field when editing a reservation (that is not an override) which can be:
- Default: using unitime.reservations.restrictionsInclusive which defaults to true.
- Reservation: the currently default mode (restrictions are applied at all levels).
- Restriction: not-inclusive mode (restrictions are only applied on the selected level).
Grade Mode / Variable Credit Customization
- Added ability to show course credit information on a particular section (not just the first one).
- Gradable subpart (on which the credit is shown) can be provided using the ExternalClassNameHelperInterface interface, implementing HasGradableSubpart sub-interface.
- Banner Integration: Show credit information on the gradable section.
- Banner Integration: For variable credit courses, display assigned credit returned by XE API.
- Special Registration: Added ability to request credit change on a variable credit course.
Online-Only Students / Courses
- Added ability to identify some students as online-only (e.g., with a student group) and restrict them to certain courses or course configurations.
- The restriction can be on courses (using regular expression for course name), or on course configurations (using regular expression on instructional method reference).
- Added ability to hide courses that do not have an online-only option from the online-only students and vice versa (students can not look them up on the Course Requests or Scheduling Assistant page).
- Added ability for the solver to keep out students from courses or course configurations they cannot take.
Minimal Perturbation Problem Improvements
- Improved ability to re-section not-assigned course requests while the rest is kept untouched.
- Existing enrollments can be fixed and left unchanged, even when they are not consistent.
- Single Course MPP: Added ability to re-section only students in the given course or courses, while everything else is left untouched.
Other Changes & Improvements
- Scheduling Dashboard: Added an ability to filter by instructional method.
- Custom integration with a custom student attendance planning tool, showing additional meeting information on a class that a student has enrolled.
- Added ability to save/validate only a subset of students loaded in the student scheduling solver.
- Added ability to put a small penalization on online sections.
- That is sections that do not have a time, that have time and no room, or that have time but the room does not check for conflicts (like the ONLINE room).
Course Timetabling
Room Sharing
- More precise computation of allowed room sharing (how much space is needed in a room).
- This is to avoid issues when three or more classes can share a room and some of these classes do not overlap.
- For example, no more than two classes overlap when there is a Monday class, a Wednesday class, and a Monday-Wednesday class.
Fixed Time MPP
- A new ability to assign new rooms while the existing time assignments are left unchanged.
- Fixed Times: all assigned classes have only the assigned time in the domain (time preferences are completely ignored).
- Weakened Distributions: allow hard distribution preferences to be weakened (strongly discouraged instead of prohibited etc.)
- Instructor Conflicts: instructor conflicts can be allowed but penalized.
- Prohibited Rooms: allowed prohibited rooms in the domain (except of rooms that are too small, or not being available for the department).
Other Changes & Improvements
- Class Assignment: When checking for event conflicts, ignore conflicts for rooms that have the conflict checking disabled.
- Instructional Offering Cross Lists: Added ability to edit Reserved space (course limit) even when there is only a single course in the cross-list.
- Course Timetabling Save & Commit: when saving & committing two or more problems together, do not check for conflicts between problems that are being committed.
- Instructor Availability: When checking instructor availability based on events (and possibly classes from other academic sessions), also check for distance conflicts between the class and the unavailability.
Examination Timetabling
Other Changes & Improvements
- Added support for rooms that do not check for conflicts (e.g., the ONLINE room).
- Allow for examination periods to run over midnight.
Event Management
Other Changes & Improvements
- Added ability to make the Expected Attendance a required field.
Other
Right-to-Left Support
- Basic support for right-to-left languages.
- Enable by using ar locale.
APIs
- HQL Reports: Added ability to export HQL reports in JSON format using the API.
- Data Exchange: Course Offerings XML import and export extended to include number of rooms of a class.
- Data Exchange: Include export and import of advisor recommendations with the Student Course Requests XML.
Other Changes & Improvements
- People Lookup: Added ability to search the whole subtree in the LDAP search.
- Task Scheduler: make sure current month is included if it is within 12 months before session start or after session end.
UniTime 4.5 build 95 (Beta 1)
Student Scheduling
Advisor Course Recommendations
- A page for the advisor to fill with a student while advising him/her on what courses to take the next term.
- It looks a lot like the Student Course Requests page, with a few fields added (credits per course, notes, etc.).
- When opened, the advisor can look up a student and the page gets pre-populated with the existing data.
- The page automatically offers course suggestions (but it is possible to put in a free text too), fills in credits, count the credit totals, etc.
- When submitted, there is a PDF version generated that can be printed and signed by the student.
- Allows for student status change when submitted; no need for the advisor to use the dashboard to change the student status.
- UniTime keeps record of these advisor course requests for possible auditing/reporting (what students requested versus what they have been advised, list students that have been already advised that did not fill their course requests in, etc.).
- Student Course Requests page can be pre-populated with these courses, or a student can review the courses filled in by the advisor.
Important Course Requests
- Added ability to put a multiple levels to critical courses: Critical > Important > Normal.
- Critical course request are assigned first, then important requests, then the rest.
- More levels can be defined in the future, if needed.
Alternative Majors
- Added ability to load critical courses and degree plans from an alternative major.
- Alternative majors are identified by a student group of a particular type a student is in.
- By default group type is "1st Choice", and the group abbreviation is area abbv - major code.
- Custom class CriticalCoursesExplorers makes use of these (implementing both CriticalCoursesProvider and DegreePlansProvider interfaces).
Priority Students
- Added ability to identify priority students (to be assigned first) by a filter query.
- Improved handling of priority students by the solver.
Reservation Restrictions
- Added ability to define on a reservation whether it is inclusive or not.
- There is a new mode field when editing a reservation (that is not an override) which can be:
- Default: using unitime.reservations.restrictionsInclusive which defaults to true.
- Reservation: the currently default mode (restrictions are applied at all levels).
- Restriction: not-inclusive mode (restrictions are only applied on the selected level).
Grade Mode / Variable Credit Customization
- Added ability to show course credit information on a particular section (not just the first one).
- Gradable subpart (on which the credit is shown) can be provided using the ExternalClassNameHelperInterface interface, implementing HasGradableSubpart sub-interface.
- Banner Integration: Show credit information on the gradable section.
- Banner Integration: For variable credit courses, display assigned credit returned by XE API.
- Special Registration: Added ability to request credit change on a variable credit course.
Online-Only Students / Courses
- Added ability to identify some students as online-only (e.g., with a student group) and restrict them to certain courses or course configurations.
- The restriction can be on courses (using regular expression for course name), or on course configurations (using regular expression on instructional method reference).
- Added ability to hide courses that do not have an online-only option from the online-only students and vice versa (students can not look them up on the Course Requests or Scheduling Assistant page).
- Added ability for the solver to keep out students from courses or course configurations they cannot take.
Minimal Perturbation Problem Improvements
- Improved ability to re-section not-assigned course requests while the rest is kept untouched.
- Existing enrollments can be fixed and left unchanged, even when they are not consistent.
- Single Course MPP: Added ability to re-section only students in the given course or courses, while everything else is left untouched.
Other Changes & Improvements
- Scheduling Dashboard: Added an ability to filter by instructional method.
- Custom integration with a custom student attendance planning tool, showing additional meeting information on a class that a student has enrolled.
- Added ability to save/validate only a subset of students loaded in the student scheduling solver.
- Added ability to put a small penalization on online sections.
- That is sections that do not have a time, that have time and no room, or that have time but the room does not check for conflicts (like the ONLINE room).
Course Timetabling
Room Sharing
- More precise computation of allowed room sharing (how much space is needed in a room).
- This is to avoid issues when three or more classes can share a room and some of these classes do not overlap.
- For example, no more than two classes overlap when there is a Monday class, a Wednesday class, and a Monday-Wednesday class.
Fixed Time MPP
- A new ability to assign new rooms while the existing time assignments are left unchanged.
- Fixed Times: all assigned classes have only the assigned time in the domain (time preferences are completely ignored).
- Weakened Distributions: allow hard distribution preferences to be weakened (strongly discouraged instead of prohibited etc.)
- Instructor Conflicts: instructor conflicts can be allowed but penalized.
- Prohibited Rooms: allowed prohibited rooms in the domain (except of rooms that are too small, or not being available for the department).
Other Changes & Improvements
- Class Assignment: When checking for event conflicts, ignore conflicts for rooms that have the conflict checking disabled.
- Instructional Offering Cross Lists: Added ability to edit Reserved space (course limit) even when there is only a single course in the cross-list.
- Course Timetabling Save & Commit: when saving & committing two or more problems together, do not check for conflicts between problems that are being committed.
- Instructor Availability: When checking instructor availability based on events (and possibly classes from other academic sessions), also check for distance conflicts between the class and the unavailability.
Examination Timetabling
Other Changes & Improvements
- Added support for rooms that do not check for conflicts (e.g., the ONLINE room).
- Allow for examination periods to run over midnight.
Event Management
Other Changes & Improvements
- Added ability to make the Expected Attendance a required field.
Other
Right-to-Left Support
- Basic support for right-to-left languages.
- Enable by using ar locale.
APIs
- HQL Reports: Added ability to export HQL reports in JSON format using the API.
- Data Exchange: Course Offerings XML import and export extended to include number of rooms of a class.
- Data Exchange: Include export and import of advisor recommendations with the Student Course Requests XML.
Other Changes & Improvements
- People Lookup: Added ability to search the whole subtree in the LDAP search.
- Task Scheduler: make sure current month is included if it is within 12 months before session start or after session end.
UniTime 4.4 build 148
Course Timetabling
Learning Management System Integration Partner Code
- Added the ability to store the Learning Management System Integration Partner Code (LMS) on classes.
- LMSs are session specific.
- If an LMS is designated as the default for session, all classes with no LMS set will default to the designated default LMS.
- If no LMS is defined for a term, then the LMS data field is not visible on classes.
- Classes can be assigned an LMS using the Class Setup page from the Instructional Offering Detail page.
Timetable Grid: Curriculum, Student Groups
- Fixed "ORA-00932: inconsistent datatypes" error when using Curriculum or Student Group resource (when showing the selected or committed solution).
Timetable Grid: Show All Committed
- Added ability to show all committed classes when there is no solution loaded or selected (regardless of the user's department).
- To enable set unitime.timeGrid.showAllCommitted to true (defaults to false).
Student Scheduling
Online Student Scheduling Dashboard: Confirmations
- Added a change status, a change note, and a send email confirmations.
- The confirmation does not show when:
- only 1 student is selected,
- all selected students are advised by the advisor using the page.
Student Scheduling Dashboard: Filter
- Added ability to filter by Assigned Critical and by Not Assigned Critical (listing only critical course requests that are assigned or not-assigned respectively).
Course Requests: Custom Validation
- Admin can use the Course Requests page even when Spec Reg returns not eligible, but cannot request a new override.
- Show a warning when a critical course is being removed.
Online Student Scheduling: Critical Courses
- Added ability to check for critical courses when there is an enrollment change.
- Controlled by the application property unitime.enrollment.checkCritical, set to false by default.
- That is, by default, critical courses are tracked only during pre-registration.
Scheduling Assistant: Critical Courses
- Show a warning when a critical course is being dropped (only when drop warnings are enabled).
Course Requests / Scheduling Assistant: Course Finder
- Added ability to select multiple courses on alternatives.
Online Student Scheduling Dashboard: Student Notes
- Corrected the logic computing the last note of a student.
- This fixes the issue of showing an older note instead of the last one.
UniTime 4.4 build 140
Student Scheduling
Course Requests: Submit Requests
- Ensure that the save-requests action gets logged when the online student scheduling is disabled (no online student scheduling server is running).
Course Requests: Custom Validation
- When updating request note, do not check the scheduling status of the session.
- Course request changes may be done at a time when the online student scheduling is not accepting scheduling changes.
Online Student Scheduling: Asynchronous Execution
- Added ability to use multiple threads for asynchronous execution.
- Set unitime.enrollment.server.asyncPoolSize for the thread pool size (defaults to 10).
Reservations: Start Date
- Added ability to provide start date on a reservation.
- A reservation is also considered expired (does not reserve any space) when today is BEFORE the start date.
Student Scheduling Assistant: Inactive Course Requests
- A course request is marked as inactive when it is saved in the database, but the student (that has a class schedule) is not enrolled in the course.
- Inactive courses are NOT listed as not-assigned on the Class List page.
- Inactive courses are indicated on the Course Requests table (as dark red color, line-through, and italic font).
- A course can be activated by using the finder dialog or making changes to it (including just selecting on amoung suggestions).
- There is a new icon for reactivating an inactive course (universal recycling symbol).
- When a new schedule is built (Build Schedule button), inactive courses are ignored (left not-assigned).
- Unless the Rearrange Schedule button is clicked.
- Also, do not consider inactive courses when computing suggestions.
- Using + New Course will always put the new course at the bottom (even if it was present on among course requests as inactive before).
- It is possible to add a new course without removing inactive (having a course listed two times would not trigger an error if one of them is not active).
- These "inactive" course requests are not detected/indicated by default, but this feature must be enabled with the following property
- unitime.enrollment.inactiveUnassignedRequests=true (students)
- unitime.enrollment.inactiveUnassignedRequests.manager (advisors and admins).
Online Scheduling Dashboard: Change Log
- Unless the filter checks for operation:
- Do not show validate-overrides, banner-update, and critical-courses actions that did not make any changes (the result is False).
- Do not show reload-student, reload-offering, and check-offering actions with no result filled in.
- Order the results by log unique id (instead of timestamp; a little less precise, but much faster).
- Message column: set white-space to pre-wrap to improve the display of multi-line messages.
Online Student Scheduling Dashboard: Filter
- Fixed an issue with hiding students that only have free time requests.
- Improved boolean query capabilities of the filter, for instance
- (group:PREREG and not group:ENH-3)
- Will return all students from the PREREG group that are NOT in the ENH-3 group.
Online Student Scheduling: Check Assignment
- When counting unreserved space: only check reservations that are set directly on the configuration/section in question.
Online Student Scheduling: Not-Assigned Course Request Message
- Besides the course availability and time conflicts, also check the max credit hours.
- Display "Exceeds maximum of X credit hours." when the not-assigned course request would get the student over the max credit limit (where X is the current max credit for the student).
Batch Student Scheduling: Curriculum Reservations
- Fixed a problem with curriculum reservations not counting matching students that are already enrolled and that are excluded from the run.
Published Schedule Runs: Config & Notes
- Added solver configuration on the published run.
- Added ability to put in a note.
Online Student Scheduling: Change Log
- Student Email: improved logging (include recipient email address, show more details in the Change Log, etc.).
- Also, do not fail when CC address is incorrect (log a warning instead).
- Status Change: improved logging (remember both the old and the new status reference), show status change in the Change Log (Message column).
Course Timetabling
Class Assignment: Student Conflicts
- Added ability to change the default of how the student conflicts are computed.
- Application configuration tmtbl.classAssign.studentConflicts with the possible values:
- auto: show the actual student conflicts when there are student class enrollments, show projected (solution) conflicts otherwise (this is the default)
- actual: always show the actual student conflicts
- solution: always show the projected (solution) student conflicts
- none: do not show student conflicts in the Available Times table
- It is now possible to switch between the two modes (actual/projected) student conflicts by clicking the note at the bottom of the Student Conflicts table, which now reads:
- Showing the actual student class enrollments, click here to change to projected student conflicts.
- or
- Showing projected student conflicts, click here to change to the actual class enrollments.
Examination Timetabling
Examination Assignment: Same Days
- Added Same Days constraint checking.
- Fixed an issue with the DistributionConflict comparator (when two constraints with a different number of exams are compared).
Examination Name: T for course title
- Added ability to include course title in the examination name (using %T).
CPSolver updated to version 1.3.189 (was 1.3.185)
Examination Timetabling: More Than One Exam A Day
- Added the ability to set a penalty when a student has two exams or more a day.
- To enable add org.cpsolver.exam.criteria.additional.StudentMoreThan1ADayConflicts to Exam Additional Criteria.
- More than one exam a day student conflict weight can be set by problem property Exams.MoreThanOneADayWeight.
Course Timetabling: Back-To-Back/Following Weeks
- Added Back-To-Back Weeks distribution constraint.
- Given classes must be taught on weeks that are back-to-back (the gap between the two assigned date patterns is less than a week).
- When prohibited or (strongly) discouraged: any two classes must have at least a week gap in between.
- Added Following Weeks distribution constraint.
- Given classes must be taught on weeks that are back-to-back and in the given order.
- When prohibited or (strongly) discouraged: given classes must be taught on weeks in the given order with at least one week between any two following classes.
Online Student Scheduling: Suggestions
- Consider the order of the courses within a course request when comparing two suggestions.
Administration
Chameleon: Session Administrators
- When the chameleon page is used by session dependent users (e.g., session admins), only allow authorities from the academic session(s) for which the original user has Chameleon permission.
- This is to prevent a session admin to chameleon into another session admin from a different academic session.
HQL Reports: Export XLS
- Added ability to export HQL reports to XLS format.
Other
PostgreSQL
- Added support for PostgreSQL.
- See http://help.unitime.org/PostgreSQL for more details.
UniTime 4.4 build 130
Student Scheduling
Student Scheduling: Advisors
- Show student's advisor(s) on the dashboard page (Students tab) and in the Enrollments tables.
- Added ability to filter by advisor on the dashboard page.
- People Lookup: Added ability to check advisors when looking up a person. Added ability to use people lookup to fill in advisor details.
Course Finder: Select All
- Added Select All button.
- Only visible when there is a match on UCC attribute (custom course lookup).
- When clicked, all courses are selected (limited to 10) in a random order favoring courses with more available space.
- It is possible to choose the selection mode (availability, limit, or snapshot).
- It is possible to define whether a random selection will be used (or the courses will be just listed in the given order).
- It is possible to define the maximal number of returned courses.
- The following application properties are used:
- unitime.enrollment.listOfferings.selectionMode=availability|limit|snapshot (defaults to availability)
- unitime.enrollment.listOfferings.rouletteWheel=true
- unitime.enrollment.listOfferings.limit=10
- If not all courses are going to be selected, rename the button to Pick {N} where N is the number of courses that will be selected.
Course Finder: List of Classes
- Do not list classe for users that have no role (students) during pre-registration when the class schedule has not been published yet.
Course Requests: Custom Course Request Validation
- Request Overrides: added ability to provide request note.
- Course request validation (when submitting the Course Requests page): for all new registration errors, check if the override is allowed.
- Using the response message (response.overrides) and prohibited overrides on the course that is being requested.
- Created a simplified implementation that can be used while the class schedule has not been published yet (eligiblity checking but no course request validation).
Course Requests: Critical Course Override
- Added ability to override critical course flag on the Online Student Scheduling Dashboard.
- Permission Student Scheduling Change Critical Override is needed.
Batch Student Scheduling: XE Save
- Enroll students with CLOS overrides last (students with an override reservation that allows over the limit).
- This is to make sure some other student would not get a CLOS error.
Batch Student Scheduling: Solver Dashboard
- A few changes (mostly caching) to make the search on the dashboard work faster, especially when returning a lot of data.
Grade Modes: Disclaimer
- Added ability to put in a custom disclaimer for each grade mode change.
- Application property purdue.specreg.gradeModeDisclaimer.X, where X is the code of the grade mode change.
- Fixed Null exception when the student has a teaching assignment.
Student Status: Message
- For statuses with an effective period, added ability to configure whether the automatically generated message (Your time window is between...) is to be automatically appended at the end of the status message.
- Sgit settings unitime.enrollment.studentStatus.timeWindowMessage, defaults to true (include the message).
Student Scheduling: Student Emails
- Added ability to send student emails (from the online dashboard) even when the automatic notifications are disabled.
- Include course requests table on the email (when student can access Course Requests page).
- Include List of Classes and Timetable only when the student can access the Scheduling Assistant page.
- When the email is send from the online dashboard:
- Ignore the student status (email flag)
- Added checkboxes: include course requests and include class schedule
- Remember the last used settings in the cookie (subject, cc, includes)
Online Student Scheduling: Customizations
- Customization holder classes rewritten to use the same sub-class (Holder).
- Property changes are monitored and a new provider instance is created when needed.
- Ensure that session-dependent application properties are considered when needed.
Student Scheduling Dashboard: Request Student Update
- Do not limit the ability to request students updates to online student scheduling.
Student Scheduling: Critical Course Requests
- Added ability to load critical courses from a CSV file (containing area, major, subject area, and course number).
- All courses with matching academic area and major are considered critical for the student.
- Added ability to use the file-based critical courses as a fallback to using degree plans.
Batch Student Scheduling: Priority Students
- Added ability to mark some students as priority students.
- Priority students are scheduled first (after the critical course assignments), improving their chance of getting the courses they need.
- Priority students are identified by student group (Load.PriorityStudentGroupReference parameter).
Batch Student Scheduling: Projected Students
- Added ability to filter projected students with a query (Load.ProjectedStudentQuery parameter).
Course Requests: Custom Validation
- Display student provided notes for the requested overrides.
- Added ability to change these notes.
- Allow note changes even when the student cannot update course requests.
Student Scheduling: Special Registration
- Display student provided notes for the requested overrides.
- Added ability to change these notes.
Student Scheduling: Solver Reports
- Export CSV: do not pritify exported reports unless explicitly stated in the report definition (changing the default value of the pritify parameter to false).
Student Scheduling Dashboard: Set Student Status
- When a status is changed, update information on whether the user can use the scheduling assistant / course requests.
- No need to use Refresh to open the Course Requests / Scheduling Assistant dialog after the status change.
Published Schedule Runs: Solution Details
- To remove flickering when showing mouse-over information (solution details):
- No mouse-over information (solution info is too long for this).
- Show the solution information in a dialog instead (when a row is clicked).
Student Scheduling Link (UniTime/studentScheduling.do): Default Session / Prefer Course Requests
- When unitime.studentScheduling.useDefaultSession is set to false (defaults to true), the student scheduling link will not match on the default academic session. This means that it will:
- Open Scheduling Assistant page if there is a session for which the student can use the page.
- Open Course Requests page if there is a session for which the student can use the page.
- When unitime.studentScheduling.preferCourseRequests is set to true (defaults to false), the course request page take precedence.
- When selecting the current role, also check the sessions for which course requests are enabled (not just the ones with student scheduling enabled).
Course Timetabling
Multiple Class Setup: Snapshot Limits
- Added ability to edit class-level snapshot limits.
- When tmtbl.class_setup.edit_snapshot_limits is set to true, defaults to false.
- Snapshot limits are only editable after thare have been snapshots taken (offering has a snapshot timestamp).
- Also update snapshot limit timestamp (Class_.snapshotLimitDate) when a snapshot limit on a class is changed.
- Only users with Multiple Class Setup Snapshot Limits permission can edit snapshot limits.
Class Edit/Detail: No Date Pattern
- Avoid null exception when there is no date pattern (there is no default date pattern defined and there is no date pattern set on the subpart or the class).
CPSolver updated to version 1.3.185 (was 1.3.179)
Examination Timetabling: Availability
- When instructor or student direct conflicts are not allowed, also do not allow for availability violations.
Student Scheduling: Solution Info
- Added information about full sections and offerings.
- Added information about students with time overlaps (number of students, average overlapping minutes).
Student Scheduling: Advisors
- Added support for student's advisor(s).
Student Scheduling: Priority Students
- Added ability to mark some students as priority students.
- Priority students are scheduled first (after the critical course assignments), improving their chance of getting the courses they need.
Student Scheduling: Dummy Students
- Improved handling of projected students.
Event Management
Events: Display Conflicts
- Avoid a "No data type for node Xm" exception when display conflicts are enabled in a non-English locale.
Other Changes
JavaScript Cache Filter
- Ensure that chain.doFilter does not get called two times.
- This fixes issue #50 (multiple menu bars and fields) when UniTime is deployed on Windows.
UniTime 4.4 build 120
Batch Student Scheduling
Database Load: Learning Community Reservations
- Corrected a minor issue with a Learning Community reservation:
- When a course is solely reserved for a single learning community, and there are some students already enrolled that are not matching the provided student filter, the reservation limit may be updated so that it is one student less than it should be.
Log Cleaner: Published Solver Runs
- Corrected the ability to automatically delete old published student scheduling solver runs during startup.
- Using unitime.cleanup.publishedSolutions property listing number of days after which a published run can be deleted (defaults to -1, no automatic delete).
Course/Configuration Limits
- Added ability to recompute config and course limits to exclude canceled and disabled classes (by counting space in individual classes and decreasing the config/course limit to this number, if larger).
- This is only done when Load.CorrectConfigLimit is set to true (defaults to false).
- Student group and LC reservations that allow for disabled classes are considered (counted towards the limit).
- Students that are enrolled in canceled/disabled classes that are not included in the problem are considered (counted towards the limit).
- This is to improve performance of reservations that have no or only config-level restrictions for courses that have cancelled or disabled classes.
Student Status
- Added ability to allow Scheduling Assistant or Course Requests page to be used by an admin (or an advisor) without allowing the student to access the page.
- That is, for instance, the advisor can access the Course Requests page when Advisor Register toggle is checked regardless of the Registration toggle.
- That is, for instance, the admin can access the Scheduling Assistant page when Admin Enroll toggle is checked regardless of the Assistant toggle.
- Added no-schedule status flag:
- When set, student of such status cannot see his/her personal schedule for the given term (these include classes, exams, and course related events).
Critical Courses: Custom Provider
- Added ability to include all terms of the plan (when banner.dgw.criticalIncludeAllTerms is true, defaults to false).
- Added ability to include the previous two terms of the plan (when banner.dgw.criticalIncludePastTerm is true, defaults to false).
Use Class Snapshot Limits
- Added ability to use class snapshot limit (e.g., for the test runs)
- when Load.UseSnapShotLimits is set to true (defaults to false).
- When a class has a snapshot limit defined and it is above the class limit >> use snapshot limit instead of the class limit.
- Compute snapshot limit on configurations and offerings (using class snapshot limits, defaulting to class limits for classes with no snapshot limit defined).
CPSolver updated to version 1.3.179 (was 1.3.176)
Student Scheduling: Enrollment
- Enrollment: include reservation in the equality checking.
- This fixes an issue with solution restore (current solution containing the same enrollment, but without the reservation).
Batch Student Scheduling: Critical Course Requests
- Improved handling of critical course requests.
- Only consider critical course requests when sorting students for the Critical Courses B&B phase (students with fewer choices go first).
- Added two new phases that are only considering critical course requests, using backtracking and IFS.
Custom Special Registration
Closed Section Override
- When purdue.specreg.allowClosedWhenAvailable is true (default is false):
- Closed section override can be requested when:
- a) there is space available, but Spec Reg returns CLOS and EX-ADD errors
- b) closed section override is allowed on the course and Spec Reg does NOT return EX-ADD error
- During extended add/drop, closed section overrides can be only requested when there is space in the section (regardless on the settings on the course).
- During normal registration, closed section overrides can be only requested when allowed on the course (regardless of the space available in the section).
- Closed section override can be requested when:
Grade Mode Changes
- Added ability to request grade mode changes.
XE Student Enrollment
- When banner.xe.keepGradeMode is set to true, make an additional API call to set the grade mode for the added section(s) to the one that was already set on the course (other sections of the same course).
- Honors grade modes are identified by banner.xe.resetGradeModes reg exp property (defaults to H|Q|R).
- When there is a schedule change, honors grade mode is reset back to the default one (follow the grade mode of the added section).
Other Changes
Student Scheduling: Enrollment Table
- Corrected column computation when switching between section numbers and external ids.
Class Detail/Edit: Speed Improvements
- Improved speed of the Class Detail and Edit Class pages when there are lots of instructors with time preferences in the department.
Contact Us: Categories & Attachments
- Contact Us categories can now be customized using Administration > Other > Contact Categories page.
- Also, each category may have a custom email address (or addresses).
- It is now possible to include attachments in the Contact Us email.
Scheduling Subpart Suffix
- When there are more than 27 subparts of the same itype, use aa, ab, ac for the suffixes instead of running out of letters.
UniTime 4.4 build 114
Student Scheduling
Published Schedule Runs
- Added an ability to publish results of solver runs for the advisors and schedule deputies to see.
- Published solver runs are stored in the database. It is possible to get back to a particular run.
- It is now possible to start a test run automatically, e.g., on a nightly basis.
Reporting
- Additional solver reports have been added on the Student Sectioning Solver Reports and the Online Student Scheduling Reports pages.
- Tableau report providing information for further processing (requested / enrolled courses by individual students and their properties).
- Critical course requests and their assignments.
- There is a new API that can be used to download a solver report of the last published run.
Credit Checking
- Improved handling of maximum credits of a student: a student cannot get more than max credit, it is no longer needed to move course requests that are over the max credit to alternates.
- Added ability to maximize the number of students that have at least a minimum number of credits.
Student Schedule Quality
- Added an ability to optimize the following criteria:
- Avoid early morning and late evening times
- Have time for lunch
- Minimize overall travel
- Avoid holes in the schedule (prefer back-to-back)
- Avoid long days (aka work-day constraint)
Student Preferences and Requirements
- Improved performance of the solver (added ability to swap students in order to improve Selection preference).
- It is now possible to put a preference on the default (not-set) instructional method.
- It is now possible to require certain sections or instructional methods.
- It is possible to define who can set required preferences (student by status, admin/advisor by permissions).
- It is possible to filter by preferences or requirements on the dashboard.
- By individual method or section
- Any, all met or all unmet preferences or requirements
Student Scheduling Dashboard
- Added pagination when showing too many students (over 500).
- Enrollment counts: exclude requests that are pending, canceled, and/or rejected (depending on the override filter).
- Student groups have been split by type (there is a column for each type, they are grouped by type in the filter as well).
- Added ability to select multiple courses in the filter.
- Corrected computation of available space on disabled (no-print) sections.
- Various performance improvements.
Reservations
- Course requests that have matching (individual or student group) reservations may not be removed by the student.
- Such course requests may not be allowed to be changed in priority, or no alternatives can be added to them.
- Added more customizable individual and student group override reservations.
- Reservations can be edited without locking the offering when wait-listing is disabled.
- Created Learning Community reservations combining course and student group reservations.
- Various improvements on the Reservations page (e.g., it is now possible to filter by override type).
Critical Courses
- Some course requests may be identified as critical.
- Critical course requests should take precedence (assign critical courses first, do not unassing critical course demands).
- Critical courses are identified by a custom class implementing the CriticalCoursesProvider interface/
Other Improvements
- Student Status: Added session-dependent student statuses.
- Batch Solver: do not put students into classes that already started (added General.ClassesFixedDate solver parameter).
- Course Requests: Alternate Course Requests renamed to Substitute Course Requests.
- Course Requests: Added ability to select multiple courses in the Course Finder dialog and filter by UCC course attributes.
Course Timetabling
Student Course Demands
- Course Requests With Projected Last Likes: added ability to combine pre-registration (course requests) with projected last-like course enrollment data.
- Course Requests take precedence, Last-Likes are weighted to fill the remaining space based on the curriculum projection rules.
- Student Course Requests: Improved ability to consider course request alternatives.
- Alternatives are either ignored (when StudentCourseRequests.IncludeAlternatives is false).
- Student weight is spread between the requested course and its alternatives, student conflicts between alternatives are ignored (when StudentCourseRequests.IncludeAlternatives is true, which is the default).
- Curricula Requests Course Demands: improved ability to consider course request alternatives.
- Alternatives are either ignored (when StudentCourseRequests.IncludeAlternatives is false). Course requests are included in the curriculum problem.
- Student weight is spread between the requested course and its alternatives, student conflicts between alternatives are ignored (when StudentCourseRequests.IncludeAlternatives is true, which is the default). While course requests (without alternatives) are included in the curriculum, true requests with alternatives are used in the timetabling for students that are not made up.
Event Management
Permissions
- Finer control over who can see unpublished class events.
- When unitime.events.hasRole.checkSessionStatusForClasses is set to true (departmental managers cannot see unpublished class events of other departments).
- Allow some department-dependent roles to see all class events with the new EventCanSeeUnpublishedEvents permission.
Approval
- When new meetings of a Special or Course-Related event are automatically approved (either due to the Approve New Meetings toggle or the event status), also add Approve action into the event notes.
Administration
Data Exchange
- CSV Exports: Added ability to export CSVs with custom delimiter and quotation characters.
- Using csvDelimiter and csvQuatation parameters, for example: &csvDelimiter=%7c&csvQuotation= will add | as delimiter and no quotation marks.
- Course Offering Export: export class.managingDept when a class is externally managed.
- Academic Session Import: Corrected import of automated tasks (do not create a script if it already exists, do not limit script length to 255 chars).
- Solver Load: Added ability to load solver XML in using the Data Exchange page.
- No data are updated, but the appropriate solver is created and loaded in using the given XML file.
Dependencies
- Spring Framework upgraded to 4.3.18 (was 3.2.14)
- spring Security upgraded to 4.2.9 (was 3.2.8)
- Spring Integration upgraded to 4.3.17 (was 3.0.7)
- Appache Commons FileUpload updated to version 1.3.3 (was 1.3.1)
- Restlet Framework upgraded to 2.3.12 (was 2.3.4)
- Added jaxen 1.1.6 to ensure that scripts are able to create XML files (this fixes an issue ClassNotFoundException: org.jaxen.VariableContext).
OpenStreetMap
- Use OpenStreetMap as default on rooms and buildings.
- Cache map tiles within UniTime.
Other
- Sponsoring Organizations: Avoid a Hibernate cache exception when deleting a sponsoring organization that is being used.
- Date Patterns: Avoid throwing an error when the date pattern starts before the first month (just ignore the dates before instead).
UniTime 4.4 build 101 (Beta 3)
Student Scheduling
Published Schedule Runs
- Added an ability to publish results of solver runs for the advisors and schedule deputies to see.
- Published solver runs are stored in the database. It is possible to get back to a particular run.
- It is now possible to start a test run automatically, e.g., on a nightly basis.
Reporting
- Additional solver reports have been added on the Student Sectioning Solver Reports and the Online Student Scheduling Reports pages.
- Tableau report providing information for further processing (requested / enrolled courses by individual students and their properties).
- Critical course requests and their assignments.
- There is a new API that can be used to download a solver report of the last published run.
Credit Checking
- Improved handling of maximum credits of a student: a student cannot get more than max credit, it is no longer needed to move course requests that are over the max credit to alternates.
- Added ability to maximize the number of students that have at least a minimum number of credits.
Student Schedule Quality
- Added an ability to optimize the following criteria:
- Avoid early morning and late evening times
- Have time for lunch
- Minimize overall travel
- Avoid holes in the schedule (prefer back-to-back)
- Avoid long days (aka work-day constraint)
Student Preferences and Requirements
- Improved performance of the solver (added ability to swap students in order to improve Selection preference).
- It is now possible to put a preference on the default (not-set) instructional method.
- It is now possible to require certain sections or instructional methods.
- It is possible to define who can set required preferences (student by status, admin/advisor by permissions).
- It is possible to filter by preferences or requirements on the dashboard.
- By individual method or section
- Any, all met or all unmet preferences or requirements
Student Scheduling Dashboard
- Added pagination when showing too many students (over 500).
- Enrollment counts: exclude requests that are pending, canceled, and/or rejected (depending on the override filter).
- Student groups have been split by type (there is a column for each type, they are grouped by type in the filter as well).
- Added ability to select multiple courses in the filter.
- Corrected computation of available space on disabled (no-print) sections.
- Various performance improvements.
Reservations
- Course requests that have matching (individual or student group) reservations may not be removed by the student.
- Such course requests may not be allowed to be changed in priority, or no alternatives can be added to them.
- Added more customizable individual and student group override reservations.
- Reservations can be edited without locking the offering when wait-listing is disabled.
- Created Learning Community reservations combining course and student group reservations.
- Various improvements on the Reservations page (e.g., it is now possible to filter by override type).
Critical Courses
- Some course requests may be identified as critical.
- Critical course requests should take precedence (assign critical courses first, do not unassing critical course demands).
- Critical courses are identified by a custom class implementing the CriticalCoursesProvider interface/
Other Improvements
- Student Status: Added session-dependent student statuses.
- Batch Solver: do not put students into classes that already started (added General.ClassesFixedDate solver parameter).
- Course Requests: Alternate Course Requests renamed to Substitute Course Requests.
- Course Requests: Added ability to select multiple courses in the Course Finder dialog and filter by UCC course attributes.
Course Timetabling
Student Course Demands
- Course Requests With Projected Last Likes: added ability to combine pre-registration (course requests) with projected last-like course enrollment data.
- Course Requests take precedence, Last-Likes are weighted to fill the remaining space based on the curriculum projection rules.
- Student Course Requests: Improved ability to consider course request alternatives.
- Alternatives are either ignored (when StudentCourseRequests.IncludeAlternatives is false).
- Student weight is spread between the requested course and its alternatives, student conflicts between alternatives are ignored (when StudentCourseRequests.IncludeAlternatives is true, which is the default).
- Curricula Requests Course Demands: improved ability to consider course request alternatives.
- Alternatives are either ignored (when StudentCourseRequests.IncludeAlternatives is false). Course requests are included in the curriculum problem.
- Student weight is spread between the requested course and its alternatives, student conflicts between alternatives are ignored (when StudentCourseRequests.IncludeAlternatives is true, which is the default). While course requests (without alternatives) are included in the curriculum, true requests with alternatives are used in the timetabling for students that are not made up.
Event Management
Permissions
- Finer control over who can see unpublished class events.
- When unitime.events.hasRole.checkSessionStatusForClasses is set to true (departmental managers cannot see unpublished class events of other departments).
- Allow some department-dependent roles to see all class events with the new EventCanSeeUnpublishedEvents permission.
Approval
- When new meetings of a Special or Course-Related event are automatically approved (either due to the Approve New Meetings toggle or the event status), also add Approve action into the event notes.
Administration
Data Exchange
- CSV Exports: Added ability to export CSVs with custom delimiter and quotation characters.
- Using csvDelimiter and csvQuatation parameters, for example: &csvDelimiter=%7c&csvQuotation= will add | as delimiter and no quotation marks.
- Course Offering Export: export class.managingDept when a class is externally managed.
- Academic Session Import: Corrected import of automated tasks (do not create a script if it already exists, do not limit script length to 255 chars).
- Solver Load: Added ability to load solver XML in using the Data Exchange page.
- No data are updated, but the appropriate solver is created and loaded in using the given XML file.
Dependencies
- Spring Framework upgraded to 4.3.18 (was 3.2.14)
- spring Security upgraded to 4.2.9 (was 3.2.8)
- Spring Integration upgraded to 4.3.17 (was 3.0.7)
- Appache Commons FileUpload updated to version 1.3.3 (was 1.3.1)
- Restlet Framework upgraded to 2.3.12 (was 2.3.4)
- Added jaxen 1.1.6 to ensure that scripts are able to create XML files (this fixes an issue ClassNotFoundException: org.jaxen.VariableContext).
OpenStreetMap
- Use OpenStreetMap as default on rooms and buildings.
- Cache map tiles within UniTime.
Other
- Sponsoring Organizations: Avoid a Hibernate cache exception when deleting a sponsoring organization that is being used.
- Date Patterns: Avoid throwing an error when the date pattern starts before the first month (just ignore the dates before instead).
UniTime 4.4 build 93 (Beta 2)
Student Scheduling
Published Schedule Runs
- Added an ability to publish results of solver runs for the advisors and schedule deputies to see.
- Published solver runs are stored in the database. It is possible to get back to a particular run.
- It is now possible to start a test run automatically, e.g., on a nightly basis.
Reporting
- Additional solver reports have been added on the Student Sectioning Solver Reports and the Online Student Scheduling Reports pages.
- Tableau report providing information for further processing (requested / enrolled courses by individual students and their properties).
- Critical course requests and their assignments.
- There is a new API that can be used to download a solver report of the last published run.
Credit Checking
- Improved handling of maximum credits of a student: a student cannot get more than max credit, it is no longer needed to move course requests that are over the max credit to alternates.
- Added ability to maximize the number of students that have at least a minimum number of credits.
Student Schedule Quality
- Added an ability to optimize the following criteria:
- Avoid early morning and late evening times
- Have time for lunch
- Minimize overall travel
- Avoid holes in the schedule (prefer back-to-back)
- Avoid long days (aka work-day constraint)
Student Preferences and Requirements
- Improved performance of the solver (added ability to swap students in order to improve Selection preference).
- It is now possible to put a preference on the default (not-set) instructional method.
- It is now possible to require certain sections or instructional methods.
- It is possible to define who can set required preferences (student by status, admin/advisor by permissions).
- It is possible to filter by preferences or requirements on the dashboard.
- By individual method or section
- Any, all met or all unmet preferences or requirements
Student Scheduling Dashboard
- Added pagination when showing too many students (over 500).
- Enrollment counts: exclude requests that are pending, canceled, and/or rejected (depending on the override filter).
- Student groups have been split by type (there is a column for each type, they are grouped by type in the filter as well).
- Added ability to select multiple courses in the filter.
- Corrected computation of available space on disabled (no-print) sections.
- Various performance improvements.
Reservations
- Course requests that have matching (individual or student group) reservations may not be removed by the student.
- Such course requests may not be allowed to be changed in priority, or no alternatives can be added to them.
- Added more customizable individual and student group override reservations.
- Reservations can be edited without locking the offering when wait-listing is disabled.
- Created Learning Community reservations combining course and student group reservations.
- Various improvements on the Reservations page (e.g., it is now possible to filter by override type).
Critical Courses
- Some course requests may be identified as critical.
- Critical course requests should take precedence (assign critical courses first, do not unassing critical course demands).
- Critical courses are identified by a custom class implementing the CriticalCoursesProvider interface/
Other Improvements
- Student Status: Added session-dependent student statuses.
- Batch Solver: do not put students into classes that already started (added General.ClassesFixedDate solver parameter).
- Course Requests: Alternate Course Requests renamed to Substitute Course Requests.
- Course Requests: Added ability to select multiple courses in the Course Finder dialog and filter by UCC course attributes.
Event Management
Permissions
- Finer control over who can see unpublished class events.
- When unitime.events.hasRole.checkSessionStatusForClasses is set to true (departmental managers cannot see unpublished class events of other departments).
- Allow some department-dependent roles to see all class events with the new EventCanSeeUnpublishedEvents permission.
Approval
- When new meetings of a Special or Course-Related event are automatically approved (either due to the Approve New Meetings toggle or the event status), also add Approve action into the event notes.
Administration
Data Exchange
- CSV Exports: Added ability to export CSVs with custom delimiter and quotation characters.
- Using csvDelimiter and csvQuatation parameters, for example: &csvDelimiter=%7c&csvQuotation= will add | as delimiter and no quotation marks.
- Course Offering Export: export class.managingDept when a class is externally managed.
- Academic Session Import: Corrected import of automated tasks (do not create a script if it already exists, do not limit script length to 255 chars).
- Solver Load: Added ability to load solver XML in using the Data Exchange page.
- No data are updated, but the appropriate solver is created and loaded in using the given XML file.
Dependencies
- Spring Framework upgraded to 4.3.18 (was 3.2.14)
- spring Security upgraded to 4.2.9 (was 3.2.8)
- Spring Integration upgraded to 4.3.17 (was 3.0.7)
- Appache Commons FileUpload updated to version 1.3.3 (was 1.3.1)
- Restlet Framework upgraded to 2.3.12 (was 2.3.4)
- Added jaxen 1.1.6 to ensure that scripts are able to create XML files (this fixes an issue ClassNotFoundException: org.jaxen.VariableContext).
Other
- Sponsoring Organizations: Avoid a Hibernate cache exception when deleting a sponsoring organization that is being used.
- Date Patterns: Avoid throwing an error when the date pattern starts before the first month (just ignore the dates before instead).
UniTime 4.4 build 81 (Beta 1)
Student Scheduling
Published Schedule Runs
- Added an ability to publish results of solver runs for the advisors and schedule deputies to see.
- Published solver runs are stored in the database. It is possible to get back to a particular run.
- It is now possible to start a test run automatically, e.g., on a nightly basis.
Reporting
- Additional solver reports have been added on the Student Sectioning Solver Reports and the Online Student Scheduling Reports pages.
- Tableau report providing information for further processing (requested / enrolled courses by individual students and their properties).
- Critical course requests and their assignments.
- There is a new API that can be used to download a solver report of the last published run.
Credit Checking
- Improved handling of maximum credits of a student: a student cannot get more than max credit, it is no longer needed to move course requests that are over the max credit to alternates.
- Added ability to maximize the number of students that have at least a minimum number of credits.
Student Schedule Quality
- Added an ability to optimize the following criteria:
- Avoid early morning and late evening times
- Have time for lunch
- Minimize overall travel
- Avoid holes in the schedule (prefer back-to-back)
- Avoid long days (aka work-day constraint)
Student Preferences and Requirements
- Improved performance of the solver (added ability to swap students in order to improve Selection preference).
- It is now possible to put a preference on the default (not-set) instructional method.
- It is now possible to require certain sections or instructional methods.
- It is possible to define who can set required preferences (student by status, admin/advisor by permissions).
- It is possible to filter by preferences or requirements on the dashboard.
- By individual method or section
- Any, all met or all unmet preferences or requirements
Student Scheduling Dashboard
- Added pagination when showing too many students (over 500).
- Enrollment counts: exclude requests that are pending, canceled, and/or rejected (depending on the override filter).
- Student groups have been split by type (there is a column for each type, they are grouped by type in the filter as well).
- Added ability to select multiple courses in the filter.
- Corrected computation of available space on disabled (no-print) sections.
- Various performance improvements.
Reservations
- Course requests that have matching (individual or student group) reservations may not be removed by the student.
- Such course requests may not be allowed to be changed in priority, or no alternatives can be added to them.
- Added more customizable individual and student group override reservations.
- Reservations can be edited without locking the offering when wait-listing is disabled.
- Created Learning Community reservations combining course and student group reservations.
- Various improvements on the Reservations page (e.g., it is now possible to filter by override type).
Critical Courses
- Some course requests may be identified as critical.
- Critical course requests should take precedence (assign critical courses first, do not unassing critical course demands).
- Critical courses are identified by a custom class implementing the CriticalCoursesProvider interface/
Other Improvements
- Student Status: Added session-dependent student statuses.
- Batch Solver: do not put students into classes that already started (added General.ClassesFixedDate solver parameter).
- Course Requests: Alternate Course Requests renamed to Substitute Course Requests.
- Course Requests: Added ability to select multiple courses in the Course Finder dialog and filter by UCC course attributes.
Event Management
Permissions
- Finer control over who can see unpublished class events.
- When unitime.events.hasRole.checkSessionStatusForClasses is set to true (departmental managers cannot see unpublished class events of other departments).
- Allow some department-dependent roles to see all class events with the new EventCanSeeUnpublishedEvents permission.
Approval
- When new meetings of a Special or Course-Related event are automatically approved (either due to the Approve New Meetings toggle or the event status), also add Approve action into the event notes.
Administration
Data Exchange
- CSV Exports: Added ability to export CSVs with custom delimiter and quotation characters.
- Using csvDelimiter and csvQuatation parameters, for example: &csvDelimiter=%7c&csvQuotation= will add | as delimiter and no quotation marks.
- Course Offering Export: export class.managingDept when a class is externally managed.
- Academic Session Import: Corrected import of automated tasks (do not create a script if it already exists, do not limit script length to 255 chars).
- Solver Load: Added ability to load solver XML in using the Data Exchange page.
- No data are updated, but the appropriate solver is created and loaded in using the given XML file.
Dependencies
- Spring Framework upgraded to 4.3.18 (was 3.2.14)
- spring Security upgraded to 4.2.9 (was 3.2.8)
- Spring Integration upgraded to 4.3.17 (was 3.0.7)
- Appache Commons FileUpload updated to version 1.3.3 (was 1.3.1)
- Restlet Framework upgraded to 2.3.12 (was 2.3.4)
- Added jaxen 1.1.6 to ensure that scripts are able to create XML files (this fixes an issue ClassNotFoundException: org.jaxen.VariableContext).
Other
- Sponsoring Organizations: Avoid a Hibernate cache exception when deleting a sponsoring organization that is being used.
- Date Patterns: Avoid throwing an error when the date pattern starts before the first month (just ignore the dates before instead).