Rice Sakai Deployment: Integration, Implementation, and Lessons Learned
Speaker(s): Angela Rabuck with Dean Lane, Omer Piperdi
Date: Friday 10:15 am - 10:55 am
Room: INTL 2
Session Abstract
This session will discuss various aspects of Rice University's Sakai implementation. We will discuss our architecture, which has a few unique aspects. We are running our Sakai implementation on load balanced VM sessions, which are fronted by a NetScaler. On the backend, we are using an Oracle DB server and a BlueArc NAS for file storage. Other unique aspects of our implementation include the use of both CAS and Kerberos authentication. We have developed java code that uses Web Services to provision Sakai course sites from Banner data. We will discuss the process involved and issues that arose. We will briefly talk about our rollout from a pilot to a production system and how Sakai has been viewed on our campus. Some basic usage statistics and user feedback will be presented.
Presentation Materials
Additional Information
Appendix 0: Misc Notes
- Our Banner is version 7.3
Appendix A: Hardware List
SunFire 4100
- 2 single core AMD Opteron Processors 2.8 GHz
- 8 Gigabytes of RAM
- Red Hat Enterprise Linux 4
- Oracle 10g
HP DL385 (Middleware)
- 2 single core AMD Opteron Processors 2.6 GHz
- 8 Gigabytes of RAM
- Red Hat Enterprise Linux 4
- PostgreSQL 8.1
- Java 1.5/Perl 5.8.4
HP DL385 (Sakai)
- 2 single core AMD Opteron Processors 2.6 GHz
- 8 Gigabytes of RAM
- Red Hat Enterprise Linux 4
- VMware GSX Server 3.2
VMware Guest
- Red Hat Enterprise Linux 4
- 3 Gigabytes of RAM
- 20 Gigabytes of local disk space (containing Operating System + Sakai Installation)
- Sakai 2.1.2
- Tomcat 5.5.12
- Java 1.4.2
BlueArc Titan NAS Storage System
- used to store the Oracle Databases (via NFS)
- used to store external files for Sakai (via NFS)
Netscaler 7000
- 6.1 Firmware
- Sticky Sessions
- Automatic load balancing
- Automatic failover
- Accepts access to ports 80 and 443 (Thawte signed certificate)
- All traffic to the Sakai servers is over port 443, using a self signed certificate
Appendix B: load users
This script loads new users into Sakai.

| Field |
Original Source |
Source Field |
Description |
| netId |
Middleware DB (Person Registry) |
account_name |
The netId for the user |
| firstName |
Banner - PPAIDEN |
SPRIDEN_FIRST_NAME |
The user's first name |
| lastName |
Banner - PPAIDEN |
SPRIDEN_LAST_NAME |
The user's last name |
| emailAddress |
Middleware DB (Person Registry) |
The user's primary email address |
| type |
Banner |
Multiple fields |
Unknown, Student, Staff, Instructor |
| (continued) |
Banner - PEAEMPL |
PEBEMPL_EMPL_STATUS |
active/inactive employee record |
| (continued) |
Banner - PEAEMPL |
PEBEMPL_ECLS_CODE |
employee job code |
| (continued) |
Banner - PEAEMPL, PEAREVW, NBAJOBS |
PEBEMPL_TERM_DATE, PERREVW_REVT_DATE, NBRBJOB_END_DATE |
employee termination date |
| (continued) |
THRCSDB |
THRCSDB_STU_STATUS |
active/inactive student record |
| password |
load script |
randomly generated |
very long random value |
Appendix C: table copy
This process is run at the start of both the Course and Student Sakai loads. It makes a local copy of the Banner view as a table in the Middleware database. We do this because the Banner data does not contain any indicators to tell us when new data shows up or when data is dropped from the view. We have to keep track of this information on our side to make working with the data easier.

As of right now, only the Student load is setup to remove people from course sites. It calls these two functions to set the tables up for Student removal.

If you noticed in the previous process flows, record state is stored in the Middleware copy of the Banner views. Here is the state diagram that shows the state transitions possible for these records.

A brief explaination of the states:
- added - the record is newly added to the Banner view, add entry to Sakai
- modified - the record has changed since the last time it was seen, change entry in Sakai
- seen - the record was seen in the Banner view but unchanged
- frozen - the record has not been present in the Banner view in the last day
- locked - the record has been frozen for over 4 days, prepare for removal
- deleted - the entry in Sakai has been removed
Appendix D: load courses
This script loads new courses into Sakai. Banner presents a table called SWVITSI that contains all courses available at the University. Each entry is keyed with the following entries: term code, course number, instructor id. This means that each course may be listed multiple times if there are multiple instructors for the course.

Banner - SWVITSI (Custom View)
This custom Banner view contains course inforamtion, one row for each section and instructor per term.
| Column Name |
Description |
Attributes |
Example Data |
| swvitsi_term_code |
character varying(6) |
not null |
200710 |
| swvitsi_term_desc |
character varying(30) |
|
Fall 06 |
| swvitsi_crn |
character varying(5) |
not null |
21063 |
| swvitsi_subj_code |
character varying(4) |
|
BIOS |
| swvitsi_subj_desc |
character varying(30) |
|
Biosciences |
| swvitsi_crse_numb |
character varying(5) |
|
425 |
| swvitsi_section |
character varying(3) |
|
001 |
| swvitsi_title |
character varying(30) |
|
PLANT MOLECULAR GENETICS |
| swvitsi_long_title |
character varying(256) |
|
PLANT MOLECULAR GENETICS AND DEVELOPMENT |
| swvitsi_sect_coll_code |
character varying(4) |
|
NS |
| swvitsi_sect_coll_desc |
character varying(30) |
|
School of Natural Sciences |
| swvitsi_sect_dept_code |
character varying(4) |
|
BIOS |
| swvitsi_sect_dept_desc |
character varying(30) |
|
Biosciences |
| swvitsi_sect_enrolled |
character varying(4) |
|
5 |
| swvitsi_xlst_group |
character varying(2) |
|
L1 |
| swvitsi_xlst_enrolled |
character varying(4) |
|
5 |
| swvitsi_instructor_pidm |
character varying(8) |
not null |
211 |
| swvitsi_instructor_id |
character varying(9) |
|
E06543210 |
| swvitsi_primary_ind |
character varying(1) |
|
Y |
| swvitsi_instructor_last_name |
character varying(60) |
|
Bartel |
| swvitsi_instructor_first_name |
character varying(15) |
|
Bonnie |
| swvitsi_instructor_middle_name |
character varying(15) |
|
null |
| swvitsi_instructor_email |
character varying(90) |
|
user@rice.edu |
| swvitsi_instructor_dept_code |
character varying(6) |
|
008373 |
| swvitsi_instructor_dept_desc |
character varying(35) |
|
Biochemistry & Cell Biology |
| swvitsi_instructor_list |
character varying(512) |
|
Bartel, Bonnie; Braam, Janet |
| swvitsi_time_location |
character varying(256) |
|
01:00PM - 02:15PM TR TBA TBA |
| swvitsi_ptrm_code |
character varying(3) |
|
1 |
| swvitsi_ptrm_start |
timestamp without time zone |
|
null |
| swvitsi_ptrm_end |
timestamp without time zone |
|
null |
| swvitsi_credits |
character varying(4) |
|
null |
This view is built using data from the following Banner sources:
| Table |
Custom/Banner |
Description |
| GOREMAL |
Banner |
Person E-mail repeating table. |
| SCBCRSE |
Banner |
Course General Information Base Table |
| SIRASGN |
Banner |
Faculty Member Instructional Assignment Repeating Table |
| SPBPERS |
Banner |
Basic Person Base Table |
| SPRIDEN |
Banner |
Person Identification/Name Repeating Table |
| SSBSECT |
Banner |
Section General Information Base Table |
| SSBXLST |
Banner |
Cross List Enrollment Information Base Table |
| SSRXLST |
Banner |
Cross List Section Repeating Table |
| STVCOLL |
Banner |
College Validation Table |
| STVDEPT |
Banner |
Department Validation Table |
| STVSUBJ |
Banner |
Subject Validation Table |
| STVTERM |
Banner |
Term Code Validation Table |
| THRCSDB |
Custom (RPTMGR) |
This table is used to build the feed to the campus services database and Rice web directory. |
When SWVITSI is copied to the Middleware database, several additional columns are added.
| Column |
Description |
Example |
| owl_checksum |
character varying(32) |
68073a491ac7c6c40dff362f3f265604 |
| owl_source_code |
character varying(12) |
banner |
| owl_course_site_id |
character varying(100) |
BIOS-425-525-001-F06 |
| owl_status |
character varying(12) |
//*added, modified, seen*, frozen, locked, deleted// |
| owl_last_seen_date |
timestamp without time zone |
2006-10-12 15:00:05.714 |
| owl_modified_date |
timestamp without time zone |
2006-09-06 04:00:11.758 |
| owl_added_date |
timestamp without time zone |
2006-06-16 15:33:14.08 |
| owl_dropped_date |
timestamp without time zone |
note |
| owl_created_date |
timestamp without time zone |
2006-06-17 02:01:02.393 |
| owl_deleted_date |
timestamp without time zone |
note |
Appendix E: load students
This script loads students into courses in Sakai. Banner presents a table called SWVITRG that contains all students at the University. Each entry is keyed with the following entries: term code, course number, student id. This means that each student may be listed multiple times if there are taking more than one course per term.

Banner - SWVITRG (Custom View)
This custom Banner view contains student information, one row for each student and course per term.
| Column Name |
Description |
Attributes |
Example |
| swvitrg_term_code |
character varying(6) |
not null |
200710 |
| swvitrg_term_desc |
character varying(30) |
|
Fall 2006 |
| swvitrg_stu_pidm |
character varying(8) |
not null |
03939482 |
| swvitrg_stu_last_name |
character varying(60) |
|
User |
| swvitrg_stu_first_name |
character varying(15) |
|
Sally |
| swvitrg_stu_middle_name |
character varying(15) |
|
Bogus |
| swvitrg_stu_rice_id |
character varying(9) |
|
S01234567 |
| swvitrg_crn |
character varying(5) |
not null |
39483 |
| swvitrg_subj_code |
character varying(4) |
|
BIOS |
| swvitrg_crse_numb |
character varying(5) |
|
425 |
| swvitrg_section |
character varying(3) |
|
001 |
| swvitrg_status_date |
timestamp without time zone |
|
2006-04-21 17:42:06 |
This view is built using data from the following Banner sources:
| Table |
Custom/Banner |
Description |
| SFRSTCR |
Banner (SATURN) |
Student Course Registration Repeating Table |
| SPRIDEN |
Banner (SATURN) |
Person Identification/Name Repeating Table |
| SSBSECT |
Banner (SATURN) |
Section General Information Base Table |
| STVRSTS |
Banner (SATURN) |
Course Registration Validation Status Table |
| STVTERM |
Banner (SATURN) |
Term Code Validation Table |
When SWVITRG is copied to the Middleware database, several additional columns are added.
| Column Name |
Description |
Example |
| owl_checksum |
character varying(32) |
ce178c07286f57f804669ef091e973cd |
| owl_source_code |
character varying(12) |
banner |
| owl_status |
character varying(12) |
//*added, modified, seen, frozen, locked, deleted*// |
| owl_last_seen_date |
timestamp without time zone |
2006-10-17 15:00:08.235 |
| owl_modified_date |
timestamp without time zone |
2006-09-21 04:07:10.337 |
| owl_added_date |
timestamp without time zone |
2006-08-31 15:22:45.495 |
| owl_dropped_date |
timestamp without time zone |
|
| owl_created_date |
timestamp without time zone |
2006-09-01 02:10:32.325 |
| owl_deleted_date |
timestamp without time zone |
|
Appendix F: CAS & Kerberos
- Modify sakai.properties file

Podcasts
- Session leaders are encouraged to post their podcasts on the main Atlanta Podcasts page (a central repository of podcasts) and may also choose to link to them from their session page. See the main Atlanta conference wiki page for more details.
Additional Information
- Session leaders are also encouraged to appoint a session convener, a podcast recorder and/or a note-taker and post the minutes of their session on a Page (see Add Page link near top-right.)
- Participants and Session Leaders are encouraged to post Comments (see Comment form below) or create additional Pages as needed to facilitate collaboration (see Add Page link near top-right.)
-
- Child Pages for this session (Added Pages will automatically appear in this list)
Rice University
Rice Sakai Instance