UniTime 4.4 Release Notes
4.4.149
Tue, 27 Jul 2021
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.
4.4.140
Fri, 29 Nov 2019
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 expaired (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 coruses 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 build (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 (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 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 of 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 recepient 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 Assigment: 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 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 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.
4.4.130
Sat, 5 Oct 2019
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.
4.4.120
Thu, 8 Aug 2019
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).
-
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.
4.4.114
Tue, 25 Jun 2019
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).