Ellucian Source Code Repository

Ellucian delivers the source code to the Banner product to its customers. For shell scripts; C, COBOL, and Java programs; and database packages, procedures, and functions; the source code is installed on the Banner job submission server in the $BANNER_HOME directory. Banner 9 source code is delivered differently; this is described in Ellucian's FAQ here: https://ecommunities.ellucian.com/docs/DOC-3371.

For Banner 9 source code, Ellucian allows one user to submit an RSA public key and will grant that user read-only access to the source code for all products licensed to the user's institution. The user is responsible to clone Ellucian's git repositories and to make those repositories available to the institution's development staff; the user must also regularly fetch updates from Ellucian's repositories to keep the local clone(s) current. Previously, this was a manual process. With assistance from Strata Information Group (SIG), Oakland University has set up an automated process to manage this.

XE_Mirror utility

A SIG utility was installed on the ESM server (ea-besm-p01.sys.oakland.edu) to mirror the Ellucian Banner source code repositories. The utility checks every 6 hours with Ellucian for updates, and fetches them to the ESM server. Once there, the utility uploads the updates to Oakland's Gitlab system (code.oakland.edu). Oakland's development team may in turn clone the repositories they need from GitLab, create their own branches, modify code, and push their updates back to Gitlab.

The xe_mirror utility is installed in /opt/xe_mirror. It is written in the Ruby language, and is slightly modified from SIG's standard deployment to account for how Oakland has deployed Gitlab in their environment. Installation of the utility also created a systemd unit file so that the utility would automatically start when the ESM server is rebooted. Messages from the utility are logged in /var/log/messages.

The ESM server's mirror of the Ellucian repositories is located in /home/mirror/mirror. The contents of this directory should NEVER be modified, except by the xe_mirror utility.


Since the utility starts automatically at boot time, there should be no need to manually start or stop it; however, the following commands can be used to manage it.

Start the xe_mirror utility:

systemctl start xe_mirror

Stop the xe_mirror utility:

systemctl stop xe_mirror

Check the status:

systemctl status xe_mirror

Tail the log:

journalctl -fu xe_mirror.service


Should Oakland need to migrate their ESM software to a new ESM server, they will need to install this utility there as well. It may be downloaded from http://r.sigcorp.com/xe_mirror/xe_mirror-4.1.2-1.amzn1.x86_64.rpm, and installed by root using the command:

yum install xe_mirror-4.1.2-1.amzn1.x86_64.rpm

This will create the mirror user in the operating system, install the baseline xe_mirror utility and set up the systemd unit files; however, it will not include Oakland's configuration, nor the modifications that were needed to accomodate Oakland's Gitlab system. It may also expect the utility to download Ruby gemfiles upon first access, and this may fail if network security does not allow the traffic. To avoid issues, the following should be copied from the old ESM server to the new after installation:

  • all content in /opt/xe_mirror

  • all content in /home/mirror


There should be no need to modify the configuration unless Ellucian creates a new source repository to which Oakland does not have access, and even then, the modification would only be for the purpose of reducing error messages that could be ignored if they were to occur.

The utility's configuration file is /opt/xe_mirror/mirror_conf.yml. It contains three sections:

  • mirror - this indicates where the mirror software is installed, and where the public key for accessing Ellucian's repository is located.
  • gitlab - this indicates where Oakland's Gitlab system is located, and the token used by the utility to access it.
  • skip - this lists Ellucian repositories to which Oakland does not have access. If you need to bypass an Ellucian repository for this reason, you can modify the configuration file to add that repository to the list.