Blockchain And LMS: A Proof Of Concept

Blockchain And LMS: A Proof Of Concept
Summary: Blockchain and LMS: A proof of concept using SAP SuccessFactors and Hyperledger Fabric for certification and credentialing.

Combining Blockchain Technology With LMSs

Blockchain technology—great potential, right? This is what we've heard over the past 6 years; and, if you're in supply chain management (SCM), the use cases are obvious. But, what if you're not in SCM? For example, my company is in the learning space and we work with Learning Management Systems (LMS). More specifically, we work with SAP and their LMS SAP SuccessFactors.

We started asking basic questions like: What can blockchain do for learning, what are the use cases, are there use cases, what technology is available, etc. We started asking these questions two years ago, and over the past few years noticed that SAP has invested heavily in blockchain and Hyperledger Fabric (see).

Blockchain is still relatively new and LMS is a large topic so we wanted to keep it simple.

Why Combine Blockchain With An LMS?

What we found was very interesting. First, credentialing programs or certifications depend on a system to securely store and provide standardization and ease of access (directed by internal business rules and/or regulation of course). Secondly, credentialing/certifications are directly related to and are dependent on learning history or learning completion data; and completion data is managed by an LMS. 100% of LMS customers manage learning history data in some form or fashion and most, if not the overwhelming majority of, LMS users implement and manage certifications or credentialing.

A Little More Background

At a basic level, every LMS project has to manage data, specifically learning data (e.g., learning history showing "who has completed what" course [course, curriculum, or learning event]). The LMS also authenticates and manages the “learning” content or events (like eLearning, instructor-led registrations, etc.). Our team observed that during most LMS engagements (implementation or migration) data retention questions pop-up like: how far back do we have to go to retain learning history; what specifically do we have to keep; what is the process for retaining information; what about disaster recovery; can this be automated; what reports are available; etc. Of course, the degree of focus on these topics varies wildly by industry and customer, but we do see that almost all SAP LMS customers will deal with learning history data management questions (interest Point 1 below).

In addition, as noted above, most SAP SuccessFactors learning customers will be "involved in" certification or credentialing. For example, enterprise or even small scale LMS engagements will use the LMS to map learning activities to a certification or credentialing need.

One of the more commonly used techniques we see is the use of the curriculum feature in SuccessFactors because this feature allows the company to create re-training per item/course. For example, a company can develop a curriculum for a certification and that certification would require that five courses be completed yearly to be considered “certified.” The LMS and curriculum feature can do this with some configuration around retraining variables and notifications. There are other methods, but this is a common technique. Certification/credentialing will also vary wildly depending on the industry sector (e.g., hospitals would be concerned about credentialing for medical staff, nuclear facilities would be concerned about credentialing for engineers, security, etc.).

So, with that context and background, this was our starting point: Can we utilize Hyperledger Fabric when using SAP SuccessFactors learning to create a blockchain-based certification application?

This question has 3 components, let’s break it down:

  1. Can we way take learners’ completion data and automatically store completion data on the blockchain?
  2. Can we provide a way for compliance officers, regulators and/or LMS users, based on normal role-based permissions (RBP), to upload and store certificates or credentials on the blockchain?
  3. Can we provide a way to send a certificate or certificates to a 3rd party (regulatory person or body) and/or provide a way for it to be easily accessed by a 3rd party like a regulatory body or compliance officer?

Here is a diagram of our proof of concept that shows each of those 3 questions:

Now that we've covered the background, let's take a closer look at our architecture and technology:

  • AWS
    We used AWS EC2 Ubuntu 16.04 instance to install, configure, and deploy the business-network applications on the cloud.
  • ReactJS
    We used reactJS to display the records in the ledger on to the web application. We also used reactJS to display the user information and the certificates which the user has uploaded.
  • Ledger and chaincode
    We used the distributed ledger to maintain a ledger of any transactions or contracts across different locations and people. We used chaincode to develop business contracts, asset definitions, and collectively-manage decentralized applications.
  • Node.js
    We used Node.js to read .CSV files from FTP servers and to load/process the records in .CSV format to the ledger, and also to schedule the cron job to check if we have any files in the FTP folder to process.
  • The Hyperledger Composer REST server
    The composer-rest-server is used to generate a REST API from a deployed blockchain business network that can be easily consumed by HTTP or REST clients.
  • The Hyperledger Composer Playground provides a User Interface for the configuration, deployment, and testing of a business network.
    We used NGINX as the webserver to expose web applications and rest-APIs to the internet.


  • We used reverse proxy to ensure that the identity of our backend servers remains anonymous.
  • The PM2 server allows us to keep applications alive forever, to reload them without downtime, and to facilitate common system admin tasks.
  • We used a simple server for the FTP to keep all .CSV files that have been exported from SAP SuccessFactors, or as the location for other systems to place files.

Point 1

Now, to point 1: Can we provide a way to automatically store learning history or learning completion data on the blockchain? Here’s how we attacked that in our proof of concept:

As outlined, the overview of the process is (please note that we’re keeping this high-level by design):

  1. The learner takes and completes learning. The LMS automatically posts the learning history file on a schedule. For the SAP SuccessFactors LMS, there is a way to do this with any report, whether out of the box or custom, see this blog explaining the remote report drop off process. For this POC we used the learning history.csv.
  2. Node.js cron job picks and reads the file, then inserts the data using the REST APIs.
  3. Transaction and data are stored in the ledger on the blockchain.

Key considerations for this step:

  • We are not limited to what type of data we place on the FTP server, we can choose any type of learning data if staying with our concept of connecting learning history or completion data and certifications. We chose to start with a basic learning history report that shows basic user, course/learning, date/time information. All this information would be required for most certification verification issues.
  • We are not limited to SAP SuccessFactors. This can be applied to any LMS or other custom system that stores learning completion data, that is, as noted above, all LMSs deal with learning history and have reporting.
  • Now we can easily change how Node.js reads the file on the FTP. The process has been established, now customization will be easier to accommodate business process, regulation, etc.
  • We’re not limited to one system as the input. It is the case that some companies store and/or receive learning history and completion data from multiple custom systems or LMSs.

Point 2

Now, to point #2: Can we provide a way for LMS users, based on normal role-based permissions (RBP), to upload and store certificates or credentials on the blockchain? Here’s how we attacked that in our proof of concept:

For this part of the POC, we have created a web application that allows users, under certain RBP settings, to upload and store certifications or credentialing documentation on the blockchain.

Key considerations for this step:

  • We’re not limited by the type of user, for this POC we assume that learners have certification and/or credentialing documents to store on the blockchain. We could use any type of RBP model and accept any type of documents, for example, HR files, medical records, etc. In our use case, most learners that interact with an LMS will either get a screen print of a completion page while in a course, be able to print out a certificate generated by the LMS, and/or have access to basic reports.
  • Authentication into the web application can be modified. We assume either two-factor authentication but have also planned for single sign-on (SSO).
  • The functionality on our POC is limited to upload and some basic sorting, but there could be multiple processes that could check or validate the documentation. For example, an Oracle can be built to allow for an automated authentication or validation to occur against existing data. One variation of this example might be to create administrative capabilities that perhaps map to the LMS administration RBPs which include a “pre blockchain” check.

Open Questions And Limitations

  1. This is a proof of concept (POC), not a fully developed product sales pitch. It has the basic building blocks needed to address our focus areas of LMS and blockchain.
  2. SAP SuccessFactors Learning is part of a “suite” of complementary products by SAP. This suite of products provides a powerful enterprise solution. This POC focused on one part of the suite, the LMS and data exported from the LMS.
  3. We don’t need a blockchain to achieve all of the features in this POC. We agree. The intent was to take advantage of the SAP Blockchain technology and enterprise LMS SAP SuccessFactors. SAP has some wonderfully powerful technology that could apply, see S/4 HANA for starters.
  4. We utilize a “semi-private” or permissioned blockchain approach. For some blockchain purists, this isn’t the best case and not true decentralization. We agree.
  5. This isn’t a business case. We don’t try to make a business case. The market is obviously very large and now custom services can easily be added to accommodate business processes, regulatory requirements, and other technologies; a business case can follow this POC.


Blockchain technology is being utilized by a growing number of companies. According to SAP, 44% of organizations are capable of using blockchain technology to document transactions in a secure manner (reference).

This proof of concept proved we could apply the key benefits of blockchain technology: security, limited intermediaries, traceability, automation, and data privacy in a blockchain-based certification/credentialing application.

The market and utility are there, and we hope this article provides enough detail to start your own project and we wish you luck as you build blockchain-based applications.