Limitations of adding courses manually to SmartSite

Current Status and Problem

Courses are created manually via an internal sakai account (sitemaker). This account has maintain access, but not administrative access. Due to these access issues, the sitemaker account has a limitation in that it can only create sites via the Worksite setup tool. The worksite setup tool pulls from sakai.properties values for its data (and other configuration settings such as sitesetup.xml), which are not synchronized with Banner external data. This results in limited ability to select and/or data enter appropriate terms, courses, etc.

How one is able to create course sites in Sakai

Currently, there are two mechanisms for creating course sites in Sakai. These are:
1. Sites tool: for admins, allows complete control of creating site (including siteid). This method only allows users to create sites, but the respective tools and pages are not included.
2. Worksite Setup tool: for maintainers, allows users to create sites of certain types. These types can be controlled via the sitesetup.xml configuration and other means (e.g. realms). By creating sites in this manner, the user is prompted to select their given term, and define what course number to give the site. The user has no control over the site id, as it is automatically generated using this mechanism.

*Note, using both the above methods *does not set a provider id for the site. The provider id allows the providers to detect that they need to "look up" information for this site.

Current Manual Course Creation Strategy

Courses are created as a type "course". Here are some "brief" steps.
1. When creating the course site, there is a dropdown for the term. The user selects this term, which currently is controlled by the sakai.properties configuration file in the tomcat instance.
Problem: this data is not synchronized with external Banner data, so only one term may appear that may be applicable (e.g. dropdown says Summer 06, when really it should say Summer Session II).
2. User then is prompted for how the roster should be established. The user is then asked to select something like " 2005,FALL,SMPL,001,001" or "Choose user roster not listed from above". The user selects the roster not listed from above.
3. User is asked to fill in (textbox) the "Subject","Course", and "Section" for this course site.
Problem This is ad-hoc, and user's have limited space to add the course information. Again, this is entirely controlled by parameters set in the sakai.properties file.
4. The user is asked to add more rosters, and authorization person's name if necessary. Usually rosters are not added, and authorizer's name is something like kdalex@ucdavis.edu.
5. From here, the course site is created with a default tool set the user selects from.
6. After site is created, rosters are added to it (via MyUCDavis,etc)
Problem Rosters are still not dynamic, as providers have not been compeletely enabled
7. End result: Tab has something like BIS 01A 001 Su06 because of the limited characters, and abbreviations of terms pulled from the sakai.properties information.
Problem Sites cannot be reconciled easily, and content cannot be migrated easily in the future unless changes are made to more closely resemble our batching mechanism.

Current Batching Strategy

The batching mechanism is in the ucd-enterprise-data module in UC Davis' svn repository, and is implemented via quartz. Batching has yet to be QA tested, but essentially goes "hand-in-hand" with the providers because the one thing that the batching process handles is assigning a "provider id" for course sites. In relation to the manual course site creation, the batching mechanism introduces some different functionality. Currently each CRN is its own site in Sakai, and only CRNs with rosters are created at batch time.

1. creates course site "skeleton" with the following attributes:
i. creates site id with a pattern of TERMCD and CRN. An example is 20061012345
ii. creates a site title (tab) with the pattern (this is a MAJOR difference from the manual process)
iia. SUBJ COURSENUMBER SECTION TERMABBREVIATION TERMYEAR (e.g. BIS 001A 001 SSS WQ06)
ProblemTERMABBREVIATION is given below as the associated abbreviations for the terms. This is an internal mechanism to Sakai as a lookup mechanism.
Here is the logic for TERMABBREVIATION resolution, described in code:
if (TermIdentifier.equalsIgnoreCase("01")) return "WQ";
else if (TermIdentifier.equalsIgnoreCase("02")) return "SSEM";
else if (TermIdentifier.equalsIgnoreCase("03")) return "SQ";
else if (TermIdentifier.equalsIgnoreCase("04")) return "ES";
else if (TermIdentifier.equalsIgnoreCase("05")) return "SS1";
else if (TermIdentifier.equalsIgnoreCase("06")) return "SSS";
else if (TermIdentifier.equalsIgnoreCase("07")) return "SS2";
else if (TermIdentifier.equalsIgnoreCase("08")) return "SUQ";
else if (TermIdentifier.equalsIgnoreCase("09")) return "FSEM";
else if (TermIdentifier.equalsIgnoreCase("10")) return "FQ";
else return "ALT";
iii. adds site information also (e.g. description, long description, etc)
2. adds tools and pages to the site (from a sakai.properties configuration), see example set
3. creates the site so that providers can "kick in" and create rosters, roles dynamically

What should happen

1. We should modify our existing course site titles to reflect those of the batching process, so that there is minimal confusion between an Su06 site (intended on being Summer Session I), and say a Su06 site (intended on being Special Summer Session).

2. We should change the following properties in sakai.properties to reflect our external data. Note, that this synchronization is enabled in Sakai 2.2 via the site manage functionality.
Here is an example of some of the properties we should change.
**course management information (term)
termterm.count=17
termterm.1=FALL
termterm.2=WINTER
termterm.3=SPRING
termterm.4=SPRING_SUMMER
termterm.5=SUMMER
termterm.6=FALL
termterm.7=WINTER
termterm.8=SPRING
termterm.9=SPRING_SUMMER
termterm.10=SUMMER
termterm.11=FALL
termterm.12=WINTER
termterm.13=SPRING
termterm.14=SPRING_SUMMER
termterm.15=SUMMER
termterm.16=FALL
termterm.17=WINTER

**course management information (year)
termyear.count=17
termyear.1=2003
termyear.2=2004
termyear.3=2004
termyear.4=2004
termyear.5=2004
termyear.6=2004
termyear.7=2005
termyear.8=2005
termyear.9=2005
termyear.10=2005
termyear.11=2005
termyear.12=2006
termyear.13=2006
termyear.14=2006
termyear.15=2006
termyear.16=2006
termyear.17=2007

**course management information (term abbrev)
termlistabbr.count=17
termlistabbr.1=F03
termlistabbr.2=W04
termlistabbr.3=Sp04
termlistabbr.4=SpSu04
termlistabbr.5=Su04
termlistabbr.6=F04
termlistabbr.7=W05
termlistabbr.8=Sp05
termlistabbr.9=SpSu05
termlistabbr.10=Su05
termlistabbr.11=F05
termlistabbr.12=W06
termlistabbr.13=Sp06
termlistabbr.14=SpSu06
termlistabbr.15=Su06
termlistabbr.16=F06
termlistabbr.17=W07

**course management information (current term?)
termiscurrent.count=17
termiscurrent.1=false
termiscurrent.2=false
termiscurrent.3=false
termiscurrent.4=false
termiscurrent.5=false
termiscurrent.6=false
termiscurrent.7=false
termiscurrent.8=false
termiscurrent.9=false
termiscurrent.10=false
termiscurrent.11=false
termiscurrent.12=true
termiscurrent.13=false
termiscurrent.14=false
termiscurrent.15=false
termiscurrent.16=false
termiscurrent.17=false

**course management information (start and end of terms)
termstarttime.count=17
termstarttime.1=20030901000000000
termstarttime.2=20040101000000000
termstarttime.3=20040501000000000
termstarttime.4=20040515000000000
termstarttime.5=20040801000000000
termstarttime.6=20040901000000000
termstarttime.7=20050101000000000
termstarttime.8=20050501000000000
termstarttime.9=20050515000000000
termstarttime.10=20050801000000000
termstarttime.11=20050901000000000
termstarttime.12=20060101000000000
termstarttime.13=20060501000000000
termstarttime.14=20060515000000000
termstarttime.15=20060801000000000
termstarttime.16=20060901000000000
termstarttime.17=20070101000000000

termendtime.count=17
termendtime.1=20031201000000000
termendtime.2=20040501000000000
termendtime.3=20040801000000000
termendtime.4=20040801000000000
termendtime.5=20040901000000000
termendtime.6=20041201000000000
termendtime.7=20050501000000000
termendtime.8=20050801000000000
termendtime.9=20050801000000000
termendtime.10=20050901000000000
termendtime.11=20051201000000000
termendtime.12=20060501000000000
termendtime.13=20060801000000000
termendtime.14=20060801000000000
termendtime.15=20060901000000000
termendtime.16=20061201000000000
termendtime.17=20070501000000000

3. Additionally, we should modify the default length of the course, subject , and section text fields in the worksite setup UI so that we can have more flexibility. This is now done via the CourseManagementProvider impl of the getCourseIdRequiredFieldSizes():

public List getCourseIdRequiredFieldsSizes()
{ List rv = new Vector(); rv.add(new Integer(8)); rv.add(new Integer(3)); rv.add(new Integer(3)); return rv; }