Using norms — Journey of xAPI usage at Decathlon
If you’re designing a new system (or evolving a current one), you may find some architecture advice best practices. Furthermore, some standards or norms can drive your system area. In this case, we will have a look at what are standards and norms in the IT domain, then an example of xAPI norm application on Decathlon Academy project. You will find the difficulties of applying a norm in your project but the huge benefits of this approach.
What are norms and standards
Computer science is, from the beginning, a challenge of norms and standards. The battle between scientists, manufacturers, software creators, and all actors around the digital industry led accord themselves on a common backbone to rationalize investments or ways to connect with each other. Norms are elaborated by independent organisms such as ISO (International Organization for Standardization) or the European Committee for Standardization and are the result of consensus between actors or as law from authorities. So, in fact, there are few norms in the computer world to follow, and are basically on low level subjects such as time management, math problematics, and security subjects on hardware or on data subjects.
The main motor of harmonization is about standards. In contrast to norms, standards are established by the emergence of “the” innovation of one actor and adopted by the many. Standards are almost as many as the competitors on an emergent market. Standards emerge with time and with the concour of the users. We can quote some standards as PCI-E on hardware, .doc files for documents, some RFC that had been promoted by IETF, etc. A lot of RFC are published but few of them emerge as standards.
Following norms and standards is often (we could say always) a good idea. By this, you follow your peers recommandations and competitors with great R&Ds departments. These norms don’t keep you away from innovation, but let you focus on them. You focus also on what is important for your business. At the end, this can drive your choices of implementation and keep you on tracks of quality.
Decathlon Academy project
In Decathlon, humans are at the heart of the company. We believe that helping people in their development is not an option. To help them to improve their skills, we improved our learning tools. Decathlon Academy project has the objective of having a single place to self-evaluate on their skills, access to all learning resources (online or offline), manage skills team matrix, manage the training administration, etc. All aspects of learning management worldwide is done through this tool. It has been created internally and integrates some providers features such as elearning reading (SCORM format e-learning for exemple).
One thing learned from our multiple legacy systems was the need of reporting and easy access to data. Basically, managers want to monitor who did what, on any type of content (elearning, video, in class, outside organisms, …). In the end, managers need to assess the skill level of their teams. With multiple tools that we had, the challenge was huge. Multiple extractions and merge were necessary to be able to have an approximative view of the learning activity.
In the Decathlon Academy project, we decided to implement a microservices architecture, and provide for our users a learning platform capability. Each functional domain is separated from each other in a specific module. For a non exhaustive view, we made modules for skill referential management, in class training, skills evaluation, training plan, … So the challenge to multiply modules is the same as having multiple tools : how to reconcile data in an accessible dataset for reporting ? Here the standards will help us.
Implementation of xAPI for Decathlon Academy
Learning measurement is a challenge for ages. Especially for online contents, there are many ways to measure it: planned time, connection time, effective time spent on a content, quiz answers, assessment pass/fail. If you consider having a standardized format and way to measure it across multiple software and you will dive in a nightmare. By 2001, to help interoperability for learning contents, the Advanced Distributed Learning (ADL) organism, under the aegis of the United States Department of Defense (DoD) is releasing the SCORM standard. SCORM (for Shareable Content Object Reference Model) defines a way to separate the learning content itself and the platform which makes available this content for users (known as LMS for Learning Management System). This specification has been adopted as standard by almost all the actors of online learning. Few iterations have been made on it until the SCORM 2004 version. This version provides an API to interoperate systems with this format. But then… nothing happened. Implementations evolved inside each LMS or content provider to fill gaps in the standard. But because of the lack of alternatives, SCORM remains the standard for elearning interoperability.
To deal with the new digital challenges and software architecture, SCORM standard is not sufficiently flexible and complete. So in 2013, the format was completely rewritten to begin Tin Can Api, then renamed as Experience API (or xAPI). This new implementation provides a way to collect more heterogeneous data from learning systems. It is no longer focused on classical elearning but can record any type of learning experience such as serious games, collaborative learning, mobile learning, … Another main change is the will to separate the reader of the content (the LMS) and the record of the lived experience by the user. For this record, we introduce the LRS : Learning Record Store. This equipment is, in fact, a database which will store all learning data through the standardized structure drived by xAPI. In addition, it often provides reporting, BI and connection capabilities for a seamless integration.
At Decathlon, we like to base our management and decisions on data. Measurement is a key feature of every product. For Decathlon Academy, data collection had been placed in the heart of the project. And thanks to xAPI standard, the solution of “microservices nightmare” had been found fairly quickly. We decided to put a LRS with the Learning Locker® Open Source version provided by Learning Pool. We host it in a containerized environment internally managed. As you read before, you know that xAPI can record any learning experience, so we record all our learning actions in it, from online to offline.
xAPI structure is pretty simple. Each learning action is recorded by a “statement”. This statement will record “Someone made an action on something”. You can embellish this base with a lot of extensions and arguments to be more complete. For example, at the end of each face-to-face training session, the trainer validates attendance of each trainee. This action is recorded by “Trainee X has attended the training session Y” and we add additional information such as the job of the trainee, his location (for example stores), where the training takes place, which skills have been developed, its cost and the link where the proof of attendance is stored. By this enrichment, we can record the state of an employee when he took the action, and follow his progression. Some of that data is added asynchronously when we integrate the statement in the LRS, with fresh data from the user corporate directory (LDAP).
{
"authority":{
"objectType":"Agent",
"name":"Decathlon Academy Analytics Enricher",
"account":{
"homePage":"https://api.decathlon.net/academy/analytics/",
"name":"Decathlon Academy Analytics Enricher"
}
},
"stored":"2021-01-28T04:36:36.686Z",
"context":{
"contextActivities":{
"parent":[
{
"definition":{
"name":{
"en-GB":"WebPOS Cashier Training",
"und":"WebPOS Cashier Training"
}
},
"id":"https://api.decathlon.net/academy/presential/api/v1/courses/48dca8f3-c42d-43da-a82e-9703cc4851ce",
"objectType":"Activity"
}
]
},
"extensions":{
"http://id.tincanapi.com/extension/training-provider":{
"id":"/presential/api/v1/catalogs/72343414-f6f1-42cc-8040-6ff32e6c5791",
"name":{
"en":"Decathlon Academy Presential - Decathlon Academy Singapour - SG",
"und":"Decathlon Academy Presential - Decathlon Academy Singapour - SG"
}
},
"http://id.tincanapi.com/extension/geojson":{
"type":"Feature",
"id":"https://api.decathlon.net/directory/v1/geo_sites/515ff8d4-d5c0-3eaf-bceb-6893c45d339a",
"properties":{
"name":"BEDOK969",
"siteCode":"969"
},
"geometry":{
"type":"point",
"coordinates":[
"1.322995",
"103.92219399999999"
]
}
},
"http://id.tincanapi.com/extension/location":"SG",
"http://id.tincanapi.com/extension/tags":{
"id":"HOTE.VENTE"
}
}
},
"attachments":[
{
"contentType":"application/pdf",
"display":{
"en":"ccdf654e-1304-4193-9ae0-00e8ce01c92f",
"und":"ccdf654e-1304-4193-9ae0-00e8ce01c92f"
},
"fileUrl":"https://api.decathlon.net/hr_sign/api/v1/presential_contents/ccdf654e-1304-4193-9ae0-a0e8ce01c93g",
"length":0,
"sha2":"9b8266124327f491141c80fa2b476aad764c8a6c0081307bc05803bff0e2424d",
"usageType":"http://id.tincanapi.com/attachment/certificate-of-completion"
}
],
"actor":{
"objectType":"Agent",
"name":"8a6287d4-75e2-5c88-0175-e4c932ee7bff",
"account":{
"homePage":"https://api.decathlon.net/directory/v1/users/8a6287d4-75e2-5c88-0175-e4c932ee7bfe",
"name":"05567320"
}
},
"timestamp":"2021-01-28T10:00:00+00:00",
"version":"1.0.0",
"id":"05ba2aef-88cb-4f73-b52a-a1dce99cdc12",
"result":{
"completion":true,
"duration":"PT8H",
"success":true
},
"verb":{
"id":"http://adlnet.gov/expapi/verbs/attended",
"display":{
"en":"attended",
"und":"attended"
}
},
"object":{
"objectType":"Activity",
"id":"https://api.decathlon.net/academy/presential/api/v1/course_instances/57aef2a0-66fb-49fa-827d-8b34eeb458b1",
"definition":{
"name":{
"en-GB":"WebPOS Cashier Training",
"und":"WebPOS Cashier Training"
},
"type":"http://adlnet.gov/expapi/activities/course",
"extensions":{
"http://id.tincanapi.com/extension/geojson":{
"id":"https://api.decathlon.net/directory/v1/geo_sites/515ff8d4-d5c0-3eaf-bceb-6893c45d339a",
"geometry":{
"coordinates":[
"1.322995",
"103.92219399999999"
],
"type":"Point"
},
"properties":{
"name":"BEDOK969",
"siteCode":"969"
},
"type":"Feature"
},
"http://id.tincanapi.com/extension/monetary-value":{
"amount":"0.00",
"currency":"USD"
},
"http://id.tincanapi.com/extension/planned-duration":"PT8H",
"http://id.tincanapi.com/extension/planned-start-time":"2021-01-28T01:00:00+00:00",
"http://id.tincanapi.com/extension/tags":[
{
"id":"https://api.decathlon.net/hr_referentials/skills-referential/api/v1/skills/0116aa32-2210-4c47-9b95-6975a1f52dd1",
"name":{
"en-001":"Accompany sales assistants"
}
}
]
}
}
}
}
With this standardization of learning measurement, we are now able to have a complete view of learning actions at Decathlon. The Learning Locker® LRS provides some REST APIs to output the stored statement or aggregate them for reportings. This exposition is a key feature for the project and the Decathlon digital strategy. With this, we provide a way for everyone (in every country) to enable its learning data, cross-check this data with those he has, to create its own reports and dashboard on what is important for him. And because the data is structured the same way regardless of the source or the action, comparison and overall analysis is now easy.
The LRS product we chose gives us the ability to use an API to read the data with aggregation capabilities. Based on the MongoDB database behind, we don’t have to redevelop specific services when we want to implement new reports. Of course, we can use the user interface provided by the product, but we can integrate our custom report in apps or in the corporate dashboard. We also forward all the data to the company datalake to use this data with other ones, like financial turnover, shop performance, …
For now, we record actions on elearning activities (time spent, quiz answers, …), classical and distancial training (creation, registration, attended, trained, …), skills evaluation (my seniority level evolved from beginner to master), and activity on individual training plan (addition or deletion of a skill on the training plan). By this, analysis of everyone’s learning activity is now possible and can be enabled by data scientists.
Conclusion
Be aware of the standards around the product you build or run is fundamental. You should always stay vigilant on the way the market adapts and adopts. During a project, implementing standards in your features can be a huge effort at first point of view. You can think that you are slowing your developments, exploding your budgets. That is a fact : following the rules is an investment.
But the benefits are here. In the long term, it gives you the ability to connect your business with existing ones, drive your quality and be able to follow the market evolution. The work made by your pairs on these norms is a solid foundation. You can adapt your business around it, extend it, but it is a good basis. In addition, based on the standard, we can choose the LRS product we want on the market, and continue with the same data. This can also be an advantage to respect the right of each employee to get back all his data when he goes outside the company.
At Decathlon, this implementation on Decathlon Academy is now an accelerator to connect training data to multiple other systems (payroll, data lake, business intelligence, …). We no longer have to rework on data collection as it is centralized, APIs are ready to use to consume data, and users can now benefit from reports in any system with the same accuracy. This kind of example is frequent at Decathlon. Another good one is the adoption of PosLog standard to collect every transaction from instore commerce, e-commerce, marketplace and partners about sales, returns, etc. With this, we accelerate connection from sales performance to any systems (financial, HR, BI, …).
In fact, considering using standards and norms is always a good idea 😃
Thank you for reading!
🙏🏼 If you enjoyed the article, please consider giving it a few 👏👏👏.
💌 Learn more about tech products opened to the community and subscribe to our newsletter on http://developers.decathlon.com
👩💻? 👨💻? Interested in joining Decathlon Tech Team? Check out https://developers.decathlon.com/careers