Skip to content

OneNote Graph API: lastModifiedDateTime returned identical to createdDateTime after page edits (regression) #3

@debasish1996

Description

@debasish1996

We are seeing a regression in the Microsoft Graph OneNote API where lastModifiedDateTime on a page entity is returned identical to createdDateTime (same instant, to the second) even after the user has made multiple edits to the page. This started a few days ago and is reproducing across multiple tenants.

What I expect

After a user edits a OneNote page, lastModifiedDateTime should advance past createdDateTime.

What I'm seeing

lastModifiedDateTime == createdDateTime, byte for byte, on pages that have demonstrably been edited.

The OneNote web client and desktop client both show the page has been edited recently.
GET /me/onenote/pages/{id}/content returns the user-authored body.
Only the timestamp fields on the page entity are wrong.

Affected endpoint

  1. List endpoint — GET /me/onenote/pages/{page-id}
{
  "id": "[################]",
  "title": "1 - Welcome and Introduction",
  "createdDateTime":      "2026-06-02T11:03:06Z",
  "lastModifiedDateTime": "2026-06-02T11:03:06Z"
}

Repro steps

  1. Authenticate as a delegated user with Notes.ReadWrite.
  2. Create a OneNote page via Graph (or via the OneNote client — both reproduce).
  3. Open the page in OneNote (web or desktop) and add several lines of content over a few minutes; save each edit.
  4. Confirm in the OneNote UI that the page shows recent modifications.
  5. Call GET /me/onenote/pages/{page-id} (or the section's pages list).
  6. lastModifiedDateTime equals createdDateTime exactly.

Already ruled out

  • Not a caching / If-None-Match issue — no conditional headers; fresh 200 OK each time.
  • Not a $select projection issue — full default entity returned.
  • Not an auth / permission issue — content endpoint returns the edited body fine.
  • Not specific to one notebook, section, or user — reproduces across multiple users, sections, and tenants.
  • Not a client-clock issue — timestamps are server-generated UTC.

Impact

Our product uses the delta between createdDateTime and lastModifiedDateTime to detect which pages have been edited by the user. With the two values collapsed, the heuristic returns "no edits" for every page, and a customer-facing indicator goes silent. Affecting multiple tenants in production.

Questions

  1. Is there a known regression in the OneNote page-metadata path causing lastModifiedDateTime to mirror createdDateTime for edited pages?
  2. Has the field's update semantics changed recently — does it now require a different write path (e.g. PATCH vs. the OneNote sync client's writes) to advance?
  3. Recommended alternative signal to reliably detect "page has been edited" until this is resolved — e.g. ETag on the page entity, pages/{id}/content length, OneNote change-notification subscriptions?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions