Plateau/SuccessFactors LMS Wrapper Model – A new framework for improved productivity

One of the impressive hidden features of Plateau/SuccessFactors LMS is it’s ability to build dynamic content wrappers. If you have administered the Plateau/SuccesFactors and other similar LMS’s you will notice that Plateau/SuccessFactors LMS has got an unique course creation model (generally referred as ‘Items’).

An Item is like a course shell with required key attributes of the course (like title, description, point of contact etc.) . The actual content information on the other hand usually stored in some independent entities called content objects. A content object could store the location and protocol (SCORM/AICC) details of contents (assets like documents) or simply some links.

The typical way of creating a course is by create an Item, create an content object(s) and associate the Item to the required one or more content objects and release the entire package for the learner as a course in LMS.

The traditional approach for creating courses is building unique content object(s) for each Item.

The framework i am going to explain in this post is quite different from this traditional approach. The difference is, it is not necessary to create a content object for every Item . Instead the content location can be passed from the Item itself. This means we can build some dynamic programs and store them as content objects. These dynamic content objects can be called as content wrappers.

This wrapper model will greatly improve the productivity and simplify the maintenance. Because the same content objects become dynamic and reusable again for all similar content types.


Plateau/SuccessFactors LMS Wrapper, Dynamic Content Object

Plateau/SuccessFactors – LMS Dynamic Wrapper Model















Item Level Setting

To implement the dynamic wrapper model, the asset location detail required to be passed to the content object from Item level. When the course is launched, the Item will launch the file stored in the content object and append the query parameters sent from Item level. To launch the actual target content you will be required to create a standalone program(a simple html file) to read the query parameters sent from the item level and launch the actual content (parse value and redirect). You can store this program’s (html file and scripts) location in the dynamic content object to create the wrapper (like shown below)


Content Object Setting

Content Object Setting



Content Object Setting

Now associate this dynamic content object with the Item. When the Item is launched the target content wrapper will be launched instead of the actual content itself (the html file you have created) and the code written inside the html file should read the URL query parameter sent from the Item and launch/process the actual asset (you can simply write programs to do anything here)


Passing Content Object URL from Item

Passing Content URL from Item







When the item is launched if you trace the browser URL it will be in the following format:

<content objection location>?<your parameters>?<misc info such as session ID etc>

For example, if your wrapper is stored in a content server http://www.mycontentserver.com/wrappers/scorm-wrapper.html and if your e-learning course files are located in some location within the same content server then the LMS would launch as:


In this case your program (the content wrapper) can read the query parameters and launch actual the course.

You can create 4 or 5 dynamic content objects like these in total depending on your content types (e.g. one for AICC another for SCORM etc.). Once the desired content objects are created, you can reuse them for as many items as needed and pass location or other attributes (for location) can be passed from the Item level.

Now imagine, for 100 items or 100,000 items, you may just need 4 or 5 content objects and you can reuse them again and again. This will greatly improve the productivity in creating and maintaining items. This model will also save a great amount of effort during content server migrations. For example, if you want to migrate all content from server1.com to server2.com, you don’t need to go and edit 1000’s of content objects and change the content reference from old to new servers. Instead you can change the dynamic content wrapper to redirect all the references from server1 to server2. Very simple concept!

You can expand this content wrapper model in so many ways to handle different content types. A wrapper for managing SCORM content, AICC content, links, documents, video player, audio player… your imagination will be the only limit not the technology.


Did you find this post useful? Feel free to share your feedback in the comments area.

You can find more interesting posts from us on the??posts index??section

If you are interested to be notified for the new posts from us, then you can make use of the subscribe option available on the right sidebar.

Help us to improve our search rating by recommending this post to Google using the button below



  1. rodrigo quintana says:

    do you know how can I send in the parameter field the user id from the user that launch the content object?, this is because the company that provide the content server needs this data to validate that the user is a valid user on his system.


    1. electron says:

      Hi there, You cannot send it as a parameter to content object, but you can read the student parameters such as student_id from the LMS (it is supported in both AICC and SCORM)

Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>