You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
On Microsoft Graph a move changes the message id. Every queued follower that names the pre-move id is therefore addressed to a message that no longer exists under that id, and Graph answers 404. #114 closes the ordinary path with a same-transaction handoff: when a move retires, the drain re-addresses every queued follower to the id Graph returned.
What the handoff cannot close is the window between Graph's 2xx for the move and the local transaction that retires the move and re-addresses the followers. If the process dies inside that window, the followers still name the old id at the next launch and are lost. That window is accepted by the owner as an explicit exception, stated in the source at the readdress site and registered in the known-issues register. This issue tracks the structural fix that removes the window and lets the handoff be deleted.
What
Make Outlook an immutable-id account, the way Gmail already is:
Send Prefer: IdType="ImmutableId" on every Graph request that returns or accepts a message id (list, get, move, delta, mail folders, batch).
One-time migration of every stored Outlook message id via translateExchangeIds (mutable → immutable), including the search index keys and any pending-operation rows that name Outlook ids.
Parity in the notification service extension's Graph client, and in the push subscription / delta bookkeeping that carries ids across processes.
Immutable ids are Graph's documented mechanism for exactly this (an id that survives moves between folders in the same mailbox); confirm the current documented caveats (ids are still not stable across mailboxes, and some legacy resources do not support the header) before designing the migration.
Why
On Microsoft Graph a move changes the message id. Every queued follower that names the pre-move id is therefore addressed to a message that no longer exists under that id, and Graph answers 404. #114 closes the ordinary path with a same-transaction handoff: when a move retires, the drain re-addresses every queued follower to the id Graph returned.
What the handoff cannot close is the window between Graph's 2xx for the move and the local transaction that retires the move and re-addresses the followers. If the process dies inside that window, the followers still name the old id at the next launch and are lost. That window is accepted by the owner as an explicit exception, stated in the source at the readdress site and registered in the known-issues register. This issue tracks the structural fix that removes the window and lets the handoff be deleted.
What
Make Outlook an immutable-id account, the way Gmail already is:
Prefer: IdType="ImmutableId"on every Graph request that returns or accepts a message id (list, get, move, delta, mail folders, batch).translateExchangeIds(mutable → immutable), including the search index keys and any pending-operation rows that name Outlook ids.Notes