<?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.3 Release Notes</doc-title>
<release>
	<version>4.3.154</version>
	<release-date>Tue, 19 Mar 2019</release-date>
	<category>
		<title>Course Timetabling</title>
		<item>
			<name>Course Timetabling: Date Pattern Check</name>
			<description>
				<line>Only show the committed solution does not match current date pattern error when showing a committed solution.</line>
			</description>
		</item>
		<item>
			<name>Course Timetabling: Exact Time Over Midnight</name>
			<description>
				<line>During the solver load, report an error when there is an exact time that goes over midnight.</line>
			</description>
		</item>
		<item>
			<name>Course Timetabling: Saved Timetables</name>
			<description>
				<line>Speed up the Saved Timetables page by pre-fetching solver mode and configuration.</line>
			</description>
		</item>
	</category>
	<category>
		<title>Instructor Scheduling</title>
		<item>
			<name>Instructor Scheduling: Instructor Preferences</name>
			<description>
				<line>Corrected the same course preference satisfaction when being computed on an instructor.</line>
			</description>
		</item>
	</category>
	<category>
		<title>Student Scheduling</title>
		<item>
			<name>Scheduling Assistant: Wait-Lists</name>
			<description>
				<line>
					Added back the Wait-List toggles on the List of Classes table.
					These toggles disappeared with the ability to put preferences on classes and instructional methods.
				</line>
			</description>
		</item>
	</category>
	<category>
		<title>Event Management</title>
		<item>
			<name>Add Course Related Event: Required Attendance Default</name>
			<description>
				<line>Added ability to define a default value for the &quot;Students are required to attend this event.&quot; toggle when creating a course-related event.</line>
				<line>Application property unitime.events.courseEventDefaultStudentAttendance, defaults to false.</line>
			</description>
		</item>
	</category>
	<category>
		<title>Administration</title>
		<item>
			<name>Data Exchange: Course Offerings Export</name>
			<description>
				<line>Added ability to restrict subject areas in the course offering export (using tmtbl.export.subjects parameter that contains a comma separated list of subject area ids).</line>
				<line>Added a script named Export Course Offerings that allows to export course offerings for the select subject area(s).</line>
				<line>Class id: When a class has no external id and the class label is too long (over 40 chars), export just the itype and section number (e.g., Lec 1a).</line>
				<line>Added class.managingDept when a class is externally managed.</line>
			</description>
		</item>
		<item>
			<name>Data Exchange: Course Offerings Import</name>
			<description>
				<line>Improved handling of time and date patterns.
					<line>Follow the timePattern attribute when it is used and a matching time pattern exists.</line>
					<line>Set the time and date pattern on the committed assignment based on the selected time and date patterns on the class
						(avoid re-computation from class meetings when possible).
					</line>
				</line>
			</description>
		</item>
		<item>
			<name>Data Exchange: Curricula Export</name>
			<description>
				<line>Use US number format when exporting course shares.</line>
				<line>Export multiple majors flag.</line>
			</description>
		</item>
		<item>
			<name>Data Exchange: Academic Session Import</name>
			<description>
				<line>Corrected import of automated tasks: do not create a script if it already exists, do not limit script length to 255 chars.</line>
			</description>
		</item>
	</category>
</release>
<release>
	<version>4.3.142</version>
	<release-date>October 17, 2018</release-date>
	<category>
		<title>Course Timetabling</title>
		<item>
			<name>Timetable Grid: Week Selection</name>
			<description>
				<line>Fixed a case when there are two overlapping classes assigned to a room or to an instructor
					(only one class was displayed if there was a full overlap or the classes were displayed one after the other in case of a partial overlap).</line>
			</description>
		</item>
		<item>
			<name>Date Pattern: Changes after Solution Commit</name>
			<description>
				<line>In order to make it more obvious to the user when the assigned Date Pattern for a class has
				 been changed after a solution has been committed, the following changes have been made:
				<line>Updated the List of Classes on the Instructional Offering Detail Page and Scheduling Subpart
				 Detail Page to provide a warning icon, mouseover message and different highlighting to indicate
				 the date pattern assigned to the class does not match the date pattern used in the committed
				 timetable for the class.  If a class has both a date pattern changed warning and a meeting
				 conflict warning then only one warning icon is displayed.</line>
				 <line>Updated the Class Detail page to show an error message at the top indicating the date
				 pattern assigned to the class does not match the date pattern used in the committed timetable
				 for the class.</line>
				 </line>
			</description>
		</item>
		<item>
			<name>Timetable Grid: Groups</name>
			<description>
				<line>Show group / student enrollment info on classes that have no rooms assigned.</line>
			</description>
		</item>
	</category>
	<category>
		<title>Student Scheduling</title>
		<item>
			<name>Batch Solver Load: Linked Classes</name>
			<description>
				<line>Load distribution constraints only after student course requests are loaded.</line>
				<line>This fixes an issue of Linked Classes constraints not being properly created.</line>
			</description>
		</item>
		<item>
			<name>Online Student Scheduling Dashboard: Permissions</name>
			<description>
				<line>Scheduling advisors and administrators should be able to see all courses of a student regardless of whether they have the Department Independent permission or not.</line>
			</description>
		</item>
		<item>
			<name>Hide Auxiliary Instructors</name>
			<description>
				<line>Do not show instructors that have a teaching responsibility with the Auxiliary flag set.</line>
			</description>
		</item>
	</category>
	<category>
		<title>Instructor Assignment</title>
		<item>
			<name>Classes: Need Instructor Assignment</name>
			<description>
				<line>Corrected the "Show only classes that need instructor assignment" filter (fixes the could not resolve property: teachingLoad error).</line>
			</description>
		</item>
	</category>
	<category>
		<title>Event Management</title>
		<item>
			<name>Rooms: CSV/XML/XLS Export</name>
			<description>
				<line>Corrected handling of the filter flag attributes (flag:plain is added to the filter, not replacing the existing flag(s)).</line>
				<line>This fixes the issue with event rooms not being properly exported (flag:Event).</line>
			</description>
		</item>
		<item>
			<name>Event Detail: Enrollments</name>
			<description>
				<line>Added Export PDF to the Enrollments table.</line>
				<line>Export CSV/PDF: added student's email address.</line>
			</description>
		</item>
	</category>
	<category>
		<title>Other</title>
		<item>
			<name>HQL Reports: Export CSV</name>
			<description>
				<line>Fixed the ability to export an HQL report to CSV when the query contains a single-choice parameter (like SUBJECT or DEPARTMENT).</line>
			</description>
		</item>
		<item>
			<name>Data Exchange: Staff Import</name>
			<description>
					<line>Report an error when no department is provided and there are two or more staff members with the matching external id.</line>
			</description>
		</item>
	</category>
</release>
<release>
	<version>4.3.129</version>
	<release-date>July 10, 2018</release-date>
	<category>
		<title>Course Timetabling</title>
		<item>
			<name>GWT</name>
			<description>
				<line>Remaining pages rewritten using the Google Web Toolkit.</line>
				<line>These include Suggestions, Timetables, Solver Reports, Conflict Statistics, Changes, and History.</line>
			</description>
		</item>
		<item>
			<name>Time Patterns: First Day Of Week</name>
			<description>
				<line>Added ability to change the first day of week for time patterns.</line>
				<line>Using unitime.timePattern.firstDayOfWeek application property (0 is Monday, 1 is Tuesday, etc.).</line>
			</description>
		</item>
		<item>
			<name>Timetable Grid</name>
			<description>
				<line>Added ability to show course titles on the timetable grid (there is a new toggle in the Filter named Show Course Titles).</line>
				<line>Added ability to split class label into two lines (enable by setting the application property unitime.timeGrid.classNameTwoLines to true, defaults to false).</line>
				<line>Export XLS: added ability to export the timetable grid to Excel Spreadsheet (XLS format).</line>
				<line>Export PDF: show one table per each day of week when in the "In Row [horizontal]" mode (instead showing one table very wide table with all the days of the week inside).</line>
			</description>
		</item>
		<item>
			<name>Instructional Offering Cross Lists: Keep Course Requests</name>
			<description>
				<line>Added an ablitity to keep course requests on the course that is added to or dropped from a cross-list.</line>
				<line>Enable this feature by setting unitime.crossList.keepCourseRequests to true (default is false).</line>
			</description>
		</item>
		<item>
			<name>Class Assignment: Solution Conflicts</name>
			<description>
				<line>Added ability to use solution conflicts instead of the real student class enrollments when there are no real enrollments yet.</line>
			</description>
		</item>
	</category>
	<category>
		<title>Online Student Scheduling</title>
		<item>
			<name>Special Registration</name>
			<description>
				<line>The following work has been done to support special registration at Purdue.</line>
				<line>Enable special registration in Scheduling Assistant by implementing the custom special registration provider class.</line>
				<line>In the special registration mode, a student may be allowed to pick a section that is not available, conflicting with some other section that the student has, or reserved for some other students.</line>
				<line>Added ability to show Submit Special Registration when Submit Schedule button is not available.</line>
				<line>Added ability to select the current academic session using URL parameters term and campus
					(these may include external term and campus names, if unitime.custom.ExternalTermProvider is configured).</line>
			</description>
		</item>
		<item>
			<name>Course Requests Validation</name>
			<description>
				<line>The following work has been done to support course requests at Purdue.</line>
				<line>Added ability to validate course requests and to provide errors and warnings back to the student.</line>
				<line>These include student's eligibility to register, credit checking, providing alternatives, time conflicts of single section courses, etc.</line>
			</description>
		</item>
		<item>
			<name>Scheduling Dashboard</name>
			<description>
				<line>Include distance conflicts and time overlaps in the dashboard.</line>
				<line>Enrollments table: show only primary requests in the Not-Enrolled column; show alternative requests in the (newly added) Alternative column.</line>
				<line>Students table: show both Enrollment Credit and Request Credit columns.</line>
				<line>Students table: added time overlaps, distance conflicts, and satisfaction of section and instructional method preferences.</line>
				<line>Filter: added ability to filter by the number of credits and time overlaps.</line>
				<line>Filter: added My Students mode showing only students associated with the current advisor role.</line>
				<line>When a student is clicked, also include course requests and time grid in the view (Classes for student dialog).
					<line>There are now three tabs: Course Requests, List of Classes, and Time Grid.</line>
				</line>
				<line>Added ability for advisors to assign students to student groups and student statuses.</line>
				<line>Added More button combining the operations of the individual columns of the table displayed.</line>
				<line>Enrollment Credit: added ability to show credit information related to particular Instructional Mode.
					<line>For instance, when a student has 18 credit hours, 6 of which are online, the column will show 18 (online: 6)</line>
					<line>Added ability to filter students by IM credit or by credit hours that are not associated with any instructional method.</line>
				</line>
				<line>Show more details about the selected status when using the Set student note... dialog.</line>
				<line>Change Log: show course requests in a table, including selected sections and instructional method.</line>
				<line>Added ability to see the change log even when the online scheduling server is not running.</line>
			</description>
		</item>
		<item>
			<name>Student Advisors</name>
			<description>
				<line>Created student advisors table (named advisor) and a many to many relation between advisors and students.</line>
				<line>Added XML import and export.</line>
				<line>Added Administration &gt; Academic Sessions &gt; Student Advisors page.</line>
				<line>Authentication can use the advisor table (to associate the authenticated user with an advisor role).</line>
				<line>Added a few new permissions related to
					<line>whether it is allowed to edit his/her students (Student Scheduling Advisor Can Modify My Students) or all students (Student Scheduling Advisor Can Modify All Students)</line>
					<line>whether it is allowed to change status (Student Scheduling Change Student Status) or student group association (Student Scheduling Change Student Group)</line>
				</line>
			</description>
		</item>
		<item>
			<name>Student Course Requests</name>
			<description>
				<line>Show total credit range on the Student Course Requests page, assuming that the student will be able to get a complete schedule.</line>
				<line>Degree Plan: when updating course requests with a degree plan, do not remove course requests that cannot be deleted (student is already enrolled in the course).
					<line>Also, include alternatives from choice groups.</line>
				</line>
				<line>Automatically open 1st alternative when a course is entered in the Course Requests table.</line>
				<line>When course requests are successfully submitted, a confirmation dialog is displayed. If agreed, a print dialog is opened with a printer-friendly version of the course requests table.</line>
				<line>Added course request and credit status icons (when supported by the custom course request validation).</line>
				<line>Added ability to open the Course Finder (in a read-only mode) for course requests that cannot be changed.</line>
				<line>Added ability to hide Alternate Course Requests table (unless the student has some alternatives already, set StudentSectioningConstants.numberOfAlternatives to zero).</line>
			</description>
		</item>
		<item>
			<name>Student Scheduling Status</name>
			<description>
				<line>Registration statuses made more granular:
					<line>Assistant: formerly Access, only applies to the Scheduling Assistant</line>
					<line>Student Enroll: renamed, formerly Enrollment</line>
					<line>Advisor Enroll: formerly Advisor, only applies to the Scheduling Assistant</line>
					<line>Admin Enroll: formerly Advisor, only applies to the Scheduling Assistant</line>
					<line>Registration: Course Requests page is available (instead of using Access)</line>
					<line>Student Register: renamed, formerly Registration (student can save requests)</line>
					<line>Advisor Register: new status, advisor can save requests</line>
					<line>Admin Register: new status, admin can save requests</line>
				</line>
				<line>Added a flag on whether the advisor can set this status.</line>
				<line>Added effective dates and times, and a fall-back status (when outside of the effective period).</line>
			</description>
		</item>
		<item>
			<name>Disabled Sections</name>
			<description>
				<line>Added ability to allow some students to enroll into sections that are marked as not enabled for student scheduling.</line>
				<line>Student must have a student group reservation for a student group of a type that allows for disabled sections (with a reservation).</line>
				<line>Student must be of a student group that is of a type that allows for disabled sections (whithout a reservation).</line>
			</description>
		</item>
		<item>
			<name>Student Scheduling Entry Page</name>
			<description>
				<line>Added an entry page UniTime/studentScheduling.do</line>
				<line>Admins and advisors are redirected to the Online Student Scheduling Dashboard (advisors with students will have mode:"My Students" selected).</line>
				<line>Students are redirected (first match in this order):
					<line>1. Scheduling Assistant page when enrollment is enabled</line>
					<line>2. Course Requests page when registration is enabled</line>
					<line>3. Scheduling Assistant page when access is enabled</line>
					<line>4. Course Requests page when registration is enabled</line>
				</line>
				<line>When there is no mach, the main page is opened.</line>
				<line>Term, campus, and session parameters can be used to select the academic session.</line>
				<line>Other parameters are passed on to the target page.</line>
			</description>
		</item>
	</category>
	<category>
		<title>Constraint Solver</title>
		<item>
			<name>Course Timetabling: Max Half-Days Constraint</name>
			<description>
				<line>The MaxHalfDays constraint limits the number of half-days of week during which the given set of classes are taught.</line>
				<line>It has one parameter: a maximal number of week half-days during which the given set of classes can be placed.</line>
				<line>A day is split by noon (which can be changed using General.HalfDaySlot parameter).</line>
				<line>A class starting before noon is considered a morning class (despite of its end), a class starting at noon or later is considered an afternoon class.</line>
				<line>For instance, a reference MaxHalfDays:4 translates to a maximum number of 4 half-days a week.</line>
			</description>
		</item>
		<item>
			<name>Course Timetabling: added MaxHoles distribution constraint</name>
			<description>
				<line>The MaxHoles constraint limits the number of free time (holes) for an instructor on a day (between the first and the last class on a day).</line>
				<line>It has one parameter: a maximal amount of free time that an instructor can have on a day in minutes.</line>
				<line>For example, reference _MaxHoles:120_ translates to a maximum number of two hours of total free time between the first and the last class on a day:
					<line>if required, having more free time is prohibited</line>
					<line>if preferred or strongly preferred, the excessive free time is penalized</line>
				</line>
			</description>
		</item>
		<item>
			<name>Course Timetabling: Student Conflicts</name>
			<description>
				<line>Added a naive, yet effective approach for minimizing holes in student schedule.
					<line>The new StudentMinimizeScheduleHoles criterion penalizes all cases where a student has two classes taught on the same day that are not back-to-back.</line>
					<line>The penalization is based on the time distance between the two classes, computed in hours.</line>
					<line>These penalties are weighted by Comparator.MinimizeStudentScheduleHolesWeight, which defaults to 1/20 of the Comparator.StudentConflictWeight.</line>
					<line>To enable this criterion, add org.cpsolver.coursett.criteria.additional.StudentMinimizeScheduleHoles to General.AdditionalCriteria.</line>
				</line>
				<line>Added a naive, yet effective approach for minimizing number of days in student schedule.
					<line>The new StudentMinimizeDaysOfWeek criterion penalizes all cases where a student has two classes taught on different days.</line>
					<line>These penalties are weighted by Comparator.MinimizeStudentScheduleDaysWeight, which defaults to 1/20 of the Comparator.StudentConflictWeight.</line>
					<line>To enable this criterion, add org.cpsolver.coursett.criteria.additional.StudentMinimizeDaysOfWeek to General.AdditionalCriteria.</line>
				</line>
				<line>As the StudentMinimizeScheduleHoles criterion tends to spread the student among as many days as possible, the second criterion StudentMinimizeDaysOfWeek can be used to counteract this effect, if desired.</line>
			</description>
		</item>
		<item>
			<name>Course Timetabling: Week Start/End</name>
			<description>
				<line>Added ability to define when a work week starts (General.FirstWorkDay) and when it ends (General.LastWorkDay).</line>
				<line>It is possible that General.LastWorkDay &lt; General.FirstWorkDay, e.g., General.FirstWorkDay = 6 (Sunday) and General.LastWorkDay = 3 (Thursday).</line>
				<line>Corrected behavior of various constraints for the case when week starts on Sunday (PRECEDENCE, BTB_DAY, NDB_GT_1, FOLLOWING_DAY, SPREAD, MIN_ROOM_USE, and a few other places).</line>
			</description>
		</item>
		<item>
			<name>Course Timetabling: Work-Day Student Conflicts</name>
			<description>
				<line>Added work-day student conflicts
					<line>There is a work-day conflict when the time between the start of the first class and the end of the last class on a day is too long (e.g., more than 8 hours).</line>
					<line>Solver parameter StudentConflict.WorkDayLimit defines the number of slots of a work-day (default is -1, work-day conflicts are disabled).</line>
				</line>
  			</description>
		</item>
		<item>
			<name>Course Timetabling: Automatic Instructor Constraints</name>
			<description>
				<line>Added ability to define distribution preferences that would be applied automatically to all instructors.
					<line>Using General.AutomaticInstructorConstraints solver parameter, containing a comma separated list of &lt;preference&gt; &lt;distribution&gt;.</line>
					<line>For example: General.AutomaticInstructorConstraints=Required At Most 5 Hrs, Required 6h Work-Day, Strongly Preferred 5h Work-Day</line>
				</line>
				<line>An automatic instructor distribution preference is only applied to instructors that do not have a preference of the same type already.
					<line>For instance, a Required At Most 5 Hrs will not be applied on an instructor that has a different At Most N Hrs preference already.</line>
				</line>
			</description>
		</item>
		<item>
			<name>Course Timetabling: Instructor Distribution Preferences</name>
			<description>
				<line>Added ability to include all classes of an instructor (not just those that are of the same department) in the instructor's distributions.
					<line>Set solver parameter General.ApplyInstructorDistributionsAcrossAllDepartments to true (defaults to false).</line>
				</line>
			</description>
		</item>
		<item>
			<name>Course Timetabling: Individual Reservations</name>
			<description>
				<line>Added checking for individual reservations (only useful when course requests are used as student course demand).</line>
			</description>
		</item>
		<item>
			<name>Examination Timetabling: Period Preferences</name>
			<description>
				<line>Added additional information about how well are the period preferences satisfied into the solution extended info
					(showing how many time a preferred, a strongly preferred, etc. period is selected for an exam).</line>
			</description>
		</item>
		<item>
			<name>Examination Timetabling: Room Split Penalty</name>
			<description>
				<line>Increased the limit on the maximal number of rooms that an exam can take to 30.</line>
			</description>
		</item>
		<item>
			<name>Examination Timetabling: Save XML</name>
			<description>
				<line>Corrected examination period penalty value.</line>
			</description>
		</item>
		<item>
			<name>Student Scheduling: Scheduling Assistant Weights</name>
			<description>
				<line>Corrected precision on the selected choices criterion as the result is a % of the selected classes.</line>
				<line>Put selected sections higher in the list.</line>
				<line>Minimize class penalties: divide penalty by the number of sections (counting average section penalty of the enrollment).
					<line>This is to avoid penalization of enrollments with more/fewer sections.</line>
				</line>
				<line>Prefer sections that are available (there is space in them).
					<line>This is especially useful when a student has an individual reservation that is not given for a particular section (student is allowed to pick any section).</line>
				</line>
			</description>
		</item>
		<item>
			<name>Student Scheduling: Student Conflict Constraint</name>
			<description>
				<line>Checking whether a student already has a complete schedule corrected.
					<line>If the request is over the limit (student already has a complete schedule), do not return a free time or a wait-listed course request as a conflict.</line>
				</line>
				<line>Ensure that completeness of a student schedule is properly checked during the assignment.
					<line>Using Student.canAssign(request) does not work as it returns true when the request is already assigned and the conflicts are checked when Constraint.assigned(value) is called.</line>
					<line>This was causing troubles for the IFS phase.</line>
				</line>
			</description>
		</item>
		<item>
			<name>Student Scheduling: Short Distance Conflicts</name>
			<description>
				<line>Added ability to consider Short Distances student accommodation.</line>
				<line>When a student needs short distances, there is a distance conflict between two back-to-back classes if the distance in minutes is greater than zero.</line>
				<line>The reference of the accommodation for students that need short distances is defined by solver property Distances.ShortDistanceAccommodationReference (defaults to SD).</line>
			</description>
		</item>
		<item>
			<name>Student Scheduling: Disabled Sections</name>
			<description>
				<line>Added ability to mark certain sections as disabled.</line>
				<line>Such sections cannot be used, unless the student allows for disabled sections, or there is a (group) reservation that allows for disabled sections.</line>
			</description>
		</item>
     </category>
	<category>
		<title>Event Management</title>
		<item>
			<name>Events: Time Grid</name>
			<description>
				<line>Added ability to define first day of week, using unitime.events.gridStartDay application property (0 is Monday, 1 is Tuesday, etc.).</line>
			</description>
		</item>
		<item>
			<name>Room Availability: Include Events From Other Academic Sessions</name>
			<description>
				<line>Course/Examination Timetabling: Added ability to include events (of the same type) from other academic sessions.</line>
				<line>To enable this, set tmtbl.room.availability.includeOtherTerms to true on the Application Configuration page.</line>
				<line>Rooms of the overlapping academic sessions must have the same permanent id.
					<line>This can be achieved, e.g., by rolling forward the rooms from one academic session to the next.</line>
					<line>Or, the rooms must be created using the Add Room page (of the first academic session) using the Update Future Academic Sessions section (room is created in multiple academic sessions at once).</line>
				</line>
			</description>
		</item>
	</category>
	<category>
		<title>Automation</title>
		<item>
			<name>Queue Processor: Clustering</name>
			<description>
				<line>Added ability to display queue processes across the cluster.
					<line>Roll forward, data exchange, scripts, and PDF exam reports use queue processor at the moment.</line>
				</line>
				<line>A task is executed locally, but it shows on other nodes as well and the resultant file can be accessed from the other nodes too.</line>
			</description>
		</item>
		<item>
			<name>Scripts: Script API</name>
			<description>
				<line>Added script API (UniTime/api/script)</line>
				<line>To execute script, use
					<line>GET/POST api/script?term=&lt;TERM&gt;&amp;script=&lt;SCRIPT_NAME&gt;</line>
					<line>plus all the parameters of the script</line>
					<line>use &amp;queue=false to execute the script immediately (outside of the process queue)</line>
					<line>when there is an input file, use POST with the file as the payload</line>
					<line>For example:
						<line>GET http://localhost:8080/UniTime/api/script?term=Fal2010woebegon&amp;name=Test+Script&amp;dept=0100&amp;name=TEST&amp;subjects=ALG&amp;subjects=BIOL</line>
					</line>
					<line>The request returns the appropriate task (queue item) when queue=false is not used.</line>
					<line>When queue=false is used, the request waits till the script is finished and returns the output file (if there is any) or the log (in the text format if there is no output file).</line>
				</line>
				<line>To retrieve all tasks (queue items) from the process queue, use GET without additional parameters, e.g.,
					<line>GET http://localhost:8080/UniTime/api/script?term=Fal2010woebegon</line>
				</line>
				<line>To check particular task (queue item), use id=&lt;ITEM_ID&gt;</line>
				<line>To get text log of a particular task (queue item), use log=&lt;ITEM_ID&gt;</line>
				<line>To get output file of a particular task (queue item), use output=&lt;ITEM_ID&gt;</line>
				<line>To delete a particular task from the queue, use delete=&lt;ITEM_ID&gt;</line>
			</description>
		</item>
		<item>
			<name>Scripts: Parameter Defaults</name>
			<description>
				<line>Added ability to use subject area abbreviation, department code, building abbreviation or room names as defaults.</line>
				<line>Added ability to provide multiple defaults (separated by a comma) when the list allows for multiple selection.</line>
			</description>
		</item>
		<item>
			<name>Scripts: Parameter Types</name>
			<description>
				<line>Added ability to use the parameters that are available in HQL Reports (e.g., use type ACCOMODATION for student accommodation).</line>
				<line>Added slot format (using a time selector).</line>
				<line>Added timestamp format (using combination of a single date selector and a time selector).</line>
			</description>
		</item>
		<item>
			<name>Task Scheduler</name>
			<description>
				<line>Added ability to schedule periodic executions of scripts.</line>
				<line>Periodic tasks are academic session dependent, available under Administration &gt; Academic Sessions &gt; Task Scheduler.</line>
			</description>
		</item>
	</category>
	<category>
		<title>Administration</title>
		<item>
			<name>Add/Edit Timetable Manager</name>
			<description>
				<line>Maximal length of the External ID field corrected (40 characters).</line>
			</description>
		</item>
		<item>
			<name>Staff Import / Lookup</name>
			<description>
				<line>Include campus code (academic initiative) in the Staff table.</line>
				<line>Manage Instructor List: match campus code when it is set.</line>
				<line>Add/Edit Instructor Lookup: include campus code in the Department column when the campus does not match the current session.</line>
			</description>
		</item>
		<item>
			<name>Student Group Types</name>
			<description>
				<line>Added ability to associate student groups with a type.</line>
				<line>Additional properties can be set on a group type.</line>
			</description>
		</item>
		<item>
			<name>Data Exchange: Course Offering Import</name>
			<description>
				<line>When there is action=&quot;create-if-not-exists&quot; on the offering element:
					<line>If the course already exists, do not update its offered/not-offered status, configurations, and exams (that is, only update courses and their title, schedule book note and credit information).</line>
					<line>If the course does not exist, create the course with all its content.</line>
				</line>
			</description>
		</item>
		<item>
			<name>Data Exchange: ZIP / GZIP</name>
			<description>
				<line>Added ability to import ZIP or GZIP files.
					<line>Use .xml.gz or .zxml extension for a gzipped XML file.</line>
					<line>Use .dat.gz or .zdat extension for a gzipped DAT file.</line>
					<line>Use .zip extension for a zipped, the file may contain multiple files.</line>
				</line>
			</description>
		</item>
		<item>
			<name>HQL Reports</name>
			<description>
				<line>Added ability to provide additional parameters, just like in the scripts.</line>
				<line>Each parameter has a name, a label, a type, and a default value.</line>
				<line>These parameters could be strings, numbers, dates, enums, etc.</line>
				<line>Use :name to inject the parameter value in the HQL (where name is the name of the parameter).</line>
				<line>Added ability to filter by
					<line>student groups (STUDENT_GROUP or STUDENT_GROUPS)</line>
					<line>student accommodations (ACCOMODATION or ACCOMODATIONS)</line>
					<line>academic areas (ACADEMIC_AREA or ACADEMIC_AREAS)</line>
					<line>majors (POS_MAJOR or POS_MAJORS)</line>
				</line>
				<line>Aadded %SESSIONS% parameter listing unique ids of available academic sessions.</line>
			</description>
		</item>
		<item>
			<name>Test HQL</name>
			<description>
				<line>Added ability to export table in CSV.</line>
				<line>Improved table formatting: show return aliases (column names) when set, added pagination (when more lines than tmtbl.test_hql.max_line is returned).</line>
				<line>Replace parameters like %SESSION% with the user's data.</line>
				<line>Improved navigation: table is clickable when the first column has a unique id and is named _Class, __Offering, __Subpart, __Room, __Instructor, __Exam, or __Event.</line>
			</description>
		</item>
		<item>
			<name>UniTime API: Instructor Schedule</name>
			<description>
				<line>Added ability to export instructor preferences (when pref=1 in the request URL).</line>
				<line>Added ability to export instructors with the matching external id across all academic session (when no session is selected, or all=1 in the request URL).</line>
			</description>
		</item>
		<item>
			<name>Data Exchange: Course Requests XML</name>
			<description>
				<line>Import: added ability to only add / drop certain requests of a student.
					<line>Use addCourseRequests and dropCourseRequests elements instead of updateCourseRequests.</line>
					<line>These elements have the same format as updateCourseRequests.</line>
				</line>
				<line>Added export/import of section and instructional method preferences.</line>
			</description>
		</item>
	</category>
	<category>
		<title>Other</title>
		<item>
			<name>Technology Update</name>
			<description>
				<line>GWT updated to version 2.8.2 (from 2.7.0)</line>
			</description>
		</item>
		<item>
			<name>Query Encoder: Illegal Block Size Fix</name>
			<description>
				<line>Use Base64 by default.</line>
				<line>Fall back to base 36 big integers, but pad with sign bytes (0xff) when IllegalBlockSizeException is seen.
					<line>Using BigInteger to map bytes to strings is not ideal because of the sign bytes may get ignored, causing IllegalBlockSizeException during decoding.</line>
				</line>
			</description>
		</item>
		<item>
			<name>Various iCalendar Exports: Custom VTimeZone Generator</name>
			<description>
				<line>Created a variant of the TzUrlDotOrgGenerator which is more configurable using the new unitime.calendar.timezone properties.</line>
				<line>For all time zones: unitime.calendar.timezone=http://www.tzurl.org/zoneinfo/{id}.ics</line>
				<line>For a particular time zone: unitime.calendar.timezone.US/East-Indiana=http://www.tzurl.org/zoneinfo/America/Indiana/Indianapolis.ics</line>
			</description>
		</item>
	</category>
</release>
</release-history>
