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
- 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
- Authenticate as a delegated user with Notes.ReadWrite.
- Create a OneNote page via Graph (or via the OneNote client — both reproduce).
- Open the page in OneNote (web or desktop) and add several lines of content over a few minutes; save each edit.
- Confirm in the OneNote UI that the page shows recent modifications.
- Call GET /me/onenote/pages/{page-id} (or the section's pages list).
- 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
- Is there a known regression in the OneNote page-metadata path causing lastModifiedDateTime to mirror createdDateTime for edited pages?
- 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?
- 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?
We are seeing a regression in the Microsoft Graph OneNote API where
lastModifiedDateTimeon a page entity is returned identical tocreatedDateTime(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,
lastModifiedDateTimeshould advance pastcreatedDateTime.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}/contentreturns the user-authored body.Only the timestamp fields on the page entity are wrong.
Affected endpoint
Repro steps
Already ruled out
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