Skip to end of metadata
Go to start of metadata

Redirection Notice

This page will redirect to Integrations.

Table of Content


If you want to integrate LAMS and an LMS without all the detailed explanation, then scroll down to the "Integration Code" section.

If you want to know what you are doing and how the integration works, read all the sections in this guide.

You should read this guide if you wish to integrate LAMS with an existing or new:

  • Blackboard 7.3+
  • Moodle 1.6.3+ (Including Moodle 1.7)
  • Sakai 2.3+ 

How does LAMS work with these LMSs?

The integration has been designed in a way that you only need to maintain your existing LMS. Once you integrate LAMS with your favorite LMS, LAMS will become a pseudo slave of your LMS and little to no maintanance is required on the LAMS side.

General overview

The LAMS-LMS integration is quite straight forward. In all cases we have developed a small connecting module in the LMS that acts as a bridge between the LMS and LAMS. This LMS LAMS Module will have to be installed in the LMS if you want to integrate it with LAMS.

This LMS integration modules are maily responsible for the following:

  1. Work as liason between the LMS and LAMS
  2. Call the LAMS webservices to get information about sequences and classes
  3. Provide interface for LAMS Monitor and Authoring
  4. Provide the authentication for LAMS (using a hash generated on-the-fly)
  5. Provide an interface for LAMS to get basic information about users (username, first name and last name)
  6. Behaves in the LMS just like any other LMS' tool (deploys, admin, display, etc -according to the functions available in each LMS)

Getting LAMS and the LMS to communicate

As you can see in the graph above, there's communication bothways between LAMS and the LMS. So both have to be configured to "connect" to each other.

On the LMS Side, the LMS LAMS Module needs the following:

  • A server_id
  • A server_key (which you need to ensure you keep private and secure)
  • The URL where the LAMS server is install
  • A name by which your users know the add activity screen in Moodle (e.g. "Add Activity" or "Moodle").

That's it!

On the LAMS side you need to:

  • Login in LAMS as system administrator (the user you use when installed LAMS) and setup the details on the Maintain Integrated Servers screen.

General and System Requirements


  • LAMS v2.0
  • Any of the LMS versions mentioned above (see system requirements according to the LMS you use)
  • The Moodle LAMS Module (see Downloads). For LAMS v 2.0 you must use the "lamstwo" module, not the "lams" module used for LAMS 1.0.2.


You can install LAMS and the LMS in the same server or on separate servers. It really depends on your setup, the size of the classes you have, the concurrency of users, size of the server, etc. If you need general advice on this, ask in the Tech forum in the LAMS Community.

Network setup:

If you are installing LAMS and the LMS in two separte physical machines, you need to ensure that from both server you can make http calls on port 80 since the two servers "talk" to each other over webservices.

Moodle Integration code

Useful Animation

Before you begin the LAMS2.0 and Moodle 1.6.3+ integration, have a quick look at this animation

See the downloads page.

Installation instructions

  1. Unzip the file
  2. Move the lamstwo directory to moodle/mod/
  3. Move the lamstwo.php file to moodle/lang/en_utf8/
  4. Login as admin and go to admin, LAMS tables will be created automatically. In Moodle 1.7, you can go to the admin screen by changing the url to "http://<moodleserver>/moodle/admin/" (if you access Moodle as "http://<moodleserver>/moodle/") or "http://<moodleserver>/admin/" (if you access Moodle as "http://<moodleserver>/").
  5. Go to modules and click settings for LAMS2 module and put the proper values in (as shown below)

When the Moodle module is installed in step 4. you should see output like:

Quick visual walkthru LAMS Integration with Moodle

Here are the steps you need to take to get LAMS and your LMS (in this case Moodle) to be integrated. In this example they are on the same server (my local PC) but that was only because it is easy for me to create a screenshot on my own PC.  I have LAMS installed on port 8080 and Moodle 1.7 installed on port 80.
OK, now let's get it on with the integration:

In the LAMS side

1. login in LAMS as a sysadmin (the user that you created at installation time)

2. Select the "Sys Admin" link.

3. Select "Maintain Integrated Servers".

4. Setup the fields as appropriate.

  • Id: this is the server identification string that we will use to individually identify the LMS server that will be "talking" to LAMS.
  • Key: this is the secret key that both systems will be used to encrypt the hash when doing authentication. Make sure you keep your server key private
  • Name: the server name
  • Description: a meaningful server description
  • Prefix: the prefix that the usernames will have in LAMS. (usually just one or two letters will do)
  • Organisation: Either use an existing Group within LAMS (from the Group Adminstration screens) or create a new Group.
  • User Information URL: This is the callback userinfo URLthat is used by LAMS to retrieve personal information about the user from the LMS.
  • Timeout URL: A webpage that should be displayed if the LAMS/Moodle timeout trying to talk to each other.


User Info URLS


If you run Moodle using "http://<moodle_server>/moodle/" then the URL is

If you run Moodle using "http://<moodle_server>/" then the URL is


If you run sakai using "http://<sakai server>/portal/" then the URL is
http://<sakai server>/sakai-lamstwo-tool/servlet/UserDataServlet?username=%username%&timestamp=%timestamp%&hash=%hash%

On the LMS side

1. Go to your configuration menu and click on the LAMS settings

2. Enter the LAMS server URL, server_id, server_key and request_source.

When a teacher runs the LAMS authoring client (when adding an activity) and the teacher saves a sequence, the "Saved" message will have a button "Close and return to {request_source}". If this button is clicked, then the LAMS authoring client will close and the list of sequences on the add activity screen will update automatically. So the request_source should be set to a name that your users understand e.g. "Moodle", "the add LAMS activity screen". This feature will be added in LAMS 2.0.1 - you will not see the message in LAMS 2.0. Have a look at MoodleSaved.jpg to see how the message appears.


Make sure you keep your sever_key private as that is the key used for authentication

3. Click the "Validate" button to make sure it is configured correctly. LAMS should already be running - the validation test will call LAMS to ensure that the two systems can communicate.
4. If it validates okay, then click Save changes.

That's it. You are done.

Now you can go and add sequences and activities to your Moodle courses!

LAMS Integration with Sakai 

Source Installation

1. Follow the instructions in the Install Guide for Sakai 2.4.  For those using Sakai 2.3.x, please follow the previous Installation Guide.

2. Checkout the sakai-lamstwo project from the cvs repository.

    Configure your cvs client as follows :

    access method: pserver
    user name: anonymous
    server name:
    location: /usr/local/cvsroot

    You will need to place the project under the sakai-src folder.  This is required since the project references the master/project.xml file.

3. Add the following lines to the files. This file should be located in your home directory.


4. From the sakai-lamstwo directory, run the command

    maven bld dpl

5. Add the following lines in the file. This is located in the CATALINA_HOME/sakai directory.

    lamstwo.serverId = <server id>
    lamstwo.serverKey = <server key>
    lamstwo.serverAddr = <lams server address>
    lamstwo.requestSrc = <request source>

    Substitute <server id>, <server key>, <lams server address> and <request source> with appropriate values

6. Start Tomcat and check for any start up errors.

7. Configure the LAMS side of the integration. Please refer to the previous Moodle heading under "On the LAMS side".

LAMS Integration with Blackboard

 The LAMS2-Blackboard integration was developed with Blackboard Version 7.3, but it should be compatible with all 7.x versions.

Installation Steps

  1. Follow the steps at in the Blackboard Setup guide to install Blackboard. Make sure you follow the correct setup guide for your version as the installation steps can change from version to version. The setup guides can be found at
  2. Download lams2-bb-plugin.war from the downloads page.
  3. Login to Blackboard as Administrator.
  4. Navigate to System Admin->Building Blocks->Install Building Block
  5. Click on Browse, locate lams2-bb-plugin.war then submit.
  6. Go back to the Building Blocks page, you should now see an entry in the list of Building Blocks called LAMS2. Select "Available" in the Availability drop-down menu for LAMS2 and click Ok.
  7. After you have made LAMS2 available in Blackboard, a "Properties" button should appear in the Building Blocks page for the LAMS2 module. Click on it.

    8.   Fill in the LAMS server url, this is the url that points to the login page for LAMS. The same as the server URL set during LAMS installation.
    9.   Set the LAMS server ID, this should be set the same on the LAMS server.
    10. Set the LAMS server secret key, also the same as on the LAMS server.
    11. Set the Blackboard request src, this is an arbitrary string that the LAMS server uses when returning calls to Blackboard.
    12. A User data callback URL is shown in this page, this URL provides LAMS with dynamic user provisioning data. You will need this URL for LAMS integration configuration.
    13. Configure the LAMS side of the integration. Please refer to the previous Moodle heading under "On the LAMS side".
    14. To enable the LAMS Building Block for each course, login as the course instructor, the navigate to Manage Tools->Content Type Availability. Scroll down to the LAMS2 content type, select it and click                   submit.
    15. You should now be able to view and add LAMS2 content to your courses.

Troubleshooting, Problems and Comments?

Post them in the Tech Forum in the LAMS Community

LAMS is unable to get user data from Moodle

When a user tries to create access LAMS from within Moodle for the first time, such as to create new learning design, LAMS calls back to Moodle to get the user's details. This could fail for a number of reasons and you might get an error like:

soapenv:Server.userException: java.rmi.RemoteException: Fail to fetch
user data from
external server:moodle - Unexpected return HTTP Status:404; nested
exception is:
org.lamsfoundation.lams.integration.UserInfoFetchException: Fail to
fetch user data from
external server:moodle - Unexpected return HTTP Status:404
  • Check that the configuration on both ends is done - you need to configure URLs in both Moodle and LAMS. On the LAMS side, double check that the User Information URL is correct. You may need to add or remove a "moodle/" from the path - see the User Info URLS table earlier on this page.
  • Turn on debugging in LAMS, try accessing LAMS again then then look in the lams.log in the LAMS log directory (<jboss>/server/default/log) and look for a URL like the one in the User Information URL field. It should be the same except the %blah% bits will have been replaced with real values. Then copy this URL into a browser and test it there. You should get some comma separated data back.
  • Do you have the Moodle web page protected with an .htaccess/.htpasswd scheme? If so, this will stop LAMS being able to call Moodle.

3rd party users on servers updated from 2.0

One of the changes from 2.0 relating to integrated users is that their LAMS organisations changed from groups to subgroups. This means that under their 'My Groups' workspace, they have folders for the subgroups. Whereas on a freshly installed 2.0.1+ installed server, 3rd party users should only have a folder for the main integration group. Apart from the fact that 3rd party users on a server updated from 2.0 will have more folders, this isn't a problem.

If you updated your (integrated) LAMS 2.0, then you may notice that existing 3rd party users don't have access to the main integration group folder. Users who start using LAMS after the update applied do have access. This can be easily fixed by logging into LAMS directly and giving the author role to all 3rd party users in the main integration group.

  • No labels