General plugins (Local): Microsoft OneNote

Maintained by Picture of Enovation Dev TeamEnovation Dev Team, Picture of James McQuillanJames McQuillan, Picture of Zion BrewerZion Brewer, Picture of Nima MojganiNima Mojgani
This plugin provides a common client API for various other Moodle plugins that allow Moodle users to take advantage of Microsoft OneNote Online. This includes operations such as browsing your notebooks, sections, and pages; students doing assignments in OneNote and teachers providing feedback on those assignments in OneNote.
844 sites
20 fans

Moodle plugins for Microsoft Services

including Office 365 and other Microsoft services

Microsoft OneNote Online API Local Plugin

This plugin provides a common client API for various other Moodle plugins that allow Moodle users to take advantage of Microsoft OneNote Online. This includes  operations such as browsing your notebooks, sections, and pages; students doing assignments in OneNote and teachers providing feedback on those assignments in OneNote. It uses the Microsoft Account local plugin for authentication and using the OneNote Oneline REST API.



        $onenoteapi = onenote_api::getinstance();

Logging the user in:


Making a REST API call:

        $notebooks = $onenoteapi->get_items_list('');

Design Details

There are several parts that make up the Microsoft OneNote Online API Local plugin.


None. This plugin depends upon the Microsoft Account local plugin to be configured for accessing the appropriate Microsoft Live application.

onenote_api class

This is a singleton class that provides simple wrappers for various authentication and the OneNote online REST API. Some of the functionality provided includes:

  • render_signin_widget: Returns the HTML for displaying the signin widget for Microsoft OneNote.
  • get_items_list: Used for drilling down the hierarchy of OneNote notebooks, sections, and pages.
  • get_item_name: Returns the name of a notebook, section, or page.
  • download_page: Downloads the contents of a OneNote page, including the HTML and any images; saves them in a folder and creates a .zip file out of it.
  • render_action_button: Returns the HTML for displaying action buttons that allow students to view or work on OneNote assignments and teachers to provide feedback on them.
  • get_page: Gets (or creates) the student submission page or teacher feedback page in OneNote for the given student assignment. Performs all actions such as determining if a page already exists and returning that; or determining if this is the first time a student is accessing the assignment and creating the page from the assignment title / prompt etc; or determining if a downloaded zipped page already exists and thawing the OneNote page from that.

onenote_actions.php file

This file processes form submissions from all the OneNote-related submit buttons in the Moodle API that help students work on their assignments and help teachers provide feedback on those assignments in OneNote.

Plugin dependencies

local_onenote => local_msaccount

Additional notes about the OneNote integration

When a user (student or teacher) clicks on the "Work on this" or "View Submission" or "View Feedback" buttons, the following actions may happen if needed:

  • A notebook is created called "Moodle Notebook" in the OneNote account of the user
  • Sections are created in that notebook with the names of all the courses the user is currently enrolled into.
  • A page is created inside that section corresponding to the submission or feedback as necessary.
  • The title of the submission / feedback page is the name of the assignment, prefixed by "Submission: " / "Feedback: ", and postfixed by "[firstname lastname]" of the student.
  • Note that these actions take place in a lazy manner and only when necessary i.e. when the corresponding notebook, section, or page does not exist.
  • These actions will also occur if the user subsequently goes into OneNote and deletes the notebook, section, or page.
  • The connection between Moodle and the OneNote section or page is via the unique id of the section or page. This connection is loose i.e. if the user deletes the section or page, a new one will be created in its place and the appropriate ID maintained in the related Moodle database is updated.

Each submission for each student will have a Submission page and a Feedback page in the student's OneNote account. Also, for each assignment, there is a submission and feedback page for each student in the teacher's account. This is also done lazily i.e. only when teacher clicks on the above buttons. Correspondingly, each such page, when it gets saved inside Moodle, has a copy of the HTML and any associates images, all zipped up in a zip file.

If any of these submission or feedback pages get deleted in OneNote for some reason, they will get recreated when needed from their saved copy in Moodle. So the "master" is always with Moodle and the OneNote pages associated with the master are loosely connected to it.

This is part of the suite of Microsoft Services plugins for Moodle.

This plugin is updated with stable releases. To follow active development, see:


Before we can accept your pull request, you'll need to electronically complete Microsoft's Contributor License Agreement. If you've done this for other Microsoft projects, then you're already covered.

Why a CLA? (from the FSF)


(c) Microsoft, Inc.  Code for this plugin is licensed under the GPLv3 license.

Any Microsoft trademarks and logos included in these plugins are property of Microsoft and should not be reused, redistributed, modified, repurposed, or otherwise altered or used outside of this plugin.


This plugin is part of set Microsoft Services.


Screenshot #0


Picture of Enovation Dev Team
Enovation Dev Team (Lead maintainer)
Picture of Vinayak (Vin) Bhalerao
Vinayak (Vin) Bhalerao
Picture of Akinsaya Delamarre
Akinsaya Delamarre
Please login to view contributors details and/or to contact them

Comments RSS

Show comments
  • Anthony Borrow
    Sun, Jan 18, 2015, 3:08 AM
    James - Many thanks for sharing this plugin with the Moodle community. I am in the process of reviewing it and the other related plugins. I was able to install the plugin without issue and will continue the review. Peace - Anthony
  • Picture of Stephen McConnachie
    Tue, Nov 22, 2016, 1:38 PM
    Hi - we've rebranded our Moodle site to be called eLearn. Is it possible to add a setting to change the name of the Moodle Notebook that is created? Our students don't see any other mention of "Moodle" so it would just be confusing to have the Moodle Notebook pop up unannounced. :P
    Thanks - Stephen
  • Picture of James McQuillan
    Fri, Dec 2, 2016, 2:41 PM
    @stephen Best way to accomplish this is to edit the Moodle notebook language string, The notebook is created using a language string in the plugin and Moodle provides a language string editor. Editing this string should change what the name is when the notebook is created.
  • Picture of prabhat Rathore
    Thu, Apr 25, 2019, 9:14 PM
    thankyou for this knowlegde it will really help me read more
  • Picture of Himanchal Dwivedi
    Fri, Apr 26, 2019, 8:17 PM
    I appreciate your hard work i wanna tell you without reading your blog i don't sleep please keep sharing these type Motivational Quotes in Hindi on your blog. thanks for making
    our day.
Please login to post comments