# Chamilo 2.0 Documentation

Welcome to the official documentation for **Chamilo 2.0**, the open-source e-learning platform.

This documentation is organized into three guides, each tailored to a specific audience:

* [**Teacher Guide**](/teacher-guide/teacher-guide) — For instructors and trainers: create courses, add content, assess learners, and track progress.
* [**Administration Guide**](/administration-guide/admin-guide) — For platform administrators: install, configure, and manage the Chamilo platform.
* [**Developer Guide**](/developer-guide/developer-guide) — For developers: understand the architecture, build plugins, use the API, and contribute to the project.

## What's New in Chamilo 2.0

Chamilo 2.0 is a major release with a completely redesigned interface and many new features:

* **Modern interface** — Built with Vue 3 and PrimeVue for a faster, more responsive experience
* **AI-powered tools** — Generate exercises, learning paths, and get AI-assisted grading
* **REST API** — Full API Platform-based REST API with JWT authentication
* **New authentication options** — OAuth2 (Azure, Keycloak, Facebook), SCIM user provisioning
* **LTI 1.3** — Connect external learning tools seamlessly
* **Cloud storage** — Native support for Azure Blob, AWS S3, and Google Cloud Storage
* **Color themes** — Customizable platform branding with theme support
* **OnlyOffice integration** — Edit documents collaboratively within the platform


# Teacher Guide

Welcome to the Chamilo 2.0 Teacher Guide. This guide is designed for instructors, trainers, and anyone responsible for creating and delivering learning content through the Chamilo platform.

Whether you are setting up your first online course or managing a complex training program, this guide will walk you through every feature available to you as a teacher.

## What You Can Do with Chamilo

As a teacher in Chamilo, you can:

* **Create and organize courses** with a flexible homepage and customizable tools
* **Add content** — upload documents, create learning paths, build glossaries, and link to external resources
* **Assess your learners** — design exercises with multiple question types, collect assignments, run surveys, and manage grades
* **Collaborate** — set up forums, group work, wikis, blogs, and live video sessions
* **Track progress** — monitor learner activity, generate reports, and award certificates
* **Use AI tools** — generate exercises and learning paths automatically, and get AI-assisted grading

## How This Guide Is Organized

This guide follows the natural workflow of building and running a course:

1. **Getting Started** — Log in, navigate the interface, and set up your profile
2. **Creating Your Course** — Create a new course, configure its settings, and customize the homepage
3. **Adding Content** — Upload documents, organize learning paths, and manage resources
4. **Assessing Learners** — Build tests, collect assignments, run surveys, and set up the gradebook
5. **Collaboration and Communication** — Enable forums, chat, groups, wiki, and video conferencing
6. **Tracking and Reporting** — Monitor learner progress and generate reports
7. **AI Tools** — Use AI-powered features to generate content and assist with grading
8. **Additional Tools** — Agenda, notebook, portfolio, and more

Let's get started.


# Getting Started

This section helps you get oriented with Chamilo 2.0. You will learn how to log in, navigate the main interface, and configure your profile.

## Logging In

To access Chamilo, open your browser and navigate to the URL provided by your institution (for example, `https://chamilo.yourschool.edu`). Enter your username and password on the login page and click **Sign in**.

If your institution uses external authentication (such as Azure, Keycloak, or a university single sign-on system), you may see additional login buttons below the standard login form. Click the appropriate button to authenticate through your institution's identity provider.

> If you have forgotten your password, click the **Forgot password?** link on the login page. You will receive an email with instructions to reset it.

## First Look

After logging in, you will see the Chamilo home page. The interface is organized into three main areas:

![The Chamilo home page showing system announcements and course cards](/files/1hhqep1XNxrhZANJQDVG)

* **Top bar** — Displays the platform logo, your message inbox (with a badge showing unread messages), and your user avatar. Click your avatar to access your profile and account settings.
* **Sidebar** — The left navigation panel gives you quick access to your courses, sessions, agenda, social network, and more. You can collapse it by clicking the toggle at its edge.
* **Main content area** — This is where the current page content is displayed. On the home page, you will see system announcements and your featured courses.

## Your Courses

From the sidebar, click **My courses** to see all the courses you are enrolled in as a teacher or student. Each course appears as a card showing:

![The My Courses page displaying course cards with thumbnails and quick-access actions](/files/IY7ucwxWiZr6UVonLp74)

* The course image or thumbnail
* The course title
* Quick-access actions

If your institution uses **sessions** (time-bound training periods), you will also see a **My sessions** link in the sidebar, organized into current, past, and upcoming sessions.

Sessions in Chamilo are a way to deliver the same course to different groups of learners at different times, without duplicating the course content. Think of a session as a scheduled edition or cohort of a course. More on that topic later.

## Next Steps

* [Understanding the Interface](/teacher-guide/teacher-guide/getting-started/understanding-the-interface) — A detailed look at every part of the Chamilo interface
* [Your Profile](/teacher-guide/teacher-guide/getting-started/your-profile) — How to manage your personal information and preferences


# Understanding the Interface

Chamilo 2.0 has a clean, modern interface designed to keep navigation simple. This page explains each part of the interface in detail.

## The Top Bar

![The top bar with annotated elements including logo, inbox, support ticket, and user avatar](/files/DihQOhKEaxg2x4c3XX8l)

The top bar is always visible at the top of every page. It contains:

* **Platform logo** — Click it to return to the home page at any time.
* **Inbox icon** <img src="/files/wPP6FRORdxP6rgUwtgWZ" alt="Inbox" data-size="line"> — Shows your messages. A red badge indicates unread messages. Click to open your inbox.
* **Support ticket icon** <img src="/files/7KUMfsxbJLuNR0bovYr3" alt="Support" data-size="line"> — If enabled by your administrator, this gives you access to the support ticket system.
* **Your avatar** — A circular image in the top-right corner. Click it to open a dropdown menu with links to your profile, account settings, and sign-out.

## The Sidebar

The sidebar on the left is your main navigation. It can be collapsed to give more space to the content area. Click the toggle arrow at its right edge to expand or collapse it. Chamilo remembers your preference.

The sidebar contains the following links (some may be hidden depending on your platform's configuration):

![The sidebar navigation panel in its expanded state showing all menu items](/files/OmqkYqzuLeq2chF7JLCo)

| Menu item                | Icon                                                                          | Description                                            |
| ------------------------ | ----------------------------------------------------------------------------- | ------------------------------------------------------ |
| **Home**                 | <img src="/files/SEjsJ5uuEtujHVjdNY1l" alt="Home" data-size="line">           | Returns to the main dashboard                          |
| **My courses**           | <img src="/files/Gw2UxupsOu9e7m2YN6Yz" alt="Courses" data-size="line">        | Lists all courses you are enrolled in                  |
| **My sessions**          | <img src="/files/gEeEJLjQtsqrCDg59MHk" alt="Sessions" data-size="line">       | Lists your training sessions (current, past, upcoming) |
| **Explore more courses** | <img src="/files/gW5Dwk2tzXRtdgxzM7RO" alt="Catalogue" data-size="line">      | Browse the course catalog to find new courses          |
| **Agenda**               | <img src="/files/nrnIImfU2K0UuujHisNB" alt="Agenda" data-size="line">         | Your personal and course calendar                      |
| **Reporting**            | <img src="/files/KursVtC3weqc1ucvvrHS" alt="Reporting" data-size="line">      | Access learner tracking and course reports             |
| **Social network**       | <img src="/files/0CWImgx1VsF5osrSLOT2" alt="Social network" data-size="line"> | Connect with other users, send messages, join groups   |
| **Videoconference**      | <img src="/files/NKhWXLCCdEsA7nYxJ4Ha" alt="Video" data-size="line">          | Access live video sessions (if configured)             |
| **Administration**       | <img src="/files/Ioqo9QifLgZkCMNoBa2U" alt="Admin" data-size="line">          | Platform administration (visible only to admins)       |

At the very bottom of the sidebar, you will find a **Sign out** option to quickly sign out when you're done. This option is also available from your avatar icon's drop-down menu on the top-right corner. If the platform is managed through external authentication methods, these signing out options might not be available.

## The Main Content Area

The central area of the screen displays the content of the current page. At the top, you will often see a **breadcrumb trail** showing your current location in the platform (for example: Home > Rock music > Documents). Use the breadcrumbs to navigate back to a parent page.

## The Course Homepage

When you enter a course, you see the **course homepage**. This is covered in detail in the [Creating Your Course](/teacher-guide/teacher-guide/creating-your-course) section, but here is a quick overview:

* **Course title** — Displayed prominently at the top
* **Course introduction** — An optional rich-text description that you can edit
* **Tool grid** — A grid of icons representing the course tools (Documents, Exercises, Forums, etc.)

As a teacher, you will see additional controls:

* **Student view** <img src="/files/ywBGhr3BmzcQnJ3q5q5u" alt="Student view" data-size="line"> — Toggle this to see the course as a student would see it
* **Edit introduction** <img src="/files/B0fShmcBNTxkW4Yi7qK2" alt="Edit" data-size="line"> — Edit the course introduction text
* **Show all / Hide all** — Quickly change the visibility of all tools for students
* **Sort** — Enable drag-and-drop to reorder the tools on the homepage

## Icon colors

This is still experimental and not entirely complete in Chamilo 2.0, but we're trying to use the following rules for all buttons and action icons in the interface:

* **Green** for creation actions. This includes adding, creating, importing, grading, saving and copying content.
* **Blue** for view actions. This includes exporting, viewing, pre-viewing in lists or in detail views, searching and downloading.
* **Orange** for editing actions. This includes editing, moving, configuring, enabling/disabling, hiding and showing.
* **Red** for deletion/removal actions. This includes deleting, removing, unsubscribing.
* **Grey** for cancelling actions. Just leaving things in the status quo.

## Responsive Design

Chamilo 2.0 adapts to different screen sizes. On a mobile device or narrow browser window:

* The sidebar is hidden by default and can be opened by tapping the menu icon
* Course cards display in a single column instead of a grid
* Tables become scrollable horizontally

This means you and your learners can access the platform from a phone, tablet, or computer, but you might experience the interface slightly differently.


# Your Profile

Your profile in Chamilo contains your personal information and preferences. Other users on the platform can see parts of your profile depending on your visibility settings.

## Accessing Your Profile

Click your **avatar** in the top-right corner of the top bar, then select **Profile** from the dropdown menu. You can also access it from the **Social network** section of the sidebar.

![The user avatar dropdown menu showing profile, account settings, and sign-out options](/files/1bMacqS54tzs65WLGqdB)

## Profile Information

Your profile page might show (depending on configuration):

* **Avatar** — Your profile picture. Click **Edit profile** to change it.
* **Full name** — Your first and last name as registered on the platform.
* **Email** — Your email address. Other users can click it to send you a message within Chamilo.
* **Language** — Your preferred language.
* **Additional fields** — Depending on your platform's configuration, you may see fields such as phone number, Skype handle, LinkedIn profile link, or custom fields defined by your administrator.

## Editing Your Profile

To update your profile information, click **Edit profile**. Here you can:

* Change your name, email, and password
* Upload or change your avatar/picture
* Update your preferred language
* Fill in additional profile fields (Skype, LinkedIn, etc.)
* Configure notification preferences

To change your password, click **Change Password**. For security reasons, you will need to give your current password and your new password twice.

If your administrator has enabled the **two-factor authentication** option (`2fa_enable`) for the platform, your profile will let you turn on 2FA for your own account using a TOTP authenticator app (Google Authenticator, Authy, 1Password, etc.). Once enabled, the login flow will ask for the time-based 6-digit code in addition to your password.

## Personal Data

Under **Social network** > **Personal Data**, you can review all the information Chamilo stores about you. This section includes:

* A summary of all data collected, organized by category
* If enabled by your organization, your acceptance status for the platform's **Terms and Conditions**
* If enabled by your organization, an option to **withdraw your consent** or **delete account**, which will trigger an account deletion request that your administrator will process

> This feature is provided to comply with data protection regulations. Contact your administrator if you have questions about how your data is handled.


# Creating Your Course

This section explains how to create a new course in Chamilo and configure it for your needs.

## Creating a New Course

To create a course:

1. Click **My courses** in the sidebar
2. Click the **Create course** button (usually a green book <img src="/files/Gw2UxupsOu9e7m2YN6Yz" alt="Courses" data-size="line"> icon with a + sign)
3. Fill in the course creation form:

![The course creation form with fields for name, category, code, and language](/files/c7NxXFd0SjYCbJztDm0O)

| Field               | Required | Description                                                                                                                         |
| ------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| **Course name**     | Yes      | A short, descriptive title for your course (e.g., "Innovation Management")                                                          |
| **Course category** | No       | Select a category to help organize courses on the platform                                                                          |
| **Course code**     | No       | A short code using only letters and numbers (max 40 characters). If left blank, one is generated automatically from the course name |
| **Language**        | No       | The primary language of the course. Defaults to your current language                                                               |

If enabled, you might also find a **Default room** setting and the possibility to use a **Course template** to avoid creating your course entirely from scratch.

4. Click **Create this course**

You will be redirected to your new course's homepage. A confirmation message will appear: "Course created successfully."

## The Course Homepage

Once your course is created, you land on its homepage. This is the central hub for your course, where you and your learners access all tools and content.

![The course homepage tool grid showing available course tools with icons and visibility toggles](/files/80FVPKc6UotUzSEyPx9M)

The homepage displays:

* **Course title** — The name of your course, shown at the top.
* **Course introduction** — An optional description or welcome message. Click the **+ Course introduction** button to add one, or the **Edit introduction** <img src="/files/B0fShmcBNTxkW4Yi7qK2" alt="Edit" data-size="line"> button at the top to modify it. This supports rich text with images, links, and formatting.
* **Tool grid** — A grid of all available course tools, each shown as a card with an icon and name.

### Managing Tool Visibility

As a teacher, you can control which tools your learners can see:

* Click the **eye icon** <img src="/files/ywBGhr3BmzcQnJ3q5q5u" alt="Visible" data-size="line"> next to any tool to hide it from learners. Hidden tools show a **crossed-out eye** <img src="/files/jYg7PLFEeX7pgyT65j8D" alt="Hidden" data-size="line"> and are still accessible to you.
* Use the **Show all** and **Hide all** buttons to change all tools at once
* Click **Sort** to enable drag-and-drop reordering of the tool grid

### Student View

Click the **Student view** button to see the course homepage exactly as a learner would see it. This is useful to verify that hidden tools and unpublished content are not visible. Click the button again to return to the teacher view.

## Next Steps

* [Course Settings](/teacher-guide/teacher-guide/creating-your-course/course-settings) — Configure access, enrollment, and other course-level options
* [Course Homepage](/teacher-guide/teacher-guide/creating-your-course/course-homepage) — Detailed guide to customizing your course homepage


# Course Settings

Course settings allow you to control how your course behaves — who can access it, how it appears, and what features are enabled.

To access course settings, enter your course and click the **Settings** <img src="/files/LyhMtthrvpzbMh3bkKbZ" alt="Settings" data-size="line"> icon next to the **Switch to student view** button.

## General Settings

### Course Information

* **Course title** — The display name of your course
* **Course language** — The primary language for the course interface
* **Course category** — The category under which the course appears in the catalog
* **Course picture** — Upload a thumbnail that represents your course in course listings (will be resized depending on context)

The course code (the short unique identifier) is set when the course is created and is not editable from this page.

By default, all users entering your course will see the whole Chamilo interface in the language of your course. This is an immersive feature. Administrators can change this behaviour, but you can also change it with one of the first options: **Show course in user's language** (set to No by default) if you believe this makes it too hard for your users.

The department and department URL are deprecated fields. They are only maintained for legacy support reasons.

If enabled, you can switch the style inside your course with the **Style sheets** option, using existing stylesheets on your portal. This option is often disabled by admins, for a more integrated global design.

### Disk Quota

Each course has a storage limit (disk quota) for uploaded files. The quota is set by the platform administrator. You can see your current limit in the course settings, and the current usage in the **Documents** tool.

> If you are running out of space, contact your platform administrator to request a quota increase, or remove unused files from the Documents tool.

### Course Visibility

![The course visibility settings showing public, open, registered, and closed options](/files/9NnCwvwNAO5mjwNR8gaS)

Control who can access your course:

| Setting                                          | Description                                                   |
| ------------------------------------------------ | ------------------------------------------------------------- |
| **Public**                                       | Anyone, including anonymous visitors, can access the course   |
| **Open to platform**                             | All registered users on the platform can access the course    |
| **Private — access granted by privileged users** | Only users explicitly enrolled in the course can access it    |
| **Closed**                                       | The course is locked; no one can access it except the teacher |

#### Enrollment Settings

Depending on your platform configuration, you may be able to control:

* **Allow self-enrollment** — Whether learners can subscribe themselves through the course catalog
* **Allow self-unsubscription** — Whether learners can leave the course on their own
* **Enrollment password** — Require a password for self-enrollment (useful for restricting access to a specific group) but the security level is low as the same course-access password is shared between all users.

### Document Settings

Choose whether to show or hide the system folders in the **Documents** tool (hidden by default, you don't really need them in most cases and showing them might cause issues with hidden content and learners).

### E-mail Notification Settings

Configure how course activity triggers notifications:

* **Email notifications for new content** — Notify enrolled users when you add new documents, announcements, or other content

### Chat Settings

Control how the **Chat** tool will show.

### Learning path Settings

* **Enable course themes** — Allow learning paths to change appearance (not recommended for integrated user experience)
* **Learning path return link** — Decide where users land when they click the **Home** icon in a learning path: the learning paths list, the course home, *My courses*, *My sessions*, or the portal home

### Thematic Advance Settings

Configure how the thematic advance messages will appear on the course homepage.

### Forum Settings

Control behaviour in the forum tool of this course.

### Assignment Settings

* **Default setting for the visibility of newly posted files** — Decide whether new documents uploaded by learners in the **Assignments** tool are shared with all other learners (No by default)
* **Allow learners to delete their own publications** — Allow learners to delete the assignments they have already uploaded (in case they want to upload a correction).

### Autolaunch Settings

A course can be set to have an auto-launch behaviour, which will shorten the path of learners to get to the important parts of your course. If enabled, the learners entering your course will be sent directly to the selected tool and will not see the course homepage as an intermediate step. You can even select specific learning paths or exercises to launch on arrival to the course. In this case, you need to select the option here, then go to the learning paths or exercises list and clic the rocket <img src="/files/6KneT5fqj3PQPlqFl5OU" alt="Auto-launch" data-size="line"> icon on the selected item.

### AI Helpers Settings

This section only appears if your administrator has enabled AI tools on the platform. It allows you to refine the selection of AI helper services available through different tools of your Chamilo platform. Disable them if you don't want to use them, but that would probably be a bad idea as these are very powerful.

These features are explained in the **AI Tools** section of this guide.

### External Tools (LTI)

If enabled on your platform, Learning Tools Integration allows you to integrate external, compatible activities to this course, as individual icons on the course homepage. Discussing LTI is out of the scope of this guide, but this is a powerful integration system for teachers.

### Others

Additional sections or options might appear on this page depending on options and versions of Chamilo.


# Course Homepage

The course homepage is the first page your learners see when they enter a course. This page describes how to customize it to create an engaging entry point.

## Course Introduction

The course introduction is a rich-text area displayed at the top of the homepage, above the tool grid. Use it to:

* Welcome your learners
* Describe the course objectives
* Provide instructions for getting started
* Embed images, videos, or links

To edit the introduction:

1. Click the **Edit introduction** <img src="/files/B0fShmcBNTxkW4Yi7qK2" alt="Edit" data-size="line"> button
2. Use the rich-text editor to write your content
3. Save your changes

If no introduction has been created yet, you will see a button to **Create an introduction**.

## Tool Grid

![The course homepage tool grid showing available course tools with icons and visibility toggles](/files/80FVPKc6UotUzSEyPx9M)

Below the introduction, the course tools are displayed in a grid layout. Each tool appears as a card with:

* An icon representing the tool
* The tool name

The tools available in your course may include:

| Tool           | Icon                                                                          | Purpose                               |
| -------------- | ----------------------------------------------------------------------------- | ------------------------------------- |
| Agenda         | <img src="/files/nrnIImfU2K0UuujHisNB" alt="Agenda" data-size="line">         | Schedule events and deadlines         |
| Announcements  | <img src="/files/1auawLGgyLxi4uS8UzJ4" alt="Announcements" data-size="line">  | Send messages to enrolled learners    |
| Assignments    | <img src="/files/CIt28TyDkpVSfV9uaDp4" alt="Assignments" data-size="line">    | Collect and grade student work        |
| Documents      | <img src="/files/Z4CDEY6dIuifReXua5LV" alt="Documents" data-size="line">      | Upload and organize files and content |
| Tests          | <img src="/files/ci6ah66zOpFV9lYP9IS5" alt="Exercises" data-size="line">      | Create quizzes and tests              |
| Forum          | <img src="/files/Tf3wWpORnVHehcb6BsOV" alt="Forums" data-size="line">         | Host discussions                      |
| Glossary       | <img src="/files/2nb5Gu4ZT474iIG3Ms9l" alt="Glossary" data-size="line">       | Define key terms                      |
| Assessments    | <img src="/files/v3yoThzOf3QCsguaBjPU" alt="Gradebook" data-size="line">      | Manage grades and certificates        |
| Learning paths | <img src="/files/SjkcwWxC5JJKVY4PjSfz" alt="Learning paths" data-size="line"> | Build structured learning sequences   |
| Links          | <img src="/files/HIsEPwg900EVheOII1ma" alt="Links" data-size="line">          | Share useful URLs                     |
| Users          | <img src="/files/puEERU4oiSmEfMz4YVfW" alt="Members" data-size="line">        | View and manage enrolled users        |
| Surveys        | <img src="/files/zDTj7lgPmuevlImH6PU5" alt="Surveys" data-size="line">        | Create and distribute surveys         |

> Some tools may not appear if your administrator has disabled them at the platform level or if you have hidden them.

A notable change from Chamilo 1.\* is that we don't split the tools in 3 different sections anymore. This gives full control to the teachers on what tools to show in what order.

Also, the **Tracking** and **Maintenance** tools have been moved to the top of the page under the stats and cog icons to remove tools that are never shown to the learners from the list.

## Organizing Tools

### Reordering

1. Click the **Sort** button at the top of the tool grid
2. Drag and drop tools to rearrange their order
3. The new order is saved automatically

### Hiding and Showing

* Click the **visibility icon** on any tool to toggle it between visible and hidden for learners
* Use **Show all** or **Hide all** for bulk changes
* Hidden tools remain accessible to you as the teacher — they are only hidden from learners

![The course homepage as seen by a student, with hidden tools not visible](/files/EH5ijUC6plJVZqWaO5a1)

## Auto-Launch Features

You may configure certain tools to launch automatically when a learner enters the course. If enabled, a notification appears at the top of the course homepage indicating which auto-launch is active:

* Document auto-launch — Opens a specific document automatically
* Exercise auto-launch — Launches a test immediately
* Learning path auto-launch — Starts a learning path upon course entry
* Forum auto-launch — Opens the forum directly


# Adding Content

This section covers the tools you use to add learning content to your course. Chamilo provides several ways to deliver material to your learners:

* [**Documents**](/teacher-guide/teacher-guide/adding-content/documents) — Upload files, create web pages, and organize your content library
* [**Links**](/teacher-guide/teacher-guide/adding-content/links) — Share URLs to external resources, organized by category
* [**Learning Paths**](/teacher-guide/teacher-guide/adding-content/learning-paths) — Build structured sequences of content with prerequisites and progress tracking
* [**Glossary**](/teacher-guide/teacher-guide/adding-content/glossary) — Define key terms that learners can reference throughout the course
* [**Announcements**](/teacher-guide/teacher-guide/adding-content/announcements) — Send messages and updates to your enrolled learners

Each tool is accessible from the course homepage tool grid. Click the tool's icon to open it.


# Documents

The documents tool is your course's file repository. You can upload files, create documents in HTML format, organize content into folders, and give learners access to all the materials they need.

## Accessing the Documents Tool

Open the **Documents** <img src="/files/Z4CDEY6dIuifReXua5LV" alt="Documents" data-size="line"> tool from the course homepage. You will see a file browser showing the root folder of your course's document library.

![The documents file browser showing folders and files with action icons](/files/1cFxWbDCWOYsqWG8oLLi)

## Uploading Files

1. Click the **Upload** <img src="/files/3wLdfDfeoZGOU3IomUIc" alt="Upload" data-size="line"> button
2. Select one or more files from your computer (you can drag and drop files into the upload area)
3. The files are uploaded and appear in the current folder

Chamilo supports most common file types: PDF, office documents (.docx, .odt), presentations (.pptx, .odp), spreadsheets (.xlsx, .ods), images (PNG, JPG, SVG, GIF), audio files, video files (including WEBM), HTML files, and more.

Some formats might be forbidden by the portal administrator through a whitelist/blacklist filtering setting in the security section of the administration.

For better readability by learners, we do recommend uploading files a browser can view or open without additional tools. This makes your course more portable and, as such, more accessible to mobile devices and more readable for people with special abilities.

## Creating Content

In addition to uploading files, you can create content directly in Chamilo:

### Web Pages

1. Click **New document**
2. Use the rich-text editor to write your content with formatting, images, tables, and links
3. Enter a **title** for the page
4. Save

The rich-text editor (TinyMCE) provides word-processor-like features including:

* Text formatting (bold, italic, headings, lists)
* Tables
* Images (upload or link to existing images)
* Embedded videos and audio
* Links to other resources
* HTML source editing for advanced users

### AI media generation

When AI helpers are enabled on the platform, you can ask the AI to generate an **image** or a **short video** to illustrate a paragraph in the document you are editing. Select a paragraph, open the **Generate AI media** dialog, and the AI will produce a media item that you can review and insert. The dialog respects course-level permissions and only appears in courses where AI media generation is allowed.

### Audio Recording

If your browser supports it, you can record audio directly within the documents tool — useful for creating audio instructions or language learning content. This requires an HTTPS configuration for Chamilo, as audio recording uses technology that the browser only allows if the connection is secure.

## Organizing with Folders

Keep your document library organized using folders:

1. Click **New folder** <img src="/files/fzIm1yXrARD2606xF5Ih" alt="New folder" data-size="line">
2. Enter a folder name
3. Save

You can create nested folders to build a logical content hierarchy (e.g., `Module 1 > Week 1 > Readings`).

### Moving Files

* Locate your file in the list
* Click **Move** <img src="/files/PZ9161sR677WbOnx9r6C" alt="Move" data-size="line">
* Select the destination folder
* Confirm

## Managing Documents

For each file or folder, you can:

| Action         | Icon                                                                      | Description                                         |
| -------------- | ------------------------------------------------------------------------- | --------------------------------------------------- |
| **Edit**       | <img src="/files/B0fShmcBNTxkW4Yi7qK2" alt="Edit" data-size="line">       | Rename the file or edit its content (for web pages) |
| **Delete**     | <img src="/files/FTsfPSjIaCdZ27BNZ6Yx" alt="Delete" data-size="line">     | Remove the file or folder                           |
| **Download**   | <img src="/files/F5ASX0S2KVV1tdvzGWSg" alt="Download" data-size="line">   | Download the file to your computer                  |
| **Visibility** | <img src="/files/ywBGhr3BmzcQnJ3q5q5u" alt="Visibility" data-size="line"> | Hide or show the file to learners                   |
| **Replace**    | <img src="/files/3GLziRJANIDCULFyNyqg" alt="Replace" data-size="line">    | Replace the file with an updated version            |
| **Move**       | <img src="/files/PZ9161sR677WbOnx9r6C" alt="Move" data-size="line">       | Move to a different folder                          |

Replacing a file is an important feature when you use documents to build learning paths, as replacing the document will allow the document to be refreshed without learners loosing the progress saved for that document.

### Bulk Actions

Select multiple files using checkboxes, then use the toolbar to delete or download all selected items at once.

## OnlyOffice Integration

If your administrator has configured the **OnlyOffice** plugin, you can edit Word, Excel, and PowerPoint (or LibreOffice) files directly in the browser without downloading them. Look for the **Edit with OnlyOffice** <img src="/files/GxaTVRpMZf9z931SfzoJ" alt="OnlyOffice" data-size="line"> option when viewing a supported file.

Documents are stored in Chamilo, OnlyOffice is only used to **view** or edit the documents in the browser, without the need for any additional tool.

## Cloud Files

If you use cloud storage (Azure Blob, AWS S3, or Google Cloud) for your files, these are stored in the cloud but you can link them from here. This is transparent to you and your learners — the document tool works the same way regardless of the storage backend.

## Tips

* **Organize early** — Create your folder structure before uploading content so you don't have to reorganize later. If you have created other courses with the right structure, you can use those courses as template later on
* **Use descriptive file names** — Help learners find what they need with clear, meaningful names
* **Hide work-in-progress** — Use the visibility toggle to hide documents you are still preparing
* **Link from learning paths** — Reference documents within your learning paths to create guided learning sequences
* **Check the disk quota** — If your course has a storage limit, remove outdated files to free up space


# Links

The links tool lets you share useful URLs with your learners, organized by category.

## Adding a Link

1. Open the **Links** <img src="/files/HIsEPwg900EVheOII1ma" alt="Links" data-size="line"> tool from the course homepage
2. Click **Add a link** <img src="/files/zcWT9g6VqnFm1Sn5WtGN" alt="Add link" data-size="line">
3. Fill in the details:
   * **URL** — The web address (e.g., `https://example.com/resource`)
   * **Link name** — A descriptive name for the link
   * **Description** — An optional explanation of what the resource is about
   * **Category** — Assign the link to a category for organization
   * **Target** — Where the link opens: `_self` (same window), `_blank` (new tab), `_parent`, or `_top`
   * **Show link on course homepage** — Whether you want to show it as a tool icon on the course homepage
4. Save

## Organizing with Categories

Categories help you group related links together:

1. Click **Add a category**
2. Enter a **category name** and optional description
3. Save

Links within a category are displayed together, making it easy for learners to find relevant resources.

## Managing Links

* **Link checking** <img src="/files/g64OiI0qPq9OzI88r8b2" alt="Validity" data-size="line"> — Chamilo can verify whether links are still active or broken
* **Edit** <img src="/files/B0fShmcBNTxkW4Yi7qK2" alt="Edit" data-size="line"> — Update the link's URL, title, or description
* **Visibility** <img src="/files/ywBGhr3BmzcQnJ3q5q5u" alt="Visibility" data-size="line"> — Hide or show the link to learners
* **Delete** <img src="/files/FTsfPSjIaCdZ27BNZ6Yx" alt="Delete" data-size="line"> — Remove the link

## Exporting Links

You can export your link collection to PDF. Look for the **Export** option in the links tool.

## Tips

* **Categorize by topic** — Create a category for each module or week of your course
* **Add descriptions** — Help learners understand why a link is relevant before they click it
* **Check regularly** — Web links can become outdated or broken over time


# Learning Paths

Learning paths let you create structured sequences of learning activities. A learning path guides your learners through a specific order of documents, exercises, links, and other resources, with optional prerequisites and progress tracking.

This tool is arguably the most used course tool, because it acts as a composer for many other tools and can very much be the ***only*** tool facing learners.

## Why Use Learning Paths?

Learning paths are useful when you want to:

* **Control the order** of content consumption — ensure learners complete foundational material before advancing
* **Track progress** — see exactly where each learner is in the sequence
* **Set prerequisites** — require learners to pass an exercise before accessing the next section
* **Award completion** — link learning path completion to the gradebook and certificates
* **Package content** — create self-contained learning modules that learners can work through at their own pace

## Creating a Learning Path

1. Open the **Learning paths** <img src="/files/SjkcwWxC5JJKVY4PjSfz" alt="Learning paths" data-size="line"> tool from the course homepage
2. Click **Create a learning path**
3. Enter a **title** and optional description
4. Save — you will be taken to the learning path editor

## The Learning Path Editor

![The learning path editor with the item tree on the left and content preview on the right](/files/OI0wrrUCYty2HHnUyHYw)

The editor has two main areas:

* **Left panel** — The list of items (steps) in the learning path, shown as a tree structure
* **Right panel** — The content of the selected item

### Adding Items

Click **Add an item** and choose what to add:

| Item type       | Description                                                                                             |
| --------------- | ------------------------------------------------------------------------------------------------------- |
| **Section**     | A heading that groups related items (like a chapter title). Sections do not contain content themselves. |
| **Document**    | A file or web page from your course's Documents tool                                                    |
| **Exercise**    | A quiz or test from the Exercises tool                                                                  |
| **Link**        | An external URL                                                                                         |
| **Assignment**  | A student publication from the Assignments tool                                                         |
| **Forum**       | A link to a course forum                                                                                |
| **Survey**      | A link to a survey                                                                                      |
| **Certificate** | A special page to trigger the generation of a completion certificate or the awarding of skills          |

### Organizing Items

* **Drag and drop** items to reorder them
* **Nest items** under sections by dragging them to the right
* **Delete** items you no longer need

### Setting Prerequisites

Prerequisites ensure learners complete certain steps before accessing others:

1. Select an item in the learning path
2. Open its **prerequisites** settings
3. Choose which preceding item(s) must be completed first
4. For exercises, you can require a **minimum score** (e.g., "Must score at least 70% on Quiz 1 before accessing Module 2")

## Learner Experience

When a learner opens a learning path:

* They see the list of items in the left panel
* Completed items are marked with a checkmark
* Items with unmet prerequisites are locked
* Progress is tracked automatically — if a learner leaves and comes back, they resume where they left off
* A progress bar shows overall completion percentage

## SCORM Content

Chamilo's learning path tool can import **SCORM 1.2** packages — the most widely used e-learning standard. Upload a SCORM ZIP file and Chamilo will create a learning path from it, tracking progress and scores according to the SCORM specification.

To import a SCORM package:

1. In the Learning paths tool, open the actions menu and click **Upload**
2. Upload the ZIP file
3. Chamilo unpacks and creates the learning path automatically

### CMI5 / xAPI packages

CMI5 packages (the modern xAPI-based successor to SCORM) are supported through the **XApi** plugin. Once the plugin is enabled by your administrator, you can import a CMI5 package and learners can launch it from the course; their statements are forwarded to the configured Learning Record Store.

## Content Authoring with C-Studio

*Available if your administrator has enabled the C-Studio plugin.*

C-Studio adds a built-in, drag-and-drop visual editor for creating interactive content directly inside a learning path — an alternative to importing a SCORM package when you don't have (or don't want to learn) a separate authoring tool like Articulate or iSpring. You build the content page by page right in Chamilo, and it's stored and tracked like any other learning path item.

### Starting a C-Studio Project

When the plugin is active, the Learning Paths list shows an extra button next to the usual actions menu, marked with a "+" and a "Studio Tools" tooltip:

![The Learning paths list showing the C-Studio "Studio Tools" button next to the standard actions menu](/files/Bh3My8721P6rs0Q7dqft)

Click it to start. You'll be asked to create a new project from scratch or import an existing one:

![The C-Studio start screen offering to create a new project or import an existing one](/files/XsKLQHerRzfI87WTC4LM)

This particular screen is currently only available in French, regardless of your platform or course language — a known limitation of the plugin version in use. Give your project a title and it opens straight into the editor.

### The Editor

![The C-Studio visual editor, showing the page canvas, the tool palette on the right, and the project panel on the left](/files/mUSkgWKQG4ifid5oLwTA)

The editor is a page-by-page visual builder:

* **Left panel** — your project's pages, with a "+" to add more, and a **Tools** section at the bottom (Clean data, Preview, Colors, Options, Quit)
* **Center canvas** — the page you're building; click any element to edit it in place
* **Right panel** — the component palette, dragged onto the canvas

The palette covers basic building blocks (columns, images, audio, titles, text, buttons, cards) as well as several interactive exercise types: **Drag Drop**, **Fill text**, **Hotspot Img**, **Mark Words**, **Find Words**, and **Sort paragraphs**, plus an **iframe** block for embedding external content and a **Quiz** block.

### Language

C-Studio's own interface may default to French the first time you open it, independent of your Chamilo interface language or the course's language. If so, go to **File > UI language** and pick your language — the editor reloads immediately and remembers your choice afterward.

![The File menu open, showing the "UI language" option](/files/LQajTh5OO7CxrPt0cX6t)

### Saving and Exporting

Use **File > Save** as you work. **File > Export...** packages your project as a SCORM file you can download, back up, or reuse elsewhere via **Import...**. **File > Quit** returns you to the learning path list, where your C-Studio project now appears as a regular item.

## Learning Path Settings

Configure how the learning path behaves:

| Setting                    | Description                                                          |
| -------------------------- | -------------------------------------------------------------------- |
| **Visibility**             | Hide or show the learning path to learners                           |
| **Prerequisites**          | Require completion of other learning paths before this one           |
| **Auto-launch**            | Automatically open this learning path when learners enter the course |
| **Accumulated SCORM time** | Whether to accumulate time across multiple sessions                  |

## Linking to the Gradebook

You can include learning path completion as a graded activity in the Gradebook. This allows learning path progress to contribute to the learner's overall course grade and certificate eligibility.

## Using AI

If the administrator has enabled AI-assisted learning path generation, you will find an AI generator option in the drop-down actions menu. Give the AI as precise a context as you want your learning path, ask for a number of pages and an approximate number of words per page, then tell it if you want to populate it with tests and launch. A few minutes later, you are looking down at a complete, text-based learning path.

Edit the documents to generate illustrations with more AI and you only have some review to do before you can share it with your learners.

## Tips

* **Start with an outline** — Plan your sections and items before building the path
* **Use sections as chapters** — Group related items under section headings for clarity
* **Set prerequisites for assessments** — Require learners to study the content before taking a quiz
* **Mix content types** — Combine reading materials, videos, interactive exercises, and external resources for an engaging learning experience
* **Check the learner view** — Use the Student View feature to experience the learning path as a learner would
* **Use SCORM for interactivity** — If you have access to SCORM authoring tools (like Articulate, iSpring, or similar), create rich interactive content and import it into Chamilo. If your administrator has enabled the C-Studio plugin, you can build similar interactive content directly in Chamilo instead — see [Content Authoring with C-Studio](#content-authoring-with-c-studio) above


# Glossary

The glossary tool lets you define key terms for your course. Learners can browse the glossary to look up definitions while studying.

## Adding a Term

1. Open the **Glossary** <img src="/files/2nb5Gu4ZT474iIG3Ms9l" alt="Glossary" data-size="line"> tool from the course homepage
2. Click **Add new glossary term**
3. Enter the **term** and its **definition** (the definition supports rich text formatting)
4. Save

## Managing Terms

* **Edit** <img src="/files/B0fShmcBNTxkW4Yi7qK2" alt="Edit" data-size="line"> — Update a term or its definition
* **Delete** <img src="/files/FTsfPSjIaCdZ27BNZ6Yx" alt="Delete" data-size="line"> — Remove a term from the glossary
* **Search** <img src="/files/5QmH6oaiO1uEcf9yEx2B" alt="Search" data-size="line"> — Use the search function to find specific terms quickly

## Importing and Exporting

You can build your glossary faster using import/export:

* **Import** <img src="/files/zNhYlYlapLElhgqy1V1n" alt="Import" data-size="line"> — Upload a list of terms and definitions from a CSV or XLS file. You can also tick "Update existing terms" to overwrite definitions for terms that are already in the glossary.
* **Export** <img src="/files/H1b1qY2Hg36CApL2zu5G" alt="Export" data-size="line"> — Download the glossary as CSV, Excel (XLS), or PDF for use in another course or for offline reference

## Display Options

The glossary can be displayed in two formats, toggled from the toolbar:

* **Table view** — Terms listed in a table with their definitions
* **List view** — Terms shown as individual panels stacked one after another

## Tips

* **Build it progressively** — Add terms as you introduce them in your course, rather than all at once
* **Keep definitions concise** — Short, clear definitions are more useful than lengthy explanations
* **Link from learning paths** — Reference glossary terms from your learning path content to encourage learners to use the glossary


# Announcements

The announcements tool lets you send messages to all learners enrolled in your course, or to specific individuals or groups.

Messages sent through announcements are sent to the learners both by e-mail *and* to their Chamilo inbox.

## Creating an Announcement

1. Open the **Announcements** <img src="/files/1auawLGgyLxi4uS8UzJ4" alt="Announcements" data-size="line"> tool from the course homepage
2. Click the **Add an announcement** icon <img src="/files/1auawLGgyLxi4uS8UzJ4" alt="Announcements" data-size="line"> again
3. Fill in:
   * **Recipients** — Choose who receives the announcement:
     * All enrolled learners
     * Specific learners
     * Specific groups
   * **Subject** — A subject line for the announcement
   * **Description** — The message body (supports rich text with formatting, links, and images)
   * **Attachment** — An optional attachment sent along with the e-mail
   * **Sending options** — Announcements will be sent by e-mail by default, but you can also choose (if you have the permissions) to send it through all sessions that include this course, to send a copy to yourself or to attach this announcement to a calendar event for the course.
4. Save

The **Tags** button lets you identify a series of markers that will be dynamically replaced in the announcement **Content**. These are relatively intuitive, so we'll let you guess what they do.

The **Preview** button is not very intuitive: it allows you to see whom this announcement will be sent to. This acts as a confirmation of the selection of recipients you made above.

## Managing Announcements

* **Edit** <img src="/files/B0fShmcBNTxkW4Yi7qK2" alt="Edit" data-size="line"> — Modify an existing announcement
* **Delete** <img src="/files/FTsfPSjIaCdZ27BNZ6Yx" alt="Delete" data-size="line"> — Remove an announcement
* **Visibility** <img src="/files/ywBGhr3BmzcQnJ3q5q5u" alt="Visibility" data-size="line"> — Hide or show announcements

Announcements are displayed in reverse chronological order (newest first).

## Tips

* **Welcome message** — Create an announcement at the start of the course to welcome learners and provide orientation
* **Use email delivery** — For time-sensitive announcements, enable the email option so learners receive the message even if they are not currently logged into the platform
* **Targeted announcements** — Send specific announcements to groups or individuals when the message is not relevant to the entire class


# Assessing Learners

Chamilo provides a comprehensive set of tools for evaluating your learners' knowledge and tracking their performance.

* [**Exercises**](/teacher-guide/teacher-guide/assessing-learners/exercises) — Create quizzes and tests with a variety of question types, automatic grading, and detailed feedback
* [**Assignments**](/teacher-guide/teacher-guide/assessing-learners/assignments) — Collect homework and projects from learners, with support for file uploads, peer review, and manual or AI-assisted grading
* [**Surveys**](/teacher-guide/teacher-guide/assessing-learners/surveys) — Gather feedback from learners through customizable questionnaires
* [**Attendance**](/teacher-guide/teacher-guide/assessing-learners/attendance) — Track learner presence in class sessions
* [**Gradebook**](/teacher-guide/teacher-guide/assessing-learners/gradebook) — Combine scores from exercises, assignments, and other activities into a unified grade, and award certificates

The **Reporting** tool is still present but moved to the top of the course homepage for the teacher, as a small chart icon. This is the central place to access progress information for the whole course and its students.

These tools work together: exercise scores and assignment grades can feed into the Gradebook, which can be linked to certificate generation and skill validation.


# Exercises

The exercises tool (also called "tests") lets you create quizzes and exams with automatic grading. Chamilo supports a wide variety of question types, from simple multiple choice to interactive hotspot questions.

## Creating an Exercise

1. Open the **Exercises** <img src="/files/ci6ah66zOpFV9lYP9IS5" alt="Exercises" data-size="line"> tool from the course homepage
2. Click **New exercise**
3. Enter a **title** and optional **description**
4. Configure the exercise settings (see below)
5. Save, then add questions

## Exercise Settings

![The exercise settings panel with options for display, time, attempts, and feedback](/files/VdI5X3OurFQ45cNza3uJ)

### Display and Navigation

| Setting                          | Options                        | Description                                          |
| -------------------------------- | ------------------------------ | ---------------------------------------------------- |
| **Question layout**              | All on one page / One per page | Show all questions at once or one at a time          |
| **Hide question titles**         | Yes / No                       | Whether to show question titles to learners          |
| **Show previous button**         | Yes / No                       | Allow learners to go back to previous questions      |
| **Prevent backwards navigation** | Yes / No                       | Force learners to answer in order without going back |

### Time and Availability

| Setting        | Description                                                                                   |
| -------------- | --------------------------------------------------------------------------------------------- |
| **Time limit** | Maximum time (in minutes) to complete the exercise. A countdown timer is shown to the learner |
| **Start date** | When the exercise becomes available to learners                                               |
| **End date**   | When the exercise stops being available                                                       |

### Attempts and Scoring

| Setting                        | Description                                                                                           |
| ------------------------------ | ----------------------------------------------------------------------------------------------------- |
| **Maximum attempts**           | How many times a learner can take the exercise (0 = unlimited)                                        |
| **Pass percentage**            | The minimum score to pass (e.g., 70%). Learners who do not reach this threshold see a failure message |
| **Propagate negative scoring** | Whether negative points on individual questions reduce the total score below zero                     |

### Feedback

| Setting        | Options                                                           |
| -------------- | ----------------------------------------------------------------- |
| **At the end** | Show results and correct answers after the learner submits        |
| **Immediate**  | Show feedback after each question (useful for learning exercises) |
| **Exam mode**  | Do not show any feedback or results                               |

### Results Display

Control what learners see after completing the exercise:

* Show score and expected answers
* Show score only
* Show score with category breakdown
* Show ranking among other learners
* Show only on last attempt
* Show radar chart visualization

### Completion Messages

* **Success message** — Custom text shown when the learner passes
* **Failure message** — Custom text shown when the learner does not reach the pass percentage

### Question Randomization

| Setting                   | Description                                         |
| ------------------------- | --------------------------------------------------- |
| **Random question order** | Shuffle the order of questions for each attempt     |
| **Random answers**        | Shuffle answer options within each question         |
| **Random by category**    | Select random questions from each question category |

You can also configure advanced selection strategies that combine categories and randomization.

## Question Types

![Overview of available question types in the exercise creation interface](/files/lycge85MPISJS375g7Me)

Chamilo offers a rich set of question types organized into several categories:

### Single Choice

* **Multiple choice (single answer)** — Learner selects one correct answer from a list of options
* **Single answer with images** — Same as above, but answer options are displayed as images

### Multiple Choice

* **Multiple answer** — Learner selects one or more correct answers
* **Multiple answer (dropdown)** — Answer options are presented as dropdown menus
* **True/False** — A series of statements that the learner marks as true or false
* **True/False with degree of certainty** — True/false with an additional confidence level, enabling more nuanced scoring

### Fill in the Blanks

* **Fill in the blanks** — Learner completes missing words in a text. You define the blanks and accepted answers when creating the question.

### Matching

* **Matching** — Learner connects items from two columns
* **Matching (draggable)** — Same concept, but with a drag-and-drop interface
* **Draggable** — Drag items into the correct positions

### Open-Ended

* **Free answer (essay)** — Learner writes a text response. Requires manual grading (or AI-assisted grading if configured)
* **Oral expression** — Learner records an audio response using their microphone
* **Upload answer** — Learner uploads a file as their answer

### Hotspot

* **Hotspot** — Learner clicks on specific areas of an image to answer
* **Hotspot delineation** — Learner draws boundaries around areas on an image

### Calculated

* **Calculated answer** — Numerical questions with a formula and tolerance range. Useful for math and science courses.

### Special

* **Reading comprehension** — Tests based on reading a passage
* **Annotation** — Teacher uploads an image and the learner annotates it
* **Answer in Office document** — When the OnlyOffice plugin is enabled, the learner answers the question by editing an embedded Office document (Word, Excel, PowerPoint). Their response is saved as a separate file under the exercise so it can be reviewed alongside the rest of their attempt.

## Adding Questions to an Exercise

1. Open the exercise and click **Add a question**
2. Select the question type
3. Enter the **question text** (supports rich text with images and formatting)
4. Define the **answers** and their scoring:
   * For each answer option, specify whether it is correct and how many points it is worth
   * You can assign negative points to wrong answers to discourage guessing
5. Optionally add **feedback** — explanations shown to the learner after answering
6. Set the **difficulty level** and **category** (useful for random selection and reporting)
7. Save

## Question Categories

You can organize questions into categories (e.g., "Module 1", "Vocabulary", "Advanced"). Categories are useful for:

* Organizing large question banks
* Enabling random selection by category (e.g., "5 questions from Module 1, 3 from Module 2")
* Viewing scores broken down by category in reports

## Question Reuse

Questions can be reused across exercises within the same course. When adding a question, you can choose to create a new one or select an existing question from the question bank.

## Importing Exercises

Chamilo supports importing exercises from external formats:

* **IMS QTI / Common Cartridge** — The standard e-learning quiz format
* **Moodle format** — Import quizzes from Moodle exports

To import, look for the **Import** option in the exercises tool and upload your file.

## Tips

* **Mix question types** — Combine multiple choice, fill-in-the-blanks, and open-ended questions for a comprehensive assessment
* **Use categories** — Organize questions by topic to enable targeted random selection
* **Set a pass percentage** — Give learners a clear target and link it to certificate generation via the Gradebook
* **Use immediate feedback for practice** — Create ungraded practice exercises with immediate feedback to help learners learn from their mistakes
* **Randomize for integrity** — Enable random question order and random answers to reduce the chance of copying


# Assignments

The assignments tool (also called "student publications") lets you collect work from learners — essays, projects, reports, or any file-based submission — and grade it.

## Creating an Assignment

1. Open the **Assignments** <img src="/files/CIt28TyDkpVSfV9uaDp4" alt="Assignments" data-size="line"> tool from the course homepage
2. Click **Create an assignment**
3. Fill in the details:
   * **Assignment name** — The name of the assignment (e.g., "Final Project Report")
   * **Description** — Instructions for learners, including what to submit and how it will be evaluated (supports rich text)
   * **Maximum score** — On what total will the assignment be graded
   * **Add to gradebook** — Add as an evaluated item in the assessment (gradebook) tool, so it can be part of reaching the course's goals
   * **Deadline** — The official (published) date and time after which submissions are flagged as late (uploads are still accepted)
   * **Ends at (completely closed)** — The hard cutoff date and time after which no upload is possible
   * **Add to calendar** — Create an event to reference this assignment submission date
   * **Submission type** — Choose between **Allow only text**, **Allow only files**, or **Allow files or online text**
4. Save

Once you have created an assignment, you can also:

* Upload template documents from inside the assignment detail page
* Assign the assignment to specific users (rather than all users of the course)

And once learners have submitted their assignments, you can:

* Export a PDF list of submissions
* Show a list of only the learners who have not submitted their assignment
* Download all assignments in a big ZIP
* Upload all corrections in a big ZIP
* Delete all corrections you submitted (this doesn't delete the learners' submissions)

## How Learners Submit

Learners open the assignment and:

1. Click **Upload file** or the submission button
2. Select a file from their computer (or write text directly, depending on configuration)
3. Add an optional comment
4. Submit

Learners can see whether they have already submitted and, if allowed, update their submission.

## Reviewing Submissions

![The assignment submissions list showing student names, dates, files, and grading status](/files/XUeaKVCiw5CJCuDd9et2)

As a teacher, open an assignment to see the list of all submissions:

* **Student name** — Who submitted
* **Submission date** — When the work was submitted
* **File** — Download the submitted file
* **Status** — Whether the submission has been graded
* **Comments** — Any comments left by the learner or by you

### Grading a Submission

![The assignment grading view with score input, feedback field, and corrected file upload](/files/812mXVQqsY25x37ykgO8)

1. Click on a submission to open it
2. Review the submitted file
3. Enter a **score**
4. Write **feedback comments** for the learner
5. Optionally upload a **corrected file** as an attachment
6. Save

### AI-Assisted Grading

If AI tools are configured on your platform, you may see an **AI grading** option when reviewing submissions. This uses an AI model to suggest a score and feedback for open-ended work. See [AI Grading](/teacher-guide/teacher-guide/ai-tools/ai-grading) for details.

## Managing Submissions

Group actions:

* **Download assignments package** — Download all submissions as a single ZIP file for offline review
* **Upload corrections package** — If you downloaded all submissions in a single ZIP file, edited the files in place on your computer and zipped them again, you can send the zip as a package of corrections. Do not change filenames or it will not work.
* **Late submissions** — Submissions after the deadline are flagged but may still be accepted depending on your settings

Individual submission actions:

* **Upload correction** — Upload a correction for one learner
* **Download** — Download the submission of one learner
* **Correct and grade** — Add a correction and a grade to the learner's submission
* **Edit** — Edit the document title or the previous feedback on the submission
* **Move** — Transfer a submission between assignment folders (e.g. if the student submitted in the wrong assignment)
* **Visibility** — Control whether learners can see each other's submissions

## Linking to the Gradebook

Assignment scores can be included in the course gradebook ("Assessments" tool). This allows assignment grades to contribute to the learner's overall course grade and certificate eligibility. See [Gradebook](/teacher-guide/teacher-guide/assessing-learners/gradebook) for details.

## Tips

* **Be specific in instructions** — Clearly describe what learners should submit, the expected format, and evaluation criteria
* **Set realistic deadlines** — Use the Agenda tool to make deadlines visible in the course calendar
* **Use the corrected file feature** — Upload annotated versions of student work so they can see your specific corrections
* **Enable peer visibility carefully** — Allowing learners to see each other's work can encourage learning but may not be appropriate for all assignments


# Surveys

The survey tool lets you create questionnaires to collect feedback from your learners. Surveys are useful for course evaluations, needs assessments, and opinion polls.

## Creating a Survey

1. Open the **Surveys** <img src="/files/zDTj7lgPmuevlImH6PU5" alt="Surveys" data-size="line"> tool from the course homepage
2. Click **Create survey**
3. Fill in the survey details:
   * **Code** — This is a unique code for the survey. It will be used in mails and links.
   * **Title** — The name of the survey
   * **Subtitle** — An optional secondary heading
   * **Start date** — From when this survey will be open to participation
   * **End date** — Until when this survey will be open to participation
   * **Anonymous** — Whether responses are anonymous or linked to individual learners
   * **Results visibility** — Who can see the results (only tutor, tutor and students, everyone)
   * **Introduction** — A message shown to learners before they start the survey
   * **Thank you message** — A message shown after submission
4. Save

### Advanced settings

* **Grade in the assessment tool** — Whether to include this survey's answer state in the assessment tool (gradebook). Anyone having completed the survey gets 100%, anyone else get 0%
* **Parent survey** — Not really used at this point (legacy feature)
* **One question per page** — Presentation style for the questions
* **Enable shuffle mode** — Whether to shuffle questions
* **Show question number** — Whether to show (auto-generated) question numbers

## Adding Questions

Once the survey is created, add questions:

1. Choose the question type:
   * **Yes/No** — A simple binary choice
   * **Multiple choice** — Select one answer from several options
   * **Multiple answer** — Select one or more answers from several options
   * **Open-ended** — Free text response
   * **Dropdown** — Select from a dropdown list
   * **Percentage** — Choose a percentage value
   * **Score** — Rate on a numeric scale
   * **Comment** — A text block (not a question) for adding instructions between questions
   * **Multiple choice with "other" option** — Select one answer from several options, with an alternative choice
   * **Selective display** — Special type allowing you to adapt the flow of questions based on previous answers
   * **Page break** — Add page breaks in the questions flow. Only useful if "One question per page" was **not** selected in the previous step
2. Configure the question text and answer options
3. Save

Each question can be marked as mandatory. If you don't, skipping any question will be acceptable behaviour.

## Publishing a Survey

After adding all questions:

1. Click **Publish**
2. Choose the recipients — Select specific learners or groups (you select them). The **Add learners** button adds all the learners in one single push and leaves the teachers behind
3. Add additional users — Lets you invite users from outside Chamilo to participate in the survey. They will receive an e-mail with a link and will appear by their e-mail address in the survey details
4. Mail subject
5. Mail text — Explain what the survey is about and when/how to answer
6. Different options for repeat invitations are available
7. Confirm

Learners receive an invitation (as an email) to complete the survey.

A link is available at the bottom of the publication page to invite even more external users to participate. Participants using this link will not be identified and appear as anonymous in the survey results.

## Viewing Results

![Survey results with charts and percentage breakdowns for each question](/files/4u7Uo0UZ4WkpKmQrDr89)

After learners have responded:

1. Open the survey
2. Click **Results** or **Report**
3. View response summaries:
   * Charts and percentages for closed questions
   * Individual text responses for open-ended questions
   * Completion rate (how many invitees responded)

You can export results to a spreadsheet for further analysis.

## Tips

* **Keep it short** — Learners are more likely to complete shorter surveys
* **Use anonymous mode** — For honest feedback, enable anonymous responses
* **Time it right** — Send mid-course surveys to make adjustments, not just end-of-course evaluations


# Attendance

The attendance tool lets you track learner presence for scheduled class sessions, whether in-person or online.

## Creating an Attendance Sheet

1. Open the **Attendance** tool from the course homepage
2. Click **Add attendance** to create an attendance sheet
3. Enter a **Title** for the attendance sheet (e.g., "Week 1 - Introduction")
4. Enter a **Description** (this is mostly for your use - learners will not see the description)
5. Save

### Advanced settings

1. **Require unique presence** allows you to consider a learner as fully present if he/she participated even to only one date of the attendance sheet
2. **Gradebook options** lets you decide to qualify the attendance sheet in the assessement tool (gradebook).

## Adding dates

Each attendance sheet contains one or more dates (sessions) where you record presence:

1. Open an attendance sheet or continue with the creation process
2. Click **Add a date** <img src="/files/TkUXuv3ZAIOuHroKg2Fa" alt="Add date" data-size="line">
3. Select the date and time
4. Optionally, check **Repeat date** to choose a repetition logic
5. Give a **Duration** in minutes for the event (defaults to 60 minutes)
6. Optionally, select a **Group** if this attendance date only applies to one group of learners
7. Save

You can add multiple dates to the same attendance sheet (e.g., all sessions for a month).

## Recording Attendance

For each date, mark each learner as:

* **Present** — The learner attended (default value for all learners)
* **Absent** — The learner did not attend

Click on the status cell next to each learner's name to toggle between present and absent.

By default, all learners are marked present, as we consider that chances are you have more people present than absent.

Note: Admins can modify the portal configuration to allow you to choose more extended attendance types (late, absent with justification, etc), which can better reflect your procedures. In this case, just clicking the presence input will toggle between all the presence types.

## Viewing Attendance Reports

![The attendance sheet showing a summary table with learners, dates, and presence indicators](/files/lXXMmiDI7bq0LlYfY2wn)

The attendance tool shows:

* A summary table with all learners and all dates
* Each learner's attendance percentage (present sessions / total sessions)
* Color-coded indicators for easy scanning

## Extra

Attendances have a few extended features that are not visible straight away:

* **Signatures** can be enabled so that learners can sign their attendance in-class through a tablet handled by the teacher
* **Comments** can be added by the teacher on each student attendance
* **PDF reports** can be extracted to comply with regulation

## Tips

* **Link to course progress** — Use attendance data alongside the Course Progress tool to correlate presence with topic coverage
* **Export data** — Export the attendance sheet for administrative records
* **Set expectations** — If attendance is mandatory, communicate the policy clearly in your course introduction or announcements


# Gradebook

The assessments (previously *gradebook*) aggregates scores from exercises, assignments, and other graded activities into a unified view of each learner's performance. It also controls certificate generation.

## How the Assessments Work

The assessments are weighted scoring systems. You define:

1. **Which activities** contribute to the grade (exercises, assignments, attendance, etc.)
2. **The weight** of each activity (how much it counts toward the final grade)
3. **The minimum certification score** (the threshold for earning a certificate)
4. **A minimum score per activity** — Each activity in the gradebook can have its own **Minimum score**. Learners who score below that minimum on a key activity can be prevented from achieving the objectives and earning the certificate, even if their overall weighted total is otherwise high enough.

Activities can be of 2 types:

* **Classroom activity** (or in-person activity), where grades have to be imported from some other source
* **Online activity** selected from the course, where grades are obtained through the fulfilling of the activity in the course

Chamilo calculates each learner's overall grade based on these weights.

## Setting Up the Assessment

1. Open the **Assessments** <img src="/files/v3yoThzOf3QCsguaBjPU" alt="Gradebook" data-size="line"> tool from the course homepage
2. You will see the assessments overview, initially empty

### Adding Activities

1. Click **Add online activity**
2. Choose the type:
   * **Test** — Link a specific exercise from the course
   * **Assignment** — Link a student publication folder
   * **Learning path** — Link learning path completion
   * **Attendance** — Link an attendance sheet
   * **Forum thread** — Link a forum thread (which has to be graded manually)
   * **Survey** — Link a survey
3. Select the specific activity within the chosen type
4. Set the **Weight** for this activity (e.g., 30% for the midterm exam, 40% for the final project)
5. Set the **Minimum score** if applicable
6. Save

The total weight of all activities should add up to 100%.

### Sub-Categories

For complex grading schemes, you can create **sub-categories** to group related activities:

* **Example**: A "Homework" sub-category (weight: 30%) containing five individual assignments each worth 20% of the sub-category
* Sub-categories let you organize the assessment hierarchically while keeping the overall calculation simple

## Viewing Grades

![The gradebook overview table showing learner names, activity scores, and weighted totals](/files/ok8w1G1obnGtpADojATw)

The assessment shows a table with:

* Each learner's name
* Scores for each activity
* The weighted total
* Whether the learner qualifies for a certificate

You can sort by any column to quickly identify top performers or struggling learners.

## Certificates

To enable certificate generation:

1. In the assessment settings, set a **minimum certification score** (e.g., 70%)
2. When a learner's weighted total meets or exceeds this threshold (and they have not failed any per-activity minimum score), they can download their certificate
3. The certificate is generated from a template configured by the platform administrator

See [Certificates and Skills](/teacher-guide/teacher-guide/tracking-and-reporting/certificates-and-skills) for more details.

## Linking to Skills

You can associate **skills** with the assessment. When a learner reaches the set objectives to complete the assessment, they can either get a certificate, get a skill or both. Skills are visible on their profile in the social network space. This builds a competency record over time.

## Exporting Grades

Click the **Export** <img src="/files/5iyUjX4cWepgqoScXujP" alt="Export" data-size="line"> button to download grades as a spreadsheet. This is useful for:

* Sharing grades with administrative systems
* Performing additional analysis outside Chamilo
* Keeping offline records

## Tips

* **Plan your weights early** — Define the grading scheme at the start of the course so learners know what to expect
* **Use sub-categories for complex courses** — Group assignments, quizzes, and participation into clear categories
* **Set meaningful pass thresholds** — The certification score should reflect actual competency, not just participation
* **Check regularly** — Review the gradebook periodically to ensure all activities are properly linked and scores are being recorded


# Collaboration and Communication

Chamilo provides several tools to enable interaction between you and your learners, and among learners themselves.

* [**Forums**](/teacher-guide/teacher-guide/collaboration-and-communication/forums) — Threaded discussions organized by category and topic
* [**Chat**](/teacher-guide/teacher-guide/collaboration-and-communication/chat) — Real-time text messaging within a course
* [**Groups**](/teacher-guide/teacher-guide/collaboration-and-communication/groups) — Divide learners into working groups with their own shared tools
* [**Wiki**](/teacher-guide/teacher-guide/collaboration-and-communication/wiki) — Collaborative document editing
* [**Blog**](/teacher-guide/teacher-guide/collaboration-and-communication/blog) — Shared blogging within the course
* [**Video Conferencing**](/teacher-guide/teacher-guide/collaboration-and-communication/video-conferencing) — Live video sessions using BigBlueButton or Zoom

These tools are available from the course homepage. Some may be hidden by default — you can make them visible from the tool grid (see [Course Homepage](/teacher-guide/teacher-guide/creating-your-course/course-homepage)).


# Forums

The forum tool allows you to host structured discussions within your course. Learners can post messages, reply to each other, and engage in threaded conversations.

## Forum Structure

![The forum category list showing categories, forums, and topic counts](/files/VpsqYZOFSsW6H6aalLpt)

Forums in Chamilo are organized in three levels:

1. **Forum categories** — Top-level groupings (e.g., "General Discussions", "Module 1 Questions")
2. **Forums** — Individual discussion boards within a category
3. **Topics (threads)** — Individual discussion topics within a forum, each with a chain of replies

## Creating a Forum Category

1. Open the **Forums** <img src="/files/Tf3wWpORnVHehcb6BsOV" alt="Forums" data-size="line"> tool from your course homepage
2. Click **Add a forum category**
3. Enter a **Category name** and optional description
4. Save

## Creating a Forum

You can only add a forum once at least one category exists.

1. Within a category, click **Add a forum**
2. Fill in the basic details:
   * **Title** — The name of this discussion board
   * **Description** — An optional description of the forum's purpose
   * **Create in category** — The category this forum belongs to
3. Open **Advanced settings** to configure:
   * **Publication date** / **Closing date** — Optional time window during which the forum is open
   * **Moderated forum** — Require new posts to be approved by a teacher before they become visible
   * **Can learners edit their own posts?** — Allow or prevent learners from editing posts after submitting
   * **Allow users to start new threads** — When set to No, learners can only reply to existing threads
   * **Default view type** — Choose how posts are displayed: **Flat**, **Threaded**, or **Nested**
   * **For Group** — Attach this forum to a course group
   * **Public access / Private access** — For group forums, decide whether any course member can read it or only group members
4. Save

If the course visibility is set to "Open to the world", the form also shows an **Allow anonymous posts?** option. This option is hidden in courses with restricted visibility.

## Managing Topics

Learners (and you) can create new topics within a forum. As a teacher, you can:

* **Pin a topic (sticky message)** — Mark a thread as sticky when you create or edit it so it always appears at the top
* **Lock a topic** — Prevent further replies
* **Edit or delete posts** — Moderate the discussion
* **Move a topic** — Transfer a topic to a different forum

## Forum Scoring

When creating a new thread as a teacher, you can enable **Grade this thread** under Advanced settings. You then set a maximum score, a column header for the gradebook, and a weight in the report. You can also enable **Thread scored by peers**, which requires each learner to qualify at least two other learners before their own score counts.

## Notifications

Each forum and thread has a **Notify me** toggle that you and your learners can use to subscribe to email notifications about new posts. Notifications are a per-user subscription and are not configured when creating the forum.


# Chat

The chat tool provides real-time text messaging within a course. It is useful for quick communication, live Q\&A sessions, or informal discussions.

## Using the Chat

1. Open the **Chat** tool from the course homepage
2. Type your message in the text field at the bottom
3. Press **Enter** or click the send button to post

All enrolled users who are currently in the chat room can see messages in real time.

## Chat Features

* **Real-time messaging** — Messages appear instantly for all participants
* **Message history** — Previous messages are visible when you enter the chat
* **User presence** — See who is currently in the chat room

## As a Teacher

As the course teacher, you can:

* **Monitor discussions** — Review chat history to track learner engagement
* **Find chat archives in Documents** — The chat tool automatically mirrors messages into HTML files in the Documents tool, organised by day and by scope (course / session / group), so the conversation persists beyond the live session

If the platform setting "Restrict course chat to tutors" is enabled by the administrator, only tutors can chat with learners; otherwise everyone enrolled in the course can participate.

## Tips for Using Chat Effectively

* **Schedule chat sessions** — Let learners know in advance when you will be available for live chat (use the Agenda tool)
* **Set ground rules** — Establish expectations for respectful communication
* **Use for quick questions** — Chat works best for short exchanges; use the Forum for longer, structured discussions

> If your platform has video conferencing configured (BigBlueButton or Zoom), consider using that for live sessions where voice and video would be more effective. See [Video Conferencing](/teacher-guide/teacher-guide/collaboration-and-communication/video-conferencing).


# Groups

Groups allow you to divide your learners into smaller teams for collaborative work. Each group can have its own shared tools, such as documents, forums, and a wiki.

## Creating Groups

1. Open the **Groups** tool from the course homepage
2. Click **Create groups**
3. Configure the group settings:
   * **Number of groups** — How many groups to create
   * **Maximum members per group** — The size limit for each group (0 for unlimited)
   * **Self-registration** — Whether learners can join groups on their own
   * **Self-unregistration** — Whether learners can leave a group on their own

## Group Tools

![The groups overview showing available group tools and member counts](/files/q0HFXPwdUpvBvnhNBErZ)

Each group can have access to a subset of course tools that are shared only among group members:

* **Documents** — A shared file space for the group
* **Forum** — A group-specific discussion forum
* **Wiki** — A collaborative wiki for the group
* **Chat** — A chat space for the group
* **Agenda** — Group-scoped calendar events
* **Announcements** — Send announcements to group members only
* **Assignments** — Collect work from the group

For each tool you can choose its access level: **Not available**, **Public** (any course member), or **Private** (group members only). These settings can be applied at the group category level, so multiple groups in the same category share the same tool configuration.

## Managing Group Members

You can manage group membership in several ways:

* **Manual assignment** — Add specific learners to each group
* **Fill selected groups** — Automatically distribute unsubscribed learners across the selected groups, respecting each group's capacity and the per-user group limit
* **Self-registration** — Allow learners to choose their own group
* **Import from classes** — Auto-create groups from the classes already enrolled in the course

To manually manage members, click on a group name, then use the **Members** section to add or remove learners.

## Group Tutors

You can assign **tutors** to groups. A tutor is typically a learner or assistant who helps manage the group's work. Tutors may have additional permissions within the group, such as moderating the group forum.

## Monitoring Group Work

As the course teacher, you can access all groups and their shared tools regardless of membership. This allows you to:

* Review documents uploaded by each group
* Read group forum discussions
* Check wiki contributions
* Assess group collaboration


# Wiki

The wiki tool lets you and your learners collaboratively create and edit web pages within the course. It is useful for group projects, shared knowledge bases, and collaborative writing exercises.

## How the Wiki Works

A wiki is a collection of interlinked web pages that anyone with permission can edit. In Chamilo:

* Each course has its own wiki
* Pages can be linked to each other using wiki-style links
* All edits are tracked with a revision history
* Previous versions can be compared and restored

## Creating a Wiki Page

1. Open the **Wiki** tool from the course homepage
2. Click **Add a new page**
3. Enter a **page title**
4. Write the page content using the rich-text editor
5. Save

To link to another wiki page from within the editor, create a link using the target page's title.

## Editing Pages

Anyone with edit permissions can modify a wiki page:

1. Open the page you want to edit
2. Click the **Edit** <img src="/files/B0fShmcBNTxkW4Yi7qK2" alt="Edit" data-size="line"> button
3. Make your changes in the editor
4. Add an optional **Comments** entry describing what you changed
5. Save

## Revision History

Every edit creates a new revision. You can:

* **View history** — See a list of all revisions with timestamps and authors
* **Compare versions** — See what changed between two revisions
* **Restore a version** — Revert the page to a previous revision if needed

## Managing the Wiki

As the course teacher, you can:

* **View all pages** — See a list of all wiki pages in the course
* **Find orphan pages** — Identify pages that are not linked from any other page
* **Find wanted pages** — See pages that are linked to but do not yet exist
* **Lock a page for editing** — Block all edits on a page while you finalise it
* **Toggle visibility** — Hide a page from learners
* **Delete pages** — Remove pages that are no longer needed
* **Monitor contributions** — Review per-user statistics: most active editors, most edited pages, most visited pages
* **Export** — Export a wiki page to PDF, or send it into the Documents tool

## Tips

* **Use the wiki for group projects** — Assign each group a wiki page to collaboratively build their deliverable
* **Create a course knowledge base** — Build a reference wiki with key concepts, and encourage learners to contribute
* **Review edit history** — The revision history lets you assess individual contributions in collaborative work


# Blog

The blog tool lets you create a shared blog within your course. Learners can write posts, leave comments, and engage in structured writing activities.

## Creating a Blog

1. Open the **Blog** tool from the course homepage (under the cog icon at the top)
2. Click **New project**
3. Enter a **title** and optional subtitle
4. Save
5. Decide when you want to make it available to students by clicking the **Show** (eye) icon

You can create multiple blogs within a single course (e.g., one per topic or one per group).

## Writing Blog Posts

1. Open a blog
2. Click **New post**
3. Enter a **title** and write the post content using the rich-text editor
4. Save

Both teachers and learners (depending on permissions) can create posts.

## Comments and Ratings

Readers can interact with blog posts through:

* **Comments** — Leave feedback or start a discussion under a post (comments can also be threaded as replies to other comments)
* **Ratings** — Rate posts to highlight the most valued contributions
* **Attachments** — Both posts and comments can carry file attachments

## Blog Tasks

You can create **tasks** within a blog — specific writing assignments that learners must complete as blog posts. This is useful for:

* Reflective journals
* Weekly writing assignments
* Project update reports

## Managing the Blog

As the teacher, you can:

* **Edit or delete** posts and comments (post deletion is restricted to the post author or to teachers)
* **Toggle blog visibility** to show or hide the blog from learners
* **Define tasks** — Add specific writing assignments learners are expected to complete as posts. Tasks can be color-coded for easier visual grouping.


# Video Conferencing

Chamilo integrates with video conferencing platforms to let you run live sessions directly from your course. Supported platforms include **BigBlueButton** and **Zoom**.

> Video conferencing must be configured by your platform administrator. If you do not see the video conferencing tool in your course, contact your administrator.

## Starting a Video Session

1. Open the **Video conference** <img src="/files/NKhWXLCCdEsA7nYxJ4Ha" alt="Video" data-size="line"> tool from the course homepage (or from the sidebar)
2. Click **Start a meeting** (or a similar button depending on the configured platform)
3. A new video conferencing room will open in a new browser tab

## Inviting Learners

Once a meeting is running, enrolled learners can join it by:

* Clicking the same **Video conference** tool in their course homepage
* Clicking the join link in an announcement or message you send them

## BigBlueButton

If your platform uses the BigBlueButton plugin, the meeting itself runs in BigBlueButton, where the usual conference features (audio/video, screen sharing, whiteboard, in-meeting chat, breakout rooms) are available. The Chamilo plugin specifically adds:

* **Recording management** — If recording is enabled by the administrator, recordings made during the session are listed inside the course so learners can replay them
* **Pre-upload presentation documents** — Attach a presentation file to a meeting so it is loaded into BigBlueButton when the room opens
* **Calendar integration** — Scheduled meetings are surfaced in the course agenda
* **Course / group / global rooms** — Run a single course-wide room, separate group rooms, or a platform-wide room

## Zoom Integration

If your platform uses Zoom, meetings are created and managed through Zoom's interface. Chamilo provides the integration point for launching and joining meetings from within the course.

## Tips

* **Schedule in advance** — Use the Agenda tool to schedule video sessions and send reminders
* **Test your setup** — Check your microphone and camera before the session
* **Record for absent learners** — If recording is enabled, share the recording link after the session for learners who could not attend
* **Combine with other tools** — Share presentation files in Documents before the session, and follow up with a Forum discussion afterward


# Tracking and Reporting

Chamilo tracks learner activity throughout the platform, giving you detailed insights into how your learners are progressing.

* [**Learner Tracking**](/teacher-guide/teacher-guide/tracking-and-reporting/learner-tracking) — Monitor individual learner activity: login times, time spent, pages visited, and tool usage
* [**Course Reports**](/teacher-guide/teacher-guide/tracking-and-reporting/course-reports) — View aggregate data across all learners in a course
* [**Certificates and Skills**](/teacher-guide/teacher-guide/tracking-and-reporting/certificates-and-skills) — Award certificates based on gradebook scores and validate acquired skills

## Accessing Reports

From your course, click the **Tracking** <img src="/files/KursVtC3weqc1ucvvrHS" alt="Tracking" data-size="line"> tool on the course homepage. You can also access reporting from the **Reporting** link in the sidebar for a cross-course overview.

Teachers see reporting data for courses they teach. Session tutors see data across all courses within their session.


# Learner Tracking

Chamilo tracks learner activity throughout the platform, giving you detailed insights into how each learner is engaging with your course.

## Accessing Learner Tracking

Open the **Tracking** <img src="/files/KursVtC3weqc1ucvvrHS" alt="Tracking" data-size="line"> tool from the course homepage, or click **Reporting** in the sidebar.

## What Is Tracked

For each learner, Chamilo records (in the main per-learner tracking view):

* **Login activity** — When the learner last logged in and their total login time
* **Time spent in the course** — Total time the learner has spent in your course
* **First and last access** — When the learner first entered and last visited the course
* **Course progress** — Aggregate progress percentage across the course
* **Exercise results** — Scores and attempts for each exercise
* **Learning path progress** — Completion percentage and time spent on each learning path
* **Assignment submissions** — Which assignments have been submitted and graded

Per-resource access details (which specific documents or pages a learner opened) and tool-level activity are available through the dedicated **Resources**, **Tools**, and **Events** views in the tracking section, rather than in the main learner row.

## Viewing Individual Learner Data

![Detailed learner tracking view showing progress, scores, and activity timeline](/files/GZSf4V7TKb4rjrpHSBqZ)

Click on a learner's name to see their detailed activity report. This shows:

* A summary of their overall engagement
* Progress through each learning path
* Exercise scores and attempt history
* Assignment submission status

## Tracking Views

You can view tracking data from different perspectives:

* **By learner** — Select a learner to see all their activity
* **By resource** — Select a document, exercise, or learning path to see how all learners interacted with it
* **By tool** — See aggregate usage for each course tool

## Tips

* **Identify struggling learners** — Look for learners with low engagement, multiple failed exercise attempts, or incomplete learning paths
* **Monitor progress regularly** — Check tracking data weekly to spot issues early
* **Use data for feedback** — Share relevant tracking data with learners to help them understand their own progress


# Course Reports

Course reports give you an aggregate view of activity and performance across all learners in your course.

## Accessing Course Reports

Open the **Tracking** <img src="/files/KursVtC3weqc1ucvvrHS" alt="Tracking" data-size="line"> tool from the course homepage and select the course-level reports view.

![The course tracking overview showing engagement metrics and learner activity summary](/files/3JdvURk0mA9zjDUwjxVG)

## Available Reports

### Activity Overview

A summary of overall course engagement, including enrolled learners, time spent in the course, course progress, exercise progress and average score, and assignment activity.

Separate detail views are available from the tracking section for **resources** (per-resource access counts), **tools** (per-tool usage), and **events** (raw event log).

### Exercise Reports

For each exercise in the course:

* Number of learners who attempted it
* Average score
* Score distribution
* Number of learners who passed (based on the pass threshold you set)

### Learning Path Reports

For each learning path:

* Completion rates across all learners
* Average progress percentage
* Time spent per item
* Learners who have completed the path vs. those still in progress

### Assignment Reports

For each assignment:

* Number of submissions received
* Number of pending reviews

## Exporting Data

You can export tracking and report data for further analysis. Look for the **Export** <img src="/files/5iyUjX4cWepgqoScXujP" alt="Export" data-size="line"> option to download data in a spreadsheet-compatible format.

## Session Reports

If you teach within a session, reports are scoped to the session's learners. Session tutors have access to reports across all courses in their session. A global configuration setting can also allows teachers to see assignments through all sessions using their course (ask your admin).


# Certificates and Skills

Chamilo allows you to award certificates to learners who meet specific achievement criteria, and to validate skills associated with those achievements.

## How Certificates Work

Certificates are linked to the **Assessments** (also called Gradebook). When a learner's grade meets or exceeds the minimum threshold you define, a certificate becomes available for them to download.

The workflow is:

1. Set up the [Assessments](/teacher-guide/teacher-guide/assessing-learners/gradebook) with your exercises, assignments, and other graded activities
2. Define a **minimum certification score** (e.g., 70%)
3. When a learner reaches that score, they can download their certificate (either within the Assessments tool itself, or from a learning path if you've configured the final step for that). As a teacher, you can also use the **Generate certificates** action in the gradebook to create the PDFs in batch for all eligible learners.

## Certificate Templates

Certificates use templates defined by the platform administrator. The template typically includes:

* The learner's name
* The course name
* The date of completion
* The score achieved
* A QR code or URL for online verification

## Skills

Skills represent competencies that learners acquire. In Chamilo:

* Skills can be linked to gradebook achievements
* When a learner earns a certificate, any associated skills are automatically validated
* Skills accumulate on the learner's profile, creating a competency record
* Skills can be organized hierarchically (e.g., "Data Analysis" under "Research Methods")
* Skills can be further evaluated by peers (360° evaluation)

## Viewing Certificate and Skill Status

As a teacher, you can see:

* Which learners have earned certificates in your course
* Which skills have been validated
* Learners' progress toward the certification threshold

Learners can view their own certificates and validated skills from their profile, and can access the Skills Wheel to check what skills are in demand in their organisation.

## Tips

* **Set clear expectations** — Tell learners at the start of the course what they need to achieve to earn a certificate
* **Use meaningful skill names** — Skills should describe what the learner can do, not just the course name
* **Combine with portfolios** — Encourage learners to add their certificates to their portfolio
* **Extend certificates** — Ask your admin to enable the Custom Certificate plugin to unleash even more certificate templating power


# AI Tools

Chamilo 2.0 introduces AI-powered tools that help you create content faster and provide personalized support to your learners. These features use large language models (such as OpenAI's GPT, Google Gemini, Mistral, or others) to generate educational content and assist with grading.

> AI tools must be configured by your platform administrator before they become available. See the [AI Configuration](/administration-guide/admin-guide/integrations/ai-configuration) section of the Administration Guide for setup details.

## Available AI Tools

* [**AI Tutor**](/teacher-guide/teacher-guide/ai-tools/ai-tutor) — An AI chatbot that learners can interact with for course-related questions
* [**Exercise Generator**](/teacher-guide/teacher-guide/ai-tools/exercise-generator) — Automatically generate quiz questions from your course content or a topic description
* [**Learning Path Generator**](/teacher-guide/teacher-guide/ai-tools/learning-path-generator) — Create structured learning sequences from a topic or set of objectives
* [**AI Grading**](/teacher-guide/teacher-guide/ai-tools/ai-grading) — Get AI-assisted evaluation of open-ended answers and student submissions
* [**Glossary Terms Generator**](https://github.com/chamilo/docs/tree/2.x/teacher-guide/ai-tools/glossary-generator.md) — Automatically generate term definitions for your course glossary
* [**AI Media Generation**](https://github.com/chamilo/docs/tree/2.x/teacher-guide/ai-tools/ai-media-generation.md) — Generate images and short videos from the rich-text editor while creating documents

## How AI Tools Work

When AI tools are enabled, they appear in the relevant contexts:

* The **Exercise Generator** appears when creating or editing exercises, and also as a quick action on documents in the Documents tool
* The **Learning Path Generator** appears when creating learning paths
* The **AI Grading** option appears in the assignment correction workflow
* The **AI Tutor** is available to learners within the course
* The **Glossary Terms Generator** appears in the Glossary tool toolbar
* The **AI Media Generation** dialog appears in the rich-text editor when creating or editing documents

All AI-generated content is presented as a **suggestion** that you can review, edit, and modify before publishing. You always have the final say on what your learners see.


# AI Tutor

The AI Tutor is a chatbot integrated into Chamilo that learners can interact with to ask course-related questions. It provides instant, context-aware responses powered by a large language model.

## How It Works

When the AI Tutor is enabled for a course, learners see a chat interface where they can:

* **Ask questions** about course content
* **Get explanations** of concepts covered in the course
* **Receive guidance** without waiting for the teacher to respond

The AI Tutor uses the course context to provide relevant answers. It is designed to supplement your teaching, not replace it.

## Enabling the AI Tutor

The AI Tutor requires two levels of configuration:

1. **Platform level** — The administrator must enable AI helpers and configure at least one AI provider (see [AI Configuration](/administration-guide/admin-guide/integrations/ai-configuration))
2. **Course level** — The AI Tutor must be enabled in the course settings (a simple on/off toggle). The provider used for the chat is the one configured by the administrator.

## The Chat Interface

![The AI Tutor chat interface showing a conversation between a learner and the AI](/files/MWPid5x4rvFPlS1eCAKC)

The AI Tutor appears as a **docked chat panel** within the course. Learners can:

* Type messages and receive AI-generated responses
* View their conversation history
* Reset the conversation to start fresh

The chat interface shows the exchange between the learner and the AI in a familiar messaging format.

## Important Behavior

* **Course context only** — The AI Tutor is only available inside a course, not on the general platform
* **Disabled during exams** — The AI Tutor is automatically disabled when a learner is taking an exercise, to prevent cheating
* **Conversation per learner** — Each learner has their own private conversation with the AI Tutor, and the prompt context only includes the most recent messages
* **Provider failover** — If the configured provider fails, Chamilo falls back to another available provider so the chat keeps working

## As a Teacher

You should be aware that:

* The AI Tutor may not always give perfect answers — encourage learners to verify important information
* You can review AI Tutor usage through platform tracking
* The AI Tutor is a complement to your teaching, not a substitute. Use it alongside forums, announcements, and direct messaging for comprehensive learner support.

## Tips

* **Set expectations** — Tell learners at the start of the course that an AI Tutor is available and explain how to use it appropriately
* **Encourage critical thinking** — Remind learners to think critically about AI-generated answers
* **Use for frequently asked questions** — The AI Tutor is especially useful for handling common questions that you would otherwise answer repeatedly


# Exercise Generator

The AI Exercise Generator helps you create quiz questions automatically using artificial intelligence. You provide a topic or content, and the AI generates questions that you can review, edit, and add to your exercises.

## Accessing the Exercise Generator

The Exercise Generator is available when creating or editing an exercise, provided that:

1. AI helpers are enabled at the platform level
2. At least one AI text provider is configured

Look for the **AI Generator** button or section within the exercise creation interface.

## How to Generate Questions

![The AI exercise generator form with fields for topic and number of questions](/files/uBpOpEKSnRhgylMl3PG7)

The generator offers two modes, available as tabs:

* **Test from topic** — Generate questions from a textual topic description
* **Test from document** — Generate questions from a course document (only available when a document-capable provider is configured). When this mode is used, the topic field becomes optional and is treated as an extra hint.

1. Open the AI Generator form within an exercise and pick the mode
2. Configure the generation parameters:
   * **Quiz title** — The title for the resulting exercise
   * **Questions topic** — Describe what the questions should be about (or, in document mode, an optional hint)
   * **Number of questions** — How many questions to generate (capped at 100)
   * **Question type** — Currently only **Multiple answer** is offered
   * **AI provider** — Select which AI provider to use (only shown when more than one is configured)
3. Click **Generate**
4. The AI produces a set of questions with answer options and correct answers marked. When AI disclosure is enabled, generated questions are prefixed with **\[AI-assisted]**.

## Reviewing and Editing

![AI-generated questions displayed for review with options to edit, accept, or remove each one](/files/76mOMlk4MODLgF5y6mIk)

Generated questions are presented as **suggestions**. You should:

* **Review each question** for accuracy and relevance
* **Edit the wording** if needed — adjust questions, answer options, and feedback
* **Verify correct answers** — make sure the AI has identified the right answers
* **Remove unsuitable questions** — delete any that don't meet your standards
* **Adjust scoring** — set appropriate point values for each question

Once you are satisfied, add the questions to your exercise.

Note that despite our specific format requests, some models will return question titles prefixed by a number. We don't recommend leaving that number there as this will hinder the mix of questions in tests with randomly selected questions. Also, sometimes you don't get as many questions as you've asked, so make sure you check that and potentially generate more questions, or change model if you have that possibility.

## AI-Generated Content Disclosure

Content generated by AI is labeled with a disclosure notice, indicating that it was created using artificial intelligence. This transparency helps learners understand the origin of the material.

## Tips

* **Provide specific topics** — The more specific your topic description, the more relevant the generated questions will be.
* **Always review** — AI-generated content may contain errors. Never publish questions without reviewing them first.
* **Use as a starting point** — Generated questions are a time-saver, not a finished product. Edit them to match your teaching style and course content.
* **Mix with manual questions** — Combine AI-generated questions with manually created ones for the best results.
* **Try different providers** — If multiple AI providers are available, try different ones to see which produces the best questions for your subject area.


# Learning Path Generator

The AI Learning Path Generator helps you create structured learning sequences automatically. You provide a topic and objectives, and the AI generates a learning path outline with sections and content items that you can review and customize.

## Accessing the Learning Path Generator

The Learning Path Generator is available when creating a new learning path, provided that:

1. AI helpers are enabled at the platform level
2. The learning path generator is enabled in the course settings
3. At least one AI text provider is configured

Look for the **AI Generator** section within the learning path creation interface.

## How to Generate a Learning Path

![The AI learning path generator form with fields for topic, objectives, and section count](/files/wltunINhZw5iEmSuvyQ7)

1. Open the AI Generator form
2. Configure the parameters:
   * **Topic** — The subject matter for the learning path
   * **Number of items** — How many content pages the path should contain
   * **Words count per page** — Roughly how long each page should be
   * **Add test after each page** — When ticked, the AI also creates a short multiple-choice quiz after each page (default 2 questions, capped at 5)
3. Click **Generate**
4. The AI produces a learning path with one document item per page and, optionally, a quiz item after each one

## Reviewing and Customizing

The generated learning path is a **starting point**. You should:

* **Review the structure** — Check that the sections are in a logical order
* **Edit content** — Modify the generated text, add your own materials, and remove irrelevant sections
* **Add resources** — Insert your own documents, exercises, links, and other content
* **Set prerequisites** — Configure which sections must be completed before others
* **Add assessments** — Include exercises at appropriate points to check understanding

## AI-Generated Content Disclosure

Content generated by AI is labeled with a disclosure notice, indicating that it was created using artificial intelligence. This transparency helps learners understand the origin of the material.

## Tips

* **Start broad, then refine** — Generate a high-level structure first, then manually add detail and specific resources
* **Use for course planning** — Even if you don't use the generated content directly, the AI's suggested structure can be a useful planning tool
* **Combine with exercise generation** — After generating a learning path, use the Exercise Generator to create assessments for each section


# AI Grading

AI Grading helps you evaluate open-ended student submissions — essays, written answers, and uploaded assignments — by providing AI-generated score suggestions and feedback.

## Where AI Grading Appears

AI Grading is available in two contexts:

* **Open-ended exercise questions** — When you manually grade free-answer questions in an exercise
* **Assignment submissions** — When you review and score student publications in the Assignments tool

Look for the **AI grading** button (indicated by a robot icon <img src="/files/xeecuofCzaXrw8svH5qV" alt="AI" data-size="line">) in the grading interface.

## How It Works

![The AI grading interface showing a student submission with suggested score and feedback](/files/ms8INPrYvlOjFxXt09Lp)

1. Open a submission or answer that needs grading
2. Click the **AI grading** button
3. The AI analyzes the student's response and produces:
   * A **suggested score** based on the quality and relevance of the answer
   * **Feedback comments** explaining the strengths and weaknesses of the response
4. Review the AI's suggestions
5. **Accept, modify, or reject** the score and feedback
6. Save your final grade

## Important Notes

* **AI grading is a suggestion** — You always have the final say. The AI provides a starting point that you can adjust based on your professional judgment.
* **Review is essential** — AI may misinterpret context, miss nuances, or score incorrectly. Always review the suggested grade before confirming.
* **Works best with clear criteria** — The more specific your assignment instructions and grading rubric, the better the AI's suggestions will be.

## AI-Generated Content Disclosure

Comments generated by AI are labeled with a disclosure notice, indicating that they were created using artificial intelligence. This transparency helps learners understand the origin of the grading.

## Tips

* **Use for large classes** — AI grading is most valuable when you have many submissions to review, as it speeds up the initial evaluation
* **Provide detailed assignment descriptions** — Clear instructions help the AI understand what a good response looks like
* **Calibrate expectations** — Grade a few submissions manually first to establish your standards, then use AI grading to help with the rest
* **Use the feedback** — AI-generated feedback can be a useful starting point for your comments, even if you adjust the score


# Additional Tools

Beyond the core content, assessment, and collaboration tools, Chamilo offers several additional tools that can enhance your course.

* [**Agenda**](/teacher-guide/teacher-guide/additional-tools/agenda) — Schedule events, deadlines, and reminders for your course
* [**Notebook**](/teacher-guide/teacher-guide/additional-tools/notebook) — A personal note-taking tool for learners
* [**Dropbox**](/teacher-guide/teacher-guide/additional-tools/dropbox) — A simple file exchange tool between you and your learners
* [**Portfolio**](/teacher-guide/teacher-guide/additional-tools/portfolio) — Let learners build and showcase a portfolio of their work
* [**Course Progress**](/teacher-guide/teacher-guide/additional-tools/course-progress) — Define thematic sections and track course delivery


# Agenda

The agenda tool lets you schedule events and deadlines within your course. Events appear on a calendar that your learners can view.

## Viewing the Agenda

Open the **Agenda** <img src="/files/nrnIImfU2K0UuujHisNB" alt="Agenda" data-size="line"> tool from the course homepage. You can view events in three modes:

![The agenda in calendar view showing course events and deadlines](/files/QJRjiVT7aHkxBnTXydGp)

* **Calendar view** — A visual monthly/weekly/daily calendar
* **List view** — Events shown as a chronological list
* **Personal events** — Filter to see only events relevant to you

## Creating an Event

1. Click **Add event** <img src="/files/TkUXuv3ZAIOuHroKg2Fa" alt="Add event" data-size="line">
2. Fill in the event details:
   * **Title** — A short name for the event
   * **Start date and time**
   * **End date and time**
   * **Description** — Additional details (supports rich text)
3. Choose the **audience**:
   * **All learners** — Everyone enrolled in the course
   * **Specific users or groups** — Select individual learners or groups
4. Optionally set a **reminder** <img src="/files/8AkioNEL6e9XXoDNTms3" alt="Reminder" data-size="line"> to send email notifications before the event (*cron* setup for the portal required by an admin)
5. Save

## Managing Events

* **Edit** <img src="/files/B0fShmcBNTxkW4Yi7qK2" alt="Edit" data-size="line"> — Click on an event to modify its details
* **Delete** <img src="/files/FTsfPSjIaCdZ27BNZ6Yx" alt="Delete" data-size="line"> — Remove an event from the calendar
* **Drag and drop** — In calendar view, drag events to reschedule them

## Personal Agenda

You also have a **personal agenda** accessible from the sidebar. The personal agenda aggregates events from all your courses into a single view. This is where learners see their combined schedule across all courses they are enrolled in.

## Tips

* **Set deadlines** — Create events for assignment due dates and exercise deadlines so learners can see them in their calendar
* **Use reminders** — Enable email reminders for important events to help learners stay on track
* **Coordinate with sessions** — If you teach in multiple sessions, each session has its own events, visible only to that session's learners. Teachers have a feature to see the events (homeworks, excursions, etc) of other courses in their sessions to avoid overloading students.


# Notebook

The notebook is a personal note-taking tool for learners. Each learner has their own private notebook within the course.

## How It Works

The notebook is a simple tool where learners can:

* **Create notes** — Write and save personal notes related to the course content
* **Organize notes** — Review, edit, and delete their notes
* **Keep them private** — Notes are visible only to the learner who created them

## As a Teacher

As a teacher, you should be aware that:

* The notebook is a **personal tool** — you cannot see your learners' notes
* It is useful as a **reflection tool** — encourage learners to take notes while studying
* Notes are stored within the course — they are not shared across courses

## Enabling the Notebook

The notebook tool appears on the course homepage if it is enabled. If you do not see it, check that it is not hidden (look for hidden tools on the course homepage).


# Dropbox

The dropbox is a file exchange tool that allows you and your learners to share files with each other within the course.

> For collecting graded student work, the [Assignments](/teacher-guide/teacher-guide/assessing-learners/assignments) tool is usually more appropriate, as it includes grading and feedback features. The dropbox is better suited for informal file sharing.

## Sending a File

1. Open the **Dropbox** tool from the course homepage
2. Click **Share a new file**
3. Select the file to upload
4. Choose the **recipient(s)** — one or more enrolled users or course groups
5. Send

## Receiving Files

When someone sends you a file, it appears in your dropbox inbox. You can:

* **Download** the file
* **Add a comment** to the file (after it has been received)
* **Move** the file into one of your categories
* **Delete** the file from your inbox

## Organizing files

Both sent and received files can be organized into custom **categories** (folders). Use the category controls in the dropbox toolbar to create a category, then move files into it. If the platform setting "allow overwrite" is enabled, re-sending a file with the same name lets you overwrite the previous version.

You can also batch-download selected files as a ZIP.

## As a Teacher

* You can send files to individual learners, groups of learners, or all enrolled users
* You can view files sent to you by learners
* This tool is useful for sharing supplementary materials, providing individual feedback documents, or receiving informal submissions


# Portfolio

The portfolio tool lets learners collect and showcase their work throughout the course. It serves as a digital portfolio where learners can compile their best work, reflections, and achievements.

## How Portfolios Work

Each learner has a personal portfolio within the course where they can:

* **Add items** — Write text entries with the rich-text editor and attach one or more files to each item
* **Organize content** — Tag items so they can be filtered by topic
* **Share selectively** — Set the visibility of each item: hidden, visible to the course, hidden except for the teacher, or shared with selected users when advanced sharing is enabled

## As a Teacher

You can use portfolios for:

* **Reflective learning** — Ask learners to maintain a portfolio of reflections on their learning journey
* **Competency demonstration** — Have learners collect evidence of skills and knowledge
* **Assessment** — Review portfolio contents as part of your evaluation

To view a learner's portfolio, open the portfolio tool and filter the items list by user.

If the course is configured to allow it, you can score portfolio items and individual comments — these scores can then feed into the gradebook. You can also **highlight** items you want to draw attention to, and mark items or comments as **templates** so you (or learners) can reuse them as a starting point for new entries. Portfolios can be exported as **PDF** or **ZIP**.

## Tips

* **Define expectations** — Tell learners what kinds of items to include and how to organize their portfolio
* **Review regularly** — Check portfolios periodically rather than only at the end of the course
* **Combine with skills** — Use portfolios alongside the skills/certificates system to create a comprehensive competency record


# Course Progress

The course progress tool helps you define the thematic structure of your course and track how much of the planned content has been delivered.

To students, it is a useful tool for those who have been sick for a few days and could not attend class, as they will known what topics have been talked about and how far the rest of the class has progressed in their absence.

## How It Works

Course progress is organized into three layers:

* **Thematic sections** — The main topics or modules of your course
* **Thematic plan** — For each section, what you intend to cover. Each plan entry is one of a fixed set of types: **Objectives**, **Skills to acquire**, **Methodology**, **Infrastructure**, **Assessment**, or **Others**.
* **Thematic advance** — Discrete delivery records under each section, each with a start date and a duration in hours. Mark advances as **done** as you deliver them to track real progress against the plan.

## Setting Up Course Progress

1. Open the **Course progress** tool from the course homepage
2. Create **thematic sections** that correspond to your course's main topics or modules
3. Within each section, add **plan** entries by type to describe what you intend to cover
4. As you deliver the content, add **thematic advances** with their date and duration, and mark them as done
5. Decide the visibility of that information on the course homepage by changing the related settings in the **Course settings** section (cog icon at the top of the course homepage)

You can optionally link a thematic advance to an attendance sheet so its start date is pulled from your attendance records. Sections (with their plan and advances) can also be **copied** within the same course/session.

## Use Cases

* **Track your teaching plan** — Monitor which parts of the course have been delivered and which remain
* **Attendance integration** — Course progress can work alongside the attendance tool to correlate presence with topics covered
* **Reporting** — Get a clear view of course delivery status over time

## For Learners

Learners can view the course progress to understand the course structure and see what topics have been covered so far. This is particularly useful for learners who join late or miss sessions.


# Social Network

Chamilo includes a built-in social network that lets you connect with other users on the platform. This feature may be enabled or disabled by your platform administrator.

## Accessing the Social Network

Click **Social network** in the sidebar to access the social features. If you do not see this option, your administrator may have disabled it.

## Your Social Wall

![The social wall showing a feed of posts, likes, and comments from connections](/files/UDRDtDeptCgHpgJVwxY6)

The social wall shows a feed of activity from you and your connections. You can:

* **Post updates** — Share text and links with your connections
* **Like and comment** — Interact with posts from other users
* **View activity** — See recent posts from people you are connected with

## Connections

You can connect with other users on the platform:

* **Search for users** — Find colleagues and learners by name
* **Send connection requests** — Invite other users to connect
* **Manage connections** — Accept, decline, or remove connections

> **Note:** Learners can only search for and add other learners as friends — they cannot send friend requests to teachers. As a teacher, however, you can search for learners and request to add them as friends.

## Messaging

The social network integrates with the platform's messaging system:

* **Send messages** <img src="/files/K7OlAFEw5fDBAmiuKSNj" alt="New message" data-size="line"> — Write direct messages to other users
* **Inbox** <img src="/files/wPP6FRORdxP6rgUwtgWZ" alt="Inbox" data-size="line"> — Read and reply to received messages
* **Sent messages** <img src="/files/LKt6OHGSW5pxQH9rwxAR" alt="Sent" data-size="line"> — Review messages you have sent

### Composing and Replying

When composing a new message, you can address it to multiple recipients at once. Similarly, when replying to a message, you can include multiple users in your reply — useful for group coordination without a formal social group.

### Message Tags

If your platform configuration uses message tags (typically managed at the platform level), your inbox shows a tag list you can click to filter messages by that tag, which makes locating related threads faster as your inbox grows.

## Social Groups

Social groups allow users to gather around common interests or projects:

* **Join groups** — Browse and join existing groups
* **Create groups** — Start a new social group (if permitted)
* **Group discussions** — Share posts within a group context

> Social groups are different from **course groups** (covered in the [Groups](/teacher-guide/teacher-guide/collaboration-and-communication/groups) section). Course groups are tied to a specific course, while social groups are platform-wide.


# Sessions

Sessions in Chamilo are a way to deliver the same course to different groups of learners at different times, without duplicating the course content. Think of a session as a scheduled edition or cohort of a course.

## How Sessions Work

A **course** is a container of content and tools. A **session** assigns that course to a specific group of learners for a specific time period. This means:

* The same course can be reused across multiple sessions
* Each session has its own enrolled learners and its own start/end dates
* Each session has its own results — grades, progress, and tracking data are kept separate per session
* The base course content is shared, but teachers can customize certain elements per session

## Your Sessions

From the sidebar, click **My sessions** to see your sessions. They are organized into three views:

![The My Sessions page showing current, past, and upcoming session views](/files/L5iSEjCJaeLHWFeNLgck)

* **Current sessions** — Sessions that are currently active
* **Past sessions** — Sessions that have ended
* **Upcoming sessions** — Sessions that have not started yet

Each session shows the courses it contains. Click on a course within a session to access it.

## Teaching in a Session

When you enter a course through a session, the experience is similar to a regular course, with a few differences:

* The **session name** appears alongside the course title, so you always know which session you are working in
* Learner data (progress, grades, submissions) is specific to this session
* Some settings (like the ability to change the visibility of tools) may be locked by the session administrator

## Session Roles

Sessions introduce additional roles:

| Role                      | Description                                                                |
| ------------------------- | -------------------------------------------------------------------------- |
| **Session administrator** | Manages the creation and configuration of sessions                         |
| **Session tutor**         | Oversees all courses within a session (can access tracking across courses) |
| **Course tutor**          | Teaches a specific course within a session                                 |

If you are assigned as a **course tutor** in a session, you can manage that course's content and track learner progress for the session's learners.

> Sessions are typically managed by administrators. If you need to create or modify a session, contact your platform administrator or session administrator.


# Branches and Rooms

Chamilo includes a basic physical location system built around two concepts: **branches** and **rooms**.

A **branch** represents a physical site or campus — for example, a main office, a regional training centre, or a university building. Branches can be nested (a building can contain departments, a city can contain buildings). Each branch can contain one or more **rooms**, which represent individual classrooms or lab spaces within that branch.

This feature is still in early stages. At this point its main practical use is letting you attach a physical location marker to a course.

## Assigning a Room to a Course

When creating a course, if your administrator has already set up rooms, a **Default room** field appears in the course creation form. Select the room where the course takes place.

This information is informational — it does not affect course behaviour or access control. It simply records where the course is physically held, which can help administrators manage room scheduling and view room occupation across courses.

If no rooms have been configured on your platform, the field will not appear.

## What Administrators Can Do

Branch and room management is handled entirely by administrators. They can:

* Create and organise branches in a tree hierarchy
* Add rooms to branches, with optional geolocation and IP range data
* View which courses are assigned to each room
* View a room's occupation calendar based on attendance entries

If you need a room created or need your course moved to a different room, contact your platform administrator.


# Support Tickets

The **Tickets** tool is a built-in helpdesk system that lets users submit support requests and track their resolution. Depending on how your platform is configured, you may use it as a **requester** (submitting tickets on behalf of yourself or your learners) or as a **support agent** (responding to tickets assigned to your category).

## How the System Is Organized

Tickets belong to **projects**, which are further divided into **categories**. Each category can have one or more support agents assigned to it. When a ticket is submitted, it is automatically routed to an available agent in the selected category.

Default categories include:

| Category               | Description                                                            |
| ---------------------- | ---------------------------------------------------------------------- |
| Enrollment             | Questions and issues about course or session enrollment                |
| General information    | General platform questions                                             |
| Requests and paperwork | Administrative requests and documentation                              |
| Academic Incidents     | Issues related to exams, assignments, or tasks                         |
| Virtual campus         | Technical issues with the platform                                     |
| Online evaluation      | Issues with a specific course assessment (requires selecting a course) |

## Accessing the Ticket Tool

If your administrator has enabled the ticket link, a ticket icon <img src="/files/7KUMfsxbJLuNR0bovYr3" alt="Ticket" data-size="line"> appears in the top navigation bar. Click it to go directly to the ticket submission form.

You can also access your tickets from the main menu under **Support** or **Tickets**, depending on your platform configuration.

## Submitting a Ticket

To open a new support request:

1. Click **New ticket** (or the ticket icon in the top bar).
2. Select the **category** that best matches your issue.
3. If the category requires it (for example, Online evaluation), select the relevant **course**.
4. Enter a **subject** — a short summary of the issue.
5. Write your **message** describing the problem in detail.
6. Optionally attach files (screenshots, documents) to help the support agent understand the issue.
7. Click **Submit**.

The ticket is assigned an ID and routed to a support agent. You will receive a notification when the agent responds.

## Tracking Your Tickets

From the ticket list, you can see all tickets you have submitted and their current status:

| Status      | Meaning                                         |
| ----------- | ----------------------------------------------- |
| New         | Just submitted, not yet reviewed                |
| Pending     | Being reviewed by a support agent               |
| Unconfirmed | Awaiting confirmation or additional information |
| Forwarded   | Transferred to another team or agent            |
| Closed      | Resolved                                        |

Click any ticket to read the full conversation thread and add a reply.

## Replying to a Ticket

Once a ticket is open, you and the support agent exchange messages within the same thread. To add a reply:

1. Open the ticket from your list.
2. Scroll to the reply field at the bottom.
3. Write your response and attach files if needed.
4. Click **Send**.

Both parties receive notifications when a new message is added to the thread.

## Handling Tickets as a Support Agent

If your administrator has assigned you to one or more ticket categories, you will see incoming tickets from learners or colleagues in your queue.

To respond to an assigned ticket:

1. Open your ticket list — assigned tickets appear alongside tickets you have submitted.
2. Click a ticket to read the requester's message.
3. Write a reply and click **Send**. The ticket status updates automatically.
4. When the issue is resolved, change the status to **Closed**.

You can also change the **priority** of a ticket (Low, Normal, High) to help triage your queue.

> Access to ticket categories is controlled by the platform administrator. If you need to be added as a support agent for a category, contact your administrator. See the Admin Guide's [Tickets Settings](/administration-guide/admin-guide/platform-settings/ticket-settings) for configuration options.


# Appendix

## General Questions

**How do I access my course?**

Click **My courses** in the sidebar, then click on the course you want to open. If your course is part of a session, click **My sessions** first, then select the session and course.

**Can my learners access the course from a mobile phone?**

Yes. Chamilo 2.0 has a responsive interface that adapts to all screen sizes. Learners can use any modern web browser on a phone, tablet, or computer.

**What browsers are supported?**

Chamilo 2.0 works with all major modern browsers: Chrome, Firefox, Safari, and Edge. For the best experience, use the latest version of your browser.

## Content and Courses

**How do I create a backup of my course?**

Go to the **Maintenance** tool in your course (accessible from the settings menu on the course homepage). You will find options to export your course content.

**Can I copy content from one course to another?**

Yes. Use the course import/export features in the Maintenance tool to copy content between courses. You will need to create an empty *destination* course first.

**What file formats can I upload?**

Chamilo supports most common file formats: PDF, Word documents, PowerPoint presentations, images (PNG, JPG, SVG, GIF), audio files, video files, and many more. Your administrator may restrict certain file types for security reasons.

**What is the maximum file upload size?**

This depends on your server configuration. Your administrator sets the upload limit. If you encounter a limit, contact your administrator.

## Assessment

**Can exercises be graded automatically?**

Yes. Most question types (multiple choice, true/false, fill in the blanks, matching) are graded automatically. Open-ended questions require manual grading, or you can use AI-assisted grading if configured.

**Can I set a time limit on exercises?**

Yes. When creating or editing an exercise, you can set a time limit in minutes. Learners will see a countdown timer.

**Can learners retake an exercise?**

Yes. You control the number of allowed attempts in the exercise settings. You can allow unlimited attempts or set a specific maximum, but this maximum applies to all users in your course (you can *free* new attempts by deleting previous ones, but this is not recommended as it results in unequal chances between users and it is registered for audit at the platform level).

## Technical Issues

**I cannot see a tool on my course homepage. Where is it?**

Some tools may be hidden. As a teacher, you can show hidden tools by looking for tools with a crossed-out eye icon. If you cannot find a specific tool at all, your platform administrator may have disabled it at the platform level.

**My learners say they cannot access the course.**

Check the course visibility settings (Course Settings > Course Visibility). If set to "Registered only," learners must be explicitly enrolled. Also verify they have an active account on the platform.


# Glossary

Key terms used throughout this guide.

| Term              | Definition                                                                                                                                                  |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Assessment**    | See **Gradebook** below                                                                                                                                     |
| **Assignment**    | A task where learners submit files or text for teacher review and grading. Also known as "student publication" or "work".                                   |
| **Auto-launch**   | A feature that automatically opens a specific tool when a learner enters a course.                                                                          |
| **Certificate**   | A document automatically generated when a learner meets the minimum score defined in the gradebook.                                                         |
| **Course**        | A container for learning content and tools. A course can include documents, exercises, forums, learning paths, and more.                                    |
| **Course tutor**  | A teacher role specific to sessions. A course tutor manages one course within a session. Called "course coach" in Chamilo versions before 2.1.              |
| **Disk quota**    | The maximum storage space allocated to a course for uploaded files.                                                                                         |
| **Enrollment**    | The process of registering a user in a course or session, giving them access to its content. Also known as "subscription".                                  |
| **Exercise**      | A quiz or test containing one or more questions. Also referred to as a "test" in some contexts.                                                             |
| **Forum**         | A discussion tool with threaded conversations organized into categories and topics.                                                                         |
| **Gradebook**     | A tool that aggregates scores from exercises, assignments, and other activities into a unified grade for each learner.                                      |
| **Learning path** | A structured sequence of learning activities (documents, exercises, links) that learners follow in a defined order, optionally with prerequisites.          |
| **LTI**           | Learning Tools Interoperability — a standard that allows external learning tools to be embedded within Chamilo.                                             |
| **SCORM**         | Sharable Content Object Reference Model — a standard for e-learning content packages. Chamilo can import and play SCORM packages within learning paths.     |
| **Session**       | A time-bound edition of one or more courses assigned to a specific group of learners. Sessions allow reusing the same course content for different cohorts. |
| **Session tutor** | A supervisory role that oversees all courses within a session. Called "session coach" in Chamilo versions before 2.1.                                       |
| **Skill**         | A competency that can be linked to gradebook achievements. When a learner earns a certificate, associated skills are validated.                             |
| **Survey**        | A questionnaire tool for collecting feedback, with various question types and anonymous response options.                                                   |
| **Visibility**    | A setting that controls whether a tool, document, or activity is visible to learners. Teachers can always see hidden items.                                 |


# Administration Guide

Welcome to the Chamilo 2.0 Administration Guide. This guide is designed for platform administrators responsible for installing, configuring, and managing a Chamilo instance.

## What you can do as an Administrator

As a Chamilo administrator, you manage:

* **Installation and configuration** — Set up Chamilo on your server, configure storage, email, and environment settings
* **Users** — Create, import, and manage user accounts, roles, and permissions
* **Courses and sessions** — Oversee course creation, manage the course catalog, and configure training sessions
* **Platform** — Languages, portal news, the global agenda, and the Pages CMS tool
* **Platform settings** — Configure portal behavior, security, performance, and feature availability
* **Reporting** — Platform statistics, learning analytics, and corporate/HR reporting
* **Skills** — Define competency badges and link them to gradebook results
* **System** — Server maintenance tools, self-update, storage inspection, and branding
* **Rooms** — Manage physical sites and bookable training rooms
* **Security** — Monitor login attempts, review flagged intrusion attempts, and check password strength
* **Plugins** — Install, configure, and manage platform extensions
* **Authentication** — Set up external login systems (OAuth2, LDAP, CAS, SCIM)
* **Integrations** — Connect Chamilo to video conferencing, LTI tools, AI providers, and more
* **Maintenance** — Perform backups, monitor system health, and manage storage

## How this guide is organized

1. **Getting Started** — An overview of the administration interface
2. **Installation** — Server requirements, installation wizard, and initial configuration
3. **Users** — Managing user accounts, roles, groups, and profiles
4. **Courses** — Managing courses, categories, and import/export
5. **Sessions** — Organizing time-bound training cohorts
6. **Platform** — Languages, portal news, the global agenda, and the Pages CMS tool
7. **Platform Settings** — Configuring every aspect of the platform
8. **Reporting** — Statistics, learning analytics, and corporate/HR reporting
9. **Skills** — Competency badges and gradebook-driven awards
10. **System** — Server tools, self-update, storage inspection, and branding
11. **Rooms** — Branches and bookable training rooms
12. **Security** — Security monitoring and auditing tools
13. **Plugins** — Managing platform extensions
14. **Health Check** — Live configuration checks
15. **Other Admin Blocks** — Chamilo.org links, version check, support, and news
16. **Authentication** — Setting up external authentication providers
17. **Integrations** — Connecting third-party services
18. **Multi-URL** — Running multiple portals from a single installation
19. **Performance Tuning** — Optimizing the platform for speed and scale
20. **Maintenance** — Backups, system status, and cleanup

## Accessing the Administration Panel

After logging in as an administrator, click **Administration** <img src="/files/Ioqo9QifLgZkCMNoBa2U" alt="Admin" data-size="line"> in the sidebar to access the administration panel.


# Getting Started

This section introduces the Chamilo 2.0 administration interface and helps you get oriented.

## Who Is an Administrator?

Chamilo has several levels of administrative roles:

| Role                        | Access                                                                                                                                |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| **Administrator**           | Full access to all administration features for the platform. Also known as **Portal Administrator**                                   |
| **Global Administrator**    | Same as Portal Administrator, with access across all access URLs in a multi-URL (multi-tenant) setup                                  |
| **Sessions Administrator**  | Can manage sessions, enroll users in sessions, and access session-related settings                                                    |
| **Human Resources Manager** | Can view learner progress and tracking data for assigned users                                                                        |
| **Questions Manager**       | Less of an administrator than a content curator, question managers have access to a global question bank to review questions' quality |

This guide focuses primarily on the **Portal Administrator** role, which has the broadest access.

## Logging In

Administrators log in through the same login page as all other users. After entering your credentials, you will be sent (in the absence of other configuration) to the **Administration** page. A notable difference from other user roles is the **Administration** section in the sidebar (not visible to other roles).

## Next Steps

* [Admin Interface Overview](/administration-guide/admin-guide/getting-started/admin-interface-overview) — A tour of the administration panel and its sections


# Admin Interface Overview

The administration panel is your command center for managing the Chamilo platform. Access it by clicking **Administration** <img src="/files/Ioqo9QifLgZkCMNoBa2U" alt="Admin" data-size="line"> in the sidebar.

## Administration Dashboard

![The administration dashboard showing functional blocks for Users, Courses, Sessions, and Settings](/files/cVMfKLMg8Zt7Bxymy7kz)

The admin dashboard is organized into functional blocks. Each block groups related management tools:

### Users

* **User list** — View, search, edit, and manage all users on the platform
* **Add a user** — Create individual user accounts
* **Classes** — Manage user classes for bulk session enrollment

See the [Users](/administration-guide/admin-guide/users) chapter for details.

### Courses

* **Course list** — View and manage all courses on the platform
* **Create a course** — Create a new course
* **Course categories** — Organize courses into categories for the catalog

See the [Courses](/administration-guide/admin-guide/courses) chapter for details.

### Sessions

* **Session list** — View and manage training sessions
* **Create a session** — Set up a new session with courses and enrollment
* **Session categories** — Organize sessions into categories
* **Careers and promotions** — Manage career paths and promotion workflows

See the [Sessions](/administration-guide/admin-guide/sessions) chapter for details.

### Platform

* **Configuration settings**, **Languages**, **Portal news**, **Global agenda**, **Pages**, **Extra fields**, **Mail templates**, **Contact form categories**, and more — see the [Platform](/administration-guide/admin-guide/platform) chapter for details. The "Configuration settings" link is the entry point to the separate [Platform Settings](/administration-guide/admin-guide/platform-settings) chapter.

### Reporting

* **Global statistics**, **Reports catalog**, **Learning analytics**, **Quarterly report**, **Teachers time report**, **Corporate report**, **Special exports**, **Tickets** — Platform statistics and reporting; see the [Reporting](/administration-guide/admin-guide/reporting) chapter for details

### Skills

* **Skills wheel**, **Skills import**, **Manage skills**, **Manage skills levels**, **Skills ranking**, **Skills and assessments** — Competency badges linked to gradebook results; see the [Skills](/administration-guide/admin-guide/skills) chapter for details

### System

* **Clean temporary files**, **System status**, **System update**, **Colors**, **File info**, **Resources by type**, **List icons** — Server maintenance, self-update, and branding; see the [System](/administration-guide/admin-guide/system) chapter for details

### Rooms

* **Branches**, **Rooms**, **Room availability finder** — Physical sites and bookable training rooms; see the [Rooms](/administration-guide/admin-guide/rooms) chapter for details

### Security

* **Activities audit**, **Login attempts**, **Simple IDS**, **Password strength checker** — Security monitoring and auditing tools; see the [Security](/administration-guide/admin-guide/security) chapter for details

### Plugins

* Shortcuts to installed plugins that declare an admin menu page, plus general plugin management — see the [Plugins](/administration-guide/admin-guide/plugins) chapter for details

### Health Check

* Live pass/fail checks (mail settings, admin URL assignment, file permissions) — see the [Health Check](/administration-guide/admin-guide/health-check) page for details

### Other Blocks

* **Chamilo.org**, **Version check**, **Professional support**, **News from Chamilo** — links and status panels pulling content from the Chamilo project; see [Other Admin Blocks](/administration-guide/admin-guide/other-admin-blocks) for details

Each section is covered in detail in its corresponding chapter of this guide.

Authentication methods like OAuth2, LDAP, CAS, and other external authentication providers are not configured in the administration dashboard but in `config/authentication.yaml`.


# Installation

This section covers everything you need to install and configure Chamilo 2.0 on your server.

Chamilo 2.0 is a PHP application built on the Symfony framework. It can run on most Linux-based servers, has been installed and runs on Windows Server with IIS, and supports MySQL and MariaDB backends.

## Installation Steps

1. [**Server Requirements**](/administration-guide/admin-guide/installation/server-requirements) — Verify your server meets the minimum requirements
2. [**Installation Wizard**](/administration-guide/admin-guide/installation/installation-wizard) — Run the web-based installation wizard
3. [**Configuration**](/administration-guide/admin-guide/installation/configuration) — Configure environment variables and Symfony settings
4. [**Cloud Storage**](/administration-guide/admin-guide/installation/cloud-storage) — Set up cloud storage backends (optional)
5. [**Email Configuration**](/administration-guide/admin-guide/installation/email-configuration) — Configure email delivery
6. [**Upgrading**](/administration-guide/admin-guide/installation/upgrading) — Upgrade from a previous version

## Quick Overview

The basic installation process is:

1. Download or clone the Chamilo source code
2. Install PHP dependencies with Composer if preparing from source
3. Install JavaScript dependencies with npm/yarn and build frontend assets
4. Create an empty `.env` file to store your database credentials and other settings later on
5. Change permissions (writeable by the web server) on *var/*, *config/* and *.env*
6. Run the web-based installation wizard
7. Connect with your first administrator account
8. Change permissions back on *config/* and *.env*

Detailed instructions for each step are in the pages linked above.


# Server Requirements

Before installing Chamilo 2.0, verify that your server meets the following requirements.

## Software Requirements

### PHP

| Requirement     | Minimum | Recommended  |
| --------------- | ------- | ------------ |
| **PHP version** | 8.2     | 8.3 or later |

### Required PHP Extensions

| Extension                        | Purpose                                                                      |
| -------------------------------- | ---------------------------------------------------------------------------- |
| **curl**                         | HTTP requests (API integrations, external services)                          |
| **fileinfo**                     | MIME type detection for uploaded files                                       |
| **gd**                           | Image processing (thumbnails, CAPTCHA)                                       |
| **intl**                         | Internationalization (date, number, and string formatting)                   |
| **json**                         | JSON encoding/decoding                                                       |
| **ldap**                         | LDAP connector. Although you will probably not use LDAP, Chamilo requires it |
| **mbstring**                     | Multibyte string handling (UTF-8 support)                                    |
| **openssl**                      | Cryptographic operations (HTTPS, password hashing, tokens)                   |
| **pdo\_mysql** or **pdo\_pgsql** | Database connectivity (install the one matching your database)               |
| **xml**                          | XML parsing (SCORM, RSS, SOAP)                                               |
| **zip**                          | Handling ZIP archives (SCORM packages, bulk imports/exports)                 |
| **apcu**                         | User-level caching (recommended)                                             |
| **opcache**                      | Opcode caching (strongly recommended for performance)                        |
| **xapian**                       | Full-text search (optional, only if you use search)                          |

### Database

| Database    | Minimum Version |
| ----------- | --------------- |
| **MySQL**   | 8.0             |
| **MariaDB** | 10.4            |

### Web Server

| Server     | Notes                                                                                                               |
| ---------- | ------------------------------------------------------------------------------------------------------------------- |
| **Apache** | Requires `mod_rewrite` enabled.                                                                                     |
| **Nginx**  | Requires manual configuration for URL rewriting. See the Symfony Nginx documentation for a reference configuration. |

### Build Tools

| Tool              | Purpose                                                                 |
| ----------------- | ----------------------------------------------------------------------- |
| **Composer**      | PHP dependency management. Required to install Chamilo's PHP libraries. |
| **Node.js** (18+) | JavaScript runtime. Required to build frontend assets.                  |
| **npm**           | JavaScript package manager. Installed with Node.js.                     |

## Hardware Requirements

| Resource       | Minimum                 | Recommended                                                 |
| -------------- | ----------------------- | ----------------------------------------------------------- |
| **RAM**        | 2 GB                    | 4 GB or more                                                |
| **CPU**        | 1 core                  | 2+ cores                                                    |
| **Disk space** | 2 GB (application only) | 20+ GB (including uploaded content)                         |
| **Disk type**  | HDD                     | SSD (significantly improves database and cache performance) |

These are baseline figures. Actual requirements depend on the number of concurrent users and the volume of content hosted.

## Operating System

| OS          | Notes                                                                |
| ----------- | -------------------------------------------------------------------- |
| **Linux**   | Recommended. Ubuntu 22.04+, Debian 12+, AlmaLinux 9+, or equivalent. |
| **Windows** | Possible but not thoroughly tested. Use WSL2 for development.        |
| **macOS**   | Development only / untested.                                         |

## Network Requirements

* A domain name pointing to your server.
* An SSL/TLS certificate for HTTPS (Let's Encrypt provides free certificates).
* Outbound SMTP access if sending emails directly (or use a third-party email service).
* Port 443 (HTTPS) and optionally port 80 (HTTP, for redirect to HTTPS).

## Checking Requirements

After placing the Chamilo source on your server, you can check your PHP configuration directly:

```bash
php -m          # List installed extensions
php -i          # Full PHP info
```

## Tips

* **Use PHP-FPM** with Apache or Nginx for better performance than mod\_php.
* **Separate your database** onto a dedicated server for platforms expecting more than 500 concurrent users.
* **Use SSD storage** -- Database-heavy applications like Chamilo benefit significantly from fast disk I/O.


# Installation Wizard

Chamilo 2.0 includes a web-based installation wizard that guides you through the initial setup. The wizard runs automatically when you access the platform for the first time.

## Before You Start

Ensure the following prerequisites are met:

1. Your server meets all [server requirements](/administration-guide/admin-guide/installation/server-requirements).
2. You have downloaded a packaged (zip or tar.gz) version of Chamilo.
3. Your web server is configured to serve the `public/` directory as the document root.
4. Your `.env` file exists and is empty (the wizard will guide database setup).

## Step 1: Installation Language

![Installation wizard Step 1 — language selection](/files/fTBG0FFEZz3rQ8BxsWYg)

The first step lets you select the language for the installation process. Choose your preferred language from the dropdown.

If Chamilo detects an existing installation (for an upgrade), it will display the migration status and offer an upgrade path instead of a fresh install.

## Step 2: Requirements Check

![Installation wizard Step 2 — requirements check showing PHP version, extensions, and directory permissions](/files/ilLikZKPPmJ2eBK0Z5ss)

The wizard checks your server environment:

* **PHP version** is 8.2 or superior
* **Required PHP extensions** are installed (intl, gd, curl, zip, mbstring, xml, etc.)
* **Recommended PHP settings** — `date.timezone` is configured, adequate upload/memory limits
* **Directory and file permissions** — `var/`, `config/`, and `public/upload/` are writable by the web server

If any requirements are not met, the wizard displays warnings or errors. Resolve them before proceeding.

## Step 3: License

![Installation wizard Step 3 — license acceptance](/files/wh4AR7Qdtr0euxprvwv8)

This step displays the GNU/GPLv3 license. You must check the **"I accept"** checkbox to proceed.

Optionally, you can expand the **Contact information** section to provide details about your organization (name, email, company, country). This is voluntary and helps the Chamilo community understand who uses the platform, but will also allow us to contact you *very rarely* about events happening close to you.

## Step 4: Database Settings

![Installation wizard Step 4 — database connection configuration](/files/dboLZDwH9cWjENWwaCwJ)

Enter your database connection details:

| Field                 | Description                                                                   |
| --------------------- | ----------------------------------------------------------------------------- |
| **Database host**     | The hostname or IP of your database server (e.g., `localhost` or `127.0.0.1`) |
| **Database port**     | Default: 3306 for MySQL/MariaDB                                               |
| **Database name**     | The name of the database to use (alphanumeric and underscores only)           |
| **Database user**     | A database user with full privileges on the specified database                |
| **Database password** | The password for the database user                                            |

Click **Check database connection** to test. The wizard will not let you proceed until the connection is successful. If the database already exists, a warning is displayed.

## Step 5: Configuration Settings

![Installation wizard Step 5 — administrator account, portal settings, and email configuration](/files/YkhNPBa8FEHY9RMYl5yr)

This step combines administrator account creation, portal settings, and email configuration.

### Administrator Account

| Field          | Description                                                      |
| -------------- | ---------------------------------------------------------------- |
| **Login**      | The administrator username                                       |
| **Password**   | Choose a strong password — this account has full platform access |
| **First name** | The administrator's first name                                   |
| **Last name**  | The administrator's last name                                    |
| **Email**      | Used for system notifications and password resets                |
| **Phone**      | Optional contact number                                          |

These admin details will also be used by Chamilo to populate the support contact details, so make sure you go reconfigure that in the settings after the installation concluded.

### Portal Settings

| Field                                  | Description                                             |
| -------------------------------------- | ------------------------------------------------------- |
| **Language**                           | The default interface language                          |
| **Portal name**                        | The name of your platform (e.g., "My Organization LMS") |
| **Company short name**                 | Your organization's abbreviated name                    |
| **Company URL**                        | Your organization's website                             |
| **Encryption method**                  | Password hashing algorithm — **bcrypt** is recommended  |
| **Allow self-registration**            | Yes / No / After approval                               |
| **Allow self-registration as trainer** | Yes / No                                                |

### Email Configuration

The email settings section lets you configure the mail transport (SMTP, Amazon SES, Mailjet, etc.) and test email delivery. See [Email Configuration](/administration-guide/admin-guide/installation/email-configuration) for details.

All these settings can be changed later from the administration panel.

## Step 6: Last Check Before Install

![Installation wizard Step 6 — review of all settings before installation](/files/ycNQtrZPmMyjShAlaovp)

This step displays a summary of everything you entered for review:

* Administrator credentials (password is hidden by default — click the eye icon to reveal)
* Portal settings
* Database connection details

Review carefully, then click **Install Chamilo** to execute the installation. The wizard creates all database tables, populates initial data, and configures the platform.

## Step 7: Installation Complete

![Installation wizard Step 7 — completion with security advice and portal link](/files/x4yhIDpSilGVUubQIOQR)

After installation completes successfully, the wizard shows:

* **Getting started advice** — Suggests creating your first course to explore the platform (as admin, you need to do this from the admin panel)
* **Security recommendations**:
  * Make the `config/` directory read-only (`chmod 0555`)
  * Delete the `public/main/install/` directory
* A **link to your portal** to log in with the administrator credentials you just created

## Post-Installation

After completing the wizard:

* **Remove or restrict access to the installer** -- The wizard should not be accessible after installation. Chamilo typically locks it automatically, but verify that re-visiting the install URL redirects to the login page.
* **Configure email delivery** -- See [Email Configuration](/administration-guide/admin-guide/installation/email-configuration).
* **Set up backups** -- Before adding content, configure automated database and file backups (Chamilo does not provide a solution for this, but copying the var/ folder and the database are the 2 most important elements).
* **Review security settings** -- See [Security Settings](/administration-guide/admin-guide/platform-settings/security-settings).

## Troubleshooting

| Problem                        | Solution                                                                                                                     |
| ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------- |
| Blank page at install URL      | Check PHP error logs. Change to `APP_ENV=dev` in .env temporarily to see errors in the browser.                              |
| Database connection fails      | Verify credentials, confirm the database exists, check that the database server allows connections from the web server host. |
| Permission denied errors       | Ensure `var/` is writable by the web server user.                                                                            |
| Assets not loading (no CSS/JS) | Run `yarn install && yarn build` to compile frontend assets.                                                                 |


# Configuration

Chamilo 2.0 uses environment variables and Symfony configuration files for its core settings. This page covers the key configuration files and variables.

## Environment Variables (.env)

The primary configuration file is `.env` in the Chamilo root directory. This file contains environment-specific settings that should not be committed to version control.

A default `.env.dist` file ships with Chamilo and contains documented defaults. Create `.env` (required to start the installation) to override values for your environment.

### Key Variables

| Variable            | Description                                                                                                                                                                                       | Example           |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- |
| `APP_ENV`           | The application environment, at the Symfony level. Use `prod` for production, `dev` for development, 'test' for testing.                                                                          | `prod`            |
| `APP_SECRET`        | A random string used for CSRF tokens, cookie signing, and other cryptographic operations. Chamilo generates a unique value for each installation. Don't modify it.                                | `a1b2c3d4e5f6...` |
| `DATABASE_HOST`     | The database host. Defaults to localhost                                                                                                                                                          | `localhost`       |
| `DATABASE_PORT`     | The database port. Defaults to 3306 for MySQL/MariaDB                                                                                                                                             | `3306`            |
| `DATABASE_NAME`     | The database name, as given by you to the installation wizard.                                                                                                                                    | See below.        |
| `DATABASE_USER`     | The database username, as given by you to the installation wizard.                                                                                                                                | See below.        |
| `DATABASE_PASSWORD` | The database user's password, as given by you to the installation wizard.                                                                                                                         | See below.        |
| `TRUSTED_PROXIES`   | (Optional) If you are hosting Chamilo behind a reverse proxy, you need to provide the IP(s) of the reverse proxy here for Chamilo to be able to interpret calls and generate responses correctly. |                   |

Other settings in .env are relatively rarely modified.

Note that, in future versions, the DATABASE\_\* settings will be combined into one single `DATABASE_URL` variable.

E-mail sending configuration is presented during installation, but can be modified later on in the `Platform settings` section of the administration dashboard.

## Symfony Configuration (config/ Directory)

Symfony-level configuration lives in the `config/` directory. These YAML files control framework behavior, service definitions, and package-specific settings.

It is not frequent to have to modify those files, and changing them can render your portal inoperative, so please do not attempt to modify those if you must ensure the system's availability.

### Key Configuration Files

| File                             | Purpose                                                                   |
| -------------------------------- | ------------------------------------------------------------------------- |
| `config/authentication.yaml`     | Authentication methods configuration.                                     |
| `config/packages/doctrine.yaml`  | Database and ORM configuration.                                           |
| `config/packages/security.yaml`  | Authentication, firewalls, access control, and role hierarchies.          |
| `config/packages/cache.yaml`     | Cache adapter configuration (filesystem, APCu, Redis).                    |
| `config/packages/framework.yaml` | General Symfony framework settings (session, CSRF, router, HTTP caching). |
| `config/packages/twig.yaml`      | Template engine configuration.                                            |
| `config/services.yaml`           | Application service definitions and dependency injection.                 |

### Environment-Specific Overrides

Symfony supports per-environment configuration. Files in `config/packages/prod/` override the defaults when `APP_ENV=prod`, and `config/packages/dev/` overrides when `APP_ENV=dev`.

For example, `config/packages/prod/monolog.yaml` typically configures less verbose logging than the development equivalent.

Chamilo does not define any configuration in `config/packages/prod/` in the software itself, so if you want to customize setting from `config/packages/*.yaml`, just create a copy of the yaml file inside that directory and change the settings there.

## File Permissions

We made efforts in 2.0+ to ensure that a single directory needed permissions. This is the `var/` directory, and to avoid complex issues, just setting the whole folder as writeable by the web server system user is enough.

Set permissions appropriately under Debian-based systems:

```bash
# For systems where the web server runs as www-data
chown -R www-data:www-data var/
chmod -R 775 var/
```

## Common Configuration Tasks

### Switch to Production Mode

```bash
# In .env
APP_ENV=prod
APP_DEBUG=0
```

Then clear and warm the cache:

```bash
php bin/console cache:clear --env=prod
php bin/console cache:warmup --env=prod
```

### Configure Trusted Proxies

If Chamilo runs behind a reverse proxy or load balancer, configure trusted proxies so that HTTPS detection and client IP resolution work correctly:

```yaml
# .env
TRUSTED_PROXIES='127.0.0.1,PROXY_IP'
```

### Configure Session Storage

By default, sessions are stored on the filesystem. For multi-server deployments, configure Redis or database-backed sessions:

```yaml
# config/packages/framework.yaml
framework:
    session:
        handler_id: 'redis://localhost:6379'
```

## Tips

* **Never edit `.env.dist` directly** -- Always use `.env` for your overrides. The `.env.dist` file may be overwritten during upgrades.
* **Keep `APP_DEBUG=0` in production** -- Debug mode exposes sensitive information in error pages.
* **Back up `.env`** separately from the codebase since it contains credentials and is excluded from version control.


# Cloud Storage

Chamilo 2.0 supports cloud storage backends for user-uploaded files through **Flysystem**, a PHP filesystem abstraction library integrated into Symfony. This allows you to store files on cloud services instead of (or in addition to) the local filesystem.

## Why Use Cloud Storage?

* **Scalability** -- Cloud storage grows with your platform without managing disk space.
* **Multi-server deployments** -- When running multiple web servers behind a load balancer, cloud storage ensures all servers access the same files.
* **Durability** -- Cloud providers offer built-in redundancy and backup.
* **Cost** -- Object storage is often cheaper per gigabyte than block storage attached to servers.

## Supported Providers

| Provider                  | Flysystem Adapter                          |
| ------------------------- | ------------------------------------------ |
| **Amazon S3**             | `league/flysystem-aws-s3-v3`               |
| **Google Cloud Storage**  | `league/flysystem-google-cloud-storage`    |
| **Azure Blob Storage**    | `league/flysystem-azure-blob-storage`      |
| **MinIO** (S3-compatible) | Uses the S3 adapter with a custom endpoint |
| **Local filesystem**      | Default, no additional packages needed     |

## Installation

Chamilo already comes with the following pre-installed providers:

```bash
# Amazon S3
league/flysystem-aws-s3-v3

# Google Cloud Storage
league/flysystem-google-cloud-storage

# Azure Blob Storage
league/flysystem-azure-blob-storage
```

## Configuration

Chamilo splits its files across several Flysystem mounts — **assets**, **assets cache**, **resources**, **resources cache**, **themes**, and **plugins**. Each mount can target a different bucket or container. The cloud configuration in `config/packages/oneup_flysystem.yaml` is selected by environment using `when@` conditions and reads the variables you set in `.env`.

### Amazon S3

```bash
# .env — common credentials
AWS_S3_STORAGE_VERSION=latest
AWS_S3_STORAGE_REGION=eu-central-1
AWS_S3_STORAGE_ACCESS_KEY=your-access-key
AWS_S3_STORAGE_ACCESS_SECRET=your-secret-key

# Per-mount buckets (each mount can be a different bucket)
AWS_S3_STORAGE_ASSET_BUCKET=chamilo-assets
AWS_S3_STORAGE_ASSET_CACHE_BUCKET=chamilo-asset-cache
AWS_S3_STORAGE_RESOURCE_BUCKET=chamilo-resources
AWS_S3_STORAGE_RESOURCE_CACHE_BUCKET=chamilo-resource-cache
AWS_S3_STORAGE_THEMES_BUCKET=chamilo-themes
AWS_S3_STORAGE_PLUGINS_BUCKET=chamilo-plugins

# Optional path prefixes inside a bucket — useful to share buckets across portals
AWS_S3_STORAGE_ASSET_PREFIX=portal1/assets
AWS_S3_STORAGE_RESOURCE_PREFIX=portal1/resources
```

### Azure Blob Storage

```bash
# .env
AZURE_STORAGE_CONNECTION_STRING='DefaultEndpointsProtocol=https;AccountName=...;AccountKey=...'
AZURE_STORAGE_ASSET_CONTAINER=asset-container
AZURE_STORAGE_ASSET_CACHE_CONTAINER=asset-cache-container
AZURE_STORAGE_RESOURCE_CONTAINER=resources-container
AZURE_STORAGE_RESOURCE_CACHE_CONTAINER=resources-cache-container
AZURE_STORAGE_THEMES_CONTAINER=themes-container
# Optional prefixes
AZURE_STORAGE_ASSET_PREFIX=optional/prefix
```

### Google Cloud Storage

Configure GCS the same way as S3, using GCS-specific environment variables and one bucket per mount. Refer to the `oneup_flysystem.yaml` shipped with your release for the exact variable names — they are also documented in `.env`.

### MinIO (S3-Compatible)

MinIO works through the S3 adapter with a custom endpoint and path-style addressing — set `AWS_S3_STORAGE_*` as for S3 and add the MinIO endpoint and path-style flags supported by the bundle.

> The full set of variable names is listed in the `.env.dist` file shipped with Chamilo. Copy only the lines for the provider you actually use into your `.env` and uncomment them.

## Migrating Existing Files

If you are switching from local storage to cloud storage on an existing platform, you must migrate the existing files:

1. Configure the new storage adapter as described above.
2. Copy existing files from the local `var/upload/` directory to your cloud storage bucket, preserving the directory structure.
3. Verify that files are accessible through the platform after migration.

## Permissions and Access

Ensure your cloud storage bucket is **not publicly accessible** unless you explicitly need public file URLs. Chamilo serves files through its own access control layer, so direct public access to the bucket is unnecessary and a security risk.

For S3, use a bucket policy that restricts access to the IAM credentials configured above.

## Tips

* **Test with MinIO locally** before deploying to a cloud provider -- MinIO is a free, S3-compatible server you can run on your own machine.
* **Use a dedicated bucket** for Chamilo rather than sharing a bucket with other applications.
* **Set up lifecycle policies** on your cloud bucket to manage storage costs (e.g., move old files to cheaper storage tiers).


# Email Configuration

Chamilo now manages the emails sending configuration from the administration dashboard, platform settings section (there is a specific entry for emails). Emails are sent for account creations, password resets, course notifications, message alerts, and other platform events. Email delivery is configured through a `MAILER_DSN` configuration setting.

## Configuration

Set the `Mail DSN` option in the /admin/settings/mail section. The format depends on your email transport.

### SMTP

The most common configuration, suitable for any SMTP server:

```bash
# Let the system decide
native://default

# Basic SMTP
smtp://username:password@smtp.example.com:587

# SMTP with TLS (most providers)
smtp://username:password@smtp.example.com:587?encryption=tls

# SMTP without authentication (local relay)
smtp://localhost:25
```

Replace `username`, `password`, and the host with your SMTP server credentials.

### Amazon SES

```bash
# Using SMTP interface
ses+smtp://ACCESS_KEY:SECRET_KEY@default?region=us-east-1

# Using API
ses+api://ACCESS_KEY:SECRET_KEY@default?region=us-east-1
```

The Symfony Amazon Mailer transport comes embedded into Chamilo. No additional install required.

### Mailjet

```bash
mailjet+api://API_KEY:SECRET_KEY@default
```

The Symfony Mailjet transport comes embedded into Chamilo. No additional install required.

### Brevo (formerly Sendinblue)

```bash
brevo+api://API_KEY@default
```

The Symfony Brevo transport comes embedded into Chamilo. No additional install required.

### Gmail (Development/Small Platforms)

```bash
gmail+smtp://your-email@gmail.com:app-password@default
```

Use an App Password, not your regular Gmail password. This is suitable for small platforms or development only, as Gmail has sending limits.

## Platform Email Settings

In addition to the transport, configure the sender identity on the same page:

| Setting                                                             | Description                                                                                                                                                                                                                        |
| ------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Send all e-mails as originating from this (organizational) name** | The display name associated with system emails.                                                                                                                                                                                    |
| **Send all e-mails from this e-mail address**                       | The "From" address for all system emails. Must be a valid address accepted by your mail transport. We recommend using a "no reply" address like `no-reply@yourdomain.com` to avoid getting pointless answers to automated e-mails. |

## Testing Email Delivery

After configuring `MAILER_DSN`, test that emails are delivered: Go to *Administration* > *System* > *E-mail tester*, specify a recipient, a subject and an e-mail body and click **Send test email**.

If the command completes without errors but the email is not received:

1. Check the recipient's spam/junk folder.
2. Verify that your sending domain has proper DNS records (SPF, DKIM, DMARC).
3. Check your mail provider's sending logs for bounces or rejections.
4. Review the Chamilo log at `var/log/prod.log` for mailer errors.
5. In the E-mail configuration settings, enable *Mail: Debug* (not available in 2.0, will be soon).

## Experimental: Email Queue (Async Delivery)

By default, emails are sent synchronously during the web request. For better performance, configure asynchronous delivery using Symfony Messenger:

```yaml
# config/packages/messenger.yaml
framework:
    messenger:
        transports:
            async: '%env(MESSENGER_TRANSPORT_DSN)%'
        routing:
            'Symfony\Component\Mailer\Messenger\SendEmailMessage': async
```

With async delivery, emails are queued and sent by a background worker:

```bash
php bin/console messenger:consume async
```

Run this as a system service (e.g., via systemd or supervisord) so it stays running.

## Tips

* **Use a dedicated email service** (SES, Mailjet, Brevo) for production platforms. Direct SMTP to your own mail server requires careful configuration to avoid deliverability issues.
* **Configure SPF, DKIM, and DMARC** DNS records for your sending domain to maximize delivery rates and prevent emails from being marked as spam. You can also configure DKIM headers from the e-mail settings page.
* **Use async delivery** on platforms with more than a few dozen active users -- synchronous email sending can noticeably slow down web requests.


# Upgrading

Note: On this page, we use 2.0.0 as a strict version number and 2.x to identify all versions that start with the number 2 (2.0.0, 2.0.1, 2.1.0, etc)

The upgrade process from 1.11.x to 2.x is described in your `public/documentation/installation_guide.html` file, inside your Chamilo code. The information here is largely redundant. You can see it online at `https://campus.chamilo.net/documentation/installation_guide.html`. Although we have made extensive tests on similar migrations, because some of the settings of 1.11.x were not yet supported in 2.0.0, we recommend waiting for version 2.1 before upgrading a 1.11.x system, or to be professionally accompanied by [official Chamilo providers](https://chamilo.org/providers) in this endeavour.

## Upgrading from 1.11.x to 2.x

Upgrading from Chamilo 1.11.x to 2.x is a **major migration**, not a simple update. Chamilo 2.0 was rebuilt on the Symfony framework with a restructured database schema, new API, and different file organization. Plan this migration carefully and try it out on a test environment before rolling out in production.

### Before You Begin

1. **Read the release notes** for Chamilo 2.x to understand what has changed, what is new, and what features from 1.11.x may not yet be available.
2. **Back up everything**:
   * Full database dump (`mysqldump` or equivalent).
   * All files in the Chamilo 1.11.x installation directory, especially `app/upload/`, `app/courses/`, and `main/`.
   * Your `configuration.php` file.
3. **Test on a staging server first.** Never run the migration directly on your production server.
4. **Verify server requirements.** Chamilo 2.x has different requirements than 1.11.x (notably, PHP 8.2+). See [Server Requirements](/administration-guide/admin-guide/installation/server-requirements).

### What May Require Manual Attention

| Area                              | Notes                                                                                                                                                                     |
| --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Custom plugins**                | 1.11.x plugins are not compatible with 2.x. They must be rewritten or replaced, which has been partially done in 2.0 and should be complete by 2.1 for official plugins.  |
| **Custom themes**                 | 1.11.x themes do not work in 2.x. Recreate your branding using the 2.x theming system.                                                                                    |
| **Custom database modifications** | Any direct database modifications outside of Chamilo may not be migrated.                                                                                                 |
| **SCORM packages**                | SCORM content should migrate, but test packages individually to verify playback.                                                                                          |
| **External integrations**         | Any integrations using the 1.11.x API or web services need to be updated to use the 2.x REST-only API using [API Platform](https://github.com/api-platform/api-platform). |

## Updating Chamilo 2.0.x

Minor updates within the 2.0 branch are more straightforward.

### Update Process

#### Using a package

1. **Back up** the database and files.
2. **Download the latest 2.0.x version** from [chamilo.org](https://chamilo.org/download):
3. **Expand locally**

For example (adapt to the downloaded version)

```bash
unzip chamilo-2.0.1.zip
```

4. **Copy the files over your existing Chamilo installation**

   ```bash
   cp -r chamilo/* [your-chamilo-installation-path]/
   cp -r chamilo/.* [your-chamilo-installation-path]/
   ```
5. **Run database migrations:**

   ```bash
   php bin/console doctrine:migrations:migrate --no-interaction
   ```
6. **Clear the cache:**

   ```bash
   php bin/console cache:clear --env=prod
   php bin/console cache:warmup --env=prod
   ```
7. **Change permissions**

Adapt to your web server user:

```bash
sudo chown -R www-data: [your-chamilo-installation-path]/var
```

8. **Verify** that the platform loads correctly and spot-check key functionality.

#### Using Git

If you installed Chamilo using Git, you can follow these instructions instead.

1. **Back up** the database and files.
2. **Pull the latest code** (or download the new release):

   ```bash
   git pull origin 2.0
   ```
3. **Update PHP dependencies:**

   ```bash
   composer install --no-dev --optimize-autoloader
   ```
4. **Update JavaScript dependencies and rebuild assets:**

   ```bash
   yarn install && yarn build
   ```
5. **Run database migrations:**

   ```bash
   php bin/console doctrine:migrations:migrate --no-interaction
   ```
6. **Clear the cache:**

   ```bash
   php bin/console cache:clear --env=prod
   php bin/console cache:warmup --env=prod
   ```
7. **Change permissions**

Adapt to your web server user:

```bash
sudo chown -R www-data: [your-chamilo-installation-path]/var
```

8. **Verify** that the platform loads correctly and spot-check key functionality.

### Automating Updates

For organizations that manage multiple Chamilo instances, consider scripting the update process:

```bash
#!/bin/bash
set -e

# Pull code
git pull origin 2.0

# Dependencies
composer install --no-dev --optimize-autoloader
yarn install && yarn build

# Database
php bin/console doctrine:migrations:migrate --no-interaction

# Cache
php bin/console cache:clear --env=prod
php bin/console cache:warmup --env=prod

echo "Update complete."
```

## Tips

* **Always back up before upgrading.** Database migrations are not reversible through the Chamilo interface.
* **Test on staging first** -- especially for the 1.11.x to 2.0 migration, which involves significant data transformation.
* **Schedule upgrades during maintenance windows** when users are not actively using the platform.
* **Subscribe to GitHub releases** on [Github](https://github.com/chamilo/chamilo-lms/releases) using the bell icon to be notified of new versions and security patches.
* **Web updates** are not yet provided in Chamilo 2.0, but this is an ongoing project we hope to be releasing soon.


# Users

This section covers how to manage user accounts on your Chamilo platform — creating users, assigning roles, organizing users into groups, and managing profiles.

![The User management block on the administration dashboard, listing User list, Add a user, Export/Import users list, Edit users list, Anonymise users list, Profiling, and Classes](/files/OwecbsNpkJzRoTtxXFDN)

* [**User Roles**](/administration-guide/admin-guide/users/user-roles) — Understanding the different user roles and their permissions
* [**Managing Users**](/administration-guide/admin-guide/users/managing-users) — Creating, editing, importing, and exporting user accounts
* [**User Groups**](/administration-guide/admin-guide/users/user-groups) — Organizing users into platform-wide groups
* [**User Profiling**](/administration-guide/admin-guide/users/user-profiling) — Configuring extra profile fields and user metadata


# User Roles

Chamilo uses a role-based permission system. Each user is assigned a role that determines what they can see and do on the platform.

## Platform-Level Roles

These roles control access to platform-wide features:

| Role                              | Description                                                                                                                                                  |
| --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Learner (Student)**             | The default role. Can enroll in courses, access learning content, submit assignments, and take exercises.                                                    |
| **Teacher (Trainer)**             | Can create and manage courses, add content, grade students, and view course-level reports.                                                                   |
| **Sessions Administrator**        | Can create and manage sessions (i.e. time-based course packages), enroll users in sessions, and assign tutors. Cannot access general platform settings.      |
| **Human Resources Manager (HRM)** | Can view tracking and reporting data for assigned users. Used for supervisors who need to monitor employee training but not manage content nor the platform. |
| **Portal Administrator**          | Full access to all platform administration features. Can manage users, courses, sessions, plugins, and all settings.                                         |
| **Global Administrator**          | Same as Portal Administrator but with access across all access URLs in a multi-URL (i.e. multi-tenant) setup.                                                |
| **Anonymous**                     | A special role for visitors who are not logged in. Can access public courses and content if enabled.                                                         |

## Course-Level Roles

Within a course, users have specific roles:

| Role                 | Description                                                                                        |
| -------------------- | -------------------------------------------------------------------------------------------------- |
| **Student**          | Default course role. Can access content, take exercises, submit assignments.                       |
| **Course assistant** | Has limited management permissions within the course. Can help manage content and moderate forums. |
| **Teacher**          | Full control over the course: manage content, tools, settings, and enrollment.                     |

## Session-Level Roles

Within a session, additional roles exist:

| Role              | Description                                                                                                        |
| ----------------- | ------------------------------------------------------------------------------------------------------------------ |
| **Session tutor** | Oversees all courses within a session. Can view tracking across all courses in the session.                        |
| **Course tutor**  | Teaches a specific course within a session. Can manage content and track learners for that course in that session. |

Note: This role was called "coach" in Chamilo versions before 2.1. As of Chamilo 2.1, "coach" has been replaced by "tutor" everywhere in the platform's interface and documentation — a tutor is a person who helps learners through a course, not a personal coach. The underlying setting names in `Configuration settings` still contain "coach" for backward compatibility (for example `add_users_by_coach`), but their labels now read "tutor".

## Assigning Roles

When creating or editing a user account in the administration panel, you select their platform-level role. Course and session roles are assigned when enrolling users in courses or sessions.

## Role Hierarchy

Higher-privileged roles inherit the capabilities of lower-privileged roles:

* An administrator can do everything a teacher can do
* A teacher can do everything a student can do
* Session-level roles (tutor) provide additional capabilities only within their assigned session

## Tips

* **Use the principle of least privilege** — Assign users the minimum role they need to perform their tasks
* **Use Sessions Administrators** for delegated management — If you have staff who need to manage training sessions but not the entire platform, give them the Sessions Administrator role instead of full administrator access
* **Use HRM for supervisors** — Human Resources Managers can monitor training progress without having access to modify courses or platform settings
* **Roles creation** — Chamilo 2.x has the internal structure ready for the creation of new roles, but the feature lacks more testing for wide release. It can be enabled through [Official providers of Chamilo](https://chamilo.org/providers).


# Managing Users

This page covers the day-to-day tasks of creating, editing, and managing user accounts.

## User List

![The user list showing accounts with name, email, role, and status columns](/files/DAC3JENksOvjzvtdRovp)

From the administration panel, click **User list** to see all users on the platform. The list shows:

* Avatar
* Name
* Username
* Email address
* Roles
* Active/inactive status
* Registration date
* Last login date

Use the **Advanced search** tool to find specific users by name, email, role, or other criteria.

## Creating a User

![The user creation form with fields for name, email, username, password, role, and language](/files/3cC1HQN2j4ytkWSvQ6nb)

1. Click **Add a user** from the administration panel
2. Fill in the required fields:
   * **First name** and **Last name**
   * **Email** — Must be unique on the platform
   * **Username** — The login name (must be unique)
   * **Password** — Set an initial password
   * **Roles** — Select the user's platform role(s) (student, teacher, admin, etc.)
   * **Language** — The user's preferred interface language
3. Optionally fill in additional fields:
   * Official code (e.g. unique ID in the organization)
   * Phone number
   * Expiration date — Automatically deactivate the account after a date
   * Active/inactive status
   * Extra profile fields (if configured)
4. Save

## Importing Users

![The user import interface for uploading CSV or XML files with user data](/files/mQahKYR6BQUH05QXJC1q)

For bulk user creation, you can import users from a file:

1. Click **Import users** from the administration panel
2. Upload a **CSV** or **XML** file with user data
3. Map the file columns to Chamilo user fields
4. Choose how to handle existing users (update or skip)
5. Import

The import file should contain columns for at least: first name, last name, email, username, and password.

Note: The **Status** column is the legacy name for **Role** and only accepts a few values, like 1 for teacher, 5 for student. Further tuniing of the roles can only be done by hand later on, editing the user.

## Exporting Users

Click **Export users** to download the user list as a CSV or XML file. You can filter which users to export by role, registration date, or other criteria.

## Editing a User

Click on a user's name in the user list to edit their account. You can modify:

* Personal information (name, email, phone)
* Roles
* Password (reset)
* Active/inactive status
* Expiration date
* Extra profile fields

## Deleting a User

When deleting users (usually teachers) who have created content on the platform, the system might prevent you from deleting the users permanently, and will show a warning message explaining the user is still attached to some of the resources. If you confirm the deletion, the system will not delete the content itself but attach it to a neutral user (we call it the "Fallback user") for data consistency reasons.

To avoid this, check the user details, delete each of their courses one by one, then delete the user.

## User Actions

| Action         | Description                                                                                                        |
| -------------- | ------------------------------------------------------------------------------------------------------------------ |
| **Deactivate** | Disable a user's account without deleting it. The user cannot log in but their data is preserved.                  |
| **Activate**   | Re-enable a previously deactivated account.                                                                        |
| **Login as**   | Log in to the platform as this user (impersonation). Useful for troubleshooting.                                   |
| **Anonymize**  | Erase all of the account's personal information, as defined by the EU's GDPR.                                      |
| **Delete**     | Soft delete the user account. Use the **Deleted users** tab to permanently delete the account and associated data. |

> **Login as** is a powerful feature. Use it responsibly and only for legitimate support purposes.

## Batch Operations

Select multiple users in the user list to perform batch actions:

* Activate or deactivate multiple users at once
* Delete multiple users
* Assign users to a course or session

## Tips

* **Use CSV import for large enrollments** — When onboarding many users at the start of a training program, prepare a CSV file and import in bulk
* **Set expiration dates** — For temporary users (workshop participants, trial users), set an expiration date to automatically deactivate their accounts
* **Deactivate rather than delete** — When a user leaves, deactivate their account first. This preserves their training records. Only delete if you are sure the data is no longer needed.


# User Groups

Classes in the administration panel are platform-wide groups used to organize users for management purposes. They are distinct from course-level groups (which are created by teachers within a course).

> User groups and [Classes](/administration-guide/admin-guide/sessions/classes) share the same interface. The only difference is the **group type** setting: choose "Class" to create a class (used for bulk session enrollment), or "User group" for more social groups that can have their own space in the internal social network. See [Classes](/administration-guide/admin-guide/sessions/classes) for details on session enrollment.

## Creating a Group

![The user groups list showing available groups with name, description, and member count](/files/pTSDFTVSEQBTxb2QK5un)

1. From the administration panel, navigate to **Classes**
2. Click **Add classes**
3. Enter a **title** and optional **description**
4. Check **Social group** if this will be a social group. Leave unchecked if it will be a class.
5. Add an optionali reference URL and picture/logo.
6. Choose the group **permissions**:
   * **Open** — Any user can join
   * **Closed** — Users must be added by an administrator
7. Check if you want members to be able to leave the class by themselves.
8. Save.

## Adding Members

1. Open the list of classes/user groups
2. Click the user icon **Subscribe users to class**
3. Search for users by name, username or email
4. Select the users to add, using the arrows to the right side
5. Click the confirmation button to save

## Use Cases

* **Department organization** — Group users by department or team
* **Bulk enrollment** — Add all members of a group to a course or session at once
* **Targeted communication** — Send announcements to specific groups
* **Reporting** — View training progress filtered by group

## Managing Groups

* **Edit** — Change the group name, description, or visibility
* **Manage members** — Add or remove members
* **Delete** — Remove the group (does not delete the member accounts)


# User Profiling

Chamilo allows you to define custom profile fields (extra fields) to capture additional information about users beyond the standard name, email, and role.

## Extra Profile Fields

![The extra profile fields list showing custom fields with name, type, and visibility settings](/files/qxmCpuN2KnO7b8xgqaMn)

Extra fields let you store metadata specific to your organization, such as:

* Employee ID
* Department
* Job title
* Location/office
* Phone number
* Custom identifiers

## Creating Extra Fields

1. From the administration panel, navigate to **Extra fields** or **Profile fields**
2. Click **Add**
3. Configure the field:
   * **Name** — The field title shown to users
   * **Description** — Optional description
   * **Helper text** — To be shown under the field in any form including it
   * **Field type** — Text, dropdown, date, checkbox, etc.
   * **Field label** — The internal name of the field, for plugins integration
   * **Possible values** — If the field is a selector between those values
   * **Default value** — An optional default
   * **Visible to self** — Whether the field is visible on the user profile by the user itself
   * **Visible to others** — Whether the field is visible to other users of the platform
   * **Can change** — Whether the user can change its own field by himself (or whether only the admins can)
   * **Filter** — If this is a selector-type field, whether to include it as a filter in administrative pages (e.g. to subscribe users to courses or sessions)
   * **Order** — If you want to manage the display order of the fields, you will have to give a numerical order to each field
   * **Remove on anonymization** — Important for privacy rules & laws: If the user is anonymized but not deleted, should this field be considered as potential holder of personally identifiable data?
4. Save

## Field Types

The extra-field engine supports a broad set of input types. Common ones include:

| Type                             | Description                                           |
| -------------------------------- | ----------------------------------------------------- |
| **Text**                         | A single-line text input                              |
| **Textarea**                     | A multi-line text input                               |
| **Radio**                        | A single-choice radio group                           |
| **Dropdown / Dropdown multiple** | A list of predefined options (single or multi-select) |
| **Double select**                | Two dependent dropdowns (e.g., country → city)        |
| **Checkbox**                     | A yes/no toggle                                       |
| **Date / Date and time**         | Date or date+time picker                              |
| **Integer**                      | A numeric input                                       |
| **Tag**                          | Multiple free-form tag values                         |
| **File**                         | File upload field                                     |
| **Video URL**                    | A URL pointing to a video                             |
| **Mobile phone number**          | A formatted phone number field                        |
| **Timezone**                     | A timezone picker                                     |
| **Social profile**               | A link to a social network profile                    |
| **Divider**                      | A visual separator inside the form (no value)         |

The exact set of usable types depends on the Chamilo version; the field-type dropdown in the **Extra fields** admin page is the source of truth.

## Using Extra Fields

Extra fields appear:

* In the user creation (if visible to self) and edit forms
* On user profile pages (if visible to self)
* In user imports (you can include extra field values in CSV imports)
* In exports and reports (filter or group by extra field values)

## Tips

* **Plan before creating** — Define what information you need before creating fields, as changing field types after data has been entered can be problematic
* **Use dropdowns for consistency** — When a field has a known set of possible values, use a dropdown instead of free text to ensure data consistency
* **Use for reporting** — Extra fields are useful for filtering reports (e.g., "show all users in Department X who completed Training Y")


# Courses

This section covers course management from an administrator perspective: overseeing the course catalog, managing categories, and handling imports and exports.

![The Course management block on the administration dashboard, listing Course list, Add course, Export/Import courses list, Course categories, Add a user to a course, Manage extra fields for courses, Questions, and Resources sequencing](/files/gmRxvPS7xv7lYe7D3qDb)

* [**Managing Courses**](/administration-guide/admin-guide/courses/managing-courses) — View, create, edit, and delete courses
* [**Course Categories**](/administration-guide/admin-guide/courses/course-categories) — Organize the course catalog with categories
* [**Course Import and Export**](/administration-guide/admin-guide/courses/course-import-export) — Import and export courses between platforms


# Managing Courses

As an administrator, you can manage all courses on the platform regardless of who created them.

## Course List

![The course list showing all courses with title, code, category, enrolled users, and visibility status](/files/Z3wLCCq6vWdTJXqkxjiN)

From the administration panel, click **Course list** to see all courses. The list shows:

* Course title and code
* Language
* Categories
* Visibility status

Use the **Advanced search** tool to find specific courses.

## Creating a Course

As an administrator, you can create courses and assign them to any teacher:

1. Click **Add course** from the administration panel
2. Fill in the course details (title, code, category, language)
3. Assign a teacher to the course
4. Save

Note: In Chamilo 1.11.x, the course code was shown as part of the course URL, and was impossible to change after the creation of the course. This behaviour is changing in 2.x. The course code is not visible in the URL anymore, and future versions might allow teachers to modify the course code afterwards as it become less essential to the platform.

## Managing an Existing Course

Find a course in the list to access management options in the *Actions* column:

* **Information** — Show information about the course
* **Course home** — Sends you directly to the course's homepage
* **Reporting** — See engagement and performance data
* **Edit** — Change course title, category, visibility, and other settings
* **Create a backup** — Go to the maintenance section of the course, where you can create copies and do other things
* **Add to catalogue** — Add this course to the course catalogue
* **Delete** — Permanently remove the course and all its content

> Deleting a course removes all content, learner data, grades, and tracking information permanently. Consider exporting the course first as a backup.

## Bulk Operations

Select multiple courses in the list to perform batch actions such as deleting them. To export a course, enter the course and use the **Maintenance** tool — there is no bulk export action on the admin course list.

## Course Visibility Settings

Administrators can override the visibility set by teachers:

| Visibility  | Effect                                                       |
| ----------- | ------------------------------------------------------------ |
| **Public**  | Accessible to everyone, including anonymous visitors         |
| **Open**    | Accessible to all logged-in users                            |
| **Private** | Only enrolled users can access the course                    |
| **Closed**  | No one can access the course (except the teacher and admins) |
| **Hidden**  | No one can view or access the course (except the admins)     |


# Course Categories

Course categories help organize your course catalog, making it easier for learners to find relevant courses.

## Creating a Category

1. From the administration panel, navigate to **Course categories**
2. Click **Add category**
3. Enter:
   * **Category code** — A short unique identifier
   * **Category name** — The display name (e.g., "Information Technology", "Management Skills")
   * **Allow adding courses in this category?** — Whether it allows courses to set this as a category, or it just serves as an intermediate level in a hierarchy
   * **Parent category** — (Optional) Place this category under another category to create a hierarchy
   * **Description** — (Optional)
   * **Image** — (Optional) Will represent this category, although it almost doesn't show anywhere
4. Press *Add category*

Chamilo creates 3 categories by default: *Language skills*, *PC Skills* and *Projects*. These can be renamed, removed or kept, depending on your needs.

## Category Hierarchy

![The course categories management page showing a nested tree of categories](/files/NFbW3oiokgtjT0roCY6q)

Categories can be nested to create a tree structure:

* Business
  * Management
  * Marketing
  * Finance
* Technology
  * Programming
  * Networking
  * Cybersecurity

Learners browsing the course catalog can navigate through this hierarchy to find courses.

## Managing Categories

* **Edit** — Change the category name, code, or parent
* **Move** — Change the position of a category in the list
* **Delete** — Remove a category. Courses in a deleted category are moved to "uncategorized."

## Tips

* **Keep it simple** — Use broad categories that learners can understand at a glance
* **Limit depth** — Avoid deeply nested categories. Two or three levels are usually sufficient.
* **Assign categories during course creation** — Encourage teachers to select a category when creating courses, so the catalog stays organized


# Course Import and Export

Chamilo supports importing and exporting courses for backup, migration, and content sharing purposes.

These features are located inside the course, in the **Maintenance** tool located under the cog icon at the top of the course homepage.

## Exporting a Course

Teachers can export their own courses from the course Maintenance tool. As an administrator, you can export any course:

1. Enter the course
2. Access the **Course maintenance** tool
3. Select **Create a backup**
4. Choose what to include (content, user data, etc.)
5. Download the export file

The export creates a package containing the course's documents, exercises, forums, learning paths, and configuration.

## Importing a Course

To import a course from a Chamilo export file:

1. Enter the course
2. Access the **Course maintenance** tool
3. In the **Import backup** section, upload the export file
4. Choose what to include (content, user data, etc.)
5. Configure import options:
   * Whether to overwrite existing content
   * Whether to include user data
6. Run the import

## Copying a Course

To copy the contents from another course into your course, you will need a source course and a destination course to be created first.

1. Enter the destination course
2. Access the **Course maintenance** tool
3. In the **Copy course** section, select the **Source** course
4. Validate the options
5. Click **Continue** and follow the instructions

## Common Cartridge

Chamilo supports the **IMS Common Cartridge 1.3** (IMS CC 1.3) standard for interoperability with other learning management systems. You can:

* **Import** Common Cartridge packages (.imscc files)
* **Export** course content in Common Cartridge format

This allows content exchange with other platforms that support the Common Cartridge standard (Moodle, Canvas, Blackboard, etc.).

## Recycling a course

The course recycling feature simply allows you to keep the shell of the course but to erase its content.

## Deleting a course

This will completely erase your course, including all its contents and the user activity in it.

To delete a course permanently:

1. Enter the destination course
2. Access the **Course maintenance** tool
3. In the **Completely delete this course** section, enter the code of the course manually to confirm your intention
4. Validate

You then get redirected to the portal homepage, because the course does not exist anymore.

## Moodle Import

Chamilo can import course backups from **Moodle**. The importer converts Moodle's content structure to Chamilo's format, including quizzes, documents, and course settings.

> **Work in progress.** Although it already covers a wide base, the Moodle importer does not currently cover every Moodle activity type and content format. Treat it as a starting point that may still require manual adjustment after the import completes. If you detect any failing/missing element in the import or export, please report it to us through our [Github space](https://github.com/chamilo/chamilo-lms/issues) by clicking **New issue** at the top and giving as much details as possible (including the course backup itself if it's not confidential).

## Tips

* **Regular backups** — Encourage teachers to export their courses periodically as a backup
* **Test imports** — When importing content from another platform, test the import in a trial course first to verify that everything transferred correctly
* **Content portability** — Use Common Cartridge format when you need to share content with other LMS platforms


# Sessions

Sessions are one of Chamilo's most powerful features. They allow you to deliver the same courses to different groups of learners at different times, without duplicating course content.

![The Sessions management block on the administration dashboard, listing Training sessions list, Add a training session, session categories, import/export tools, careers and promotions, and resource sequencing, among others](/files/mkw383Tya1cqBcA2thlg)

* [**Managing Sessions**](/administration-guide/admin-guide/sessions/managing-sessions) — Create, configure, and manage training sessions
* [**Session Categories**](/administration-guide/admin-guide/sessions/session-categories) — Organize sessions into categories
* [**Careers and Promotions**](/administration-guide/admin-guide/sessions/careers-and-promotions) — Define career paths and promotion workflows
* [**Classes**](/administration-guide/admin-guide/sessions/classes) — Manage learner classes for bulk enrollment

## Understanding Sessions

Sessions are **optional**. You can make your portal work just by using courses, but we **really** recommend you consider the extra complexity of sessions as a way to save management work in the long run.

A **course** holds the content (documents, exercises, learning paths). A **session** assigns that course (or multiple courses) to a specific group of learners *for a specific time period*.

This architecture means:

* Teachers create content once in the course
* Administrators create sessions to deliver that content to different cohorts
* Each session has its own enrollment, tracking data, and results
* The base course content is shared, but session tutors can customize certain elements

## When to Use Sessions

Use sessions when:

* You deliver the same training multiple times (e.g., monthly onboarding sessions)
* You have cohort-based programs (e.g., semester-based classes)
* You need separate tracking per group of learners
* You want different tutors to manage different editions of the same course


# Managing Sessions

## Creating a Session

![The session creation form with fields for name, dates, tutor, category, and visibility](/files/Yy8VNiPnEqYgEGry7Gmb)

1. From the administration panel, click **Create a session**
2. Fill in the session details:
   * **Session name** — A descriptive name (e.g., "Spring 2026 Onboarding")
   * **Start and end dates** — When the session runs (optional — sessions can be open-ended). There are 3 sets of dates: Dates to display, dates to limit learners access and dates to limit tutors access
   * **Session tutor** — The person overseeing the entire session
   * **Category** — Assign to a session category for organization
   * **Visibility** — Control access and listing behavior
3. **Add courses** — Select one or more courses to include in the session
4. **Enroll learners** — Add individual users or classes of users
5. **Assign course tutors** — For each course, assign a teacher (course tutor)
6. Save

## Session Dates

Sessions support flexible date configuration:

| Date                       | Purpose                                                                                |
| -------------------------- | -------------------------------------------------------------------------------------- |
| **Display start/end**      | When the session appears in learner listings                                           |
| **Access start/end**       | When learners can actually access the session content                                  |
| **Tutor access start/end** | When tutors can access the session (often starts before and ends after learner access) |

This allows you to prepare the session before learners arrive and keep tutor access open after the session ends for grading and reporting.

## Session List

![The session list showing all sessions with name, dates, course count, learner count, and status](/files/AaR3F9Zbb5RpRX07WJkS)

The session list shows all sessions with:

* Session name
* Start and end dates
* Status (active, upcoming, past)

Use search and filters to find sessions by name, date, category, or status.

## Editing a Session

Click on a session to edit:

* Change dates, name, or category
* Add or remove courses
* Change course tutors
* Add or remove learners
* View tracking data for the session

## Enrolling Users

![The session enrollment interface for adding individual users, classes, or importing via CSV](/files/b5qTuMXbGVqr5qK7CXTn)

You can enroll users in a session by:

* **Individual enrollment** — Search for and add individual users
* **Class enrollment** — Add an entire class (group of pre-defined users) at once
* **CSV import** — Upload a file with user-session assignments

## Session Access

Learners access their sessions through **My sessions** in the sidebar. Sessions are organized into:

* **Current sessions** — Currently active
* **Past sessions** — Ended
* **Upcoming sessions** — Not yet started

## Tips

* **Plan dates carefully** — Make sure tutor access dates extend beyond learner dates so tutors can set up and follow up
* **Use classes for recurring enrollment** — If you frequently enroll the same groups, create classes and assign them to sessions
* **Keep sessions organized** — Use categories and clear naming conventions for easy management


# Session Categories

Session categories help organize your sessions, especially when you have many sessions running simultaneously.

## Creating a Category

1. From the administration panel, navigate to **Session categories**
2. Click **Add a category**
3. Enter a **name** and optional start/end dates
4. Save

## Use Cases

* **By program** — "Leadership Development", "Technical Training", "Onboarding"
* **By period** — "Q1 2026", "Spring Semester", "July Batch"
* **By department** — "Engineering", "Sales", "Human Resources"

## Managing Categories

* **Edit** — Change the category name or dates
* **Assign sessions** — When creating or editing a session, select its category
* **Delete** — Remove a category (sessions in the category become uncategorized)


# Careers and Promotions

Chamilo includes a career management system that lets you define training paths and track learner progression through structured programs.

## Careers

![The careers list showing defined career paths with name and description](/files/CwD07UYYkcMthHKEwOKv)

A **career** represents a structured training path — a sequence of training steps that a learner follows to achieve a professional goal.

### Creating a Career

1. From the administration panel, navigate to **Careers**
2. Click **Create a career**
3. Enter a **name** and **description**
4. Save

## Promotions

A **promotion** represents a cohort or batch of learners progressing through a career. Think of it as a group of people going through the same career path at the same time.

### Linking to Sessions

After creating a promotion, you link sessions to it. This defines the sequence of training a learner must complete.

You can later replicate promotions to help creating the next promotion with copies of the same sessions, so your next promotion can be built in an instant.

### Creating a Promotion

1. Navigate to **Promotions**
2. Click **Create a promotion**
3. Enter a **name** and **description**
4. Link it to a **career**
5. Assign **sessions** to the promotion
6. Save

## How It Fits Together

* A **career** defines the path (e.g., "Junior Developer Certification")
* A **promotion** represents a cohort (e.g., "Class of March 2026")
* **Sessions** within the promotion deliver the actual training content

## Tips

* **Use for structured programs** — Careers and promotions are most useful for multi-stage training programs where learners progress through a defined sequence
* **Track completion** — Use the reporting tools to monitor how promotions are progressing through their career paths


# Classes

Classes in Chamilo are predefined groups of users that can be enrolled in sessions as a unit. They simplify the enrollment process when you regularly train the same groups of people.

> Classes and [User Groups](/administration-guide/admin-guide/users/user-groups) share the same interface. The only difference is the **group type** setting: choose "Class" when creating the group. Everything else — member management, visibility, and the interface itself — works identically.

## Creating a Class

1. From the administration panel, navigate to **Classes** (or User Groups and select the "Class" type)
2. Click **Create a class**
3. Enter a **name** (e.g., "Engineering Team", "New Hires March 2026")
4. Add **members** — search for and select users
5. Save

## Using Classes for Enrollment

When creating or editing a session, you can enroll an entire class at once instead of adding users individually:

1. Open the session enrollment settings
2. Click **Add a class**
3. Select the class
4. All members of the class are enrolled in the session

## Managing Classes

* **Edit** — Change the class name or update membership
* **Add/remove members** — Keep the class roster up to date
* **Delete** — Remove the class (does not affect the member accounts or their existing enrollments)

## Tips

* **Create classes for recurring cohorts** — If you run the same training for different teams, create a class for each team
* **Update before each session** — Review class membership before enrolling a class in a new session to ensure the roster is current
* **Combine with CSV import** — Import class membership from a CSV file for large groups


# Platform

The **Platform management** block on the administration dashboard groups portal-wide configuration and communication tools — everything from the full settings panel to languages, public announcements, the global calendar, and the CMS-like Pages system that builds parts of your portal's public-facing content.

![The Platform management block on the administration dashboard, listing Configuration settings, Languages, Plugins, Regions, Portal news, Global agenda, Pages, Setting the registration page, Extra fields, Configure multiple access URL, Mail templates, External tools (LTI), Contact form categories, and System templates](/files/AhMu2OFmWVad45Ije5Cc)

## Accessing the Platform Block

From the administration panel, the **Platform management** block appears alongside the other dashboard blocks. Click any of its links to open the corresponding tool.

## What's in the Block

* [**Platform Settings**](/administration-guide/admin-guide/platform-settings) — The full configuration settings panel (portal, courses, sessions, users, security, and more). This block's "Configuration settings" link is simply the entry point into that separate chapter.
* [**Languages**](/administration-guide/admin-guide/platform/languages) — Choose which interface languages are available to users, and set the platform default
* [**Portal News**](/administration-guide/admin-guide/platform/portal-news) — Platform-wide announcements (system announcements), scheduled and targeted by role
* [**Global Agenda**](/administration-guide/admin-guide/platform/global-agenda) — Platform-wide calendar events, visible to every user regardless of course or session
* [**Pages**](/administration-guide/admin-guide/platform/pages) — The CMS-like tool behind your portal's homepage, footer, and other public content blocks, including the registration page's intro text
* [**Platform Tools**](/administration-guide/admin-guide/platform/platform-tools) — Extra fields, mail templates, contact form categories, and a few smaller, conditionally-shown items
* **Configure multiple access URL** — Covered in [Access URLs](/administration-guide/admin-guide/multi-url/access-urls), under Multi-URL
* **External tools (LTI)** — Covered in [LTI 1.3](/administration-guide/admin-guide/integrations/lti), under Integrations


# Languages

This tool manages which interface languages users can choose from — it does not manage translation strings themselves (those come from the language packs shipped with Chamilo, not from anything editable here).

## Accessing Languages

From the administration panel, click **Platform > Languages**.

## What You Can Do

* **Toggle availability** — Enable or disable each of the shipped languages as a choice on the login page and in user profile settings, with a simple on/off switch per row
* **Set the platform default** — Choose which language is used when no user preference applies; the current default is marked with its own icon and can't be hidden
* **Disable all except the default** — A single bulk action to strip the language picker down to just your platform's default language
* **Edit the native name** — Adjust how a language's own name is displayed (its "original name") in the picker

## Disabling a Language in Use

If you disable a language that active users have already selected as their interface language, Chamilo asks for confirmation and — if you confirm — migrates every affected user to the platform default language. There's no partial state where a user is left with a now-hidden language selected.

## Sub-Languages

If the **Allow sub-languages** setting is enabled, additional actions appear for creating "sub-languages" — partial overrides of a parent language, historically used for regional dialects or organization-specific terminology tweaks. This is a legacy feature; most installations won't need it.


# Portal News

Despite the dashboard label "Portal news," this tool manages **system announcements** — platform-wide messages that can be scheduled, targeted by role, and optionally e-mailed out.

## Accessing Portal News

From the administration panel, click **Platform > Portal news**.

## Creating an Announcement

Each announcement has:

* **Title** and rich-text **content**
* **Start and end dates** — defaults to today through 7 days later; the announcement is only visible while the current date falls in this range
* **Language** — a specific language, or all languages
* **Roles (audience)** — including logged-out visitors, so you can target announcements at anonymous users, specific logged-in roles, or a mix of both
* **User group** — optionally restrict the announcement to a specific user group
* **Career** — if the **Link global announcements with careers and promotions** setting is enabled, you can also scope an announcement to a specific career/promotion path

## Sending by E-mail

Beyond just displaying the announcement, you can:

* **Send mail** — E-mails the announcement out to everyone in its target audience
* **Send a test e-mail to myself** — Preview what recipients will receive before committing
* **Add to calendar** — Available when creating an announcement, links it into the calendar as well

## Scope and Visibility

Announcements are scoped per access URL — on a multi-URL (multi-portal) install, each portal manages its own news independently. The admin list shows an active/inactive indicator per announcement, computed from its date range, and you can edit or delete announcements individually or in bulk.


# Global Agenda

The Global Agenda is the same calendar tool used for course and personal agendas, opened in a platform-wide mode: events created here have no course or session attached, which is exactly what makes them visible to every logged-in user rather than just a course or session's members.

## Accessing the Global Agenda

From the administration panel, click **Platform > Global agenda**.

## How It Differs from Course and Session Agendas

A calendar event's scope comes from whether it's linked to a course or session resource:

* **Course/session events** stay restricted to that course's or session's enrolled members
* **Global events** have no such link, so any logged-in user can see them

Aside from that scoping difference, global events support the same features as course events: **recurrence** (repeat on a schedule), **file attachments**, and **reminders**.

## Use Cases

Use the Global Agenda for platform-wide dates that aren't tied to any specific course — maintenance windows, organization-wide deadlines, holidays, or company-wide events — rather than duplicating the same event across every course's agenda.


# Pages

Pages is Chamilo's built-in, CMS-like tool for the content blocks that make up your portal's public-facing areas — the homepage, footer, navigation menus, and similar placements — without needing to touch a template file.

## Accessing Pages

From the administration panel, click **Platform > Pages**.

## How Pages Work

Each page has:

* **Title** and rich-text **content**
* A **slug**, generated automatically from the title
* **Enabled** — whether the page is currently visible
* **Position** — drag-and-drop ordering within its category
* **Locale** — content is per-language: the same placement can hold one page per language, and the site falls back to the platform's default language if no page exists for a visitor's language
* A **category** — this is what determines *where* the page is rendered (for example `index`, `home`, `footer_public`, or `menu_links`); Chamilo creates the categories it needs automatically

On a multi-URL (multi-portal) install, pages are also scoped per access URL, so each portal manages its own content.

## The Registration Intro Page

**Platform > Setting the registration page** is a shortcut into this same Pages system for one specific placement: the introductory text shown above the public sign-up form. It's restricted to Portal Administrators. Clicking it either:

* Opens the existing intro page for editing, if one already exists for your access URL and language, or
* Creates the placement on the fly and takes you straight to creating its content

Whatever you save here is rendered as an info box directly above the registration form — a natural place for instructions, terms specific to your organization, or context prospective users should read before signing up. Leave it disabled (or never create it) to show the plain registration form with no intro text.


# Platform Tools

This page covers the remaining, smaller items in the Platform management block.

## Extra Fields

**Platform > Extra fields** is a type selector, not a field list itself — it shows every object type that supports custom fields, and clicking one takes you to that type's own field editor. Available types include: user, course, session, question, learning path (and learning path item/view), skill, assignment (work), career, user certificate, survey, terms and conditions, forum category, forum post, exercise, exercise tracking, course announcement, message, document, attendance calendar, glossary, work correction comment, calendar event, and portfolio (plus scheduled announcements, if that feature is enabled).

For the most commonly used case — custom user profile fields — see [User Profiling](/administration-guide/admin-guide/users/user-profiling), which covers the same underlying feature from the user-management side.

## Mail Templates

**Platform > Mail templates** lets you override the wording of specific system e-mails (registration confirmation, subscription notifications, and similar) without touching server files. Each template has a title, a **type** matching the specific built-in e-mail it overrides, the template body itself (plain text/Twig, not a rich editor), and a "set as default" flag — only one template per type can be the active default. Templates are scoped per access URL; there's no separate per-language field, so language handling for these e-mails is whatever the surrounding code already does.

Templates render through a **sandboxed** Twig environment for security: only a small set of tags and filters is allowed, and the only data available is the recipient's `User` object, referenced as `user.getEmail()`, `user.getFirstname()`, and similar getters (`getId`, `getUsername`, `getLastname`, `getStatus`, `getOfficialCode`, `getPhone`). Anything outside that allowlist doesn't error loudly — it silently renders empty, which then falls back to the original built-in template. Keep your custom templates simple and test them (using a real registration or notification trigger) after editing.

## Contact Form Categories

**Platform > Contact form categories** manages the dropdown shown on your portal's public **Contact us** form. Each category is just a title and a destination e-mail address — whichever category a visitor picks determines which inbox their message is routed to. Use this to route different topics (support, sales, admissions) to different teams without building separate forms.

## Settings-Category Shortcuts

A few block items are simply direct links into specific categories of [Platform Settings](/administration-guide/admin-guide/platform-settings), rather than separate tools:

* **Plugins** and **System templates** open Configuration Settings pre-filtered to those categories
* **Regions** does the same, for platform region settings

## Occasionally-Visible Items

A handful of items only appear when the relevant setting or plugin is active, so you may not see them on your installation:

* **Terms and Conditions** — appears when **Allow terms and conditions** is enabled, for managing the text users must accept
* **Notifications** — appears when the platform notification-events feature is enabled
* **CMS**, **Dictionary**, **Justification** — each tied to its own optional plugin being installed and enabled


# Platform Settings

Chamilo has an extensive configuration system with settings organized into categories. The full set of categories below mirrors the **Configuration settings** page in the admin panel — and the underlying `SettingsCurrentFixtures.php` in the source code, which is the source of truth for variable names, titles, and descriptions.

Access platform settings from the administration panel by clicking **Configuration settings**.

![The platform settings page showing configuration categories organized by functional area](/files/pV5Ud2oytQBybuTtP84W)

## All categories

There are **39 configuration categories** in total, listed alphabetically below. The number after each link is the count of settings in that category.

### Platform-wide

* [**Administrator Identity**](/administration-guide/admin-guide/platform-settings/admin-settings) (12) — Identity and contact details of the platform administrator.
* [**Platform**](/administration-guide/admin-guide/platform-settings/platform-settings) (29) — Platform-level identity, time zone, registration policy, online users, performance flags.
* [**Display**](/administration-guide/admin-guide/platform-settings/display-settings) (24) — Homepage layout, gravatar, menus, branding behaviour.
* [**Editor**](/administration-guide/admin-guide/platform-settings/editor-settings) (26) — Rich-text editor (TinyMCE) toolbars, plugins, AI helpers.
* [**Languages**](/administration-guide/admin-guide/platform-settings/language-settings) (12) — Available languages, default language, fallbacks.
* [**Mail**](/administration-guide/admin-guide/platform-settings/mail-settings) (18) — Outgoing-mail layout, sender identity, signature.
* [**Workflows**](/administration-guide/admin-guide/platform-settings/workflows-settings) (23) — Cross-cutting workflow toggles (course creation, enrollment validation…).

### Authentication, security & privacy

* [**Security**](/administration-guide/admin-guide/platform-settings/security-settings) (31) — Login protection, password policy, headers, 2FA, IDS.
* [**Registration**](/administration-guide/admin-guide/platform-settings/registration-settings) (20) — Self-registration policy and post-registration redirects.
* [**Privacy**](/administration-guide/admin-guide/platform-settings/privacy-settings) (6) — Consent, data export, account-deletion requests.
* [**CAS**](/administration-guide/admin-guide/platform-settings/cas-settings) (7) — Legacy CAS configuration carried over from 1.x.

### Course and session lifecycle

* [**Course**](/administration-guide/admin-guide/platform-settings/course-settings) (45) — Defaults and policies that apply to courses platform-wide.
* [**Sessions**](/administration-guide/admin-guide/platform-settings/session-settings) (68) — Session lifecycle, tutor access windows, visibility.
* [**Course Catalog**](/administration-guide/admin-guide/platform-settings/catalog-settings) (13) — Behaviour of the public course catalog.
* [**Profile**](/administration-guide/admin-guide/platform-settings/profile-settings) (29) — Which fields appear on the user profile.

### Course tools

* [**Agenda**](/administration-guide/admin-guide/platform-settings/agenda-settings) (11)
* [**Announcements**](/administration-guide/admin-guide/platform-settings/announcement-settings) (9)
* [**Assignments (Work)**](/administration-guide/admin-guide/platform-settings/work-settings) (12)
* [**Attendance**](/administration-guide/admin-guide/platform-settings/attendance-settings) (4)
* [**Chat**](/administration-guide/admin-guide/platform-settings/chat-settings) (5)
* [**Documents**](/administration-guide/admin-guide/platform-settings/document-settings) (29)
* [**Dropbox**](/administration-guide/admin-guide/platform-settings/dropbox-settings) (8)
* [**Exercises (Tests)**](/administration-guide/admin-guide/platform-settings/exercise-settings) (63)
* [**Forums**](/administration-guide/admin-guide/platform-settings/forum-settings) (9)
* [**Glossary**](/administration-guide/admin-guide/platform-settings/glossary-settings) (3)
* [**Groups**](/administration-guide/admin-guide/platform-settings/group-settings) (3)
* [**Learning Paths**](/administration-guide/admin-guide/platform-settings/lp-settings) (51)
* [**Surveys**](/administration-guide/admin-guide/platform-settings/survey-settings) (12)

### Assessment & recognition

* [**Gradebook (Assessments)**](/administration-guide/admin-guide/platform-settings/gradebook-settings) (34) — Score display, decimals, certificate thresholds.
* [**Certificates**](/administration-guide/admin-guide/platform-settings/certificate-settings) (9) — Defaults applied when a learner earns a certificate.
* [**Skills**](/administration-guide/admin-guide/platform-settings/skill-settings) (13) — Skills tree, awarding rules, profile integration.
* [**Tracking**](/administration-guide/admin-guide/platform-settings/tracking-settings) (10) — What is recorded, what reports are exposed.

### Communication & community

* [**Messaging**](/administration-guide/admin-guide/platform-settings/message-settings) (7)
* [**Social Network**](/administration-guide/admin-guide/platform-settings/social-settings) (7)

### AI

* [**AI Helpers**](/administration-guide/admin-guide/platform-settings/ai-helpers-settings) (13) — Providers per task type (text, image, video, tutor, grading).

### Operations & integration

* [**Cron Jobs**](/administration-guide/admin-guide/platform-settings/crons-settings) (3)
* [**Search**](/administration-guide/admin-guide/platform-settings/search-settings) (3) — Xapian full-text search configuration.
* [**Tickets**](/administration-guide/admin-guide/platform-settings/ticket-settings) (7) — Helpdesk system.
* [**Web Services**](/administration-guide/admin-guide/platform-settings/webservice-settings) (7) — Legacy SOAP/REST endpoints.

## How Settings Work

* Settings are stored in the database (`settings` table) and managed through the web interface
* Some settings are **URL-locked** in multi-URL setups (their value applies platform-wide and cannot be overridden per URL - see `access_url_locked` and `access_url_changeable` columns in the `settings` table); others (most) can be overridden per access URL
* Changes take effect immediately (no server restart required), although your user session might be keeping some of them in memory. If changes don't reflect immediately, logout and login to flush your session.
* Some settings have dependencies — changing one may affect the behaviour of others
* Variable names shown on each page (e.g. `2fa_enable`) match the row in the `settings` database table (`variable` column) and the keys used in overrides (`config/settings_overrides.yaml`) where applicable.

For more information, check [Configurations](https://github.com/chamilo/chamilo-lms/wiki/Configurations) on our wiki.

## Tips

* **Document your settings** — Keep a record of non-default settings and why you changed them
* **Change one thing at a time** — When troubleshooting, modify one setting at a time so you can identify the effect
* **Test in a staging environment** — For significant setting changes, test on a staging server first


# Administrator Identity

Identity and contact details of the platform administrator. These values appear in the platform footer and in some system-generated emails.

Access these settings under **Administration > Configuration settings > Administrator Identity**. This category contains **12 settings**, listed below with the title and comment shipped in the platform's settings fixtures (`SettingsCurrentFixtures.php`).

> The variable name in code is shown in monospace. Use it when scripting via the API or when you need to change those settings at a global level by editing [`config/settings_override.yaml`](https://github.com/chamilo/chamilo-lms/wiki/Configurations#configsettings_overridesyaml).

## Settings

### `administrator_email`

**Portal Administrator: e-mail**

The e-mail address of the Platform Administrator (appears in the footer on the left)

### `administrator_name`

**Portal Administrator: First Name**

The First Name of the Platform Administrator (appears in the footer on the left)

### `administrator_phone`

**Portal Administrator: Phone number**

The phone number of the Platform Administrator (appears in the footer on the left)

### `administrator_surname`

**Portal Administrator: Last Name**

The Family Name of the Platform Administrator (appears in the footer on the left)

### `chamilo_latest_news`

**Latest news**

Get the latest news from Chamilo, including security vulnerabilities and events, directly inside your administration panel. These pieces of news will be checked on the Chamilo news server every time you load the administration page and are only visible to administrators.

*Default: `true`*

### `chamilo_support`

**Chamilo support block**

Get pro tips and an easy way to contact official service providers for professional support, directly from the makers of Chamilo. This block appears on your administration page, is only visible by administrators, and refreshes every time you load the administration page.

*Default: `true`*

### `max_anonymous_users`

**Multiple anonymous users**

Enable this option to allow multiple system users for anonymous users. This is useful when using this platform as a public showroom for some courses. Having multiple anonymous users will let tracking work for the duration of the experience for several users without mixing their data (which could otherwise confuse them).

*Default: `0`*

### `redirect_admin_to_courses_list`

**Redirect admin to courses list**

The default behaviour is to send administrators directly to the administration panel (while teachers and students are sent to the courses list or the platform homepage). Enable to redirect the administrator also to his/her courses list.

*Default: `false`*

### `send_inscription_notification_to_general_admin_only`

**Notify global admin only of new users**

When enabled, only the global administrator receives email notifications about new user registrations instead of all administrators.

*Default: `false`*

### `show_link_request_hrm_user`

**Show link to request bond between user and HRM**

Display a link on the profile page allowing Human Resources directors to request to be linked with a user account.

*Default: `false`*

### `user_status_option_only_for_admin_enabled`

**Hide role from normal users**

Allows hiding users' role when this option is set to true and the following array sets the corresponding role to 'true'.

*Default: `false`*

### `user_status_option_show_only_for_admin`

**Define which roles are hidden to normal users**

The roles set to 'true' will only appear to administrators. Other users will not be able to see them.


# Agenda

Defaults and behaviour of the **Agenda** tool (calendar / events).

Access these settings under **Administration > Configuration settings > Agenda**. This category contains **11 settings**, listed below with the title and comment shipped in the platform's settings fixtures (`SettingsCurrentFixtures.php`).

> The variable name in code is shown in monospace. Use it when scripting via the API or when you need to change those settings at a global level by editing [`config/settings_override.yaml`](https://github.com/chamilo/chamilo-lms/wiki/Configurations#configsettings_overridesyaml).

## Settings

### `agenda_colors`

**Agenda colours**

Set HTML-code colours for each type of event to change the colour when displaying the event.

### `agenda_legend`

**Agenda colour legends**

Add a small text as legend describing the colours used for the events.

### `agenda_on_hover_info`

**Agenda hover info**

Customize the agenda on cursor hovering. Show agenda comment and/or description.

### `agenda_reminders_sender_id`

**ID of the user who officially sends the agenda reminders**

Sets which user appears as the sender of agenda reminder emails.

*Default: `0`*

### `allow_agenda_edit_for_hrm`

**Allow HRM role to edit or delete agenda events**

This gives the HRM a little more power by allowing them to edit/delete agenda events in the course-session.

*Default: `false`*

### `allow_careers_in_global_agenda`

**Link global calendar events with careers and promotions**

When enabled, global calendar events can be associated with careers and promotions, allowing targeted scheduling.

*Default: `false`*

### `allow_personal_agenda`

**Personal Agenda**

Can the learner add personal events to the Agenda?

*Default: `true`*

### `default_calendar_view`

**Default calendar display mode**

Set this to dayGridMonth, basicWeek, agendaWeek or agendaDay to change the default view of the calendar.

*Default: `month`*

### `fullcalendar_settings`

**Calendar customization**

Extra settings for the agenda, allowing you to configure the specific calendar library we use.

### `personal_agenda_show_all_session_events`

**Display all agenda events in personal agenda**

Do not hide events from expired sessions.

*Default: `false`*

### `personal_calendar_show_sessions_occupation`

**Display sessions occupations in personal agenda**

When enabled, session schedules and occupations are displayed in users' personal calendars.

*Default: `false`*


# AI Helpers

Configuration of the AI helpers (text generation, image generation, video generation, AI tutor, AI grading). Each provider can be enabled per task type. See also [AI Configuration](/administration-guide/admin-guide/integrations/ai-configuration).

Access these settings under **Administration > Configuration settings > AI Helpers**. This category contains **13 settings**, listed below with the title and comment shipped in the platform's settings fixtures (`SettingsCurrentFixtures.php`).

> The variable name in code is shown in monospace. Use it when scripting via the API or when you need to change those settings at a global level by editing [`config/settings_override.yaml`](https://github.com/chamilo/chamilo-lms/wiki/Configurations#configsettings_overridesyaml).

## Settings

### `ai_providers`

**AI providers connection data**

Configuration data to connect with external AI services.

### `content_analyser`

**Content analyser**

Analyses learning materials to extract insights or improve quality.

*Default: `false`*

### `course_analyser`

**Course analyser**

Analyses all resources in one or many courses and pre-trains the AI model to answer any question on this or these courses (make sure content can be shared with the configured AI services).

*Default: `false`*

### `disclose_ai_assistance`

**Disclose AI assistance**

Show a tag on any content or feedback that has been generated or co-generated by any AI system, evidencing to the user that the content was built with the help of some AI system. Details about which AI system was used in which case are kept inside the database for audit, but are not directly accessible by the final user.

*Default: `true`*

### `enable_ai_helpers`

**Enable the AI helper tool**

Enables all available AI-powered features in the platform.

*Default: `false`*

### `exercise_generator`

**Exercise generator**

Generates personalized tests with AI based on course content.

*Default: `false`*

### `glossary_terms_generator`

**Glossary terms generator**

Allow teachers to ask for AI-generated glossary terms in their course. This will generate 20 terms based on the course title and the general description in the course description tool. If used more than once, it will exclude terms already present in that glossary (make sure content can be shared with the configured AI services).

*Default: `false`*

### `image_generator`

**Image generator**

Generates images based on prompts or content using AI.

*Default: `false`*

### `learning_path_generator`

**Learning paths generator**

Generates personalized learning paths using AI suggestions.

*Default: `false`*

### `open_answers_grader`

**Open answers grader**

Automatically grades open-ended answers using AI.

*Default: `false`*

### `task_grader`

**Assignments grader**

Uses AI to evaluate and grade uploaded assignments.

*Default: `false`*

### `tutor_chatbot`

**Tutor chatbot energized by AI**

Provides students with an AI-powered tutoring assistant.

*Default: `false`*

### `video_generator`

**Video generator**

Generates videos based on prompts or content using AI (this might consume many tokens).

*Default: `false`*


# Announcements

Behaviour of the course **Announcements** tool — how announcements are sent and scheduled.

Access these settings under **Administration > Configuration settings > Announcements**. This category contains **9 settings**, listed below with the title and comment shipped in the platform's settings fixtures (`SettingsCurrentFixtures.php`).

> The variable name in code is shown in monospace. Use it when scripting via the API or when you need to change those settings at a global level by editing [`config/settings_override.yaml`](https://github.com/chamilo/chamilo-lms/wiki/Configurations#configsettings_overridesyaml).

## Settings

### `allow_careers_in_global_announcements`

**Link global announcements with careers and promotions**

When enabled, global announcements can be associated with careers and promotions for targeted distribution.

*Default: `false`*

### `allow_coach_to_edit_announcements`

**Allow tutors to always edit announcements**

Allow tutors to always edit announcements inside active or past sessions.

*Default: `false`*

### `allow_scheduled_announcements`

**Enable scheduled announcements in sessions**

Allows the sessions managers to set announcements that will be triggered on specific dates or after/before a number of days of start/end of the session. Enabling this feature requires you to setup a cron task.

*Default: `false`*

### `announcements_hide_send_to_hrm_users`

**Hide option to send announcements to HR users**

Remove the checkbox to enable sending announcements to users with HR roles (still requires to confirm in the announcements tool).

*Default: `true`*

### `course_announcement_scheduled_by_date`

**Date-based announcements**

Allow teachers to configure announcements that will be sent at specific dates. This requires you to setup a cron task on cron/course\_announcement.php running at least once daily.

*Default: `false`*

### `disable_announcement_attachment`

**Disable attachment to announcements**

Even though attachments in this version are dealt in an elegant way and do not multiply on disk, you might want to disable attachments altogether if you want to avoid excesses.

*Default: `false`*

### `disable_delete_all_announcements`

**Disable button to delete all announcements**

Select 'Yes' to remove the button to delete all announcements, as this can be used by mistake by teachers.

*Default: `false`*

### `hide_announcement_sent_to_users_info`

**Hide 'sent to' in announcements**

Select 'Yes' to avoid showing to whom an announcement has been sent.

*Default: `false`*

### `hide_send_to_hrm_users`

**Hide the option to send an announcement copy to HRM**

In the announcements form, an option normally appears to allow teachers to send a copy of the announcement to the user's HRM. Set this to 'Yes' to remote the option (and *not* send the copy).


# Assignments (Work)

Defaults and behaviour of the **Assignments (Student Publications)** tool.

Access these settings under **Administration > Configuration settings > Assignments (Work)**. This category contains **12 settings**, listed below with the title and comment shipped in the platform's settings fixtures (`SettingsCurrentFixtures.php`).

> The variable name in code is shown in monospace. Use it when scripting via the API or when you need to change those settings at a global level by editing [`config/settings_override.yaml`](https://github.com/chamilo/chamilo-lms/wiki/Configurations#configsettings_overridesyaml).

## Settings

### `allow_compilatio_tool`

**Enable Compilatio**

Compilatio is an anti-cheating service that compares text between two submissions and reports if there is a high probability the content (usually assignments) is not genuine.

*Default: `false`*

### `allow_my_student_publication_page`

**Enable My assignments page**

\[inferred] Enable a dedicated page for learners to view and manage their own submitted assignments.

*Default: `false`*

### `allow_only_one_student_publication_per_user`

**Students can only upload one assignment**

\[inferred] Restrict learners to submitting only one assignment per activity, preventing multiple submissions.

*Default: `false`*

### `allow_redirect_to_main_page_after_work_upload`

**Redirect to assigment tool homepage after upload or comment**

Redirect to assignments list after uploading an assignment or a adding a comment

*Default: `false`*

### `assignment_prevent_duplicate_upload`

**Prevent duplicate uploads in assignments**

\[inferred] Block learners from uploading identical files for the same assignment submission.

*Default: `false`*

### `block_student_publication_add_documents`

**Prevent adding documents to assignments**

\[inferred] Prevent learners from adding or attaching documents when submitting assignments.

*Default: `false`*

### `block_student_publication_edition`

**Prevent assignments edition**

\[inferred] Prevent learners from modifying or updating their submitted assignments after initial submission.

*Default: `false`*

### `block_student_publication_score_edition`

**Prevent teacher from modifying assignment scores**

\[inferred] Prevent instructors from changing assignment scores after they have been recorded.

*Default: `false`*

### `compilatio_tool`

**Compilatio settings**

Configure the Compilatio connection details here.

### `considered_working_time`

**Enable time effort for assignments**

This will allow teachers to give an estimated time effort (in hh:flag\_mm:ss format) to complete the assignment. Upon submission of the assignment and approval by the teacher (the assignment is given a score), the learner will automatically be assigned the corresponding time.

*Default: `work_time`*

### `force_download_doc_before_upload_work`

**Force download of document before assignment upload**

Force users to download the provided document in the assignment definition before they can upload their assignment.

*Default: `true`*

### `my_courses_show_pending_work`

**Display link to 'pending' assignments from My courses page**

\[inferred] Display a link or count of pending assignments on the learner's My Courses page for quick access.

*Default: `false`*


# Attendance

Defaults and behaviour of the **Attendance** tool.

Access these settings under **Administration > Configuration settings > Attendance**. This category contains **4 settings**, listed below with the title and comment shipped in the platform's settings fixtures (`SettingsCurrentFixtures.php`).

> The variable name in code is shown in monospace. Use it when scripting via the API or when you need to change those settings at a global level by editing [`config/settings_override.yaml`](https://github.com/chamilo/chamilo-lms/wiki/Configurations#configsettings_overridesyaml).

## Settings

### `allow_delete_attendance`

**Attendances: enable deletion**

The default behaviour in Chamilo is to hide attendance sheets instead of deleting them, just in case the teacher would do it by mistake. Enable this option to allow teachers to *really* delete attendance sheets.

*Default: `true`*

### `attendance_allow_comments`

**Allow comments in attendance sheets**

Teachers and students can comment on each individual attendance (to justify).

*Default: `false`*

### `enable_sign_attendance_sheet`

**Attendance signing**

Enable taking signatures to confirm one's attendance.

*Default: `false`*

### `multilevel_grading`

**Enable Multi-Level Attendance Grading**

Allows grading attendance with multiple levels instead of a simple present/absent system.

*Default: `false`*


# CAS (legacy)

Legacy CAS (Central Authentication Service) configuration carried over from Chamilo 1.x. See [CAS](/administration-guide/admin-guide/authentication/cas) for the current status of the CAS authenticator in Chamilo 2.x.

Access these settings under **Administration > Configuration settings > CAS**. This category contains **7 settings**, listed below with the title and comment shipped in the platform's settings fixtures (`SettingsCurrentFixtures.php`).

> The variable name in code is shown in monospace. Use it when scripting via the API or when you need to change those settings at a global level by editing [`config/settings_override.yaml`](https://github.com/chamilo/chamilo-lms/wiki/Configurations#configsettings_overridesyaml).

## Settings

### `cas_activate`

**Enable CAS authentication**

Enabling CAS authentication will allow users to authenticate with their CAS credentials.\
Go to [Plugin](https://github.com/chamilo/docs/tree/2.x/admin-guide/platform-settings/settings.php?category=CAS) to add a configurable 'CAS Login' button for your Chamilo campus. Or you can force CAS authentication by setting cas\[force\_redirect] in app/config/auth.conf.php.

### `cas_add_user_activate`

**Enable CAS user addition**

Enable CAS user addition. To create the user account from the LDAP directory, the extldap\_config and extldap\_user\_correspondance tables must be filled in in app/config/auth.conf.php

### `cas_port`

**Main CAS server port**

The port on which to connect to the main CAS server

### `cas_protocol`

**Main CAS server protocol**

The protocol with which we connect to the CAS server

### `cas_server`

**Main CAS server**

This is the main CAS server which will be used for the authentication (IP address or hostname)

### `cas_server_uri`

**Main CAS server URI**

The path to the CAS service

### `update_user_info_cas_with_ldap`

**Update CAS-authenticated user account information from LDAP**

Makes sure the user firstname, lastname and email address are the same as current values in the LDAP directory


# Certificates

Defaults applied when a learner earns a certificate from the gradebook.

Access these settings under **Administration > Configuration settings > Certificates**. This category contains **9 settings**, listed below with the title and comment shipped in the platform's settings fixtures (`SettingsCurrentFixtures.php`).

> The variable name in code is shown in monospace. Use it when scripting via the API or when you need to change those settings at a global level by editing [`config/settings_override.yaml`](https://github.com/chamilo/chamilo-lms/wiki/Configurations#configsettings_overridesyaml).

## Settings

### `add_certificate_pdf_footer`

**Add footer to PDF certificate exports**

When enabled, a footer is added to PDF exports of certificates.

*Default: `false`*

### `allow_general_certificate`

**Enable general certificate**

A general certificate is a certificate grouping all the accomplishments by the user in the courses (s)he followed.

*Default: `false`*

### `allow_public_certificates`

**Allow public certificates**

User certificates can be view by unregistered users.

*Default: `false`*

### `certificate_filter_by_official_code`

**Certificates filter by official code**

Add a filter on the students official code to the certificates list.

*Default: `false`*

### `certificate_pdf_orientation`

**PDF orientation for certificates**

Set ‘portrait’ or ‘landscape’ (technical terms) for PDF certificates.

*Default: `landscape`*

### `hide_certificate_export_link`

**Certificates: hide PDF export link for all**

Enable to completely remove the possibility to export certificates to PDF (for all users). If enabled, this includes hiding it from students.

*Default: `false`*

### `hide_certificate_export_link_students`

**Certificates: hide export link from students**

If enabled, students won’t be able to export their certificates to PDF. This option is available because, depending on the precise HTML structure of the certificate template, the PDF export might be of low quality. In this case, it is best to only show the HTML certificate to students.

*Default: `false`*

### `hide_my_certificate_link`

**Hide ‘my certificate’ link**

Hide the certificates page for non-admin users.

*Default: `false`*

### `session_admin_can_download_all_certificates`

**Allow session admins to download private certificates**

If enabled, session administrators can download certificates even if they are not publicly published.

*Default: `false`*


# Chat

Behaviour of the course **Chat** tool.

Access these settings under **Administration > Configuration settings > Chat**. This category contains **5 settings**, listed below with the title and comment shipped in the platform's settings fixtures (`SettingsCurrentFixtures.php`).

> The variable name in code is shown in monospace. Use it when scripting via the API or when you need to change those settings at a global level by editing [`config/settings_override.yaml`](https://github.com/chamilo/chamilo-lms/wiki/Configurations#configsettings_overridesyaml).

## Settings

### `allow_global_chat`

**Allow global chat**

Users can chat with each other

*Default: `false`*

### `course_chat_restrict_to_coach`

**Restrict course chat to tutors**

Only allow students to talk to the tutors in the course (not other students).

*Default: `false`*

### `hide_chat_video`

**Hide videochat option in global chat**

When enabled, video chat functionality is disabled and unavailable in the global chat tool.

*Default: `true`*

### `save_private_conversations_in_documents`

**Save private conversations in documents**

If enabled, 1:1 private chat messages will be mirrored in the course chat history documents. Recommended to keep disabled for privacy.

*Default: `false`*

### `show_chat_folder`

**Show the history folder of chat conversations**

This will show to theacher the folder that contains all sessions that have been made in the chat, the teacher can make them visible or not learners and use them as a resource

*Default: `true`*


# Course

Defaults and policies that apply to courses across the platform — visibility, creation rights, allowed tools, learner permissions, and similar.

Access these settings under **Administration > Configuration settings > Course**. This category contains **45 settings**, listed below with the title and comment shipped in the platform's settings fixtures (`SettingsCurrentFixtures.php`).

> The variable name in code is shown in monospace. Use it when scripting via the API or when you need to change those settings at a global level by editing [`config/settings_override.yaml`](https://github.com/chamilo/chamilo-lms/wiki/Configurations#configsettings_overridesyaml).

## Settings

### `active_tools_on_create`

**Active tools on course creation**

Select the tools that will be *active* after the creation of a course.

*Default:*

```
agenda,announcement,attendance,bbb,blog,chat,course_description,course_progress,customcertificate,document,dropbox,forum,global,glossary,gradebook,group,learnpath,link,mobidico,notebook,notebookteacher,portfolio,positioning,quiz,student_publication,survey,test2pdf,tracking,user,wiki,zoom
```

### `allow_base_course_category`

**Use course categories from top URL**

In multi-URL settings, allow admins and teachers to assign categories from the top URL to courses in the children URLs.

*Default: `false`*

### `allow_course_theme`

**Allow course themes**

Allows course graphical themes and makes it possible to change the style sheet used by a course to any of the possible style sheets available to Chamilo. When a user enters the course, the style sheet of the course will have priority over the user's own style sheet and the platform's default style sheet.

*Default: `true`*

### `allow_public_course_with_no_terms_conditions`

**Access public courses with terms and conditions**

With this option enabled, if a course has public visibility and terms and conditions, those terms are disabled while the course is public.

*Default: `false`*

### `block_registered_users_access_to_open_course_contents`

**Block public courses access to authenticated users**

Only show public courses. Do not allow registered users to access courses with 'open' visibility unless they are subscribed to each of these courses.

*Default: `false`*

### `breadcrumbs_course_homepage`

**Course homepage breadcrumb**

The breadcrumb is the horizontal links navigation system usually in the top left of your page. This option selects what you want to appear in the breadcrumb on courses' homepages

*Default: `course_title`*

### `course_about_teacher_name_hide`

**Hide course teacher info on course details page**

On the course details page, hide the teacher information.

*Default: `false`*

### `course_category_code_to_use_as_model`

**Restrict course templates to one course category**

Give a category code to use as course templates. Only those courses will show in the drop-down at course creation time, and users won’t see the courses in this category from the courses catalogue.

### `course_configuration_tool_extra_fields_to_show_and_edit`

**Extra fields to show in course settings**

The fields defined in this array will appear on the course settings page.

### `course_creation_by_teacher_extra_fields_to_show`

**Extra fields to show on course creation form**

The fields defined in this array will appear as additional fields in the course creation form.

### `course_creation_donate_link`

**Donation link on course creation page**

The page the donation message should link to (full URL).

### `course_creation_donate_message_show`

**Show donate message on course creation page**

Add a message box in the course creation page for teachers, asking them to donate to the project.

*Default: `false`*

### `course_creation_form_hide_course_code`

**Remove course code field from course creation form**

If not provided, the course code is generated by default based on the course title, so enable this option to remove the code field from the course creation form altogether.

*Default: `false`*

### `course_creation_form_set_course_category_mandatory`

**Set course category mandatory**

When creating a course, make the course category a required setting.

*Default: `false`*

### `course_creation_form_set_extra_fields_mandatory`

**Extra fields to require on course creation form**

The fields defined in this array will be mandatory in the course creation form.

### `course_creation_splash_screen`

**Splash screen for courses**

Show a splash screen when creating a new course.

*Default: `true`*

### `course_creation_use_template`

**Use template course for new courses**

Set this to use the same template course (identified by its course numeric ID in the database) for all new courses that will be created on the platform. Please note that, if not properly planned, this setting might have a massive impact on space usage. The template course will be used as if the teacher did a copy of the course with the course backup tools, so no user content is copied, only teacher material. All other course-backup rules apply. Leave empty (or set to 0) to disable.

### `course_creation_user_course_extra_field_relation_to_prefill`

**Prefill course fields with fields from user**

If not empty, the course creation process will look for some fields in the user profile and auto-fill them for the course. For example, a teacher specialized in digital marketing could automatically set a « digital marketing » flag on each course (s)he creates.

### `course_hide_tools`

**Hide tools from teachers**

Check the tools you want to hide from teachers. This will prohibit access to the tool.

### `course_images_in_courses_list`

**Courses custom icons**

Use course images as the course icon in courses lists (instead of the default green blackboard icon).

*Default: `true`*

### `course_log_default_extra_fields`

**User extra fields by default in course stats page**

Configure this array with the internal IDs of the extra fields you want to show by default in the main course stats page.

### `course_log_hide_columns`

**Hide columns from course logs**

This array gives you the possibility to configure which columns to hide in the main course stats page and in the total time report.

### `course_sequence_valid_only_in_same_session`

**Validate prerequisites only within the same session**

When enabled, a course will be considered validated only if passed within the current session. If disabled, courses passed in other sessions will also unlock dependent courses.

*Default: `false`*

### `course_student_info`

**Course student info display**

On the ‘My courses’/’My sessions’ pages, show additional information regarding the score, progress and/or certificate acquisition by the student.

### `course_validation`

**Courses validation**

When the 'Courses validation' feature is enabled, a teacher is not able to create a course alone. He/she fills a course request. The platform administrator reviews the request and approves it or rejects it.\
This feature relies on automated e-mail messaging; set Chamilo to access an e-mail server and to use a dedicated an e-mail account.

*Default: `false`*

### `course_validation_terms_and_conditions_url`

**Course validation - a link to the terms and conditions**

This is the URL to the 'Terms and Conditions' document that is valid for making a course request. If the address is set here, the user should read and agree with these terms and conditions before sending a course request.\
If you enable Chamilo's 'Terms and Conditions' module and if you want its URL to be used, then leave this setting empty.

### `courses_default_creation_visibility`

**Default course visibility**

Default course visibility while creating a new course

*Default: `2`*

### `display_coursecode_in_courselist`

**Display Code in Course name**

Display Course Code in courses list

*Default: `false`*

### `display_teacher_in_courselist`

**Display teacher in course name**

Display teacher in courses list

*Default: `true`*

### `enable_tool_introduction`

**Enable tool introduction**

Enable introductions on each tool's homepage

*Default: `false`*

### `enable_unsubscribe_button_on_my_course_page`

**Show unsubscribe button in ‘My courses’**

Add a button to unsubscribe from a course on the ‘My courses’ page.

*Default: `false`*

### `example_material_course_creation`

**Example material on course creation**

Create example material automatically when creating a new course

*Default: `true`*

### `hide_course_rating`

**Hide course rating**

The course rating feature comes by default in different places. If you don’t want it, enable this option.

*Default: `false`*

### `hide_course_sidebar`

**Hide courses block in the sidebar**

When on screens where the left menu is visible, do not display the « Courses » section.

*Default: `true`*

### `multiple_access_url_show_shared_course_marker`

**Show multi-URL shared course marker**

Adds a link icon to courses that are shared between URLs, so users (in particular teachers) know they have to take special care when editing the course content.

*Default: `false`*

### `my_courses_show_courses_in_user_language_only`

**Only show courses in the user’s language**

If enabled, this option will hide all courses not set in the user’s language.

*Default: `false`*

### `profiling_filter_adding_users`

**Filter users on profile fields on subscription to course**

Allow teachers to filter the users based on extra fields on the page to subscribe users to their course.

*Default: `false`*

### `resource_sequence_show_dependency_in_course_intro`

**Show dependencies in course intro**

When using resources sequencing with courses or sessions, show the dependencies of the course on the course’s homepage.

*Default: `false`*

### `scorm_cumulative_session_time`

**Cumulative session time for SCORM**

When enabled, the session time for SCORM Learning Paths will be cumulative, otherwise, it will only be counted from the last update time. This is a global setting. It is used when creating a new Learning Path but can then be redefined for each one.

*Default: `true`*

### `send_email_to_admin_when_create_course`

**E-mail alert on course creation**

Send an email to the platform administrator each time a teacher creates a new course

*Default: `false`*

### `show_course_duration`

**Show courses duration**

Display the course duration next to the course title in the course catalogue and the courses list.

*Default: `false`*

### `show_navigation_menu`

**Display course navigation menu**

Display a navigation menu that quickens access to the tools

*Default: `false`*

### `show_toolshortcuts`

**Tools shortcuts**

Show the tool shortcuts in the banner?

*Default: `false`*

### `student_view_enabled`

**Enable learner view**

Enable the learner view, which allows a teacher or admin to see a course as a learner would see it

*Default: `true`*

### `view_grid_courses`

**View courses in a grid layout**

View courses in a layout with several courses per line. Otherwise, the layout will show one course per line.

*Default: `true`*


# Course Catalog

Behaviour of the course catalog (the public list where users can browse and self-enroll).

Access these settings under **Administration > Configuration settings > Course Catalog**. This category contains **13 settings**, listed below with the title and comment shipped in the platform's settings fixtures (`SettingsCurrentFixtures.php`).

> The variable name in code is shown in monospace. Use it when scripting via the API or when you need to change those settings at a global level by editing [`config/settings_override.yaml`](https://github.com/chamilo/chamilo-lms/wiki/Configurations#configsettings_overridesyaml).

## Settings

### `allow_session_auto_subscription`

**Auto Session Subscription**

Enable automatic subscription to sessions for users.

*Default: `false`*

### `allow_students_to_browse_courses`

**Allow Student Browsing**

Permit students to browse and filter the course catalog.

*Default: `true`*

### `course_catalog_display_in_home`

**Display Catalog on Homepage**

Show the course catalog block on the platform homepage.

*Default: `false`*

### `course_catalog_hide_private`

**Hide Private Courses**

Exclude private courses from the catalog display.

*Default: `true`*

### `course_catalog_published`

**Publish course catalogue**

Make the courses catalogue available to anonymous users (the general public) without the need to login.

*Default: `false`*

### `course_catalog_settings`

**Course catalogue settings**

JSON configuration for course catalog: link settings, filters, sort options, and more.

### `course_subscription_in_user_s_session`

**Subscription in Session View**

Allow users to subscribe to courses directly from their session page.

*Default: `false`*

### `hide_public_link`

**Hide Public Link**

Remove the public URL link from course cards.

*Default: `false`*

### `only_show_course_from_selected_category`

**Only show matching categories in courses catalogue**

When not empty, only the courses from the given categories will appear in the courses catalogue.

### `only_show_selected_courses`

**Only Selected Courses**

Show only manually selected courses in the catalog.

*Default: `false`*

### `session_catalog_settings`

**Session Catalog Settings**

JSON configuration for session catalog: filters and display options.

### `show_courses_descriptions_in_catalog`

**Show Course Descriptions**

Display course descriptions within the catalog listing.

*Default: `false`*

### `show_courses_sessions`

**Show Courses & Sessions**

Include both courses and sessions in catalog results.

*Default: `0`*


# Cron Jobs

Configuration of scheduled jobs (cron tasks) shipped with Chamilo.

Access these settings under **Administration > Configuration settings > Cron Jobs**. This category contains **3 settings**, listed below with the title and comment shipped in the platform's settings fixtures (`SettingsCurrentFixtures.php`).

> The variable name in code is shown in monospace. Use it when scripting via the API or when you need to change those settings at a global level by editing [`config/settings_override.yaml`](https://github.com/chamilo/chamilo-lms/wiki/Configurations#configsettings_overridesyaml).

## Settings

### `cron_remind_course_expiration_activate`

**Remind Course Expiration cron**

Enable the Remind Course Expiration cron

*Default: `false`*

### `cron_remind_course_expiration_frequency`

**Frequency for the Remind Course Expiration cron**

Number of days before the expiration of the course to consider to send reminder mail

### `cron_remind_course_finished_activate`

**Send course finished notification**

Whether to send an e-mail to students when their course (session) is finished. This requires cron tasks to be configured (see main/cron/ directory).

*Default: `false`*


# Display

How the platform is displayed to users — homepage layout, gravatar, menus, branding behaviour and similar visual preferences.

Access these settings under **Administration > Configuration settings > Display**. This category contains **24 settings**, listed below with the title and comment shipped in the platform's settings fixtures (`SettingsCurrentFixtures.php`).

> The variable name in code is shown in monospace. Use it when scripting via the API or when you need to change those settings at a global level by editing [`config/settings_override.yaml`](https://github.com/chamilo/chamilo-lms/wiki/Configurations#configsettings_overridesyaml).

## Settings

### `accessibility_font_resize`

**Font resize accessibility feature**

Enable this option to show a set of font resize options on the top-right side of your campus. This will allow visually impaired to read their course contents more easily.

*Default: `false`*

### `display_categories_on_homepage`

**Display categories on home page**

This option will display or hide courses categories on the portal home page

*Default: `false`*

### `enable_help_link`

**Enable help link**

The Help link is located in the top right part of the screen

*Default: `true`*

### `gravatar_enabled`

**Gravatar user pictures**

Enable this option to search into the Gravatar repository for pictures of the current user, if the user hasn't defined a picture locally. This is great to auto-fill pictures on your site, in particular if your users are active internet users. Gravatar pictures can be configured easily, based on the e-mail address of a user, at <http://en.gravatar.com/>

*Default: `false`*

### `gravatar_type`

**Gravatar avatar type**

If the Gravatar option is enabled and the user doesn't have a picture configured on Gravatar, this option allows you to choose the type of avatar that Gravatar will generate for each user. Check <http://en.gravatar.com/site/implement/images#default-image> for avatar types examples.

*Default: `mm`*

### `hide_complete_name_in_whoisonline`

**Hide the complete username in 'who is online'**

The 'who is online' page (if enabled) will show a picture and a name for each user currently online. Enable this option to hide the names.

*Default: `false`*

### `hide_logout_button`

**Hide logout button**

Hide the logout button. This is usually only interesting when using an external login/logout method, for example when using Single Sign On of some sort.

*Default: `false`*

### `hide_main_navigation_menu`

**Hide main navigation menu**

When using Chamilo for a specific purpose (like one massive online exam), you might want to reduce distraction even more by removing the side menu.

*Default: `false`*

### `hide_social_media_links`

**Hide social media links**

Some pages allow you to promote the portal or a course on social networks. Enable this setting to remove the links.

*Default: `false`*

### `order_user_list_by_official_code`

**Order users by official code**

Use the 'official code' to sort most students list on the platform, instead of their lastname or firstname.

*Default: `false`*

### `pdf_logo_header`

**PDF header logo**

Whether to use the image at var/themes/\[your-theme]/images/pdf\_logo\_header.png as the PDF header logo for all PDF exports (instead of the normal portal logo)

### `show_admin_toolbar`

**Show admin toolbar**

Shows a global toolbar on top of the page to the designated user roles. This toolbar, very similar to Wordpress and Google's black toolbars, can really speed up complicated actions and improve the space you have available for the learning content, but it might be confusing for some users

*Default: `do_not_show`*

### `show_back_link_on_top_of_tree`

**Show back links from categories/courses**

Show a link to go back in the courses hierarchy. A link is available at the bottom of the list anyway.

*Default: `false`*

### `show_closed_courses`

**Display closed courses on login page and portal start page?**

Display closed courses on the login page and courses start page? On the portal start page an icon will appear next to the courses to quickly subscribe to each courses. This will only appear on the portal's start page when the user is logged in and when the user is not subscribed to the portal yet.

*Default: `false`*

### `show_email_addresses`

**Show email addresses**

Show email addresses to users

*Default: `false`*

### `show_empty_course_categories`

**Show empty courses categories**

Show the categories of courses on the homepage, even if they're empty

*Default: `true`*

### `show_hot_courses`

**Show hot courses**

The hot courses list will be added in the index page

*Default: `true`*

### `show_number_of_courses`

**Show courses number**

Show the number of courses in each category in the courses categories on the homepage

*Default: `false`*

### `show_tabs`

**Main menu entries**

Check the entrie you want to see appear in the main menu

*Default:*

```json
{"menu":{"campus_homepage":true,"my_courses":true,"reporting":true,"platform_administration":true,"my_agenda":true,"social":true,"videoconference":false,"diagnostics":false,"catalogue":true,"session_admin":true,"search":true,"question_manager":false},"topbar":{"topbar_my_certificates":true,"topbar_my_custom_certificate":false,"topbar_skills":true}}
```

### `show_tabs_per_role`

**Main menu entries per role**

Define header tabs visibility per role.

*Default: `{}`*

### `showonline`

**Who's Online**

Display the number of persons that are online?

*Default: `world`*

### `table_default_row`

**Default number of table rows**

How many rows should be shown in all tables by default.

*Default: `20`*

### `table_row_list`

**Default offered pagination numbers in tables**

Set the options you want to appear in the navigation around a table to show less or more rows on one page. e.g. \[50, 100, 200, 500].

*Default: `[10,20,50,100]`*

### `time_limit_whosonline`

**Time limit on Who Is Online**

This time limit defines for how many minutes after his last action a user will be considered *online*

*Default: `30`*


# Documents

Behaviour of the course **Documents** tool — uploads, allowed extensions, sharing, and templates.

Access these settings under **Administration > Configuration settings > Documents**. This category contains **29 settings**, listed below with the title and comment shipped in the platform's settings fixtures (`SettingsCurrentFixtures.php`).

> The variable name in code is shown in monospace. Use it when scripting via the API or when you need to change those settings at a global level by editing [`config/settings_override.yaml`](https://github.com/chamilo/chamilo-lms/wiki/Configurations#configsettings_overridesyaml).

## Settings

### `access_url_specific_files`

**Enable URL-specific files**

When this feature is enabled on a multi-URL configuration, you can go to the main URL and provide URL-specific versions of any file (in the documents tool). The original file will be replaced by the alternative whenever seeing it from a different URL. This allows you to customize each URL even further, while enjoying the advantage of re-using the same courses many times.

*Default: `false`*

### `default_document_quotum`

**Default hard disk space**

What is the available disk space for a course? You can override the quota for specific course through: platform administration > Courses > modify

*Default: `1000`*

### `default_group_quotum`

**Group disk space available**

What is the default hard disk spacde available for a groups documents tool?

*Default: `250`*

### `documents_custom_cloud_link_list`

**Set strict hosts list for cloud links**

The documents tool can integrate links to files in the cloud. The list of cloud services is limited to a hardcoded list, but you can define the ‘links’ array that will contain a list of your own list of services/URLs. The list defined here will replace the default list.

### `documents_default_visibility_defined_in_course`

**Document visibility defined in course**

The default document visibility for all courses

*Default: `false`*

### `documents_hide_download_icon`

**Hide documents download icon**

In the documents tool, hide the download icon from users.

*Default: `false`*

### `enable_x_sendfile_headers`

**Enable X-sendfile headers**

Enable this if you have X-sendfile enabled at the web server level and you want to add the required headers for browsers to pick it up.

*Default: `false`*

### `group_category_document_access`

**Enable sharing options for document inside group category**

When enabled, administrators can set document access and sharing permissions for document groups by category.

*Default: `false`*

### `group_document_access`

**Enable sharing options for group document**

When enabled, document sharing and access permissions can be configured at the group level.

*Default: `false`*

### `pdf_export_watermark_by_course`

**Enable watermark definition by course**

When this option is enabled, teachers can define their own watermark for the documents in their courses.

*Default: `false`*

### `pdf_export_watermark_enable`

**Enable watermark in PDF export**

By enabling this option, you can upload an image or a text that will be automatically added as watermark to all PDF exports of documents on the system.

*Default: `false`*

### `pdf_export_watermark_text`

**PDF watermark text**

This text will be added as a watermark to the documents exports as PDF.

### `permanently_remove_deleted_files`

**Deleted files cannot be restored**

Deleting a file in the documents tool permanently deletes it. The file cannot be restored

*Default: `false`*

### `permissions_for_new_directories`

**Permissions for new directories**

The ability to define the permissions settings to assign to every newly created directory lets you improve security against attacks by hackers uploading dangerous content to your portal. The default setting (0770) should be enough to give your server a reasonable protection level. The given format uses the UNIX terminology of Owner-Group-Others with Read-Write-Execute permissions.

*Default: `0770`*

### `permissions_for_new_files`

**Permissions for new files**

The ability to define the permissions settings to assign to every newly-created file lets you improve security against attacks by hackers uploading dangerous content to your portal. The default setting (0550) should be enough to give your server a reasonable protection level. The given format uses the UNIX terminology of Owner-Group-Others with Read-Write-Execute permissions. If you use Oogie, take care that the user who launch LibreOffice can write files in the course folder.

*Default: `0660`*

### `send_notification_when_document_added`

**Send notification to students when document added**

Whenever someone creates a new item in the documents tool, send a notification to users.

*Default: `false`*

### `show_default_folders`

**Show in documents tool all folders containing multimedia resources supplied by default**

Multimedia file folders containing files supplied by default organized in categories of video, audio, image and flash animations to use in their courses. Although you make it invisible into the document tool, you can still use these resources in the platform web editor.

*Default: `true`*

### `show_documents_preview`

**Show document preview**

Showing previews of the documents in the documents tool will avoid loading a new page just to show a document, but can result unstable with some older browsers or smaller width screens.

*Default: `false`*

### `show_users_folders`

**Show users folders in the documents tool**

This option allows you to show or hide to teachers the folders that the system generates for each user who visits the tool documents or send a file through the web editor. If you display these folders to the teachers, they may make visible or not the learners and allow each learner to have a specific place on the course where not only store documents, but where they can also create and edit web pages and to export to pdf, make drawings, make personal web templates, send files, as well as create, move and delete directories and files and make security copies from their folders. Each user of course have a complete document manager. Also, remember that any user can copy a file that is visible from any folder in the documents tool (whether or not the owner) to his/her portfolios or personal documents area of social network, which will be available for his/her can use it in other courses.

*Default: `true`*

### `students_download_folders`

**Allow learners to download directories**

Allow learners to pack and download a complete directory from the document tool

*Default: `true`*

### `students_export2pdf`

**Allow learners to export web documents to PDF format in the documents and wiki tools**

This feature is enabled by default, but in case of server overload abuse it, or specific learning environments, might want to disable it for all courses.

*Default: `true`*

### `thematic_pdf_orientation`

**PDF orientation for course progress**

In the course progress tool, you can print a PDF of the different elements. Set ‘portrait’ or ‘landscape’ (technical terms) to change it.

*Default: `landscape`*

### `upload_extensions_blacklist`

**Blacklist - setting**

The blacklist is used to filter the files extensions by removing (or renaming) any file which extension figures in the blacklist below. The extensions should figure without the leading dot (.) and separated by semi-column (;) like the following: exe;com;bat;scr;php. Files without extension are accepted. Letter casing (uppercase/lowercase) doesn't matter.

### `upload_extensions_list_type`

**Type of filtering on document uploads**

Whether you want to use the blacklist or whitelist filtering. See blacklist or whitelist description below for more details.

*Default: `blacklist`*

### `upload_extensions_replace_by`

**Replacement extension**

Enter the extension that you want to use to replace the dangerous extensions detected by the filter. Only needed if you have selected a filter by replacement.

*Default: `dangerous`*

### `upload_extensions_skip`

**Filtering behaviour (skip/rename)**

If you choose to skip, the files filtered through the blacklist or whitelist will not be uploaded to the system. If you choose to rename them, their extension will be replaced by the one defined in the extension replacement setting. Beware that renaming doesn't really protect you, and may cause name collision if several files of the same name but different extensions exist.

*Default: `true`*

### `upload_extensions_whitelist`

**Whitelist - setting**

The whitelist is used to filter the file extensions by removing (or renaming) any file whose extension does *NOT* figure in the whitelist below. It is generally considered as a safer but more restrictive approach to filtering. The extensions should figure without the leading dot (.) and separated by semi-column (;) such as the following: htm;html;txt;doc;xls;ppt;jpg;jpeg;gif;sxw. Files without extension are accepted. Letter casing (uppercase/lowercase) doesn't matter.

### `users_copy_files`

**Allow users to copy files from a course in your personal file area**

Allows users to copy files from a course in your personal file area, visible through the Social Network or through the HTML editor when they are out of a course

*Default: `true`*

### `video_features`

**Video features**

Array of extra features you can enable for the video player in Chamilo. Options include 'speed', which allows you to change the playback speed of a video.


# Dropbox

Behaviour of the **Dropbox** file-exchange tool.

Access these settings under **Administration > Configuration settings > Dropbox**. This category contains **8 settings**, listed below with the title and comment shipped in the platform's settings fixtures (`SettingsCurrentFixtures.php`).

> The variable name in code is shown in monospace. Use it when scripting via the API or when you need to change those settings at a global level by editing [`config/settings_override.yaml`](https://github.com/chamilo/chamilo-lms/wiki/Configurations#configsettings_overridesyaml).

## Settings

### `dropbox_allow_group`

**Dropbox: allow group**

Users can send files to groups

*Default: `true`*

### `dropbox_allow_just_upload`

**Dropbox: Upload to own dropbox space?**

Allow trainers and users to upload documents to their dropbox without sending the documents to themselves

*Default: `true`*

### `dropbox_allow_mailing`

**Dropbox: Allow mailing**

With the mailing functionality you can send each learner a personal document

*Default: `false`*

### `dropbox_allow_overwrite`

**Dropbox: Can documents be overwritten**

Can the original document be overwritten when a user or trainer uploads a document with the name of a document that already exist? If you answer yes then you loose the versioning mechanism.

*Default: `true`*

### `dropbox_allow_student_to_student`

**Dropbox: Learner <-> Learner**

Allow users to send documents to other users (peer 2 peer). Users might use this for less relevant documents also (mp3, tests solutions, ...). If you disable this then the users can send documents to the trainer only.

*Default: `true`*

### `dropbox_hide_course_coach`

**Dropbox: hide course tutor**

Hide the session course tutor in Dropbox when a document is sent by the tutor to students

*Default: `false`*

### `dropbox_hide_general_coach`

**Hide general tutor in Dropbox**

Hide the general tutor name in the Dropbox tool when the general tutor uploaded the file

*Default: `false`*

### `dropbox_max_filesize`

**Dropbox: Maximum file size of a document**

How big (in MB) can a dropbox document be?

*Default: `100000000`*


# Editor

Configuration of the rich-text editor (TinyMCE) used across the platform — toolbars, plugins, AI helpers in the editor.

Access these settings under **Administration > Configuration settings > Editor**. This category contains **26 settings**, listed below with the title and comment shipped in the platform's settings fixtures (`SettingsCurrentFixtures.php`).

> The variable name in code is shown in monospace. Use it when scripting via the API or when you need to change those settings at a global level by editing [`config/settings_override.yaml`](https://github.com/chamilo/chamilo-lms/wiki/Configurations#configsettings_overridesyaml).

## Settings

### `allow_email_editor`

**Online e-mail editor enabled**

If this option is activated, clicking on an e-mail address will open an online editor.

### `allow_spellcheck`

**Spell check**

Enable spell check

### `block_copy_paste_for_students`

**Block learners copy and paste**

Block learners the ability to copy and paste into the WYSIWYG editor

### `editor_block_image_copy_paste`

**Prevent copy-pasting images in WYSIWYG editor**

Prevent the use of images copy-paste as base64 in the editor to avoid filling the database with images.

*Default: `false`*

### `editor_driver_list`

**List of WYSIWYG files drivers**

Array containing the names of the drivers for files access from the WYSIWYG editor.

### `editor_settings`

**WYSIWYG editor settings**

Generic configuration array to reconfigure the WYSIWYG editor globally.

### `enable_iframe_inclusion`

**Allow iframes in HTML Editor**

Allowing arbitrary iframes in the HTML Editor will enhance the edition capabilities of the users, but it can represent a security risk. Please make sure you can rely on your users (i.e. you know who they are) before enabling this feature.

### `enable_uploadimage_editor`

**Allow images drag\&drop in WYSIWYG editor**

Enable image upload as file when doing a copy in the content or a drag and drop.

*Default: `false`*

### `enabled_asciisvg`

**Enable AsciiSVG**

Enable the AsciiSVG plugin in the WYSIWYG editor to draw charts from mathematical functions.

### `enabled_googlemaps`

**Activate Google maps**

Activate the button to insert Google maps. Activation is not fully realized if not previously edited the file main/inc/lib/fckeditor/myconfig.php and added a Google maps API key.

### `enabled_imgmap`

**Activate Image maps**

Activate the button to insert Image maps. This allows you to associate URLs to areas of an image, creating hotspots.

### `enabled_insertHtml`

**Allow insertion of widgets**

This allows you to embed on your webpages your favorite videos and applications such as vimeo or slideshare and all sorts of widgets and gadgets

### `enabled_mathjax`

**Enable MathJax**

Enable the MathJax library to visualize mathematical formulas. This is only useful if either ASCIIMathML or ASCIISVG settings are enabled.

### `enabled_support_svg`

**Create and edit SVG files**

This option allows you to create and edit SVG (Scalable Vector Graphics) multilayer online, as well as export them to png format images.

### `enabled_wiris`

**WIRIS mathematical editor**

Enable WIRIS mathematical editor. Installing this plugin you get WIRIS editor and WIRIS CAS.\
This activation is not fully realized unless it has been previously downloaded the [PHP plugin for CKeditor WIRIS](http://www.wiris.com/es/plugins3/ckeditor/download) and unzipped its contents in the Chamilo's directory main/inc/lib/javascript/ckeditor/plugins/.\
This is necessary because Wiris is proprietary software and his services are [commercial](http://www.wiris.com/store/who-pays). To make adjustments to the plugin, edit configuration.ini file or replace his content by the file configuration.ini.default shipped with Chamilo.

### `force_wiki_paste_as_plain_text`

**Forcing pasting as plain text in the wiki**

This will prevent many hidden tags, incorrect or non-standard, copied from other texts to stop corrupting the text of the Wiki after many issues; but will lose some features while editing.

### `full_editor_toolbar_set`

**Full WYSIWYG editor toolbar**

Show the full toolbar in all WYSIWYG editor boxes around the platform.

*Default: `false`*

### `htmlpurifier_wiki`

**HTMLPurifier in Wiki**

Enable HTML purifier in the wiki tool (will increase security but reduce style features)

### `include_asciimathml_script`

**Load the Mathjax library in all the system pages**

Activate this setting if you want to show MathML-based mathematical formulas and ASCIIsvg-based mathematical graphics not only in the 'Documents' tool, but elsewhere in the system.

### `math_asciimathML`

**ASCIIMathML mathematical editor**

Enable ASCIIMathML mathematical editor

### `more_buttons_maximized_mode`

**Buttons bar extended**

Enable button bars extended when the WYSIWYG editor is maximized

*Default: `true`*

### `save_titles_as_html`

**Save titles as HTML**

Allow users to include HTML in title fields in several places. This allows for some styling of titles, notably in test questions.

*Default: `false`*

### `translate_html`

**Support multi-language HTML content**

If enabled, this option allows users to use a ‘lang’ attribute in HTML elements to define the langage the content of that element is written in. Enable multiple elements with different ‘lang’ attributes and Chamilo will display the content in the langage of the user only.

*Default: `false`*

### `video_context_menu_hidden`

**Hide the context menu on video player**

When enabled, the right-click context menu on HTML5 video players is disabled.

*Default: `false`*

### `video_player_renderers`

**Video player renderers**

Enable player renderers for YouTube, Vimeo, Facebook, DailyMotion, Twitch medias

### `youtube_for_students`

**Allow learners to insert videos from YouTube**

Enable the possibility that learners can insert Youtube videos


# Exercises (Tests)

Defaults and behaviour of the **Exercises (Tests)** tool — question display, scoring, attempts, and similar.

Access these settings under **Administration > Configuration settings > Exercises (Tests)**. This category contains **63 settings**, listed below with the title and comment shipped in the platform's settings fixtures (`SettingsCurrentFixtures.php`).

> The variable name in code is shown in monospace. Use it when scripting via the API or when you need to change those settings at a global level by editing [`config/settings_override.yaml`](https://github.com/chamilo/chamilo-lms/wiki/Configurations#configsettings_overridesyaml).

## Settings

### `add_exercise_best_attempt_in_report`

**Enable display of best score attempt**

Provide a list of courses and tests' IDs that will show the best score attempt for any learner in the reports.

### `allow_coach_feedback_exercises`

**Allow tutors to comment when reviewing exercises**

Allow tutors to edit feedback when reviewing exercises

*Default: `true`*

### `allow_edit_exercise_in_lp`

**Allow teachers to edit tests in learning paths**

By default, Chamilo prevents you from editing tests that are included inside a learning path. This is to avoid changes that would affect learners (past and future) differently regarding the results and/or progress in the learning path. This option allows teachers to bypass this restriction.

### `allow_exercise_categories`

**Enable test categories**

Test categories are not enabled by default because they add a level of complexity. Enable this feature to show all test categories related management icons appear.

*Default: `false`*

### `allow_mandatory_question_in_category`

**Enable selecting mandatory questions**

Enable the selection of mandatory questions in a test when using random categories.

*Default: `false`*

### `allow_notification_setting_per_exercise`

**Test notification settings at test-level**

Enable the configuration of test submission notifications at the test level rather than the course level. Falls back to course-level settings if not defined at test-level.

*Default: `false`*

### `allow_quick_question_description_popup`

**Quick image addition to question**

Enable an additional icon in the test questions list to add an image as question description. This vastly accelerates question edition when the questions are in the title and the description only includes an image.

*Default: `false`*

### `allow_quiz_question_feedback`

**Add question feedback if incorrect answer**

By default, Chamilo allows you to show feedback on each answer in a question. With this option, an additional field is created to provide pre-defined feedback to the whole question. This feedback will only appear if the user answered incorrectly.

*Default: `false`*

### `allow_quiz_results_page_config`

**Enable test results page configuration**

Define an array of settings you want to apply to all tests results pages. Settings can be ‘hide\_question\_score’, ‘hide\_expected\_answer’, ‘hide\_category\_table’, ‘hide\_correct\_answered\_questions’, ‘hide\_total\_score’ and possibly more in the future. Look for ‘getPageConfigurationAttribute’ in the code to see what’s in use.

*Default: `false`*

### `allow_quiz_show_previous_button_setting`

**Show 'previous' button in test to navigate questions**

Set this to false to disable the 'previous' button when answering questions in a test, thus forcing users to always move ahead.

*Default: `false`*

### `allow_teacher_comment_audio`

**Audio feedback to submitted answers**

Allow teachers to provide feedback to users through audio (alternatively to text) on each question in a test.

*Default: `true`*

### `allow_time_per_question`

**Enable time per question in tests**

By default, it is only possible to limit the time per test. Limiting it per question adds an extra layer of possibilities, and you can (carefully) combine both.

*Default: `false`*

### `block_category_questions`

**Lock questions of previous categories in a test**

When using this option, an additional option will appear in the test's configuration. When using a test with multiple question categories and asking for a distribution by category, this will allow the user to navigate questions per category. Once a category is finished, (s)he moves to the next category and cannot return to the previous category.

*Default: `false`*

### `block_quiz_mail_notification_general_coach`

**Block sending test notifications to the general tutor**

When learners complete a test, notifications are usually sent to tutors, including the general session tutor. Enable this option to omit the general tutor from these notifications.

*Default: `false`*

### `configure_exercise_visibility_in_course`

**Enable to bypass the configuration of Exercise invisible in session at a base course level**

To enable the configuration of the exercise invisibility in session in the base course to by pass the global configuration. If not set the global parameter is used.

*Default: `false`*

### `disable_clean_exercise_results_for_teachers`

**Disable 'clean results' for teachers**

Disable the option to delete test results from the tests list. This is often used when less-careful teachers manage courses, to avoid critical mistakes.

*Default: `true`*

### `email_alert_manager_on_new_quiz`

**Default e-mail alert setting on new quiz**

Whether you want course managers (teachers) to be notified by e-mail when a quiz is answered by a student. This is the default value to be given to all new courses, but each teacher can still change this setting in his/her own course.

*Default: `true`*

### `enable_quiz_scenario`

**Enable Quiz scenario**

From here you will be able to create exercises that propose different questions depending in the user's answers.

*Default: `true`*

### `exercise_additional_teacher_modify_actions`

**Additional links for teachers in tests list**

Configure callback elements to generate new action icons for teachers to the right side of the tests list, in the form of an array, e.g. \['myplugin' => \['MyPlugin', 'urlGeneratorCallback']]

### `exercise_attempts_report_show_username`

**Show username in test results page**

Show the username (instead or, or as well as, the user info) on the test results page.

*Default: `false`*

### `exercise_category_report_user_extra_fields`

**Add user extra fields in exercise category report**

Define an array with the list of user extra fields to add to the report.

### `exercise_category_round_score_in_export`

**Round score in test exports**

When enabled, test scores are rounded to the nearest integer when exporting exercise reports.

*Default: `false`*

### `exercise_embeddable_extra_types`

**Embeddable question types**

By default, only single answer and multiple answer questions are considered when deciding whether a test can be embedded in a video or not. With this option, you can decide that more question types are available. Be aware that not all question types fit nicely in the space assigned to videos. Questions types are availalble in the code in question.class.php.

### `exercise_hide_ip`

**Hide user IP from test reports**

By default, we show user information and its IP address, but this might be considered personal data, so this option allows you to remove this info from all test reports.

*Default: `false`*

### `exercise_hide_label`

**Hide question ribbon (right/wrong) in test results**

In test results, a ribbon appears by default to indicate if the answer was right or wrong. Enable this option to remove the ribbon globally.

*Default: `false`*

### `exercise_invisible_in_session`

**Exercise invisible in Session**

If an exercise is visible in the base course then it appears invisible in the session. If an exercise is invisible in the base course then it does not appear in the session.

*Default: `false`*

### `exercise_max_editors_in_page`

**Max editors in exercise result screen**

Because of the sheer number of questions that might appear in an exercise, the correction screen, allowing the teacher to add comments to each answer, might be very slow to load. Set this number to 5 to ask the platform to only show WYSIWYG editors up to a certain number of answers on the screen. This will speed up the correction page loading time considerably, but will remove WYSIWYG editors and leave only a plain text editor.

*Default: `0`*

### `exercise_max_score`

**Maximum score of exercises**

Define a maximum score (generally 10,20 or 100) for all the exercises on the platform. This will define how final results are shown to users and teachers.

*Default: `20`*

### `exercise_min_score`

**Minimum score of exercises**

Define a minimum score (generally 0) for all the exercises on the platform. This will define how final results are shown to users and teachers.

*Default: `0`*

### `exercise_result_end_text_html_strict_filtering`

**Bypass HTML filtering in test end messages**

Consider messages at the end of tests are always safe. Removing the filter makes it possible to use JavaScript there.

*Default: `false`*

### `exercise_score_format`

**Tests score format**

Select between the following forms for the display of users' score in various reports: 1 = SCORE\_AVERAGE (5 / 10); 2 = SCORE\_PERCENT (50%); 3 = SCORE\_DIV\_PERCENT (5 / 10 (50%)). Use the numerical ID of the form you want to use.

*Default: `0`*

### `exercises_disable_new_attempts`

**Disable new test attempts**

Disable new test attempts globally. Usually used when there is a problem with tests in general and you want some time to analyse without blocking the whole platform.

*Default: `false`*

### `hide_free_question_score`

**Hide open questions' score**

Hide the fact that open questions (including audio and annotations) have a score by hiding the score display in all learner-facing reports.

*Default: `false`*

### `hide_user_info_in_quiz_result`

**Hide user info on test results page**

The default test results page shows a user datasheet (photo, name, etc) which might, in some contexts, be considered as pushing the limits of personal data treatment. Enable this option to remove user details from the test results.

*Default: `false`*

### `limit_exercise_teacher_access`

**Limit teachers' permissions over tests**

When enabled, teachers cannot delete tests nor questions, change tests visibility, download to QTI, clean results, etc.

*Default: `false`*

### `my_courses_show_pending_exercise_attempts`

**Global pending tests list**

Enable to display to the final user a page with the list of pending tests across all courses.

*Default: `false`*

### `question_exercise_html_strict_filtering`

**Bypass HTML filtering in test questions**

Consider questions text in tests are always safe. Removing the filter makes it possible to use JavaScript there.

*Default: `false`*

### `question_pagination_length`

**Question pagination length for teachers**

Number of questions to show on every page when using the question pagination for teachers option.

*Default: `20`*

### `quiz_answer_extra_recording`

**Enable extra test answers recording**

Enable recording of all answers (even temporary) in the track\_e\_attempt\_recording table. This feautre is experimentaland can create issues in the reporting pages when attempting to grade a test.

*Default: `false`*

### `quiz_check_all_answers_before_end_test`

**Check all answers before submitting test**

Display a popup with the list of answered/unanswered questions before submitting the test.

*Default: `false`*

### `quiz_check_button_enable`

**Add answer-saving process check before test**

Make sure users are all set to start the test by providing a simulation of the question-saving process before entering the test. This allows for early detection of some connection issues and reduces user experience frictions.

*Default: `false`*

### `quiz_confirm_saved_answers`

**Add checkbox for answers count confirmation**

This option adds a checkbox at the end of each test asking the user to confirm the number of answers saved. This provides better auditing data for critical tests.

*Default: `false`*

### `quiz_discard_orphan_in_course_export`

**Discard orphan questions in course export**

When exporting a course, do not export the questions that are not part of any test.

*Default: `false`*

### `quiz_generate_certificate_ending`

**Generate certificate on test end**

Generate certificate when ending a quiz. The quiz needs to be linked in the gradebook tool and have a pass percentage configured.

*Default: `false`*

### `quiz_hide_attempts_table_on_start_page`

**Hide test attempts table on test start page**

Hide the table showing all previous attempts on the test start page.

*Default: `false`*

### `quiz_hide_question_number`

**Hide question number**

Hide the question incremental numbering when taking a test.

*Default: `false`*

### `quiz_image_zoom`

**Enable test images zooming**

Enable this feature to allow users to zoom on images used in the tests.

### `quiz_keep_alive_ping_interval`

**Keep session active in tests**

Keep session active by maintaining a regular ping signal to the server every x seconds, define here. We recommend once every 300 seconds.

*Default: `0`*

### `quiz_open_question_decimal_score`

**Decimal score in open question types**

Allow the teacher to rate the open, oral expression and annotation question types with a decimal score.

*Default: `false`*

### `quiz_prevent_copy_paste`

**Block copy-pasting in tests**

Block copy/paste/save/print keys and right-clicks in exercises.

*Default: `false`*

### `quiz_question_delete_automatically_when_deleting_exercise`

**Automatically delete questions when deleting test**

The default behaviour is to make questions orphan when the only test using them is deleted. When enabled, this option ensure that all questions that would otherwise end up orphan are deleted as well.

*Default: `false`*

### `quiz_results_answers_report`

**Show link to download test results**

On the test results page, display a link to download the results as a file.

*Default: `false`*

### `quiz_show_description_on_results_page`

**Always show test description on results page**

When enabled, the test description is always displayed on the results page after test completion.

*Default: `false`*

### `score_grade_model`

**Score grades model**

Define an array of score ranges and colors to display reports using this model. This allows you to show colors rather than numerical grades.

### `send_score_in_exam_notification_mail_to_manager`

**Add score in mail notification of test submission**

Add the learner's score to the e-mail notification sent to the teacher after a test was submitted.

*Default: `false`*

### `show_exercise_attempts_in_all_user_sessions`

**Show test attempts from all sessions in pending tests report**

Show test attempts from users in all sessions where the general tutor has access in the pending tests report.

*Default: `false`*

### `show_exercise_expected_choice`

**Show expected choice in test results**

Show the expected choice and a status (right/wrong) for each answer on the test results page (if the test has been configured to show results).

*Default: `false`*

### `show_exercise_question_certainty_ribbon_result`

**Show score for certainty degree questions**

By default, Chamilo does not show a score for the certainty degree question types.

*Default: `false`*

### `show_exercise_session_attempts_in_base_course`

**Show test attempts from all sessions in base course**

Show test attempts from users in all sessions to the teacher in the base course.

*Default: `false`*

### `show_official_code_exercise_result_list`

**Display official code in exercises results**

Whether to show the students' official code in the exercises results reports

*Default: `false`*

### `show_question_id`

**Show question IDs in tests**

Show questions' internal IDs to let users take note of issues on specific questions and report them more efficiently.

*Default: `false`*

### `show_question_pagination`

**Show question pagination for teachers**

For tests with many questions, use pagination if the number of questions is higher than this setting. Set to 0 to prevent using pagination.

*Default: `100`*

### `tracking_my_progress_show_deleted_exercises`

**Show deleted tests in 'My progress'**

Enable this option to display, on the 'My progress' page, the results of all tests you have taken, even the ones that have been deleted.

*Default: `false`*


# Forums

Behaviour of the course **Forums** tool.

Access these settings under **Administration > Configuration settings > Forums**. This category contains **9 settings**, listed below with the title and comment shipped in the platform's settings fixtures (`SettingsCurrentFixtures.php`).

> The variable name in code is shown in monospace. Use it when scripting via the API or when you need to change those settings at a global level by editing [`config/settings_override.yaml`](https://github.com/chamilo/chamilo-lms/wiki/Configurations#configsettings_overridesyaml).

## Settings

### `allow_forum_category_language_filter`

**Forum categories language filter**

Add a language filter to the forum view to only see categries configured in a specific language. Requires using the 'language' extra field on the 'forum\_category' entity.

*Default: `false`*

### `allow_forum_post_revisions`

**Forum post review**

Enable this option to allow asking for a review or a translation to one's post in a forum. When extensively configured, can be used to collaborate with other users in a language-learning forum.

*Default: `false`*

### `community_managers_user_list`

**Community managers list**

Provide an array of user IDs that will be considered community managers in the special course designated as global forum. Community managers have additional privileges on the global forum.

### `default_forum_view`

**Default forum view**

What should be the default option when creating a new forum. Any trainer can however choose a different view for every individual forum

*Default: `flat`*

### `display_groups_forum_in_general_tool`

**Display group forums in general forum**

Display group forums in the forum tool at the course level. This option is enabled by default (in this case, group forum individual visibilities still act as an additional criteria). If disabled, group forums will only be visible through the group tool, be them public or not.

*Default: `true`*

### `forum_fold_categories`

**Fold forum categories**

Visual effect to enable forum categories folding/unfolding.

*Default: `false`*

### `global_forums_course_id`

**Use course as global forum**

Set the course ID (numerical) of a course reserverd to use as a global forum. This replaces the 'Social groups' link in the social network by a link to the forum of that course.

*Default: `0`*

### `hide_forum_post_revision_language`

**Hide forum post review language**

Hide the possibility to assign a language to a forum post review.

*Default: `false`*

### `subscribe_users_to_forum_notifications_also_in_base_course`

**Forum notifications from base course as well**

Enable this option to enable notifications coming from the base course forum, even if following the course through a session.

*Default: `false`*


# Glossary

Behaviour of the course **Glossary** tool.

Access these settings under **Administration > Configuration settings > Glossary**. This category contains **3 settings**, listed below with the title and comment shipped in the platform's settings fixtures (`SettingsCurrentFixtures.php`).

> The variable name in code is shown in monospace. Use it when scripting via the API or when you need to change those settings at a global level by editing [`config/settings_override.yaml`](https://github.com/chamilo/chamilo-lms/wiki/Configurations#configsettings_overridesyaml).

## Settings

### `allow_remove_tags_in_glossary_export`

**Remove HTML tags in glossary export**

When enabled, HTML tags are removed from glossary term definitions when exporting.

*Default: `false`*

### `default_glossary_view`

**Default glossary view**

Choose which view ('table' or 'list') will be used by default in the glossary tool.

*Default: `table`*

### `show_glossary_in_extra_tools`

**Show the glossary terms in extra tools**

From here you can configure how to add the glossary terms in extra tools as learning path and exercice tool


# Gradebook (Assessments)

Defaults applied across the **Gradebook (Assessments)** tool — score display, decimal precision, certificate score thresholds, and aggregation.

Access these settings under **Administration > Configuration settings > Gradebook (Assessments)**. This category contains **34 settings**, listed below with the title and comment shipped in the platform's settings fixtures (`SettingsCurrentFixtures.php`).

> The variable name in code is shown in monospace. Use it when scripting via the API or when you need to change those settings at a global level by editing [`config/settings_override.yaml`](https://github.com/chamilo/chamilo-lms/wiki/Configurations#configsettings_overridesyaml).

## Settings

### `allow_gradebook_comments`

**Gradebook comments**

Enable gradebook comments so teachers can add a comment to the overall performance of the learner in this course. The comment will appear in the PDF export for the learner.

*Default: `false`*

### `allow_gradebook_stats`

**Cache results in the gradebook**

Put some of the large calculations of averages in cached fields for the links and evaluations to increase speed (considerably). The potential negative impact is that it can take some time to refresh the gradebook results tables.

*Default: `false`*

### `gradebook_badge_sidebar`

**Gradebook badges sidebar**

Generate a block inside the side menu where a few badges can be shown as pending approval. Requires gradebooks to be listed here, by (numerical) ID.

### `gradebook_default_grade_model_id`

**Default grade model**

This value will be selected by default when creating a course

### `gradebook_default_weight`

**Default weight in Gradebook**

This weight will be use in all courses by default

*Default: `100`*

### `gradebook_dependency`

**Inter-gradebook dependencies**

Enables a mechanism of gradebook dependencies that lets people know which other items they need to go through first in order to complete the gradebook.

*Default: `false`*

### `gradebook_dependency_mandatory_courses`

**Mandatory courses for gradebook dependencies**

When using inter-gradebook dependencies, you can choose a list of mandatory courses that will be required before approving any gradebook that has dependencies.

### `gradebook_detailed_admin_view`

**Show additional columns in gradebook**

Show additional columns in the student view of the gradebook with the best score of all students, the relative position of the student looking at the report and the average score of the whole group of students.

*Default: `false`*

### `gradebook_display_extra_stats`

**Gradebook extra statistics**

Add additional columns to the gradebook's main report (1 = ranking, 2 = best score, 3 = average).

### `gradebook_enable`

**Assessments tool activation**

The Assessments tool allows you to assess competences in your organization by merging classroom and online activities evaluations into Performance reports. Do you want to activate it?

*Default: `true`*

### `gradebook_enable_grade_model`

**Enable Gradebook model**

Enables the auto creation of gradebook categories inside a course depending of the gradebook models.

*Default: `false`*

### `gradebook_enable_subcategory_skills_independant_assignement`

**Enable skills by gradebook's subcategory**

Skills are normally attributed for completing a whole gradebook. By enabling this option, you allow skills to be attached to sub-sections of gradebooks.

*Default: `false`*

### `gradebook_flatview_extrafields_columns`

**User extra fields in gradebook flat view**

Add the given columns ('variables' array) to the main results table in the gradebook.

### `gradebook_hide_graph`

**Hide gradebook charts**

If your portal is resources-limited, reducing the generation of the dynamic gradebok charts with potentially thousands of results is a good option.

*Default: `false`*

### `gradebook_hide_link_to_item_for_student`

**Hide item links for learners in gradebook**

Avoid learners clicking on items from the gradebook by removing the links on the items.

*Default: `false`*

### `gradebook_hide_pdf_report_button`

**Hide gradebook button 'download PDF report'**

Removes the PDF export button from gradebook views for learners.

*Default: `false`*

### `gradebook_hide_table`

**Hide gradebook table for learners**

Reduce gradebook load time by hiding the results table (but still giving access to certificates, skills, etc).

*Default: `false`*

### `gradebook_locking_enabled`

**Enable locking of assessments by teachers**

Once enabled, this option will enable locking of any assessment by the teachers of the corresponding course. This, in turn, will prevent any modification of results by the teacher inside the resources used in the assessment: exams, learning paths, tasks, etc. The only role authorized to unlock a locked assessment is the administrator. The teacher will be informed of this possibility. The locking and unlocking of gradebooks will be registered in the system's report of important activities

*Default: `false`*

### `gradebook_multiple_evaluation_attempts`

**Allow multiple evaluation attempts in gradebook**

Allows adding comments to multiple evaluation attempts in gradebook and result tables.

*Default: `false`*

### `gradebook_number_decimals`

**Number of decimals**

Allows you to set the number of decimals allowed in a score

*Default: `0`*

### `gradebook_pdf_export_settings`

**Gradebook PDF export options**

Change the PDF export for learners based on the provided settings ('hide\_score\_weight', 'hide\_feedback\_textarea', ...)

### `gradebook_report_score_style`

**Gradebook reports score style**

Add gradebook score style configuration in the flat view. See api.lib.php in order to find the options: examples SCORE\_DIV = 1, SCORE\_PERCENT = 2, etc

*Default: `1`*

### `gradebook_score_display_colorsplit`

**Threshold**

The threshold (in %) under which scores will be colored red

*Default: `50`*

### `gradebook_score_display_custom`

**Competence levels labelling**

Tick the box to enable Competence levels labelling

*Default: `false`*

### `gradebook_score_display_custom_standalone`

**Custom score display in gradebook's standalone column**

Shows custom competence level values in a separate column in gradebook flatview when using custom score display.

*Default: `false`*

### `gradebook_score_display_upperlimit`

**Display score upper limit**

Tick the box to show the score's upper limit

*Default: `false`*

### `gradebook_use_apcu_cache`

**Use APCu caching to speed up gradebok**

Improve speed when rendering gradebook student reports using Doctrine APCU cache. APCu is an optional but recommended PHP extension.

*Default: `true`*

### `gradebook_use_exercise_score_settings_in_categories`

**Use test settings for grades display**

Applies exercise score display settings (percentage vs. points) to category scores in gradebook.

*Default: `true`*

### `gradebook_use_exercise_score_settings_in_total`

**Use global score display setting in gradebook**

Applies global exercise score display settings to total score calculations in gradebook.

*Default: `false`*

### `hide_gradebook_percentage_user_result`

**Hide percentage in best/average gradebook results**

Removes percentage display from best/average score results shown to learners in gradebook.

*Default: `true`*

### `my_display_coloring`

**Display colors for scores in the gradebook**

Enables color coding for better score visibility in the gradebook.

*Default: `false`*

### `student_publication_to_take_in_gradebook`

**Assignment considered for gradebook**

In the assignments tool, students can upload more than one file. In case there is more than one for a single assignment, which one should be considered when ranking them in the gradebook? This depends on your methodology. Use 'first' to put the accent on attention to detail (like handling in time and handling the right work first). Use 'last' to highlight collaborative and adaptative work.

*Default: `first`*

### `teachers_can_change_grade_model_settings`

**Teachers can change the Gradebook model settings**

When editing a Gradebook

*Default: `true`*

### `teachers_can_change_score_settings`

**Teachers can change the Gradebook score settings**

When editing the Gradebook settings

*Default: `true`*


# Groups

Behaviour of the course **Groups** tool.

Access these settings under **Administration > Configuration settings > Groups**. This category contains **3 settings**, listed below with the title and comment shipped in the platform's settings fixtures (`SettingsCurrentFixtures.php`).

> The variable name in code is shown in monospace. Use it when scripting via the API or when you need to change those settings at a global level by editing [`config/settings_override.yaml`](https://github.com/chamilo/chamilo-lms/wiki/Configurations#configsettings_overridesyaml).

## Settings

### `allow_group_categories`

**Group categories**

Allow teachers to create categories in the Groups tool?

*Default: `false`*

### `hide_course_group_if_no_tools_available`

**Hide course group if no tool**

If no tool is available in a group and the user is not registered to the group itself, hide the group completely in the groups list.

*Default: `false`*

### `show_groups_to_users`

**Show classes to users**

Show the classes to users. Classes are a feature that allow you to register/unregister groups of users into a session or a course directly, reducing the administrative hassle. When you pick this option, learners will be able to see in which class they are through their social network interface.

*Default: `false`*




---

[Next Page](/llms-full.txt/1)

