Forum Discussion

DanThornton's avatar
DanThornton
Community Member
3 months ago

Rise Course xAPI File Structure Change??

I'm creating courses in Rise 360 and publishing in xAPI (TinCan). The published xAPI file structure from 3 days ago is completely different to the file structure when republishing the same course today.

In fact the new xAPI file structure contains "SCORM" files??? See images. 

40 Replies

  • I received instructions from the support how to make it work. I wander was there any communication previously about the change?

    To make sure your export works correctly in your LMS, please see the following PDF for instructions on how to integrate xAPI content into an LMS.

    Incorporating a TinCan LRS into an LMS

    • StevenBenassi's avatar
      StevenBenassi
      Staff

      Hi SandraAria-501b​!

      Thanks for reaching out!

      It looks like you were working with my colleague Angelo in your support case. I see that he replied to your e-mail on 12/05/25, sharing additional insight on your request.

      Also, the Rise 360: Version History is a great resource to keep handy. There, you can stay up to date on new features and enhancements. Such as the improvements we've made to Rise 360 xAPI file structure.

      Please let us know if you need anything else!

  • I'm having the same trouble. I found there is an indexAPI.html file in the scormdriver folder that works for the basic xAPI stuff. But I used the Mighty plug-in and developed a lot (A LOT) of additional xAPI statements that now are not recognized. This severely hinders the work we were doing. It was working fine yesterday morning and now six courses are stripped of the ability to see what's happening inside the course.

    • BenjiBenjington's avatar
      BenjiBenjington
      Community Member

      Hi Kenneth,

      You can find everything you need to convert your post-December 2025 release into a format that older/custom LMSes will both accept and track xAPI statements. This also works in SCORM Cloud.

      https://github.com/ijnebzor/rise360-xapi-legacy-converter

      Feel free to download, fork and use as you see fit. 

      ⚠️ Disclaimer

      • This is not an official tool.
      • It is not supported or endorsed by Articulate.
      • It is provided as-is, without guarantee.
      • Use at your own discretion and responsibility.
      • It was created to solve our organisation's needs and is shared publicly in case it helps others.


      If this solves your problem, amazing. If not, feel free to fork, modify, and improve.

      • ProductDevel910's avatar
        ProductDevel910
        Community Member

        Hi Benji,

        Thank you for sharing this converter as a potential solution for the update’s impact.

        I’ve tried using it to address the xAPI structure issue, but after replacing the affected module with the converted version, the course enters an endless “Your content is loading” screen. Do you have any insights or suggestions on what might be causing this or how to resolve it?

        I appreciate any guidance you can offer.

    • StevenBenassi's avatar
      StevenBenassi
      Staff

      Hi kennethcrainer​!

      I'm sorry to hear that the Rise 360 xAPI update impacted compatibility with 3rd party tools!

      We understand some adjustments may be required before distributing your LMS package. As I've mentioned to others, we've outlined a process to follow to get your SCORM packages back up and running quickly.

      Please let us know if you need anything else!

    • DanThornton's avatar
      DanThornton
      Community Member

      I've raised a Support Ticket for this with Articulate. Don't know how to escalate further it or speak to an actual human. 

      Our LMS (and SCORM Cloud) is no longer able to track "Progress" of these xAPI files. And they're breaking completely on our Translator Tool.

      • kennethcrainer's avatar
        kennethcrainer
        Community Member

        I was able to find a work around yesterday evening. It's only a temporary band aid. I hope Articulate sees this and will be more mindful when launching completely altered publishing structures without giving their paying customers advanced notice. Anyways, I put the following directly before my xAPI javascript statements (noting I use the Mighty Power-up to inject javascript into the course prior to publishing). Hope this helps.

        /* =========================================
           MISSING SETUP SCRIPT (Add this BEFORE your logic)
           ========================================= */
        (function () {
            // 1. Create the Namespace
            window.ScormXApi = {};
        
            // 2. Helper to get URL Params (Rise passes actor info in URL for xAPI)
            function getUrlParam(name) {
                var match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search);
                return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
            }
        
            // 3. Configure the Actor (User)
            // In an xAPI launch, the actor is usually passed in the URL. 
            // If not, we try to grab it from the global SCORM Driver variables if available.
            var actorJson = getUrlParam('actor');
            if (actorJson) {
                window.ScormXApi.actor = JSON.parse(actorJson);
            } else {
                // Fallback: If no actor is found, create a generic one (or handle error)
                console.warn("xAPI Actor not found in URL. Using Guest.");
                window.ScormXApi.actor = {
                    "mbox": "mailto:guest@example.com",
                    "name": "Guest User"
                };
            }
        
            // 4. Configure the Activity ID
            // Usually passed as 'activity_id' or we use the current URL
            window.ScormXApi.activity = {
                id: getUrlParam('activity_id') || window.location.href.split('?')[0]
            };
        
            // 5. Define the sendStatement function
            // We use the ADL wrapper which Rise normally loads, or a direct XHR fetch if needed.
            // NOTE: This assumes Rise has loaded the XAPIWrapper or TinCanJS. 
            // If Rise uses strictly scormdriver.js, we have to leverage that.
        
            window.ScormXApi.sendStatement = function (stmt, callback) {
                // Try to find the Rise/LMS standard wrapper
                var lms_api = window.parent ? window.parent : window;
        
                // METHOD 1: TinCanJS (Common in Rise)
                if (typeof lms_api.TinCan !== "undefined") {
                    // We need the instantiated tincan object, not just the library.
                    // This is tricky without the original setup.
                    // Often stored as window.tincan
                    if (lms_api.tincan) {
                        lms_api.tincan.sendStatement(stmt, callback);
                        return;
                    }
                }
        
                // METHOD 2: Direct Post (Fallback if we have endpoint/auth from URL)
                var endpoint = getUrlParam('endpoint');
                var auth = getUrlParam('auth');
        
                if (endpoint && auth) {
                    var xhr = new XMLHttpRequest();
                    xhr.open("POST", endpoint + "statements", true);
                    xhr.setRequestHeader("Authorization", auth);
                    xhr.setRequestHeader("Content-Type", "application/json");
                    xhr.setRequestHeader("X-Experience-API-Version", "1.0.0");
        
                    xhr.onreadystatechange = function () {
                        if (xhr.readyState === 4) {
                            callback({ err: xhr.status !== 200, xhr: xhr });
                        }
                    };
                    xhr.send(JSON.stringify(stmt));
                } else {
                    console.error("Could not find xAPI Connection (TinCan or Endpoint URL)");
                }
            };
            console.log("ScormXApi Bridge Initialized", window.ScormXApi);
        })();

         

  • I am having the same issue today, xAPI scorm file doesn't open in our LMS. Is there some error?

    • DanThornton's avatar
      DanThornton
      Community Member

      Exactly what we're seeing. File structure being published from Rise is completely different. Must be some error. 

       

  • DanThornton's avatar
    DanThornton
    Community Member

    The new xAPI file published from Rise 360 is not tracking on our LMS. I've also tested it on SCORM Cloud, which is recognising the file as "xAPI" but it is not tracking correctly on there either.