---
title: "SCORM and Moodle"
description: "Upload your package to Moodle, use the recommended activity settings, and understand what the course reports."
canonical_url: "https://docs.ols.yonn.online/en/ship/scorm-and-moodle"
---
# SCORM and Moodle

> Upload your package to Moodle, use the recommended activity settings, and understand what the course reports.

This page walks you through putting your finished course into Moodle, step by step. Moodle plays it as an activity of the type **SCORM package**. **SCORM** is the standard that lets Moodle show your course and remember results: whether someone finished, their score and where they stopped.

What you need:

- **The ZIP file** you downloaded when publishing (format **SCORM 1.2**, see [Preview and publish](https://docs.ols.yonn.online/en/ship/preview-and-export)).
- **A Moodle course** in which you are allowed to edit (for example as a teacher).
- **About five minutes** for the settings below.

Moodle supports SCORM 1.2 fully and SCORM 2004 only partially. That is why **SCORM 1.2 is the recommended format**.

![The Package created window in the Studio with the four steps for Moodle and the recommended settings](https://docs.ols.yonn.online/screenshots/en/scorm-and-moodle-package-created.png)

## Upload to Moodle in 6 steps

<procedure>

### Open your Moodle course and turn on edit mode

Log in to Moodle, open the course and switch on **Edit mode** at the top right.

### Add an activity

In the section where the course should appear, click **Add an activity or resource**.

### Choose SCORM package

In the list, choose **SCORM package** and click **Add**.

### Enter a name

Under **Name**, type what learners should see, for example "IT basics". The description is optional.

### Upload the ZIP file

Drag the downloaded ZIP file **unchanged** into the **Package file** field. Do not unzip it.

### Adjust the settings and save

Set the values from the table below. Then click **Save and display**. Moodle shows the entry page of the activity; click **Enter** to try the course yourself.

</procedure>

<hint-box kind="warning" title="Never unzip the ZIP">

Moodle needs the file exactly as the Studio created it. If you unzip and zip it again, Moodle often says the package is invalid.

</hint-box>

## Recommended settings

You find these settings on the same page, further down. Click a section name to open it. Depending on your Moodle version, the names can differ slightly.

<table>
<thead>
  <tr>
    <th>
      Section
    </th>
    
    <th>
      Setting
    </th>
    
    <th>
      Recommended
    </th>
    
    <th>
      Why
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      Appearance
    </td>
    
    <td>
      Display package
    </td>
    
    <td>
      <strong>
        Current window
      </strong>
      
       or <strong>
        New window
      </strong>
    </td>
    
    <td>
      With "New window", allow pop-ups for Moodle in the browser.
    </td>
  </tr>
  
  <tr>
    <td>
      Appearance
    </td>
    
    <td>
      Width / Height
    </td>
    
    <td>
      100 %
    </td>
    
    <td>
      The course player scales the slides by itself.
    </td>
  </tr>
  
  <tr>
    <td>
      Appearance
    </td>
    
    <td>
      Display course structure in player
    </td>
    
    <td>
      <strong>
        Hidden
      </strong>
    </td>
    
    <td>
      Otherwise Moodle shows a second sidebar next to the course menu.
    </td>
  </tr>
  
  <tr>
    <td>
      Appearance
    </td>
    
    <td>
      Show Navigation
    </td>
    
    <td>
      <strong>
        No
      </strong>
    </td>
    
    <td>
      The course player handles next and back itself.
    </td>
  </tr>
  
  <tr>
    <td>
      Appearance
    </td>
    
    <td>
      Display course structure on entry page, Display attempt status
    </td>
    
    <td>
      <strong>
        No
      </strong>
    </td>
    
    <td>
      Learners land directly in the course.
    </td>
  </tr>
  
  <tr>
    <td>
      Grade
    </td>
    
    <td>
      Grading method
    </td>
    
    <td>
      <strong>
        Highest grade
      </strong>
    </td>
    
    <td>
      With a results slide, the score (0 to 100) is taken over.
    </td>
  </tr>
  
  <tr>
    <td>
      Grade
    </td>
    
    <td>
      Maximum grade
    </td>
    
    <td>
      <strong>
        100
      </strong>
    </td>
    
    <td>
      The score arrives as a percentage.
    </td>
  </tr>
  
  <tr>
    <td>
      Attempts management
    </td>
    
    <td>
      Number of attempts
    </td>
    
    <td>
      <strong>
        Unlimited
      </strong>
      
       or as needed
    </td>
    
    <td>
      Each attempt starts the course again.
    </td>
  </tr>
  
  <tr>
    <td>
      Attempts management
    </td>
    
    <td>
      Force new attempt
    </td>
    
    <td>
      <strong>
        No
      </strong>
    </td>
    
    <td>
      Learners continue where they left off.
    </td>
  </tr>
  
  <tr>
    <td>
      Compatibility settings
    </td>
    
    <td>
      Auto-continue
    </td>
    
    <td>
      <strong>
        No
      </strong>
    </td>
    
    <td>
      Not needed: the whole course is one package.
    </td>
  </tr>
  
  <tr>
    <td>
      Activity completion
    </td>
    
    <td>
      Completion conditions
    </td>
    
    <td>
      <strong>
        Require status
      </strong>
      
       "Passed" or "Completed"
    </td>
    
    <td>
      Choose what matches the status you picked when publishing.
    </td>
  </tr>
</tbody>
</table>

<hint-box kind="tip" title="Make it the default for everyone">

Moodle administrators can save these values as defaults for all new SCORM packages under *Site administration > Plugins > Activity modules > SCORM package*.

</hint-box>

## Which status for which course

When publishing, you chose under **Scoring** how the course reports its status. In Moodle, use the matching completion setting.

<table>
<thead>
  <tr>
    <th>
      Your course
    </th>
    
    <th>
      Completion rule in the Studio
    </th>
    
    <th>
      Status in the Studio
    </th>
    
    <th>
      In Moodle require
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      Quiz with passing score
    </td>
    
    <td>
      <strong>
        Results slide
      </strong>
    </td>
    
    <td>
      <strong>
        Passed / incomplete
      </strong>
      
       or <strong>
        Passed / failed
      </strong>
    </td>
    
    <td>
      "Passed"
    </td>
  </tr>
  
  <tr>
    <td>
      Briefing without a test
    </td>
    
    <td>
      <strong>
        Slides viewed
      </strong>
    </td>
    
    <td>
      <strong>
        Completed / incomplete
      </strong>
    </td>
    
    <td>
      "Completed"
    </td>
  </tr>
  
  <tr>
    <td>
      You decide the moment
    </td>
    
    <td>
      <strong>
        By trigger
      </strong>
    </td>
    
    <td>
      as you like
    </td>
    
    <td>
      matching the status
    </td>
  </tr>
</tbody>
</table>

## What the course reports to Moodle

The score is sent as a percentage (0 to 100), and Moodle uses it directly as the grade. When the window is closed, the player ends the session properly, so learners continue later where they left off. The learner's name from Moodle is available in the course as `%Learner.Name%`.

For administrators, the exact SCORM fields:

<table>
<thead>
  <tr>
    <th>
      Data
    </th>
    
    <th>
      SCORM 1.2
    </th>
    
    <th>
      SCORM 2004
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      Status
    </td>
    
    <td>
      <code>
        cmi.core.lesson_status
      </code>
    </td>
    
    <td>
      <code>
        cmi.completion_status
      </code>
      
       and <code>
        cmi.success_status
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      Score
    </td>
    
    <td>
      <code>
        cmi.core.score.raw/min/max
      </code>
    </td>
    
    <td>
      <code>
        cmi.score.raw/min/max/scaled
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      Bookmark
    </td>
    
    <td>
      <code>
        cmi.core.lesson_location
      </code>
      
       (255 characters)
    </td>
    
    <td>
      <code>
        cmi.location
      </code>
      
       (1,000 characters)
    </td>
  </tr>
  
  <tr>
    <td>
      Progress
    </td>
    
    <td>
      <code>
        cmi.suspend_data
      </code>
      
       (4,096 characters)
    </td>
    
    <td>
      <code>
        cmi.suspend_data
      </code>
      
       (64,000 characters)
    </td>
  </tr>
  
  <tr>
    <td>
      Session time
    </td>
    
    <td>
      <code>
        cmi.core.session_time
      </code>
    </td>
    
    <td>
      <code>
        cmi.session_time
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      Answers
    </td>
    
    <td>
      <code>
        cmi.interactions.n.*
      </code>
    </td>
    
    <td>
      <code>
        cmi.interactions.n.*
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      Learner name
    </td>
    
    <td>
      <code>
        cmi.core.student_name
      </code>
    </td>
    
    <td>
      <code>
        cmi.learner_name
      </code>
    </td>
  </tr>
</tbody>
</table>

<hint-box kind="privacy" title="Learning records stay in Moodle">

Status, score, answers, time and bookmark go only to your Moodle, which stores them in its own database. Open Learning Studio never receives them.

</hint-box>

## Update a course

<procedure>

### Publish again

In the Studio, publish with the **same package identifier** and only raise the **Version** (in the step **Details**, under **Advanced: identifier and version**).

### Replace the file in Moodle

Open the existing SCORM activity in Moodle, go to its settings and upload the new ZIP into the **Package file** field. Save.

</procedure>

## If something doesn't work

- **The status stays "Not attempted" or is not saved**: publish as **SCORM 1.2**. Check that the completion rule can be reached (for example, not more slides required than the course has). With **Passed / incomplete**, a failed test stays "incomplete" on purpose. Always start the course through Moodle, not by opening `index.html` directly.
- **Learners always start from the beginning**: set **Force new attempt** to **No**. In very large courses the progress can exceed the 4,096 characters of SCORM 1.2; then split the course into several packages.
- **The course window does not open**: with **New window**, the browser blocks the pop-up. Allow pop-ups for Moodle or choose **Current window**.
- **"The package is invalid" when uploading**: upload the ZIP unchanged. If the file is very large (many videos), ask your Moodle admin about the maximum upload size.
- **A second sidebar appears on the left**: that is Moodle's course structure. Set **Display course structure in player** to **Hidden** and **Show Navigation** to **No**.
- **Videos don't play right away**: some browsers block videos with sound until the learner clicks once. That is normal.


## Sitemap

See the full [sitemap](https://docs.ols.yonn.online/sitemap.md) for all pages.
