Banner/Luminis Message Broker

Enrolment ::: enrol_lmb
Maintained by Eric Merrill
Process courses, users, and enrollments out of Ellucian Banner. Includes support for realtime notifications from Luminis Message Broker, and Glassfish w/Legacy Adapter.

Banner/Luminis Message Broker 2.5.3

Moodle 2.2, 2.3, 2.4, 2.5, 2.6
Released: Friday, November 15, 2013, 9:50 PM
Luminis Message Broker enrollment Module.
Version: 2.5.3
Moodle version: 2.2.0 throught 2.5.x
Maintainer: Eric Merrill (

Project Maintained at

Documentation at

View full change log at

Release 2.5.3
Fix problem where categories were always created hidden with some settings. CONTRIB-4728.

Release 2.5.2
Fixing problem where clean install couldn't be done in Moodle version before 2.5 - Thanks to MDL-37726.
Actually make the list of terms to sort by id number - was supposed to happen in 2.5.1.

Release 2.5.1
Option to obey enrolment restriction dates.
Addition of 3 extra roletypes (03, 04, 05).
Fixing error when logging path location is blank.
Sort the menu of term in Reprocess Enrolments and Prune Tables.
LMB endpoint security must now be explicitly disabled.
For backwards compatibility, if LMB is enabled and no username or password is set, security is set as disabled during the upgrade.
Catch exception thrown when course shortname or idnumbers collide. (CONTRIB-4559)
Less strict status checking when making crosslists. Prevents partial completion.
Records are no longer saved in enrol_lmb_raw_xml when storexml is set to never. (
secure/xmlservice.php (which you probably shouldn't be using...) applies the same security as liveimport.php

Release 2.5.0
Fixing lmbcheck variable name (Good catch from Chris Folin CONTRIB-4263)
Remove depreciated use of make_categories_list (CONTRIB-4299)
Set default language when creating new users (Thanks to Charles Fulton - CONTRIB-4054)
Fixed undefined variable error. (CONTRIB-3940)
Moved minimum Moodle version to 2.2.0.

Release 2.1.9
Fix for logging to a file. (Thanks to Charles Fulton - CONTRIB-3941)
Improve drop for crosslisted courses when crosslist is removed. Rerun XLS Drop Tool.
Fixed DB error in some crosslist cases.

Release 2.1.8
Fix enrol_lmb_plugin->get_config to meet E_STRICT requirements.
Fixed flaw in logic for dropping users from crosslists (and when crosslists are removed) (CONTRIB-3913).
Added tool to cleanup the incorrectly dropped crosslists.
Grades are only recovered if the user is not already installed. Significantly improves bulk import times.
Added custom field mapping. Map XML data to a user custom field. (CONTRIB-3618 - Thanks to Charles Fulton!)
Fixes to group enrolments if courses are deleted and recreated.

Release 2.1.7
Significant performance increase when processing on large site. Added indexes to common columns.
Add option force password, or set it only on user creation.
Fix to cron file processing (CONTRIB-3702)
Possible problem with crosslist groupings. (CONTRIB-3698)
Problem during call process_enrolment_log in enrol_lmb_force_course_to_db. (CONTRIB-3699)
Removed calls to print_header (depreciated). (CONTRIB-3701)
Fix various missing variable errors. (CONTRIB-3700)

Release 2.1.6
Option to restore old user grades during re-enrollements.
Fixed problem where settings may be lost during upgrade from Moodle 1.9.x and below to Moodle 2.x (CONTRIB-3626).

Release 2.1.5
Fixed problem where users may be dropped from cross lists when dropped from one member course (CONTRIB-1728).
Option to set domain comparison to case-insensitive.
Added option to ignore capitalization for email domains. (Thanks to Charles Fulton)
Option to disable enrolments instead of deleting them.
Tools moved into the settings block hierarchy (Site Administration>Plugins>Enrolments>Banner/Luminis Message Broker>Tools).

Release 2.1.1
Changed code to match moodle style guidelines.
Changed storage of raw XML to serialize format instead of print_r
Fixed possible fetal error with add and drop. Fixed bug that cause skipping of cross lists.
Fixed error with handeling of course section count calculation.
Adds lmb instance to courses found without it.
Added code to process folder on cron.
Add option to disable % logging for batch operations.
Logging made more efficient.
Added tools to process folders and files from the command line. See enrol/lmb/cli.

Release 2.1.0
Renamed tables to match Moodle conventions, adding enrol_ to the front of table names:
lmb_courses => enrol_lmb_courses
lmb_people => enrol_lmb_people
lmb_enrolments => enrol_lmb_enrolments
lmb_raw_xml => enrol_lmb_raw_xml
lmb_crosslist => enrol_lmb_crosslists (NOTE: added 's' to the end also)
lmb_terms => enrol_lmb_terms
lmb_categories => enrol_lmb_categories

If you use any additional scripts that access these tables, they will need to be updated. You can find them
by using the regular expression: (?
Removed unused functions - check code compatibility:
enrol_lmb->lmb_assign_role (use lmb_assign_role_log)
enrol_lmb->lmb_unassign_role (use lmb_unassign_role_log)

enrol_lmb_reset_all_term_enrolments renamed to enrol_lmb_retry_term_enrolments

Fixed Version display and link to tools on LMB settings page.
Fixed error in drop percent calculation for bulk processing.
Fix get string errors in tools.
Fix errors in tools breadcrumbs.
Fix set_url() error on tool pages.
Fixed context errors on tool pages.
Enrollment processing during course update does not show creation/update error.
Set some missing defaults in upgrade.php.
Fixes to some settings using the incorrect enrol/lmb plugin name. Settings migrated to enrol_lmb.
Fixed Buisness hours minute fields not working correctly.
Fixed defaults in various setting items.
Defaults now shown for ims role mapping.
Sets new users default country to whatever the sitewide config is.
Completed prune raw xml in "Prune LMB Tables" tool.
Decresed insert count on enrolment update.
Added optional_param to importnow.php to skip filetime check (add ?force=1 to url).
Added options to skip parsing of different types (person, course, crosslist, enrolments)

This enrollment plugin can digest XML from the Luminis Message Broker, allowing realtime Banner to Moodle integration,
as well as full XML extractions from Banner.

You can use this module with or with Luminis Message Broker. If you do not use Luminis Message Broker, you can instead use
this module to import XML files from banner on a manual or automated basis.

This is a heavily modified version of the IMS Enterprise plugin.

Unlike the Moodle 1.5 version of this module, the current can be almost completely customized from with the standard Moodle
configuration pages. If you need to make changes for your specific install, please let me know, so I can look into making it
into a preference item (also take a look at the todo list below).

1. Copy enrol/lmb into the enrol/ directory on your Moodle server.

2. Login to your Moodle server as an admin user, and visit the 'Notifications' page. Moodle will automatically setup the
tables for this module.

3. Under Course->Enrolments edit the settings for Luminis Message Broker.
NOTE: You must save the setting at least once, even if you don't make any changes, before you use this module. This is a
bug that will be fixed later.

If you are updating from a version of the Banner/LMB module before 0.8.1, please delete moodle/lang/en_utf8/enrol_lmb.php
and moodle/lang/en_utf8/help/enrol/lmb

You can configure, through the Luminis Message Broker interface, the LMB module to be a HTTP consumer. You should point it to
enrol/lmb/secure/liveimport.php on your Moodle server, and enter the LMB Security Username and Password that you entered in the
module settings. You should only use SSL (HTTPS) to ensure security of the interface.

When used with the Luminis Message Broker, you will generally import a complete XML from banner before the start of a
term/semester, and the Luminis Message Broker will continuously send messages that will keep Moodle up-to-date throughout the term.

If you are using this module without Luminis Message Broker, you can configure the module to import a full XML file on a regular
basis. To do this, call importnow.php from a script or cron, much in the same way that the Moodle cron is polled.

You should disable users from being able to change the course and user idnumber fields, these are used to reference courses.

When doing mass imports, terms should come before courses and then crosslisted courses, users should come before enrolments (which
need to come courses and crosslistsing). There are tools in work that will make this order less important.

Place a directory at the XML Folder path that you have specified in the settings. In this folder, place any XML files to be
processed (must end in .xml), as well as a empty file called 'start'. The 'start' file and directory must be writable by
the webserver.

When this is complete, you call extractprocess.php to preform the extract.

When the processing starts, the module will remove the file 'start', and create a file called 'processing'. After extract processing
has completed, the 'processing' will be removed, and a 'done' file created. These status files allow people/scripts to check the
state of the run. It is important that the XML files are not modified/replaced while the extract is processing, or inconsistent
results may occur. Should a problem occur during extract, such as the processor dies, or the XML files are inadvertently
modified/removed, it is safe to re-process the extract with a consistent set of XML.

In the event an incomplete XML set is processed, students/instructors may be inadvertently removed from their courses. Re-processing
with a complete XML set will reinstate users into their courses and no data is lost.

View github for newly changed items

Version information

Version build number
Version release name
Can be updated from
2.1.0 (2012040101), 2.1.1 (2012040101), 2.1.5 (2012040101), 2.1.6 (2012040101), 2.1.7 (2012060702), 2.1.8 (2012091202), 2.1.9 (2012091203), 2.5.0 (2013050801), 2.5.1 (2013080202), 2.5.2 (2013091700), 2.5.2 (2013091700)
Can be updated to
2.6.0 (2013110400), 2.6.1 (2013121800), 2.6.1 (2013121800), 2.7.0 (2014050700), 2.9.0 (2015091700), 3.0.0 (2016021000), 3.1.0 for Moodle 2.8.0-3.1.x (2016042810), 3.3.0 (2017073100), 3.3.1 (2017080900), 3.4.0 (2018011100), 3.4.1 (2018042500), 3.8.0 (2018042501)
Stable version
MD5 Sum
Supported software
Moodle 2.2, Moodle 2.3, Moodle 2.4, Moodle 2.5, Moodle 2.6

Version control information

Version control system (VCS)
VCS repository URL

Default installation instructions for plugins of the type Enrolment

  1. Make sure you have all the required versions.
  2. Download and unpack the module.
  3. Place the folder (eg "myenrol") in the "enrol" subdirectory.
  4. Visit to finish the installation