File: /var/www/html/unitime/target/unitime-4.8/help/Release-Notes.xml
<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/css" href="Release-Notes.css"?>
<!DOCTYPE release-history PUBLIC "-//UniTime//UniTime Release Notes DTD/EN" "Release-Notes.dtd">
<!--
* Licensed to The Apereo Foundation under one or more contributor license
* agreements. See the NOTICE file distributed with this work for
* additional information regarding copyright ownership.
*
* The Apereo Foundation licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*
* See the License for the specific language governing permissions and
* limitations under the License.
*
-->
<release-history>
<doc-title>UniTime 4.8 Release Notes</doc-title>
<release>
<version>4.8.${build.number}</version>
<release-date>${build.date}</release-date>
<category>
<title>Course Timetabling</title>
<item>
<name>Instructor Unavailability: Daylight Saving Dates</name>
<description>
<line>Corrected instructor unavailability on daylight saving days (i.e., days with 23 or 25 hours).</line>
</description>
</item><item>
<name>Travel Time: Default/Computed Distances</name>
<description>
<line>Show default/computed distances in blue.</line>
</description>
</item>
<item>
<name>Course Timetabling: Multiple Rooms Split Attendance</name>
<description>
<line>When a class needs two or more rooms, added an ability to set the class as requiring split attendance.</line>
<line>When split attendance is set for the class, the class is expected to be split among the assigned rooms (the total room capacity must meet the class limit times room ratio).</line>
<line>When splitĀ attendance is not set for the class (which is the default), each room must be big enough to fit the class.</line>
<line>Split Attendance can be set on the Instructional Offering Configuration page (all classes of a subpart) or the Multiple Class Setup page (individual classes).</line>
</description>
</item>
<item>
<name>Course Timetabling: Multiple Rooms With Different Preferences</name>
<description>
<line>The ability to provide different preferences for each room has been added for classes that need two or more rooms.</line>
<line>This includes cases when some rooms are prohibited in some positions, e.g., a class needs a classroom and some other room.</line>
<line>Room-related preferences can be only defined on the class or the scheduling subpart level, for rooms, room groups, room features, and buildings.</line>
</description>
</item>
</category>
<category>
<title>Student Scheduling</title>
<item>
<name>Student Scheduling Assistant / Course Requests: Access Control</name>
<description>
<line>Added an ability to limit how many users can use the page (Scheduling Assistant and/or Course Requests) at the same time.</line>
<line>Automatically leave the page after a given time of inactivity (showing a warning first).</line>
<line>Parameters for Scheduling Assistant:
<line>unitime.accessCotrol.sectioning.maxActiveUsers .. Maximal number of users using the page at the same time (not set or zero for disabled).</line>
<line>unitime.accessCotrol.sectioning.activeLimitInMinutes .. Number of minutes of inactivity for the user to get the Inactive Warning (defaults to 15 minutes, set to zero to disable).</line>
</line>
<line>Parameters for Course Requests:
<line>unitime.accessCotrol.requests.maxActiveUsers .. Maximal number of users using the page at the same time (not set or zero for disabled).</line>
<line>unitime.accessCotrol.requests.activeLimitInMinutes .. Number of minutes of inactivity for the user to get the Inactive Warning (defaults to 15 minutes, set to zero to disable).</line>
</line>
<line>When the Inactive Warning shows, the user has a minute to dismiss the warning before the page is exited automatically.</line>
</description>
</item>
<item>
<name>Course Timetabling: Solution Commit</name>
<description>
<line>Solution commit made a little faster by loading the event date mappings only once.</line>
</description>
</item>
<item>
<name>Universal Reservation Override: Student Filter</name>
<description>
<line>Added a universal reservation override type that allows to reserve space for students using a student filter.</line>
<line>Student filter is a boolean expression that may contain the following attributes:
<line>area, classification, campus, major, minor, concentration, degree, program, group, accommodation, student, advisor, status</line>
<line>primary-area, primary-classification, primary-major, primary-concentration, primary-degree, primary-program, primary-campus</line>
</line>
<line>For example, the following filter will match all programs that ends with -OL or -HY:
<line>primary-program:%-OL or primary-program:%-HY</line>
</line>
</description>
</item>
<item>
<name>Student Availability: Check Other Academic Sessions</name>
<description>
<line>Added an ability to check student schedules from other overlapping academic sessions.The classes of other academic sessions show up as unavailablies (blue color, not clickable).</line>
<line>They are also used as unavailabilities: the solver would not assign a class in the current academic session to a time that conflicts with a class of some other academic session that the student has.</line>
<line>Unless the class is of scheduling subpart that allows for overlaps, in which case the overlapping time is minimized instead.</line>
<line>This feature is not enabled by default, to enable it set the following properties:
<line>Batch student scheduling: set the solver parameterĀ Load.IncludeUnavailabilitiesFromOtherSessions to true.</line>
<line>Online student scheduling: there are two options,
<line>the unavailableĀ times are either loaded from the database (when General.CheckUnavailabilitiesFromOtherSessionsUsingDatabase is true),</line>
<line>or from the other online student scheduling solver servers (when General.CheckUnavailabilitiesFromOtherSessions is true).</line>
</line>
</line>
</description>
</item>
</category>
<category>
<title>Event Management</title>
<item>
<name>Rooms: Event Email</name>
<description>
<line>Added event emails on rooms, non-university locations, and event statuses.</line>
<line>When sending an event confirmation email, automatically CC all rooms of changed meetings.</line>
<line>Event Statuses page can now edit a default event email for a department and a room type pairs.</line>
<line>Event Statusess and Add/Edit Room pages can now edit event emails of an individual room.</line>
</description>
</item>
</category> <category>
<title>Administration</title>
<item>
<name>Data Exchange: Academic Session Export</name>
<description>
<line>Fixed the occasional "Unable to export: No row with the given identifier exists" error on records that do exists.</line>
</description>
</item>
</category>
</release>
<release>
<version>4.8.98</version>
<release-date>Fri, 5 Jan 2024</release-date>
<category>
<title>Course Timetabling</title>
<item>
<name>Instructional Offering Detail: Instructor Requirements</name>
<description>
<line>Ensure that only requirements (instructor surveys) from the correct academic session are listed.</line>
<line>Include instructor surveys for assigned instructors that did not fill in course requirements for the course.</line>
</description>
</item>
<item>
<name>Classes, Class Assignments: Manager Filter</name>
<description>
<line>Added an ability to select multiple managers.</line>
</description>
</item>
<item>
<name>Timetable: Room Filter</name>
<description>
<line>Added an option to include the Room Filter (from the Rooms page) in the Filter section.</line>
<line>To be enabled by setting unitime.timeGrid.roomFilter to true (defaults to false).</line>
<line>When room or class filters are used, do not show instructors, curricula, etc. that have no matching classes.</line>
</description>
</item>
<item>
<name>Instructor Survey: Copy Course Requirements</name>
<description>
<line>Corrected copy of courses from a different academic session (the query filling in the remaining courses that the instructor has currently assigned was wrong).</line>
</description>
</item>
<item>
<name>Timetable Grid: Curriculum</name>
<description>
<line>When showing a saved/committed solution, corrected matching of a curriculum reservation when the displayed curriculum has no major.</line>
</description>
</item>
<item>
<name>Class Weights: Number of Weeks Class Weights</name>
<description>
<line>Added "Nbr Weeks Class Weights" option for the Class Weights solver parameter, weighting classes by the number of weeks they are using.
<line>Classes using the default date pattern have a weight of 1.0, a class meeting only every other week would be weighted 0.5.</line>
</line>
</description>
</item>
</category>
<category>
<title>Event Management</title>
<item>
<name>Events Timetable: Curriculum</name>
<description>
<line>Corrected matching of a curriculum reservation when the displayed curriculum has no major.</line>
</description>
</item>
</category>
<category>
<title>Online Student Scheduling</title>
<item>
<name>Instructor Schedule Changes</name>
<description>
<line>Corrected change detection when assignment changes are disabled (and there is a Lec-Lec combination with the same external id).</line>
</description>
</item>
</category>
<category>
<title>Administration</title>
<item>
<name>Timetabling Managers: Update Other Academic Sessions</name>
<description>
<line>Added an ability to update departments and solver groups in the academic sessions with the same academic initiative.</line>
<line>Academic sessions in the finished status are not included.</line>
<line>By default, the current and all future sessions (with the same initiative) are selected when a new manager is being added.</line>
<line>For existing managers, the academic sessions with the same departments and solver groups are selected by default.</line>
</description>
</item>
<item>
<name>Test HQL, Reports: Improved Error Handling</name>
<description>
<line>When the provided HQL is incorrect, display a more meaningful error message.</line>
</description>
</item>
<item>
<name>Technology Upgrade</name>
<description>
<line>Hibernate upgraded to version 6.4.1 (from 6.2.14).
<line>Please note that in HQL, = null or != null no longer works (use is null or is not null instead).</line>
</line>
</description>
</item>
</category>
</release>
<release>
<version>4.8.92</version>
<release-date>Thu, 14 Dec 2023</release-date>
<category>
<title>Course Timetabling</title>
<item>
<name>Instructor Survey</name>
<description>
<line>Added an ability for departmental schedule managers to unsubmit the survey directly from the Instructor Survey page/dialog (meaning save and unsubmit).</line>
</description>
</item>
<item>
<name>Edit Instructor</name>
<description>
<line>It is now possible to reset the instructor's position.</line>
</description>
</item>
</category>
<category>
<title>Batch Student Scheduling</title>
<item>
<name>Solver Reports</name>
<description>
<line>Added Student Priority and Request Priority columns on various reports.</line>
<line>Added Not-Assigned LC Course Requests and Not-Assigned Critical Course Requests reports.</line>
<line>Added Critical Time Conflicts, Critical Availability Conflicts, and Critical Time & Availability Conflicts reports.
<line>Only listing course requests that have Important, Vital, Critical, or LC priority.</line>
<line>For time conflicts, only courses with the same or higher priority are considered.</line>
</line>
</description>
</item>
</category>
<category>
<title>Online Student Scheduling</title>
<item>
<name>Email Notification Types</name>
<description>
<line>Added an ability to define which email notifications will be set based on the student status.</line>
<line>The following options are available:
<line>Student Request Change (student made a change using the Student Course Requests page)</line>
<line>Student Enrollment Change (student made an enrollment change using the Student Scheduling Assistant page)</line>
<line>Admin Request Change (administrator or advisor made a change using the Student Course Requests page)</line>
<line>Admin Enrollment Change (administrator or advisor made an enrollment change using the Student Scheduling Assistant page)</line>
<line>Enrollment Approval (enrollment requiring a consent has been approved)</line>
<line>Course Schedule Change (time or room of one of the classes has changed due to re-scheduling)</line>
<line>Course Enrollment Change (an enrollment change was done by wait-listing or re-scheduling)</line>
<line>Course Failed Enrollment Change (UniTime failed to make an enrollment change during wait-listing or re-scheduling)</line>
<line>External Enrollment Change (there has been an enrollment change done externally, outside of UniTime)</line>
</line>
</description>
</item>
<item>
<name>Instructor Schedule Changes</name>
<description>
<line>An email notification can be automatically sent to the instructor when
<line>the instructor assignment is changed (instructor is added to/removed from a class),</line>
<line>the class that the instructor has is moved in time and/or room, or</line>
<line>the class that the instructor has assigned is canceled or reopened.</line>
<line>Optionally, an email can be sent when the percent share, check conflicts, or responsibility is changed.</line>
</line>
<line>Configuration:
<line>Enable instructor notifications be setting unitime.notifications.instructorChanges.enabled=true (defaults to false).</line>
<line>Include the list of all currently assigned classes that the instructor has in the email notification by setting unitime.notifications.instructorChanges.includeSchedule (defaults to true).</line>
<line>Check/display the instructor's percent share, responsibility, and check for conflict changes by setting unitime.notifications.instructorChanges.checkShare (defaults to false).</line>
</line>
<line>Note: Instructor schedule changes are only available when the online student scheduling server is running, as the offering-reload action (Unlock button) triggers and tracks the changes.</line>
</description>
</item>
<item>
<name>Email Notifications Begin/End Dates</name>
<description>
<line>Added Notification Begin/End Date on the academic session.</line>
<line>One or both dates can be null (not set), in which case there is no begin and/or end date defined.</line>
<line>Other settings still apply, i.e., email notifications must be enabled for students and/or instructors, and student status must allow for the notifications.</line>
<line>It is possible to enable/disable notifications date checking for students and/or instructors.
<line>For instructors, by setting unitime.notifications.instructorChanges.checkNotificationDates (defaults to true).</line>
<line>For students, by setting unitime.enrollment.email.checkNotificationDates (defaults to true).
<line>Or only particular actions can check for dates by setting unitime.enrollment.email.<operation>.checkNotificationDates parameter (not set by default).</line>
</line>
</line>
</description>
</item>
</category>
<category>
<title>Other</title>
<item>
<name>Name Formats</name>
<description>
<line>Added the following name formats, adding an external id after the last name or at the end of the name:
<line>last-ext-first-middle</line>
<line>last-ext-first-middle-title</line>
<line>last-first-middle-ext</line>
<line>first-middle-last-ext</line>
<line>last-first-middle-title-ext</line>
<line>title-first-middle-last-ext</line>
<line>title-initial-last-ext</line>
<line>title-last-initial-ext</line>
</line>
<line>These can be added on the Administration > Defaults > User Settings, name property (and then selected on Preferences > Settings).</line>
</description>
</item>
<item>
<name>Default Solver Configuration</name>
<description>
<line>Added ability to change the default solver configuration by changing the unitime.solverConfig.defaultXxx application property.</line>
</description>
</item>
<item>
<name>Authentication: Active Directory</name>
<description>
<line>Added a Spring Security configuration compatible with Active Directory (unitime.spring.context.security=securityContextLDAP-AD.xml).</line>
<line>Using LDAP server authentication, user search instead of user DN matching, and using user name as the user's external id.</line>
</description>
</item>
</category>
<category>
<title>Bug Fixes</title>
<item>
<name>Online Scheduling Dashboards: Filter</name>
<description>
<line>Fixed the query when filtering by course and instructional method at the same time.</line>
<line>Corrected the ability to use not assignment:XX in the filter on the Enrollments tab, e.g.: not assignment:Vital</line>
</description>
</item>
<item>
<name>Student Scheduling Dashboards: Enrollments</name>
<description>
<line>When listing individual enrollments on the Courses tab:
<line>Request priority column did not show for Vital and LC courses.</line>
<line>Adjusted display of request Priority column (include text, not just an icon).</line>
<line>Improved sorting by Priority, Alternative, and (request) Priority.</line>
</line>
</description>
</item>
<item>
<name>Course Timetabling Solver: Export CSV</name>
<description>
<line>Corrected Export Solution when the class names include external ids/class suffixes (i.e., unitime.solver.showClassSuffixes is true).</line>
</description>
</item>
<item>
<name>Multiple Class Setup: Delete Classes</name>
<description>
<line>When deleting an assignment, remove all related constraint infos to avoid Hibernate cache issues when an orphaned constraint info is automatically deleted.</line>
<line>This fixes a No row with the given identifier exists: ConstraintInfo issues.</line>
</description>
</item>
</category>
</release>
<release>
<version>4.8.67</version>
<release-date>Fri, 6 Oct 2023</release-date>
<category>
<title>Technology Upgrade</title>
<item>
<name>Hibernate 6.2 / JGroups 5.2</name>
<description>
<line>UniTime updated to use the latest versions of Hibernate 6.2 and JGroups 5.2.</line>
<line>Infinispan 14 is now used for second level cache and cache replication/invalidation when there are multiple web servers.</line>
<line>This, however, requires UniTime to use Java 11 or later (Java 8 is no longer supported).</line>
<line>Some HQL reports may need to be updated due to the Hibernate upgrade, e.g.,
<line>table = id no longer works (e.g., Session = %SESSION% must be changed to Session.uniqueId = %SESSION%)</line>
<line>x is true needs to be changed to x = true</line>
<line>function BIT_AND needs to be changed to BITAND</line>
<line>InstructionalOffering.coordinators needs to be changed to InstructionalOffering.offeringCoordinators</line>
<line>Assignment.classId needs to be changed to Assignment.clazz.uniqueId</line>
<line>CourseOffering.isControl = 1 needs to be changed to CourseOffering.isControl = true</line>
<line>mod(x, n) may need to be changed to mod(cast(x as int), n)</line>
<line>sysdate - :days (where :days is an integer) may need to be changed to sysdate - numtodsinterval(:days, 'day')</line>
</line>
<line>Some Scripts may need to be updated due to the Hibernate upgrade, e.g,
<line>Query.setLong, setString, setDate, etc., needs to be changed to setParameter</line>
<line>QueueIn/QueueOut.setXml/getXML now takes a string (use setDocument/getDocument for XML access)</line>
</line>
</description>
</item>
</category> <category>
<title>Course Timetabling</title>
<item>
<name>Instructor Survey</name>
<description>
<line>Added a new page (Instructor Survey) that can be used by instructors to fill in their preferences and course requirements.</line>
<line>To be enabled by the Instructor Survey toggle on the academic session status page (Status Types page).</line>
<line>See https://help48.unitime.org/instructor-survey for more details.</line>
</description>
</item>
<item>
<name>Instructional Offering Cross Lists</name>
<description>
<line>Fix the instructors and offering coordinators when the controlling department is changed.
<line>This means that each instructor/coordinator gets replaced with an instructor/coordinator from the controlling department with the matching external id.</line>
<line>An instructor/coordinator assignment gets deleted otherwise (the instructor has no external id or no matching instructor in the new controlling department).</line>
</line>
</description>
</item>
<item>
<name>Instructional Offering Detail: Make NOT Offered</name>
<description>
<line>Departmental schedule mangers cannot make a course not offered when it has a class they cannot edit (e.g., there is an externally managed class that is being timetabled).</line>
</description>
</item>
</category>
<category>
<title>Online Student Scheduling</title>
<item>
<name>Online Student Scheduling Dashboard: Advisor Recommendation</name>
<description>
<line>In the table showing the advisor recommendations for a student, added the following two columns:
<line>Advised: date and time when the line was added or modified last</line>
<line>Advisor: person who advised the student (who added/modified the line last)</line>
</line>
</description>
</item>
<item>
<name>Course Finder, Online Scheduling Dashboard</name>
<description>
<line>When showing data direcly from the database (online scheduling server is not running)
<line>Correct date pattern formatting (using unitime.pattern.format.useDates property)</line>
<line>Include date pattern and required room for arrange hours classes</line>
<line>This applies to
<line>List of classes on the Course Finder dialog</line>
<line>Enrollments of a student on the online dashboard (Student dialog)</line>
<line>Classes listed on the Enrollments tab</line>
</line>
</line>
</description>
</item>
<item>
<name>Course Finder: Filter</name>
<description>
<line>Course Finder dialog on the Scheduling Assistant, Course Requests, and Advisor Course Recommendations pages improved.</line>
<line>Added Filter section, which allows for filtering courses by:
<line>Class start/end date (given course must have an enrollment that does not start before the given From date, or lasts past the To date)</line>
<line>Min/max credit</line>
<line>Instructor name (given course must have a class with matching instructor name)</line>
</line>
<line>Notes:
<line>Classes that do not display instructors are not considered by the instructor filter.</line>
<line>Classes that are not enabled for student scheduling are ignored (both instructor and class dates filters).</line>
<line>The filter is ONLY used for the list of courses, it does not guarantee that the student gets a class with the given instructor or within the given dates.</line>
<line>When used on the Student Course Requests page or Advisor Course Recommendations page at the time when the schedule of classes has not been published yet,
only allow for credit filter (no filtering by class dates or instructor names until the schedule of classes is published).</line>
</line>
</description>
</item>
<item>
<name>Student Scheduling Dashboards: Show/Hide Columns</name>
<description>
<line>Added ability to show/hide columns on the dashboard tables (Enrollments, Students, and Change Log).</line>
</description>
</item>
<item>
<name>Student Scheduling Rules</name>
<description>
<line>Added student scheduling rules that can be used to define which courses a particular group of students can request/enroll in.These rules can be defined on Administration > Other > Student Scheduling Rules page.</line>
<line>A group of students can be a student filter (same format as on the dashboards, e.g., group:SpecialStudents or primary-major:%-OL).</line>
<line>Each group of students can be restricted to particular course types (provided using a regular expression, e.g., !No Pre-Reg),
course names (provided using a regular expression, e.g, .*[0-9]OL for all courses with OL suffix),
or instructional methods (provided using a regular expression, e.g., PO|PH for course configurations with PO or PH instructional methods).
<line>A course name or instructional method regular expression can be negated by using an exclamation mark as a prefix (e.g., !.*[0-9]OL for all courses without an OL suffix).</line>
<line>If multiple expressions are provided (e.g., both course and instructional method), depending on the mode of the rule, all of the expressions must match or just one.</line>
</line>
<line>Each rule can be restricted by a regular expression matching academic initiative, a regular expression matching term, start and end year.</line>
<line>The rules are processed in the given order.</line>
<line>For each student, the first matching rule is used (there are no course or instructional method restrictions when no rule applies).</line>
<line>A rule can apply only to filter (ability to lookup a course), online scheduling, and/or batch scheduling.Advisors and/or admins may be allowed to ignore the rule (there could be special courses that only advisors and/or admins can put the students in).</line>
</description>
</item>
</category>
<category>
<title>Batch Student Scheduling</title>
<item>
<name>Solver Load: Replace Pending courses with Substitutes</name>
<description>
<line>Added ability to treat substitute course demands as primary when a primary course demand was skipped entirely due to one of the following reasons:
<line>pending override request (when Load.ReplacePendingWithSubstitute is true, defaults to false)</line>
<line>canceled override request (when Load.ReplaceCancelledWithSubstitute is true, defaults to false)</line>
<line>rejected override request (when Load.ReplaceRejectedWithSubstitute is true, defaults to false)</line>
<line>not offered course (when Load.ReplaceNotOfferedWithSubstitute is true, defaults to false)</line>
</line>
<line>More precisely, when a course demand is skipped (all its courses are skipped for some reason),
and at least one of the courses is skipped due to a reason that is enabled, then
<line>Take the top most substitute course demand and treat it as primary.</line>
<line>The position of the substitute course is kept (it shows at the bottom of the primary requests instead of at the top of the substitutes).</line>
</line>
<line>Course demands that do not allow for substitutes (Wait-List or No-Sub toggle is checked) are not replaced with a substitute.</line>
</description>
</item>
<item>
<name>Batch Student Solver Reports: Solution Statistics</name>
<description>
<line>Added Requested Courses - impossible row: percentage of requested courses that have no possible enrollment (e.g., due to having all classes disabled).</line>
</description>
</item>
</category>
<category>
<title>Bug Fixes</title>
<item>
<name>Academic Sessions</name>
<description>
<line>Academic Session column: use academic year (instead of session start year) when identifying an academic session.</line>
</description>
</item>
<item>
<name>Examination PDF Reports, Enrollment Audit PDF Reports</name>
<description>
<line>Use academic year (instead of session start year) when naming an output file.</line>
</description>
</item>
<item>
<name>Instructor Detail</name>
<description>
<line>Previous/Next buttons on the Instructor Detail page: follow the order in which the instructors were listed on the Instructors page.
<line>Instead of using the default order (instructor names).</line>
</line>
<line>Also applies to Previous/Next buttons on the Edit Instructor, Instructor Assignment Preferences, and Instructor Preferences pages.</line>
</description>
</item>
</category>
</release>
</release-history>