Enrollment Reporting

Enrollment Reporting

by Scott Grogg -
Number of replies: 5
Hello all:

Have an interesting situation that we could use some immediate help with!  We have an IT guru that works on manual enrollment of students into courses each term (approximately 100 courses).  The process is a bit slow, tedious, and takes precious time away from his other responsibilities. 

Your first reaction may be, why don't we use an external database, ldap, or some other form of enrollment.  Well, simply because exporting information from our student management system (Univers by EDC) is not so easy, not too mention the time of converting the data into a usable format for an external database.  Not too mention with the amount of drop/adds into each course is significant each term, which means exporting the data and cleaning it up again.  We kind of figure this may take more time than the guru doing the manual enrollment.

To streamline our manual enrollment process, we would love to have some type of reporting in Moodle to compare with our student management system.  The report would allow us quick, easy, printable access to course rosters, who was added/dropped during the term and even on specific days. 

All of this may be more than Moodle can give us right now.  So, does anybody have any ideas of making our enrollment process easier/quicker?  I can honestly say that we can not make use of the enrollment key process.

Thanks for the help!

Scott Grogg
Online Academic Program Coordinator
Warner Southern College
http://online.warner.edu
Average of ratings: -
In reply to Scott Grogg

Bulk Import Code Was Re: Enrollment Reporting

by Gavin McCullagh -
Hi,

I'm in the IT Services Department in Griffith College Dublin and I have had the same problem.  We have a central college admin database which we must pull records from.  In our case, most of that data has to be synchronised hourly every day.

So, we do an hourly export from the other system into a set of CSV files.  I have written a set of Perl/sh/Make scripts which are then run to check if any data has changed and sync Moodle to the CSV files.  Happily, it has been decided that we should give back this work to the community. 

To be honest, I haven't had much time to tidy it up yet but it seems like now is the time when it might be most needed so I'm putting it up here:

http://moodle.gcd.ie/~gavinmc/moodle_import_utils/

A number of things need to be done including proper use of Perl modules (instead of just copying tracts of code), better documentation and a few other things.  However, if anyone wants it now, they are very welcome.  I would ask that you send me an email (see address in source code) if you are using it so that I can take account of that when making changes.

Feedback would be very much appreciated.  I'm not the greatest programmer in the world, but I'd like anything that makes me better. Be warned that I won't have much time for supporting it so you can email me with suggestions or problems but don't necessarily expect swift responses.

Gavin

In reply to Scott Grogg

Re: Enrollment Reporting

by Martín Langhoff -
We extract data from Student Management Systems, and put them into LDAP or a database -- we do this for several tertiaries. An example of our scripts can be found in cvs:/contrib/artena_sms .

OTOH, if what you actually want is reporting, get an external reporting package (crystal reports or similar) to read the Moodle database, and generate those reports for you. A simpler option would be to install PHPMyAdmin or PHPPgAdmin and run queries against the Moodle database.

The schema for the tables is trivial to understand, you'll want to look at user, course, user_students and perhaps log.
In reply to Martín Langhoff

Re: Enrollment Reporting

by Gavin McCullagh -
It seems like our work has overlapped somewhat. This is almost certainly my fault for not searching CVS hard enough or asking the right questions online.

However, it has seemed to me for some time that there is a market for a set of libraries/utilities for using/accessing/editing moodle from scripts or the command line. I'm quite sure most moodle users would have little or no interest in command line utilities, but it would be a huge benefit to me and I don't imagine I'm alone.

We have both written ad hoc scripts to do this. Yours are much tidier than mine I must admit although mine may have a little more function, enrolling lecturers, adding images etc. I have put my code up and will happily put check it into cvs:/contrib/ if anybody considers it useful.

Do you think it would be worth trying to develop a Perl library for this with a set of command line utils, etc? Have you come across many people who would benefit from this?

Gavin

In reply to Gavin McCullagh

Re: Enrollment Reporting

by Martín Langhoff -
There's always a lot of overlap -- FOSS makes it visible, and possible to share. Redundancy in the short term, saved effort in the long term ;)

We have a base set of utilities we adapt a bit for projects. At Catalyst, we are doing a lot of work as part of the NZVLE project, covering NZ with Moodle so to speak.

The scripts you see there are a simple set -- which is usually the best when choosing something to base your work on. I'll probably be adapting them this coming weeks to deal with plain CSV files.

A far more tricky set of import/export scripts from the same ancestry, but using odd CSV files to feed LDAP, can be found at http://mach.eduforge.org/cgi-bin/archzoom.cgi/arch-eduforge@catalyst.net.nz--2004/sears-ldap--dev--1.0--patch-100

I like the trick of using Makefiles. We ended up having a very paranoid set of bash script controlling the process. Make is of course more conservative on failures by default.

My take at the moment is that a few sample scripts to get people started are the key part. I'll be embellishing them slowly with tried-and-true bits, and people can run away with them, and customize them to their needs. Not all in life is abstraction, regardless of what the OOP pundits want to sell big grin
In reply to Martín Langhoff

Re: Enrollment Reporting

by Gavin McCullagh -
Fair enough.

I like the trick of using Makefiles. We ended up having a very paranoid set of bash script controlling the process. Make is of course more conservative on failures by default.

The purpose of make was two-fold.  One is to have things stop on failure.  More importantly for me though was that my script run hourly and I don't want them all to run every hour.  I only want each script to run if its data has changed.  I also want the modularity of make targets so I can run "make hourly" to get the important data across (eg new accounts) but run "make daily" to get a more complete (ie slower) sync late at night.

My take at the moment is that a few sample scripts to get people started are the key part. I'll be embellishing them slowly with tried-and-true bits, and people can run away with them, and customize them to their needs. Not all in life is abstraction, regardless of what the OOP pundits want to sell.

Perhaps you're right.  It seems like it would be handy for people to be able to use a simple bash script to add a set of users from a file.  If a few command line utils like "mdl_addusers" were available, that would make life simpler for them. 

Anyway, I'll plug away with what I have and see where I get -- time permitting and so forth.

Thanks,
Gavin