> ## Documentation Index
> Fetch the complete documentation index at: https://docs.junojourney.com/llms.txt
> Use this file to discover all available pages before exploring further.

# SCORM Content

> Industry-standard e-learning packages — how they work in Juno.

export const RelatedPages = ({pages = []}) => {
  if (pages.length === 0) return null;
  return <>
      <br />
      <strong>Related articles</strong>
      <CardGroup cols={2}>
        {pages.map(page => <Card title={page.title} href={page.href} key={page.href} />)}
      </CardGroup>
    </>;
};

export const VideoWalkthrough = ({src, alt, caption}) => {
  return <Frame caption={caption}>
      <img src={src} alt={alt || caption || "Walkthrough"} />
    </Frame>;
};

export const RoleBadge = ({roles = []}) => {
  const colorMap = {
    Admin: "yellow",
    Manager: "blue",
    Learner: "green",
    "Co-editor": "purple"
  };
  return <>
      {roles.map(role => <span key={role}><Badge color={colorMap[role] || "gray"} size="sm" shape="pill">{role}</Badge>{" "}</span>)}
    </>;
};

export const FeatureAvailability = ({module, feature}) => {
  const label = feature || module;
  return <Info title="Feature availability">
      {label ? <>This feature requires the <strong>{label}</strong> module. </> : <>This feature may not be enabled for your organization. </>}
      If you don't see it in Juno, contact your administrator.
    </Info>;
};

<FeatureAvailability module="LMS" />

## What is SCORM?

**SCORM** (Sharable Content Object Reference Model) is an industry standard for e-learning content. SCORM packages are interactive learning modules created in authoring tools like Articulate, Adobe Captivate, or iSpring.

Juno supports **SCORM 1.2** and **SCORM 2004** packages.

***

## Taking SCORM content

When you open a SCORM unit in Juno:

<Steps>
  <Step title="Content loads in the viewer">
    The SCORM package opens in an embedded viewer within the Juno interface.
  </Step>

  <Step title="Work through the module">
    Navigate the content at your own pace. Your progress is tracked automatically by the SCORM package.
  </Step>

  <Step title="Completion recorded">
    When the module reports completion, Juno records it and updates your progress.
  </Step>
</Steps>

***

## Completion tracking

SCORM packages control their own completion logic. Juno supports two evaluation methods:

| Method                      | How it works                                                                                                                                                                                                                     |
| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **By completion** (default) | The package reports `lesson_status = completed` or `completion_status = completed`                                                                                                                                               |
| **By score**                | The package reports a passing score or `success_status = passed`. Juno marks the activity complete as soon as either signal arrives, so fast-scoring packages that send `passed` before the lesson status are handled correctly. |

<Note>
  If you've finished the module but Juno still shows it as incomplete, the package may not have sent a completion signal. Contact your admin.
</Note>

***

## Common issues

| Issue                       | Solution                                                                                 |
| --------------------------- | ---------------------------------------------------------------------------------------- |
| "No valid SCORM file found" | Uploaded ZIP has an extraction error — contact your admin                                |
| Content won't load          | Refresh, clear cache, or try Chrome                                                      |
| Progress not saving         | SCORM 1.2 `suspend_data` has a 4KB limit; large packages may lose state between sessions |

***

## SCORM analytics

<RoleBadge roles={["Admin"]} />

In **Admin → Analytics → Unit analytics**, the learner breakdown table for SCORM units can include an **Attempts** column showing how many times a learner launched the package.

<Note>
  The Attempts column is controlled by the `can_see_scorm_trials_history` feature flag. Contact your CSM to enable it for your organization.
</Note>

***

## Generating SCORM content with the MCP server

<RoleBadge roles={["Admin"]} />

If your organization has the Juno MCP server enabled, AI agents (for example, Claude via Claude Desktop) can generate and import SCORM packages directly into Juno without any manual file handling:

| Tool                                        | What it does                                                                                                                                                                                    |
| ------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `create_scorm_unit`                         | Generates a fully-hosted SCORM unit from a content outline — interactive player, AI voiceover, quiz questions, and media included. No ZIP download or upload required.                          |
| `preview_scorm`                             | Plays a raw SCORM HTML document in an interactive panel and logs every SCORM API call (Initialize, SetValue, Commit, Finish) and tracked CMI state so you can verify tracking before packaging. |
| `request_scorm_upload` / `import_scorm_zip` | Upload your own ZIP package via the MCP server.                                                                                                                                                 |

<Note>
  The MCP SCORM tools (`create_scorm_unit`, `preview_scorm`, and related tools) are gated behind the `can_use_mcp_scorm_tools` feature flag. Contact your CSM to enable them.
</Note>

***

## Uploading SCORM content

<RoleBadge roles={["Admin"]} />

<Steps>
  <Step title="Create a new SCORM unit">
    Click **+** and select **SCORM** from the content type options.
  </Step>

  <Step title="Upload your ZIP file">
    Upload the SCORM package as a ZIP file. Juno extracts and validates the package automatically.
  </Step>

  <Step title="Configure settings">
    Set due dates, evaluation method (completion or score), standalone mode, audience, and **tags** (see below).
  </Step>

  <Step title="Add tags (optional)">
    Use the **Tags** field to categorize the unit. Start typing to filter existing tags, or type a brand-new tag name and press **Enter** to create it on the spot — see [Tagging SCORM units](#tagging-scorm-units) below.
  </Step>

  <Step title="Publish">
    Publish to make it available in the Company Academy or add it to a Course/Journey.
  </Step>
</Steps>

***

## Tagging SCORM units

<RoleBadge roles={["Admin"]} />

Tags help learners and admins find SCORM units in the catalog, filter analytics, and group related content. From the SCORM editor you can both reuse existing tags and create new ones without leaving the form.

### When to use it

* You're uploading a new SCORM package and the tag you need doesn't exist yet.
* You want to align SCORM content with the same tag taxonomy used across courses, learning paths, and analytics.
* You need to attach a missing tag without leaving the editor to open **Admin → Tags**.

### How to add tags

<Steps>
  <Step title="Open the Tags field">
    In the SCORM editor, scroll to the **Tags** section and click into the field.
  </Step>

  <Step title="Select existing tags">
    Start typing to filter the company tag list. Select one or more tags — they appear as chips inside the field.
  </Step>

  <Step title="Create a new tag inline">
    If no match exists, finish typing the tag name and press **Enter**. Juno creates the tag as a company skill, saves it to your tag library, and attaches it to the unit in one step.
  </Step>

  <Step title="Save the unit">
    Save or publish the SCORM unit. New tags are immediately available to other admins from any tag picker.
  </Step>
</Steps>

<Note>
  Tag names must be unique. If you try to create a tag that already exists (even with different casing or as a hidden index entry), Juno shows a **Tag already exists** error and keeps your selection unchanged — select the existing tag from the dropdown instead.
</Note>

### Example

You're uploading a compliance refresher for the EMEA region and want it grouped with other regional content:

1. In **Tags**, type `EMEA Compliance 2026`.
2. The dropdown shows no match.
3. Press **Enter**. Juno creates the **EMEA Compliance 2026** tag and adds it as a chip on the unit.
4. Publish the unit. The new tag is now selectable on other units, courses, and learning paths.

### Tagging a SCORM unit

Tags (also called **company skills**) help learners discover the unit in the Academy and let admins group related content in reports.

In the SCORM editor's **Tags** field you can:

* **Select existing tags** from the dropdown — start typing to filter the list.
* **Create a new tag inline** — type a name that doesn't exist yet and press **Enter**. Juno saves the tag to your company's skill list and adds it to the unit immediately.

<Note>
  Tag names must be unique. If you try to create a tag that already exists (by name or index), Juno shows a "Tag already exists" message and keeps the existing tag. Select it from the dropdown instead.
</Note>

You can add multiple tags to a single SCORM unit. Tags created here become available to other units across your company.

<RelatedPages
  pages={[
{ href: "/learning/courses", title: "Courses" },
{ href: "/learning/units-and-courses", title: "Content Types Overview" },
{ href: "/troubleshooting/video-playback", title: "Playback Troubleshooting" },
]}
/>
