Roles and Permissions in Libraries#

The Ulmo release introduces the first phase of the new roles and permissions system for the Open edX platform. This first phase focuses on establishing a shared roles & permissions service and connecting it to Libraries, so the same model can be extended to other parts of the platform over time.

The Team Members tab of the Admin Console, showing two team members in a table with the columns Name, Email, Role, and Actions

Any user who has a role in a library can open the library team manager in the new Administrative Console from Studio. This view shows all members of the library, the role each person holds, and the permissions associated with each role. Library Admins and global site admins can use this view to assign or revoke roles for that library, so team membership and role information live in a single place.

The goal of the Ulmo MVP is to introduce the new roles and permissions model to Libraries with functional parity and a clearer model of roles, not to change how authors create or reuse content.

Migrate Legacy Libraries

Legacy Libraries do not support the new Roles & Permissions functionality. Upgrade Legacy Libraries in order to take advantage of this new feature! To learn more view the migration documentation.

What’s Available in Ulmo#

The Ulmo release includes:

  • Library scoped roles (Roles): Library Admin, Library Author, Library Contributor, and Library User, each mapped to a defined set of permissions that control who can view, edit, publish or reuse library content, and who can manage the library team.

    Matrix of Content Library Roles and Permissions#

    Permissions

    Library Admin

    Library Author

    Library Contributor

    Library User

    Library

    content_libraries.view_library

    âś…

    âś…

    âś…

    âś…

    content_libraries.manage_library_tags

    âś…

    âś…

    âś…

    ❌

    content_libraries.delete_library

    âś…

    ❌

    ❌

    ❌

    Content

    content_libraries.edit_library_content

    âś…

    âś…

    âś…

    ❌

    content_libraries.publish_library_content

    âś…

    âś…

    ❌

    ❌

    content_libraries.reuse_library_content

    âś…

    âś…

    âś…

    âś…

    Team

    content_libraries.view_library_team

    âś…

    âś…

    âś…

    âś…

    content_libraries.manage_library_team

    âś…

    ❌

    ❌

    ❌

    Collections

    content_libraries.create_library_collection

    âś…

    âś…

    âś…

    ❌

    content_libraries.edit_library_collection

    âś…

    âś…

    âś…

    ❌

    content_libraries.delete_library_collection

    âś…

    âś…

    âś…

    ❌

  • A new “Library Contributor” role that matches most of the Library Author capabilities for creating and editing content, managing tags and collections, and reusing content, but cannot publish content. They support the authoring process while leaving final publishing to Authors or Admins.

  • A library team management page in the Administrative Console. Any user who has a role in a library can open this view to see all members, their roles and the available role definitions. Library Admins and global site admins use the same view to assign or revoke roles for that library, so team membership and role information are managed from a single place.

  • An automatic migration that replicates existing library roles into the new system, so current configurations are preserved without manual changes.

Scope and Impact#

The new roles and permissions system applies only to Content Libraries, not Legacy Libraries. It replaces the previous library specific permissions logic with library-scoped roles surfaced through the Administrative Console.

The scope of this release is limited to:

  • Libraries created and managed in Studio

  • Library level roles and permissions managed through the Administrative Console

  • Migration of existing library role assignments into the new roles & permissions system

The following areas are not affected in Ulmo:

  • Courses, course roles and course level permissions

  • Forums, cohorts and other runtime features

  • Any legacy library implementations that have not yet been migrated to Content Libraries

Migration of Existing Library Access#

Ulmo includes an automated migration path for existing library access configurations.

During the upgrade to Ulmo, current library role assignments are mapped into the new roles & permissions system automatically via the Ulmo upgrade. The intent is to preserve who can access each library and what they can do, without requiring manual configuration from platform operators.

After the upgrade, operators and Library owners can review library teams in the Administrative Console to confirm that roles and access levels look correct. For most deployments that already use Libraries, no additional action should be required beyond this validation step.

Future improvements#

After Ulmo, the Roles and Permissions work is expected to evolve in several directions:

  • Extending the same Roles & Permissions model beyond Libraries. Course authoring is the next candidate, and future phases will expand the roles and permissions pattern to Studio, forums, and other product areas.

  • Introducing more advanced administration features in the Administrative Console, allowing for managing multiple scopes at once, listing users’ roles across scopes, and granting roles to multiple scopes in one action.

  • Exploring support for custom roles, based on feedback from operators who manage large instances.

These improvements will be scoped and tracked in future releases once the Libraries integration is validated in production. Be sure to Stay Up To Date with Verawood!

Maintenance chart

Review Date

Working Group Reviewer

Release

Test situation

2025-12-11

Product WG

Ulmo

Pass