Our situation is we have installed Moodle for a client that has over 5000 users. Up until now the client was happy for the users to just find their courses in the catalogue and take them. It's now apparent that many users are taking the wrong courses so forced enrolments has been requested as an urgent requirement.
We upload and update our users through the bulk upload feature each month. We create a csv file of the user data from a file we receieve from their HR department. We aren't allowed to link directly to their HR database so therefore some of the other authentication types/enrolment plugins have been ruled out.
So, for example, if we were to enrol users on a course based on their department, the only way I can think of making enrolments work is to take our csv file into excel, filter it down into departments then (via a lot of copy and pasting), map all the course ids to the relevant user ids in order to create the flat text file needed for the enrolments.
Another related issue, is that I can't understand why Moodle doesn't support 'global' groups (not the course groups which Moodle does support). I would have thought it would be such an essential feature. Or am I missing something?
It would make life so much easier if you could create a group based on department. So let's say we have 2 groups - Admin and Sales and we have 2 courses (Course 1 & course 2). Admin employees need to take course 1 and Sales staff need to take course 2. If enrolment by global group was supported, you could simly enrol the Admin group on course 1 and the Sales group on course 2 and there'd be no need to use the flat file.
Has anyone had a similar scenario and how did they work around it? And how do organisations typically overcome the global groups and enrolments issue?
Any help here would be greatly appreciated. I apologise if this isn't very clear and i'm happy to try explain further if necessary.
Many thanks in advance.
Lots of people are leveraging LDAP for very specific group/class info integration.
Or you could just integrate that information into the process you are using to create enrolment flatfile. (Like some script picks out all the people in Admin Department from your authoritative "system of record" and enrols them into Class 1 and picks out all the people and puts them into Class 2 defined by the flatfile).
So when people use external database or LDAP for loading enrolments am I correct in thinking they'd also need to build a front end (web) interface to manage that database? And i'm presuming that if we wanted the client to manage enrolments we'd need to create a seperate login system for that also? Sorry if this seems like a simple question but I just don't understand the process and can't find anything on the forums.
Also, the script you mention - could this be written within Excel? (not by me)
I was just doing a little reading on the Flat file enrollment option and stumbled onto your post here.
A couple of observations:
1. In response to your query about groups, actually I think what you have proposed here is possible. You can put the information you have, "Admin" and "Sales" into one of the profile fields (Department, for example) and then with Bulk user actions filter for either "Admin" or "Sales", add the results of the filter to your selection and then choose the "Enroll to courses" option found under the "With selected users..." pulldown menu. Note - you could also create some new user profile fields, populate them with the values you want to use, and then filter based on those values, as well.
2. I think you are correct in assuming that a front end for the database used for enrollments is desirable. We are currently working on something like this using a package called Xataface and are actually setting it up to use a table we've added in the Moodle database.
3. As for the "script" in your Excel file, I think you could just use some calculations in Excel to ease the process considerably. It's hard to say for sure without knowing what fields and values you have in your database but you should be able to use some text based calculations in conjunction with the filters built into Excel to make the process easier. (The "if" operator is the one that first comes to my mind.)
Hope this helps a little.
This is quite a late reply, like you I was doing some reading about enrolments and came across this thread. Are you sure that "Enroll to courses" is an option under "With selected users" in Bulk User Actions? It's not in my 1.9 or 2.0 sites. Is it something that can be enabled?
I'm only three years late, and you've probably found a solution already, but if I'm understanding your case correctly, then I think you can enroll the users into courses during the bulk upload. This works for new users as well as existing users.
From the help file:
Enrolment field names (optional): The course names are the "shortnames" of the courses - if present then the user will be enrolled in those courses. "Type" means type of role to be used for associated course enrolment. Value 1 is default course role, 2 is legacy Teacher role and 3 is legacy Non-editing Teacher. You can use role field instead to specify roles directly - use either role short name or id (numeric names of roles are not supported). Users may be also assigned to groups in course (group1 in course1, group2 in course2, etc.). Groups are again identified by its names or ids (numeric names of groups are not supported).
course1, type1, role1, group1, course2, type2, role2, group2, etc.
Updating existing accounts
By default Moodle assumes that you will be creating new user accounts, and skips records where the username matches an existing account. However, if you allow updating, the existing user account will be updated.
When updating existing accounts you can change usernames as well. Set "Allow renames" to Yesand include in your file a field called
Warning: any errors updating existing accounts can affect your users badly. Be careful when using the options to update.
I know this only because I had to figure it out myself. ;)
Moodle is commonly used by colleges and universities. They _already_ have systems whose job is to know which students are enrolled in which courses. Moodle interfaces with these Student Information Systems (SIS's) to get the right students into the right Moodle courses. Moodle does not typically interface with HR systems, because these systems are for faculty and staff, not students.
As far as departments, SIS's are usually concerned with English or Math, not Admin or Sales. Your situation where "All admin users take class 1 right now, and all sales users take class 2 right now" is rare or unknown in education.
So Moodle is expecting another system to tell it who's enrolled in what class. Your client should be telling you who's where. They are the owners of the data and the groups, not you.
Does that help?
The enroll plug-in allows you to send a welcome message when students are enrolled using the flat file. Where is that message saved/how can you edit it?