OLHelper is an Outlook task-pane add-in that uses delegated Microsoft Graph permissions to manage support-case folders, native Inbox rules, and selected messages. The pilot supports a complete case lifecycle:
- Track creates or reuses an active case folder, moves the selected message, and enables persistent routing.
- Check status reports whether the case is active, archived, untracked, or requires routing repair.
- Archive disables routing, moves the case folder to
Archived, and removes the OLHelper-managed rule. - Reopen moves an archived case back to
Activeand restores routing. - Repair routing recreates or enables the managed rule for an active case.
The pilot has no backend service, client secret, application-level mailbox access, or centralized storage of mailbox content.
package.jsondeclares the browser/runtime dependencies and the commands used to build, validate, serve, and sideload the add-in.manifest.xmltells Outlook when and where to display OLHelper. All local URLs point to the Webpack HTTPS server athttps://localhost:3000. Production and pilot deployments utilize a central Static Web App for hosting.webpack.config.jscompiles the TypeScript and CSS insrc/, creates the task-pane and command HTML pages, copies icons, injects Entra identifiers, and serves the resulting files over trusted local HTTPS..env.localcontains the sandbox Entra application and tenant IDs used by Webpack. It is intentionally excluded from Git. These identifiers are not client secrets, but are excluded to ensure a fully PII-stripped public repo.
Register a single-tenant SPA in the Microsoft 365 developer sandbox:
- Add the SPA redirect URI
brk-multihub://localhost:3000. - Add delegated Microsoft Graph permissions:
Mail.ReadWriteMailboxSettings.ReadWrite
- Copy
.env.exampleto.env.localand replace both placeholder IDs.
npm install
npm run typecheck
npm run build
npm run validate
npm startnpm start starts the HTTPS development server and attempts to sideload
manifest.xml into Outlook. Use npm run stop to stop the debugging session.
To run only the local server for manual sideloading, use:
npm run dev-serverThe generated files are written to dist/. Do not edit that directory.
The checked-in manifest is intentionally configured only for the local pilot.
For organizational deployment, every https://localhost:3000 URL
is replaced with an approved static hosting origin with a production
trusted-broker redirect URI to the Entra application:
brk-multihub://<production-origin>
The broker redirect contains only the origin, without a path.
The Azure-hosted pilot runs in an Azure subscription associated with a different tenant from the M365 developer sandbox. Azure hosts the static files, the sandbox app registration controls NAA identity and delegated Graph access.
See:
The deployment workflow generates dist/manifest.pilot.xml for the supplied
HTTPS origin. The checked-in manifest.xml remains localhost-only.