UniTime
System to build and manage the university schedule of classes.
Banner
University Student Information System.
Banner Processes
Student class registration Publish class schedule Provide students’ class schedules Source of :
Course Catalog Registration requirements Student Master Data Student schedules Imports :
Class schedule
UniTime Processes:
Builds master class schedule using timetabling techniques
Manages master class schedule
Schedules exams using optimization techniques Schedules other events to rooms
Provides room schedules , room availability and room scheduling services to university community ;
Provides exam schedules to university community
Source of : Class schedule Timetabling requirements Evening & Final Exams Events scheduled in academic rooms Buildings /Room info
Room availability Imports :
Student Master Data Student Schedules Staff Info
Course Catalog (manually )
Schedule of Classes Course Catalog Student Master Data
Student Schedules Staff Info
Banner / UniTime System Integration for Academic Scheduling
(As of 7/13/2009 ) Academic Room Scheduling get lab schedules TLT computer lab schedules University Community Room Schedulers Spring09 Banner Convert to UniTime Banner: Spring 10 Sections Construct Spring10 schedule in UniTime Batch Synchronization Process Update schedule in UniTime Spring10 ends
Real Time Interface: add/delete basic section data in Banner
INB: update Banner-only section data
Banner – UniTime Integration General Design
Banner Catalog
Copied to sections when section created
(szpcats ) Banner: Roll Spring09 to Spring10 Banner: Roll Spring10 to Spring11 UniTime Roll Spring10 to Spring11 Spring11 schedule construction, same as Spring10 Repeat this process for
Summer 10 and Fall10. These first 3 steps are one-time conversions. Spring10 registration opens
Technical Overview
Overview Page 1
UniTime
–Banner Integration Queue Processor Overview
Notices a Schedule Packet has appeared in
QueueOut
Queue Processor sends Schedule packet to
Banner
Banner: SZ_UNITIME Processes schedule packet
based directives in XML
Queue Processor creates Banner Message Responses from schedule _response packet Schedule_ response packet Poll QueueOut for unprocessed items sync packet is returned from no Sync packet requested via XML? Schedule_ sync packet User actions cause
changes to sections
Timetabling app creates QueueOUT with SchedulePacketXML for sections and crosslists
UniTime Timetabling Application
Batch process to generate schedule XML for all sections
Queue Schedule XML Response XML User reviews Banner
Messages Spring09 Banner Convert to UniTime Banner: Spring 10 Sections Construct Spring10 schedule in UniTime Batch Synchronization Process Update schedule in UniTime Spring10 ends
Real Time Interface: add/delete basic section data in Banner
INB: update Banner-only section data
Banner – UniTime Integration General Design
Banner Catalog
Copied to sections when section created
(szpcats ) Banner: Roll Spring09 to Spring10 Banner: Roll Spring10 to Spring11 UniTime Roll Spring10 to Spring11 Spring11 schedule construction, same as Spring10 Repeat this process for
Summer 10 and Fall10. These first 3 steps are one-time conversions.
Spring10 registration
UniTime is the system of record for classes scheduled for the West Lafayette campus
When classes change in UniTime, SchedulePackets are sent to Banner.
•
Create, updates, cancels or deletes sections
○
Creates, updates or deletes crosslists
○
Banner processes the SchedulePacket:
•
Banner sends a ScheduleResponsePacket to UniTime
•
UniTime records the Responses
•
Responses are available to the end use via the Banner Messages page.
•
CRNs
CRNs for UniTime-managed sections are generated in UniTime.
•
Defined in table SZBUTMT
○
A high range of CRNs are reserved for Banner-only use.
•
Crosslists
Crosslists IDs are generated for classes that are crosslisted in UniTime
•
Defined in table SZBUTMT
○
A high range of crosslists are reserved for Banner-only use to handle situations where are crosslistis
required in Banner only, usually to support crosslisting in Blackboard.
•
Basic Flow
Monday, July 13, 2009
4:34 PM
Banner Schedule Packet Processing:
Banner Package: SZ_UNITIME
PROCEDURE p_process_packet(in_packet IN CLOB,
out_response OUT CLOB)
Processes a schedule packet
Returns a schedule response packet
PROCEDURE p_process_packet(in_packet IN CLOB,
out_response OUT CLOB,
out_sync OUT CLOB)
Processes a schedule packet
Returns a schedule response packet
Returns a schedule packet that will attempt to bring Banner and UniTime in sync based on errors detected during
a full audit.
2 Basic procedures:
Supporting Tables:
SZBPTRM_PTRM_CODE
Part of term code
SZBPTRM_CAMP_CODE
Campus code this PTRM is used with
SZBPTRM_DEFAULT_FOR_CAMP US
Y indicates this PTRM is the default for the campus
SZBPTRM_SUBJ_CODE
Subject code; may contain wildcard %
SZBPTRM_CRSE_NUMB
Course number; may contain wildcard %
SZBPTRM_SCHD_CODE
Schedule type; may contain wildcard %
Special rule can be defined via campus, subject, course and schedule code
If these match, that's the part of term
This is useful for the TSW campuses.
□
Otherwise, the table maps PTRM to campus and indicates the default.
SZ_UNITIME.f_default_ptrm
○
SZBPTRM
•
-- find a PTRM that encompasses section
-- if multiple, use the one with the closest fit; then the one with the max ptrm
-- if none found, choose best-fitting ptrm that encompasses end date
-- if none found, choose best-fitting ptrm that encompasses start date
-- Choose default term for campus
-- choose 1
SZBUTML - UniTime Log
•
SZBUTMT - UniTime integration term-specific information
•
SZ_UNITIME
Wednesday, August 05, 2009
9:07 PM
contains packet-handling instructions
Packet Header
○
contains all the information that UniTime has about a section.
□
□
Update
Delete
Audit
Sections
○
Update
Delete
Audit
Crosslists
○
Schedule packet consists of
DTD:
ScheduleDTD
Schedule Packet SCHEDULE PACKET_ID TERM_CODE ORIGIN ACTION (FULLAUDIT|<null>) MODE (UPDATE|AUDIT) DATA_FORMAT CLASS_END_DATE SECTION ACTION (UPDATE|DELETE|AUDIT) EXTERNAL_ID SUBJ_CODE CRSE_NUMB ID CRN TITLE CAMP_CODE PTRM_CODE START_DATE END_DATE SCHD_CODE MAX_ENRL GRADABLE CREDIT_HRS BILL_HRS SESSION APPROVAL WEB_AVAIL PRINT_IND USERID LONG_TITLE TEXT_NARRATIVE LINK_IDENT LINK_CONN FUNDING_SOURCE MEETING MEETING_ID MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY SATURDAY SUNDAY BEGIN_TIME END_TIME START_DATE END_DATE BLDG_CODE ROOM_CODE ARRANGE_HOURS_WEEK SESSION OVERRIDE INSTRUCTOR ID PERCENT PERCENT_SESS PERCENT_RESPONSE PRIMARY OVERRIDE SESSION FIRST_NAME MIDDLE_NAME LAST_NAME CROSSLIST EXTERNAL_ID ACTION (UPDATE|DELETE|AUDIT) GROUP MAX_ENRL MEMBER CRNSchedule Response Packet SCHEDULE_RESPONSE
PACKET_ID
STATUS (SUCCESS | FAILED) START_TIMESTAMP END_TIMESTAMP
Unitime-Banner Schedule XML Interface Data Structure
MESSAGE ACTIVITY_DATE SEQNO TERM_CODE CRN SUBJ_CODE CRSE_NUMB SEQ_NUMB XLST_GROUP EXTERNAL_ID ACTION (UPDATE|DELETE|AUDIT) TYPE (SUCCESS|ERROR|WARNING) MESSAGE PACKET_ID
Schedule Packet
Monday, July 13, 2009
4:42 PM
Overview Page 5
Schedule Packet SCHEDULE PACKET_ID TERM_CODE ORIGIN ACTION (FULLAUDIT|<null>) MODE (UPDATE|AUDIT) DATA_FORMAT CLASS_END_DATE SECTION ACTION (UPDATE|DELETE|AUDIT) EXTERNAL_ID SUBJ_CODE CRSE_NUMB ID CRN TITLE CAMP_CODE PTRM_CODE START_DATE END_DATE SCHD_CODE MAX_ENRL GRADABLE CREDIT_HRS BILL_HRS SESSION APPROVAL WEB_AVAIL PRINT_IND USERID LONG_TITLE TEXT_NARRATIVE LINK_IDENT LINK_CONN FUNDING_SOURCE MEETING MEETING_ID MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY SATURDAY SUNDAY BEGIN_TIME END_TIME START_DATE END_DATE BLDG_CODE ROOM_CODE ARRANGE_HOURS_WEEK SESSION OVERRIDE INSTRUCTOR ID PERCENT PERCENT_SESS PERCENT_RESPONSE PRIMARY OVERRIDE SESSION FIRST_NAME MIDDLE_NAME LAST_NAME CROSSLIST EXTERNAL_ID ACTION (UPDATE|DELETE|AUDIT) GROUP MAX_ENRL MEMBER CRN
Schedule Response Packet SCHEDULE_RESPONSE
PACKET_ID
STATUS (SUCCESS | FAILED) START_TIMESTAMP END_TIMESTAMP
Unitime-Banner Schedule XML Interface Data Structure
MESSAGE ACTIVITY_DATE SEQNO TERM_CODE CRN SUBJ_CODE CRSE_NUMB SEQ_NUMB XLST_GROUP EXTERNAL_ID ACTION (UPDATE|DELETE|AUDIT) TYPE (SUCCESS|ERROR|WARNING) MESSAGE PACKET_ID
See these documents:
UniTime to Banner Interface User Documentation.docx
UniTime Impact on Banner Schedule.docx
Functional Documentation
Wednesday, August 05, 2009
7:51 PM
How to Implement UniTime-Banner Integration
create a UNITIME user
○
install_szaptrm.shl and szaptrm.fmb on app server and configure Banner security
○
install_unitime.shl
○
install_szpexam.shl
○
upgrade_unitime01.shl (probably not needed)
○
install_szautmt.shl and szautmt.fmb on app server and configure Banner security
○
create GTVSDAX entries
○
create SZAUTMT entries
○
SOATERM - set starting CRN to 70000
○
Banner
(See also tasklist_golive.xls for more details)
core UniTime has been installed an is functioning
Core UniTime setup: session, buildings, rooms, departments, features, etc.
Assumption:
○
Change edu.purdue.smas.custom.util.PurdueCatalogLink to link to your university
Create Timetabling.war:
Setup Eclipse, Build and Deploy
○
Set up properties files for web server and solver server
○
Configure security/login
○
01 Initial Banner Tables.sql
01 Initial Banner Functions.sql
01 Initial Banner Views.sql
Apply SQL changes:
PurdueUniTimeCustomizations/Documentation/Database/Oracle/Changes/
If using different user for webapp: webuser permissions (PurdueUniTimeCustomizations
\Documentation\Database\Oracle\SQL\webuser_privs.sql)
Add Banner integration tables to UniTime database
○
Banner_Session table has no user interface - create and update manually.
○
Optionally: perform conversion to import a term
○
Set banner_session.send_data_to_banner = 1 (true)
○
start_queue_processor.shl, and observe UniTime changes going to Banner
○
If converted, run a synchronization to Banner
○
Set up batch jobs to import dept, staff and student registration data from Banner into UniTime
○
UniTime
HOWTO
Monday, June 14, 2010
8:24 PM
/load/ENV/interfaces/esass_timetabling/CrosslistsToDelete.csv
/load/ENV/interfaces/esass_timetabling/RoomsWithManagingDept.csv
(CrosslistsToDelete.csv is no longer used; all crosslists are deleted; it was just too difficult to
convert crosslists to UniTime structure. Users will rebuild.)
Option, set up these external table files:
Connect to Banner with developer account
Run
This create a bunch of temp tables that are used during the conversion process. Since the
conversion is a one-time program, it often uses temp tables for convenience.
banner_to_unitime_setup.sql
and
/load/ENV/interfaces/esass_timetabling/banner_offering_201020_PWL.xml
/load/ENV/interfaces/esass_timetabling/course_demand_201020_PWL.xml
The package that creates the Banner offering and course demand XML load files for the term:
sz_banner_to_unitime_jul30.pck
begin
-- Call the procedure
sz_banner_to_unitime.p_get_offerings(year_term => :year_term);
end;
Optionally, run sanity checks:
look for sections in there more than once (like PSY319 was) on Unitime side
•
utm_sql_sanity_checks.sql
•
unitime_xml_sanity_check_new.sql
•
Transfer XML files to UniTime server: /home/user/utadmin/prd/data/fromBanner
Run: prd/bin/banner_conv_load.shl
tasklist_golive.xls
Most up-to-date record of Spring10 conversion:
tasklist_conversion4.xls>
Task list for Fall 10 conversion:
Conversion from Banner to UniTime
New Instance
classes/log4j.properties
○
cacerts as binary
conf subdirectory
○
copy everything under /shared subdirectories
•
create /shared/lib links
•
Setup for production:
TOMCAT/shared/classes/log4j.properties TOMCAT/shared/lib/bcprov-jdk14-133.jar TOMCAT/shared/lib/naming-resources.jar TOMCAT/shared/lib/naming-factory.jar TOMCAT/shared/lib/naming-factory-dbcp.jar TOMCAT/shared/lib/smas-utils.tld TOMCAT/shared/lib/smas-utils-1.6.jar TOMCAT/shared/lib/smas-ldap-1.1.jar TOMCAT/shared/lib/conf/dbcp.properties TOMCAT/shared/lib/conf/dbcp_log4j.properties TOMCAT/shared/lib/conf/cacerts
Create links for libraries: cd TOMCAT/shared/lib ln -s /usr/share/java/ant-launcher.jar . ln -s /usr/share/java/ant.jar . ln -s /usr/share/java/log4j.jar . ln -s /usr/share/java/jakarta-oro.jar . ln -s /usr/share/java/commons-validator.jar . ln -s /usr/share/java/commons-logging-api.jar .
UniTime user setup:
e.g. \UniTimeAdmin\properties\web\dev\unitime.properties)
( for appropriate environment
Copy unitime.properties to the properties directory (home/users/unitime)
/home/users/unitime/cacerts
/home/users/unitime/login.conf
Create subdirectories:
TOMCAT/data/unitime/blob
TOMCAT/data/unitime/passivate
TOMCAT/data/unitime/restore
# Expand the max amount of memory for the JVM
JAVA_OPTS="$JAVA_OPTS -Xmx1024m -XX:MaxPermSize=256m"
JNDI setup:
<GlobalNamingResources>
<Resource
name="jdbc/smas"
type="javax.sql.DataSource"
maxActive="4"
maxIdle="2"
username="webuser"
Tomcat Setup
# Purdue Overrides
INSTANCE="yourTomcatInstanceName"
# Define the instance base directory
CATALINA_BASE="/opt/tomcat5-instance/$INSTANCE"
# Define a few other instance specific items
CATALINA_TMPDIR="$CATALINA_BASE/temp"
CATALINA_PID="/var/run/tomcat5-$INSTANCE.pid"
TOMCAT_LOG="$CATALINA_BASE/logs/catalina.out"
# Define a property value so developers can tell which tier this is
JAVA_OPTS="$JAVA_OPTS -Dedu.purdue.itap.itso.webservices.Tier=dev"
# Expand the max amount of memory for the JVM
JAVA_OPTS="$JAVA_OPTS -Xmx1024m -XX:MaxPermSize=256m"
# Define ORACLE_HOME for Oracle support
ORACLE_HOME=/usr/lib/oracle
# Define LD_LIBRARY_PATH to include the Oracle dynamic libraries
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/oracle/10.2.0.3/client/lib
# Define options for UniTime
JAVA_OPTS="$JAVA_OPTS -Djava.security.auth.login.config=/home/users/unitime/dev/login.conf"
JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true -Dtmtbl.custom.properties=/home/users/unitime/dev/unitime.properties"
# Enable developer debugging from Eclipse
JAVA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=[yourPortNumber],server=y,suspend=n $JAVA_OPTS"
UniTime can be configured to control which top-level menu items are available from a given web server.
e.g. \UniTimeAdmin\properties\web\dev\unitime.properties)
(from UniTimeAdmin CVS Repository for appropriate environment
These values are set in the custom properties file (/home/users/unitime/prod/unitime.properties)
Note: administrative users can get to all functions regardless of the menu configuration.
Timetabling server: timetable.mypurdue.purdue.edu
# Sidebar Menu configuration
tmtbl.menu.display_course_timetabling=true
tmtbl.menu.display_student_sectioning=true
tmtbl.menu.display_exam_timetabling=true
tmtbl.menu.display_personal_schedule=false
tmtbl.menu.display_event_management=false
Event Mgmt server: roomschedule.mypurdue.purdue.edu
# Sidebar Menu configuration
tmtbl.menu.display_course_timetabling=false
tmtbl.menu.display_student_sectioning=false
tmtbl.menu.display_exam_timetabling=false
tmtbl.menu.display_personal_schedule=true
tmtbl.menu.display_event_management=true
tmtbl.menu.display_course_timetabling=true/false
tmtbl.menu.display_student_sectioning=true/false
tmtbl.menu.display_exam_timetabling=true/false
tmtbl.menu.display_personal_schedule=true/false
tmtbl.menu.display_event_management=true/false
Menus
This site is useful for coming up with color schemes:
http://www.2createawebsite.com/build/hex-colors.html
Custom property: tmtbl.custom.css can be used to override UniTime styles.
UniTime provides styles/test.css. It makes the left sidebar and top global warning yellow.
Based on comments in test.css, I changed colors based on the "was" comment to create a pink and a
green version that can be used for the training environment.
Stylesheets
Custom properties: tmtbl.header.external and tmtbl.footer.external can be used to define header and
footer HTML that is included on the login page.
PurdueUniTimeCustomizations/WebContent/custom contains the header and footer html used in each
environment.
Purdue used templates from PMC
http://www.purdue.edu/globals/blog/
to create header and footer to give the production login page a Purdue look and feel.
The way UniTime calls the custom header and footer, along with the use of style sheets by both UniTime
and the Purdue pages made it a bit tricky to get the desired look, especially one that works in all
browsers.
Problem: IE gives the “This page contains both secure and nonsecure items. Do you want to display the
nonsecure items?” message.
PurdueUniTimeCustomizations/WebContent/styles/puHeader
PurdueUniTimeCustomizations/WebContent/images/puHeader
Solution: all referenced images and stylesheets were copied to
directories and referenced locally. This also shields us from any changes external sites might make.
http://wiki.unitime.org/Timetabling_Installation#Customization
Web Servers
/home/users/unitime/env/unitime.properties
UniTimeAdmin/properties/web/env/unitime.properties
Come from UniTimeAdmin repository:
Solver Servers
/home/users/utadmin/env/config/custom.properties
UniTimeAdmin/properties/solver/env/custom.properties
Come from UniTimeAdmin repository:
Properties
tmtbl.help.manual.input_data
http://www.purdue.edu/registrar/pdf/Unitime_Data_Entry_Manual.pdf
Data input manual URL
Help Pages
Thursday, January 14, 2010
2:07 PM
Instructional Offering Consent_type Ccredit Course Offering Subject Course Number Title (short) Credit Subpart Instructional Type Hours per week
Class Expected Capacity Class times Locations Instructors
Class Join Section UniqueId Banner Section Id ClassId Banner_Section UniqueId* CRN*
Section Index (3-char Banner section id) Crosslist ID* Consent Link identifier * Link Connector* SessionId* ParentBannerSectionId* BannerConfigId*
* not modifiable by user Configuration
Unlimited Enrollment
Banner – UniTime Integration
parent
parent Banner_Course
(no data; available for future use) Core UniTime Purdue Customization Banner_Config BannerCourseId Gradable itype Sessions Academic Initiative Year Term Status Banner_Session Term Code Campus store_data_for_banner send_data_to_banner loading_offerings_file
Data model add -ons to support managing Banner information in UniTime
The diagram below shows additions made to the UniTime data model to support Banner integration.
UniTime can be configured to perform specified actions when instructional offering information changes. See Properties.
generate CRN
○
generate link id
○
generate crosslist id
○
generate section identifier
○
validate section identifier
○
PL/SQL Procedures are defined to implement rules to generate and validate Banner-specific data:
See Properties.
Overview
Link identifers and connectors are generated by the PL/SQL function
SECTION_PROCESSOR.get_link_identifier.
Zero is not used as the 2nd character of the link identifier because it is too easily confused with the
character O.
Link identifiers are assign sequentially for a course, across subparts. Before UniTime the convention was
to use a new starting character for each schedule type and each new course and configuration. This was
too difficult to implement in UniTime programmatically in the time available.
Re-assigning Link Identifiers
Link identifers can be re-assigned for a term.
Null out all link identifiers for a term:
/PurdueUniTimeCustomizations/Documentation/Database/Oracle/SQL/remove_links.sql
# initiative Academic Initiative (e.g. PWL)
# year Year (e.g. 2010)
# term Term (e.g. Spring)
Run shell script update_links.shl <initiative> <year> <term>
This:
assigns missing link identifiers, link connectors and crosslist ids
•
corrects any incorrect link identifiers, link connectors and cross-list ids
•
Note: I have not used it to re-assign crosslist ids. All crosslist were eliminated during conversion.
User actions cause changes to sections
Timetabling app creates QueueOUT with SchedulePacketXML
and sets PostDate
Notices unprocessed queueOut item
Banner SZ_UNITIME.( in: schedule packet
out: schedule response)
UniTime
–Banner Integration
Parses schedule response XML to create BANNER_RESPONSE
messages Sets QueueIn process date
and status=processed Sets QueueOut PickupDate Status=PickedUp QueueOUT uniqueId XML Status Postdate PickupDate ProcessDate QueueIN uniqueId XML MatchId Status Postdate ProcessDate Send Schedule Packet XML
to Banner and wait for response connect to Banner as UNITIME user Set QueueOut ProcessDate Status=Processed Create QueueIn XML=ScheduleResponse MatchId ProcessDate Status=Processed Poll QueueOut for unprocessed items UniTime/Banner QueueProcessor UniTime Timetabling Application Banner Response uniqueId seqno activity date CRN subj_code crse_numb xlst _group external_id action type message packet id queue id Transaction log, errors and warnings sent from Banner
QueueERROR uniqueId error type error date error text unexpected errors
Queue Processor
PurdueUniTimeCustomizations Page 19
These properties define what actions are taken when an instructional offering modification occurs in Unitime, and define rules for generating and
validating Banner-specific fields.
See PurdueUniTimeCustomizations\JavaSource\custom.properties
# Property to define the class that is called when a instructional offering config is added/changed.
tmtbl.external.instr_offr_config.change_action.class=edu.purdue.smas.custom.util.BannerInstrOffrConfigChangeAction
# Property to define the class that is called when an instructional offering is added.
tmtbl.external.instr_offr.add_action.class=edu.purdue.smas.custom.util.BannerChangeAction
# Property to define the class that is called when an instructional offering is deleted.
tmtbl.external.instr_offr.delete_action.class=edu.purdue.smas.custom.util.BannerChangeAction
# Property to define the class that is called when an instructional offering is made not offered.
tmtbl.external.instr_offr.not_offered_action.class=edu.purdue.smas.custom.util.BannerChangeAction
# Property to define the class that is called when an instructional offering is made offered.
tmtbl.external.instr_offr.offered_action.class=edu.purdue.smas.custom.util.BannerChangeAction
# Property to define the class that is called when an instructional offering crosslisting is changed.
tmtbl.external.instr_offr.crosslist_action.class=edu.purdue.smas.custom.util.BannerChangeAction
# Property to define the class that is called at the end of the course offering edit action
tmtbl.external.course_offering.remove_action.class=edu.purdue.smas.custom.util.BannerChangeAction
# Property to define the class that is called when a course offering is deleted
tmtbl.external.course_offering.edit_action.class=edu.purdue.smas.custom.util.BannerChangeAction
# Property to define the class that is called at the end of the assign instructors action
tmtbl.external.instr_offr_config.assign_instructors_action.class=edu.purdue.smas.custom.util.BannerChangeAction
# Property to define the class that is called at the end of the edit scheduling subpart action
tmtbl.external.sched_subpart.edit_action.class=edu.purdue.smas.custom.util.BannerChangeAction
# Property to define the class that is called at the end of the edit class action
tmtbl.external.class.edit_action.class=edu.purdue.smas.custom.util.BannerChangeAction
# Property to define the class that is called at the end of the edit reservation action
tmtbl.external.reservation.edit_action.class=edu.purdue.smas.custom.util.BannerChangeAction
# Property to define the class that is called when a solution is committed or uncommited
tmtbl.external.solution.commit_action.class=edu.purdue.smas.custom.util.BannerChangeAction
# Property to define the class that is called when a solution is committed or uncommited
tmtbl.external.instr_offr_in_crosslist.add_action.class=edu.purdue.smas.custom.util.BannerChangeAction
# Property to define stored procedure that is called to get new banner section identifier
banner.section_id.generator={?= call timetable.section_processor.get_section(?,?,?)}
# Property to define stored procedure that is called to get new banner croslist identifier
banner.crosslist_id.generator={?= call timetable.cross_list_processor.get_cross_list_id(?)}
# Property to define stored procedure that is called to validate a section index is unique for a course
banner.section_id.validator={?= call sys.diutil.bool_to_int(timetable.section_processor.section_exists(?,?,?,?))}
# Property to define stored procedure that is called to get new banner crn
banner.crn.generator={?= call timetable.crn_processor.get_crn(?)}
# Property to define stored procedure that is called to get new banner link identifier
banner.link_id.generator={?= call timetable.section_processor.get_link_identifier(?,?,?)}
Note: the schema
referenced here must
changed if a different
timetabling schema is
used.
There is a nightly batch process that sends information from Banner to UniTime.
Banner Package: SZ_PEXAM
prepares XML files.
e.g.
sz_pexam.p_get_departments(201010) prepares esass_timetabling/banner_dept_201010.xml
sz_pexam.p_get_staff(201010) esass_timetabling/banner_staff_201010.xml
sz_pexam.p_get_students(201010) esass_timetabling/banner_student_201010.xml
UniTime Process:
banner_data_load.shl xmlfilename
e.g, for Fall09:
banner_data_load.shl banner_dept_201010.xml
banner_data_load.shl banner_staff_201010.xml
banner_data_load.shl banner_student_201010.xml
UC4 Job:
PRD_REG_UNITIME_TIMETABLING_FALL_WL_JOBP
PRD_REG_UNITIME_TIMETABLING_SPRING_WL_JOBP
PRD_REG_UNITIME_TIMETABLING_SUMMER_WL_JOBP
\REGISTRAR\UNITIME\JOBPLANS
basic department info: name, code
○
updates UniTime table: DEPARTMENT
○
Departments
Id, name, department
basic staff data:
○
populates UniTime table: STAFF (not pos_code, email)
○
○
does not update departmental_instructor, which is the source of instructor's name
○
PurdueUniTimeCustomizations\Documentation\Database\Oracle\SQL
\update_dept_instr_from_staff.sql
there is SQL I developed that will update departmental_instructor's names:
○
Staff
student id, name, sections enrolled in
basic student enrollment information
○
Populates UniTime tables: STUDENT, STUDENT_CLASS_ENRL
○
Students
Banner to UniTime
webapps/Timetabling
Timetabling.war
Delete:
Give Tomcat a few seconds to delete work files
Drop in new Timetabling.war
May need to re-start tomcat
All non-web operations take place on the solver server machines. User: UTADMIN Directory Structure /home/users/utadmin Files in root: • .unitime_profile /dev /qa /qaexam /trn /prd /prdexam
There is a subdirectory for each instance hosted on the server: Instance subdirectory structure
•
Shell scripts /bin
Configuration; properties files /config
/toBanner /fromBanner
Data exchange; used for batch processes by UC4 /data
Log files from batch processes and queue processor /logs
Everything solver-related.
Because I'm still in the process of learning about the solver, I left most things as I was given them from SMAS.
Shell scripts used by solver /bin
All JAR files used for solver and UniTime operations.
These directories are created as needed when a solver is started. /backup
tail -f debug.log to watch solver activity
Rolled daily /log Passivated solutions /passivate /solvern /env /Solver
When the Fall09 exam schedule was published, we thought that the Personal Exam schedule application needed solvers to be running. So we set up qaexam and
Solver Servers
When the Fall09 exam schedule was published, we thought that the Personal Exam schedule application needed solvers to be running. So we set up qaexam and prdexam and pointed them to the Room Scheduling web servers.
For construction of the Spring10 schedule, we had 2 solvers running on 2 solver servers for timetabling, and 2 solvers running on a 3rd solver server for personal exam schedules.
banner_audit_file.shl
Generate a Schedule Audit XML file for a term.
Placed in data/ToBanner directory
Not used much because
send_banner_audit.shl
is more useful.
Can be used if a manual file is needed.
banner_conv_load.shl
Load conversion XML file.
Only used for the one-time per term conversions. Essentially the same as
banner_data_load.shl
banner_data_load_from_db.shl
Load Banner XML file that has been place in an Oracle directory attached to the
database. This script is provided in case we decide to use this method of file
transfer. Not planned at this time.
banner_data_load.shl
Load Banner XML file. Used by UC4 process to load department, staff and
student data from Banner.
UniTime determines what to load based on the tags in the XML.
cleanup.shl
Remove old log and temp files and old queueprocessor records
fl
Dagmar's filelist script. Lists files in a directory in reverse time order and pipes
to more.
get_property.shl
Get property from custom.properties
kill_queue_processor.awk
awk script used by
stop_queue_processor.shl
to find and kill queue processor
processes
list_queue_processor.awk
awk script used by
list_queue_processor.shl
list_queue_processor.shl
Script to list queue processor processes. There should only be one and only
one queue processor running at any time.
ls_size
List files by size - useful for finding large files.
mailtest.shl
Script to test sending mail
queue_processor_check.shl
Script to check if queue processor is working. Run by UC4 every 10 minutes.
Sends email to designated support staff.
send_banner_audit.shl
Generate and send Schedule Full Audit XML for a term to Banner. If the last
parameter is TRUE, the sync packet returned from Banner is sent to Banner for
processing.
solver.shl
env dev|qa|qaexam|prd|prdexam
commands are sent as arguments to Solver/bin/solver.
solver.shl env commands
solver.shl qa start
Start a solver:
export SOLVER_CNT=3
solver.shl qaexamstart
Start 3 solvers:
solver.shl prd stop
Stop all solvers:
start_queue_processor.shl
Start queue processor. First stops any running queue processor using
stop_queue_processor.shl
stop_queue_processor.shl
Stop all running queue processors for an instance (dev,qa,trn or prd)
unitime_audits.shl
Run UniTime audits and sanity checks.
Notify administrators via e-mail if there is a problem.
unitime_audits.sql
UniTime audits and sanity checks SQL used by unitime_audits.sql. This
checks for conditions that should never occur.
update_bin.shl
Update utadmin/bin from the CVS repository: UniTimeAdmin/bin
Use to update shells scripts.
update_links.shl
Set or correct all link identifiers and crosslists for a term. See
Link Identifiers
update_properties.shl
Update the utadmin/config/custom.properties file from the CVS repository.
update_solver_bin.shl
Update the utadmin/Solver/bin from the CVS repository: UniTimeAdmin/bin
Use to update shells scripts.
Scripts
UC4 Jobs
0010\REGISTRAR\UNITIME
Description UC4 Job Maintenance Frequency Scripts Executed Machines
Banner Department, Staff and Student data to UniTIme PRD_REG_UNITIME_TIMETABLING_FALL _WL_JOBP PRD_REG_UNITIME_TIMETABLING_SPRI NG_WL_JOBP PRD_REG_UNITIME_TIMETABLING_SUM MER_WL_JOBP &YEARTERM# needs to be updated annually Nightly Banner: sz_pexam UniTime: banner_data_loa d.sh Banner UniTimeSol ver1
Audit UniTime and Banner for differences. Banner Responses populated for end users
PRD_REG_UNITIME_DAILY_AUDIT Session information needs to be updated annually Nightly send_banner_au dit.shl unitime_audits.sh l UniTimeSol ver1
Monitor that the integration queue processes are working properly
PRD_REG_UNITIME_QUEUE_MONITOR Every 10
minutes
UniTimeSol ver1 Remove old log and temp files and old
queueprocessor table records.
PRD_REG_UNITIME_CLEANUP Weekly 4am
Sundays
cleanup.shl All UniTimeSol vers
Web Servers
All web activity log messages appear in TOMCAT/webapps/catalina.out
Log in TOMCAT
cd TOMCAT/webapps
tail -f catalina.out
Solver Servers
Log in solver server as utadmin
cd /home/users/utadmin/prd/Solver/prd/solver1/log
tail -f debug.log
These are daily rolling log files.
Starting the solver appends /home/users/utadmin/prd/Solver/nohup.out.
There might be useful trouble-shooting information here.
Queue Processor
Log in solver server as utadmin
tail -f logs/queueprocessor.log
These are daily rolling log files
Banner Loads
Log in solver server as utadmin
Look at /home/users/utadmin/prd/logs/banner_data_load*.log files.
Logs on file system in /home/users/utadmin/prd/logs subdirectory show that the queue processor
is running and when packets are sent between the systems. Available for review by UniTime
system administrator as needed
○
Integrationqueueerror – stores integration system errors
□
integrationqueuein – stores incoming response packets from Banner
□
integrationqueueout – stores outgoing packets exchanged with Banner
□
Integration queue tables. Available for review by system administrator as needed.
banner_response – Reviewed regularly by end user via application user interface
UniTime tables:
○
SZBUTML – activity and error log; Available for review by system administrator as needed
Banner tables:
○
Real-Time Integration Logs
Available for review by UniTime system administrators as needed
□
Logs on file system in /home/users/utadmin/prd/logs subdirectory show progress of load
into UniTime and any errors that occurred.
Banner to UniTime load:
○
Available for review by UniTime system administrators as needed
□
Logs on file system in /home/users/utadmin/prd/logs subdirectory show progress of load
into UniTime and any errors that occurred.
Daily UniTime/Banner audit:
○
Batch interface logs
Logging
UniTime –Banner Audit and Sync
send_banner_audit.shl SYNC=FALSE
(lpveautm01)
Generate Schedule Packet with XML for every section and
crosslist for term
Put in Queue Processor
Queue Processor sends Full audit to Banner
Banner: SZ_UNITIME Audits for differences between UniTime and
Banner. Prepares SCHEDULE_RESPO NSE_PACKET with messages indicating differences Queue Processor receives SCHEDULE_RESPONSE
_PACKET from Banner
Queue Processor creates Banner Message Responses send_banner_audit.shl SYNC=TRUE (lpveautm01) Generate Schedule Packet with XML for every section and crosslist for term;
Include request for SYNC packet
Put in Queue Processor
Queue Processor sends Full audit to Banner
Banner: SZ_UNITIME Audits for differences between UniTime and
Banner. Prepares SCHEDULE_RESPONSE_P
ACKET with messages indicating differences
XML for sections and crosslists with differences are
put in SYNC PACKET
Queue Processor receives SCHEDULE_RESPONSE _PACKET and SYNC_PACKET from Banner
Queue Processor creates Banner Message
Responses
Queue Processor put SYNC_PACKET in
QueueOut
export timetable@productionDatabase schema, recreate timetable user and import into target non-production database
○
shutdown_qa or shutdown_dev or shutdown_trn
Before clone occurs, stop services:
○
start_qa or start_dev or start_trn
When clone is complete, start services:
○
Re-start web server
○
Turn off automatic sending if confirmation emails
○
To clone production to non-production:
Cloning
Wednesday, September 09, 2009
1:59 PM
The solver services are set up to execute ~utadmin/startup and ~utadmin/shutdown when the machines
are started up and shutdown, respectively.
These scripts start or shutdown the queue processor and solver servers.
On the dev/qa machine, there are separate startup and shutdown scripts for each environment:
~utadmin/startup_dev, ~utadmin/startup_qa, ~utadmin/startup_trn, ~utadmin/shutdown_dev,
~utadmin/shutdown_qa, ~utadmin/shutdown_trn.
These are called by ~utadmin/startup and ~utadmin/shutdown, and can be used independently to start
or shutdown each environment.
Startup and Shutdown
Sunday, December 20, 2009
8:16 AM
Create a new workspace
Check out these CVS Projects
:pserver:[email protected]:/cvsroot/unitime
UniTime as UniTime-SourceForge
Checkout:
SMAS_Common_Classes-smasdevqa01
PurdueUniTimeCustomizations-smasdevqa01
Set up as Projects:
Using JDK1.6. Need more memory:
Build and deploy
Run PurdueUniTimeCustomizations/build.xml as Ant Build
Setup Eclipse, Build and Deploy
PurdueUniTimeCustomizations\Distributions\Timetabling.war
PurdueUniTimeCustomizations\Distributions\timetable.jar
PurdueUniTimeCustomizations\Distributions\solver.jar
Creates the following files:
Web
Copy Timetabling.war to TOMCAT/webapps
/webapps/Timetabling
/webapps/Timetabling.war
If JSP's have changed, its best to first delete:
so that Tomcat clears out work/Catalina/localhost/timetabling.
Give Tomcat a few seconds to delete work files
May need to re-start tomcat.
Solver Servers
~utadmin/shutdown_env
Stop solver services:
env/Solver/env
Copy timetable.jar and solver.jar to
~utadmin/startup_env
Start services:
start_queue_processor.shl
Restart queue processor :
solver.shl env stop
export SOLVER_CNT=2
solver.shl env start
Restart solvers
Testing HQL
Useful utility for building HQL.
Administration….Utilities…Test HQL
Enter a query
View errors
View number of results returned
View first N results (don’t know how many)
View generated SQL
Example
select rp
from SubjectArea as sa
inner join sa.department as dept
inner join dept.timetableManagers as mgr,
BannerResponse rp
where sa.session = 74759814
and mgr.externalUniqueId = '10010487'
and rp.subjectCode = sa.subjectAreaAbbreviation
Query:
(fetches all BannerResponses for Peter Cook for PWL Spring 2010)
HQL Testing
Thursday, August 06, 2009
7:17 AM
Administration...Defaults...Configuration...tmtbl.system_message
System will be unavailable for a short period of time between 6am and 7am on Tuesday, February 23,
2010.
System Messages
Monday, August 10, 2009
6:16 PM
UniTime is set up so that when the application starts it execute in
UniTime\Documentation\Database\Oracle\Changes
for new SQL files that automatically make database schema changes based on database version
information it tracks in application property 'tmtbl.db.version'.
Purdue felt it would be more secure and best practice to have the application run as a different user
than the timetabling schema owner. The application runs connected as WEBUSER, which only has
explicit privileges granted via the webprivs.sql script on objects needed.
Therefore, when UniTime makes a schema change, the schema -changing SQL must be execute prior to
deploying the .war file that contains that change.
Example:
\UniTime\Documentation\Database\Oracle\Changes\47 Add receive emails to manager roles.sql
Database Changes
Friday, August 28, 2009
1:35 PM
To create new menu items.
tmtbl.menu.admin.extra=leaf_item('Roll Forward Banner Session','Roll Forward Banner
Session','rollForwardBannerSession.do');
leaf_item('Delete Projects Courses','Delete Projects
Courses','deleteProjectCourses.do');
web: unitime.properties
Properties: add to custom properties, e.g.
•
add entries for myapp similar to other examples
○
struts-config.xml
•
add entries for myapp similar to other examples
○
tiles-def.xml
•
create a myappAction.java similar to other Action classes
○
Action.java
•
create a myappForm.java similar to other Form classes
○
Form.java
•
create a myapp.jsp simlar to other .jsp's
○
.jsp
•
New Menu Items
Wednesday, March 10, 2010
10:48 AM
Banner Response Messages are sent from Banner to UniTime when a schedule packet is received from
UniTime.
These messages are made available to the end user Banner Message page:
There are 3 types of messages
Success Messages
•
Error Messages
•
Audit Messages
•
Success log messages indicate what updates have been made in Banner as a result of a UniTime transaction. They appear on the UniTime
Banner Message Responses page with TYPE=SUCCESS.
Transaction
Type Message Text Explanation
Section Room created: BLDG ROOMNUMBER A room with the room number ROOMNUMBE R did not exist in Banner for BLDG. A new room for an existing BLDG was created in Banner with ROOMNUMBER. First effective term is the term of the transaction.
Section Meeting inserted: Days: Begin time: End time: Building: Room: Start date: End date: Arrange:
A new meeting was created in Banner using the values shown.
Section Meeting deleted: Days: Begin time: End time: Building: Room: Start date: End date: Arrange:
A meeting with the values shown was deleted in Banner.
Section Meeting updated: Days: Begin time: End time: Building: Room: Start date: End date: Arrange:
A meeting was updated in Banner using the values shown.
Section Instructor inserted: Instructor deleted: ID: Primary: % Responsible: %Session:
A new instructor assignment was created in Banner using the values shown.
Section Instructor deleted: Instructor deleted: ID: Primary: % Responsible: %Session:
An instructor assignment with the values shown was deleted in Banner.
Section Instructor updated: Instructor deleted: ID: Primary: % Responsible: %Session:
A instructor assignment was updated in Banner to the values shown.
Note: SIBINST refers to the Banner 'Faculty/Instructor' record. Purdue creates one of these records for all employees. When they are assigned as instructor, the instructor indicator is check. Section ID name SIBINST record created An instructor record was created for a person who did not
previously have an instructor record, but does exist in Banner.
This means the person didn't come over from HR. You should check on the legitimacy of this instructor.
Section ID name SIBINST Inactive Status: i, set to active An instructor assignment was sent to Banner for an inactive instructor. The instructor was made active.
Follow up on the legitimacy of this instructor. Section ID name SIBINST exists, but not Instructor; updated
sibinst for term
Person is flagged as an instructor.
Section ID name SIBINST exists, but not Instructor;created
sibinst for term
Person is flagged as an instructor.
Section Text narrative inserted: [first 20 characters...] Section note created. Section Text narrative deleted: [first 20 characters...] Section note deleted. Section Text narrative updated: [first 20 characters...] Section note updated.
Section Long title inserted: LongTitle Long titles not used in UniTime interface. Available for future use.
Section Link connector inserted: XX Link connector record was created with value XX
Section Link connector deleted: XX Link connector record with value XX was deleted
Section Link connector updated: XX Link connector record was updated to value XX
Section Section created New section created
Section CRN Starting Sequence Number set to nnnnn You should never see this. If you do, the Banner starting CRN was not set to the Banner-only CRN starting range (70000).
Section Catalog values copied to section Restrictions, requisites, attributes, fees were copied from catalog to section.
Section N Link connectors deleted A number, N, of link connectors were deleted. This would happen only if there were multiple link connectors for a section. This should not occur.
Section N Instructors deleted N instructor assignments deleted for section. This occurs when all
meetings and instructor records must be deleted and re-added to a section when part-of-term data is changed. Part-of-term data includes section part-of-term, dates, schedule type, census dates and weeks.
Section N Meetings deleted N meetings deleted for section. This occurs when all meetings and
instructor records must be deleted and re-added to a section when part-of-term data is changed. Part-of-term data includes section part-of-term, dates, schedule type, census dates and weeks.
Section Section updated One of the following section fields was updated:
- section number - title - campus - schedule type - status (active/canceled) - gradable indicator - max enrollment
Success Messages
Messages Page 41
- credit
- bill hours (only if matched credit before change) - session
- approval
- available for web registration - print indicator - link identifier - dates - part of term - census dates - weeks
Section Canceled Section was canceled
Section Deleted Section was deleted
Crosslist Crosslist created Crosslist group created.
Crosslist CRN added, Section with CRN added to crosslist group
Crosslist N sections deleted N sections were deleted from crosslist group
Crosslist N sections inserted N sections were added to crosslist group
Crosslist Max Enrollment updated Maximum enrollment of crosslist group was updated
Crosslist Enrollment updated Enrollment of crosslist group was updated. This occurs when
sections are added or removed from a crosslist group.
Crosslist Seats available updated Seats available in crosslist updated
Error Messages occur when transactions fail and Banner is not updated. They appear on the UniTime Banner Message Responses p age with TYPE=ERROR. Transaction
Type
Message Text Explanation Remediation
Section Meeting with days and no time
Incomplete meeting information sent from UniTime. This should not occur.
Notify system administration for further investigation.
Section Meeting with time, but no days
Incomplete meeting information sent from UniTime. This should not occur.
Notify system administration for further investigation.
Section Section not in Banner A delete was sent to Banner for a section that does not exist. This can happen if a section was created in UniTime and rejected by Banner.
If section was previously rejected by Banner, no further action required. Section does not exist in either system.
If this error is received under different circumstances, notify system administration for further investigation. Section Subject: USUBJ does not
match Banner: BSUBJ
Banner received an update for a section. The subject on the record with the CRN sent from UniTime does not match what is in Banner.
Notify system administration for further investigation.
Section Course Number: UCRSE does not match Banner: BCRSE
Banner received an update for a section. The subject on the record with the CRN sent from UniTime does not match what is in Banner.
Notify system administration for further investigation.
Section Unable to lock section for update
Other system activity, such as registration, has locked the section record. Interface was unable to retrieve the section record for update in 10 tries.
Resend offering from Banner at a later, less busy time.
Section Error on attribute / Unknown Attribute
An unexpected attribute was sent from UniTime. Notify system administration for further investigation.
Section Error on attribute / Oracle error message
See Oracle error message. Could be that data sent from UniTime is too long for the Banner field or of the wrong data type.
Notify system administration for further investigation.
Section Negative Max Enrollment Invalid
UniTime sent a negative enrollment maximum. Should not occur. Notify system administration for further investigation.
Section No Course Record Found for Section
The course does not exist in the Banner catalog. Add course to Banner catalog. Section CRN exceeds Banner starting
CRN: nnnnn
UniTime sent a CRN that is outside the range of CRNs defined for UniTime on the SZBUTMT table.
Notify system administration for further investigation.
Section Instructor ID not found: ID name
No person record was found in Banner with ID. Name from UniTime is provided for informational purposes.
Investigate. All staff and students should exist in Banner. Correct person information in UniTime or add to Banner if appropriate. Section Invalid section action Unexpected transaction action received from UniTime Notify system administration for further
investigation. Section N Primary instructors for
section
Zero or more than one primary instructor indicated for section. This should not occur. The UniTime/Banner interface determines primary instructor based on greater percent share and alphabetical order.
Notify system administration for further investigation.
Section Part-of-term code not configured
The part of term derived for a section has not been set up on SOATERM.
Check SZBPTRM mapping table. Crosslist Crosslist group not found A delete was sent to Banner for a crosslist that does not exist.
This can happen if a crosslist was created in UniTime and rejected by Banner.
If crosslist was previously rejected by Banner, no further action required. Crosslist does not exist in either system. If this error is received under different circumstances, notify system administration for further investigation. Crosslist Unable to lock crosslist for
update
Other system activity, such as registration, has locked the crosslist record. Interface was unable to retrieve the crosslist record for update in 10 tries.
Resend offering from Banner at a later, less busy time.
Crosslist Crosslist ID exceeds Banner starting ID:
UniTime sent a crosslist with an ID that is outside the range of crosslist IDs defined for UniTime on the SZBUTMT table.
Notify system administration for further investigation.
Crosslist Section with CRN nnnnn not found
A section with CRN nnnnn that UniTime is trying to add to a crosslist does not exist in Banner. This can happen if a section was created in UniTime and rejected by Banner.
Correct the circumstances that caused the member section to be rejected, and resend the offering to Banner.
Crosslist Invalid Crosslist Action Unexpected transaction action received from UniTime Notify system administration for further investigation.
Crosslist Error on attribute / Unknown Attribute
An unexpected attribute was sent from UniTime. Notify system administration for further investigation.
Crosslist Error on attribute / Oracle error message
See Oracle error message. Could be that data sent from UniTime is too long for the Banner field or of the wrong data type.
Notify system administration for further investigation.
Packet Header
Term code is required Transaction from UniTime omitted term code Notify system administration for further investigation.
Packet Header
Origin is required Transaction from UniTime omitted origin. Notify system administration for further investigation.
Packet Header
Invalid term code Term code sent from UniTime does not exist in STVTERM Review UniTime/Banner integration configuration: look at Banner Session table.
Packet Term not set up No SOATERM record exists in Banner for term. Review UniTime/Banner integration
Error Messages
Packet Header
Term not set up No SOATERM record exists in Banner for term. Review UniTime/Banner integration configuration: look at Banner Session table. Create SOATERM record if appropriate.
Packet Header
Term not active for UniTime integration
Term has not been configured for UniTime integration in Banner. See UniTime Banner Integration
Review UniTime/Banner integration configuration. Add configuration if appropriate.
Packet Header
Term not configured for UniTime integration (no SZBUTMT record)
Term has not been configured for UniTime integration in Banner. See UniTime Banner Integration
Review UniTime/Banner integration configuration. Add configuration if appropriate.
Packet Header
Invalid packet ACTION value Invalid action value in packet header. Valid values are AUDIT or null.
Notify system administration for further investigation.
Packet Header
Invalid IS_TRANSACTION value
Invalid is_transaction value in packet header. Valid values are Y and N.
Notify system administration for further investigation.
Packet Header
Invalid packet MODE value Invalid mode value in packet header. Valid values are AUDIT and UPDATE
Notify system administration for further investigation.
Packet Header
Invalid date format Invalid date format in packet header. Notify system administration for further investigation.
Packet Header
Class end date is not between term start/end dates
Sanity check: class end date from UniTime is not between term start and end dates.
Review dates in STVTERM in Banner, default date pattern for term in UniTime.
Common Errors from Banner API
There are many errors that could come from the Banner API's. Most won't occur. These are some of the most common:
Transactio n Type
Message Text Explanation Remediation
Section Invalid Schedule Code for course in section
Course is not configured for this schedule type in the Banner catalog.
Add schedule type to catalog or re-configure course in UniTime. Section Section credit hours/CEUs
must equal course credit hours/CEUs
Credit hours sent from UniTime do not conform to the value defined in the Banner course catalog.
Adjust credit as appropriate in Banner or UniTime.
Section Section billing hours must equal course billing hours
Credit hours sent from UniTime do not conform to the value for billing hours defined in the Banner course catalog.
Adjust billing credit as appropriate in Banner or UniTime.
Section Section credit hours/CEUs must be in course credit hours/CEUs range
Credit hours sent from UniTime do not conform to the range defined in the Banner course catalog.
Adjust credit as appropriate in Banner or UniTime.
Section Section billing hours must be in course billing hours range
Credit hours sent from UniTime do not conform to the range for billing hours defined in the Banner course catalog.
Adjust billing credit as appropriate in Banner or UniTime.
Section Section exists with same subject, course, and section number
Duplicate section id. This should not be happening. Describe steps that led to this situation to system administration. Re-assign section identifiers.
Section Course has campus restriction, cannot create section
Course is not configured for this campus in the Banner catalog. Review course schedule restrictions.
Section Cannot change Part-of-Term fields when enrollments or meeting times exist, or when section is Open Learning
Probably attempted to change the start/end dates of the section. Create new section; move students to new section; cancel original section.