All About OneNote Synching & SharePoint

What is OneNote?

Has to be asked – a surprising number of people are not aware of what OneNote is for and how powerful it can be for keeping organized.

OneNote is a Digital notebook application that enables users to gather, organize, and search notes and other types of information, and to share those notes with others.

OneNote homepage: http://office.microsoft.com/en-ca/onenote/

What Are OneNote Documents?

Unsurprisingly, OneNote 2010 documents are XML documents not unlike .DOCX or .XLSX files. This means CRUD operations incur less complexity and overhead as they would if they were old school binary documents.

For collaboration, the open XML format that your OneNote “stuff” (including the hierarchy of Section Groups & Sections, text, styling, and embedded images and other media) follows makes it easy to synch across disparate devices such as desktops & mobile devices (non-Windows devices included).

That’s Great Keith, How About A Bunch of Code?

I knew you’d ask! Here you go, this is an update of a OneNote page, at the plumbing level:

static void UpdatePageContent()
    {
        OneNote.Application onApplication = new OneNote.Application();
        String strImportXML;
strImportXML = "<?xml version="1.0"?>" +
            "<one:Page xmlns:one="http://schemas.microsoft.com/office/onenote/12/2004/onenote"
            ID="{3428B7BB-EF39-4B9C-A167-3FAE20630C37}{1}{B0}">" +
            "    <one:PageSettings RTL="false" color="automatic">" +
            "        <one:PageSize>" +
            "            <one:Automatic/>" +
            "        </one:PageSize>" +
            "        <one:RuleLines visible="false"/>" +
            "    </one:PageSettings>" +
            "    <one:Title style="font-family:Calibri;
                 font-size:17.0pt" lang="en-US">" +
            "        <one:OE alignment="left">" +
            "            <one:T>" +
            "                <![CDATA[My Sample Page]]>" +
            "            </one:T>" +
            "        </one:OE>" +
            "    </one:Title>" +
            "    <one:Outline >" +
            "        <one:Position x="120" y="160"/>" +
            "        <one:Size width="120" height="15"/>" +
            "        <one:OEChildren>" +
            "            <one:OE alignment="left">" +
            "                <one:T>" +
            "                    <![CDATA[Sample Text]]>" +
            "                </one:T>" +
            "            </one:OE>" +
            "        </one:OEChildren>" +
            "    </one:Outline>" +
            "</one:Page>";
// Update the page content.
        onApplication.UpdatePageContent(strImportXML, System.DateTime.MinValue);
    }

My Brain Hurts, What Does that Crap Mean?

It means, that since we can see it’s a simple XML (text file) update method, then the access methods for performing these updates are also likely to be simple. That they be. Web Services are a fundamental backbone to the Office suite and SharePoint, and OneNote is no black sheep.

There are three methods used by OneNote for communicating:

HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV):

File Synchronization via SOAP over HTTP Protocol Specification

Windows Live SkyDrive Save to Web SOAP Web Service

All three of these methods are simply communication over HTTP via XML.

What Protocol is Used When?

To transfer and synchronize files that are stored on a server running SharePoint Products and Technologies, OneNote 2013 or OneNote 2010 determine which Web authoring protocol to use by sending a SOAP call to the protocol server by using the File Synchronization via SOAP over HTTP Protocol (MS-FSSHTTP), and then processing the response as follows.

1. If the protocol server responds in the format that is defined by the File Synchronization via SOAP over HTTP Protocol, OneNote 2013 or OneNote 2010 use the File Synchronization via SOAP over HTTP Protocol to access the file.

2. If the protocol server does not respond in the format that is defined by the File Synchronization via SOAP over HTTP Protocol or it responds incorrectly, OneNote 2013 or OneNote 2010 use either of the following, depending on the version of the operating system on which it is running:

  • If it is running on Windows Vista operating system or Windows 7 operating system, OneNote 2013 or OneNote 2010 use the Web Distributed Authoring and Versioning (WebDAV) Protocol Client Extensions.
  • If it is running on Windows XP operating system, OneNote 2013 or OneNote 2010 uses the FrontPage Server Extensions Remote Protocol.

The following table describes the additional protocols used by OneNote 2013, OneNote 2010, or Office OneNote 2007 when synchronizing files with servers running Windows SharePoint Services.

Protocol Name Description Short Name
Hypertext Transfer Protocol — HTTP/1.1 Sends HTTP OPTIONS requests to the server to identify the server version and supported protocols. Sends HTTP HEAD requests to files and folders to validate their existence, invoke authentication, and check file modified times. [RFC2616]
Lists Web Service Protocol Enumerates Office OneNote 2007, OneNote 2010, or OneNote 2013 files in the document library folder, and efficiently enumerates changed files. [MS-LISTSWS]
Webs Web Service Protocol Maps file path URLs to document libraries for subsequent calls to the Lists Web Service Protocol [MS-LISTSWS]. [MS-WEBSS]

For a complete reference of Microsoft Office Protocols, check out http://msdn.microsoft.com/en-us/library/cc307282%28v=office.14%29.aspx

About OneNote Notebook Synching

When you work in notebooks that are stored on your computer, Microsoft OneNote 2010 continually and automatically saves your changes as you work. However, if you set up a shared notebook on the Web or your organization’s network in order to share the notebook on other computers or with other people, saving and managing changes occurs a bit differently.
OneNote keeps a local cached copy of a shared notebook on each computer that accesses it and then periodically synchronizes any changes with the notebook files that are stored in the shared location. You can adjust the settings that control this process.

OneNote 2010 does do incremental syncing on notebooks. But if a file is an embedded file, such as a video, if that file changes, then the entire file would need to be uploaded again.
There is not a way to change the syncing interval of notebooks.

Notes About SharePoint & OneNote

Unlike Microsoft Word and Microsoft PowerPoint, Microsoft OneNote stores version information within the file itself. For this reason, administrators should follow these recommended practices when storing OneNote notebooks in a SharePoint Server document library:

  • Do not enable minor versioning. This is the default setting in SharePoint Server 2010.
  • If major versioning is enabled, set a reasonable maximum number of versions to store. By default, major versioning is not enabled in SharePoint Server 2010.

It should be understood that in SharePoint 2010 there are at 8 methods of data manipulation possible. See http://nikspatel.wordpress.com/2012/08/05/sharepoint-2010-data-querying-options-server-om-vs-client-om-vs-rest-vs-linq-vs-search-api/

Considering this, when the question comes up “How is OneNote pegging my SharePoint server resource-wise and what can I do to limit that”, one needs to carefully review the SharePoint access methods in comparison to the particular mode OneNote is communicating in.

As synched OneNote content is delivered via Office Web Application, all the standard SharePoint Resource Throttling approaches will apply – including being able to offload heavy queries to certain times of day. This is also the same for SharePoint Workspace (although there are some other built-in limits at play in Workspace) and a variety of third-party apps such as SharePlus.

Notes About Office Web Application Service Limits

This includes the Word Web App, PowerPoint Web App and OneNote Web App. There are several different perspectives that you have to look at each of these. Specifically you should focus on viewing versus editing because the resources required are quite different.

The drivers for performance are expected concurrent users and what type of operations are going to be done. Microsoft’s initial recommendations are 100 daily users with average of 10 concurrent can be supported by 1 WFE and 1 App Server. Going to 1000 daily and 30 concurrent would require 2 WFE and 2 App servers. Going to 10,000 daily and 300 concurrent would require 4 WFE and 3 app servers.
Much of the limits associated to OneNote Services are directly tied to the limits for list and libraries. This is because each section in OneNote is stored as folders and documents in a library.
The maximum size for each section of an OneNote section is again driven by the file size limits for lists and libraries.

If there are embedded images, files, etc. in OneNote, that are greater than 100KB, they will be split out into their own binary files within the SharePoint library.

Error Codes

The full reference to possible OneNote errors can be found here: http://msdn.microsoft.com/en-us/library/ff966472.aspx

Comments (2)

  • Hi Keith,

    Please tell me how to enable MS-FSSHTTP protocol because I am getting this error message, “It looks like support of MS-FSSHTTP protocol is turned off on this SharePoint server.

    We are using SharePoint 2013.

    • Hi Chuck,

      I don’t know that there’s a particular service or such that can be specifically enabled or disabled to facilitate MS-FSSHTTP however I do as a rule enable the Webclient service in Windows Services for all SP services as it seems to be required for stability with Cobalt-related operations.

      Requirements for MS-FSS are:
      – Check that “MS-FSS over HTTP” protocol’s support is enabled on the SP server
      you can check it by using, for example cURL, type in command line:

      curl -I -X OPTIONS –ntlm -u:

      the header you are looking for is “X-MSFSSHTTP” and it’s value must be equal or higher then 1.0

      – no proxy server
      Make sure there’s no proxy in the middle mucking things up.

      – use FQDN domain names if possible, because when you are using VPN or something like that, short names of some net resources can not be resolved sometimes

      No special port is required – only http.

Leave a Reply

Your email address will not be published. Required fields are marked *