Skip to main content

Sync Status

The Sync Status page is the operational view for every Microsoft 365 synchronization that feeds Beak M365 License Optimizer. Use it to inspect the history of recent sync jobs, trigger a sync on demand, manage the recurring schedules that keep data fresh, and drill into the live log of any job that is currently running or has failed.


Jobs Tab​

The Jobs tab lists every sync job — scheduled, manual, or schedule-triggered — for the active tenant.

The table is fully filterable and sortable, with column show/hide controls and CSV / Excel export.

  • Job Type — Full Sync, License Sync, or Usage Sync
  • Source — How the job was started — schedule, manual trigger, or schedule "Run Now"
  • Config — The M365 configuration (Azure AD app registration) the job authenticated through
  • Status — Current state: pending, running, completed, or failed
  • Duration — Wall-clock duration once the job leaves the queue
  • Started — Timestamp the job entered execution
  • Completed — Timestamp the job finished; blank while in progress
  • Records — Count of users, licenses, or usage rows processed
  • Error — Last error message for failed jobs
  • Created — Timestamp the job was enqueued
  • Actions — Row-level controls — view the full log, cancel a running job, or filter the table to a single schedule's history

While at least one job is running or pending, the table polls every few seconds so the status updates live without a manual refresh.


Trigger Sync​

The Trigger Sync action runs a sync immediately, outside of any schedule. The dialog asks for:

  • Job Type — Full Sync runs license and usage in one job; License Sync and Usage Sync are the narrower options
  • M365 Configuration — Which active Azure AD app registration to authenticate through (only configurations marked active are listed)
  • Company — Restrict the sync to a single company within the tenant, or leave unset to sync the whole tenant

Once submitted, the job appears in the Jobs table immediately with pending status and progresses through running to completed or failed.

Note: A failed manual sync is the fastest way to surface credential or scope problems in an M365 Configuration. If a sync fails, open the row to view the structured log — the first error usually identifies whether the issue is authentication, permission, or transient Graph throttling.


Schedules Tab​

The Schedules tab manages the recurring rules that drive routine syncs. Each schedule binds a job type to a frequency for the current tenant.

Schedule fields​

  • Name — Human-readable label for the schedule
  • Job Type — Full Sync, License Sync, or Usage Sync
  • Schedule Type — Once, Daily, Weekly, or Monthly
  • Schedule Time — Time of day the schedule should fire
  • Timezone — IANA timezone (defaults to UTC) used to interpret the schedule time. The full system timezone list is available
  • Schedule Day — Day of week (weekly) or day of month (monthly), where applicable
  • Scheduled At — Specific date and time, for the Once schedule type
  • Active — Toggle to pause a schedule without deleting it

Per-schedule actions​

  • Edit — Open the schedule in the same dialog used for creation, with fields pre-filled
  • Run Now — Trigger the schedule's job immediately, in addition to its normal cadence
  • Delete — Remove the schedule permanently
  • View History — Filter the Jobs tab to show only the jobs produced by this schedule

Note: Disabling a schedule via the Active toggle stops future firings immediately, but does not cancel jobs that are already queued or running. Cancel in-flight jobs from the Jobs tab if needed.


Live Job Log​

Clicking the row action on a job (or selecting View History on a schedule) opens the log viewer, which streams structured log entries from the job. For running and pending jobs the log auto-refreshes; for completed and failed jobs the log is rendered statically with the final outcome.

The log includes the underlying Microsoft Graph errors when authentication, permission, or throttling issues occur — copy these into a support ticket when the cause is not obvious.


Interpreting Status​

StatusMeaningTypical action
pendingJob is enqueued and waiting for a workerNone — usually transient
runningJob is actively pulling data from Microsoft GraphNone — wait for completion
completedJob finished successfully and updated the databaseNone — data is current
failedJob aborted with an errorOpen the row, read the log, and re-trigger after addressing the root cause

Permissions​

  • sync.view — Required to see this page and inspect job history
  • sync.manage — Required to trigger syncs, create or edit schedules, and cancel running jobs

Best Practices​

  • Schedule a daily Full Sync — Run Full Sync once a day in off-hours so dashboards and recommendations reflect the previous day's data
  • Trigger a manual sync after credential changes — Whenever an M365 Configuration is updated, trigger a manual sync to confirm the new credentials work end-to-end before relying on the next scheduled run
  • Keep schedules in UTC unless required — UTC schedules are immune to daylight saving transitions; only choose a local timezone when business hours genuinely matter
  • Use Run Now for ad-hoc refreshes — When you need a specific schedule's job to run immediately without altering its cadence, use the schedule's Run Now action rather than creating a duplicate manual sync
  • Address recurring failures promptly — A failed scheduled job will retry on its next cadence, but the underlying cause — expired secret, revoked permission, removed company — almost always needs human intervention

  • M365 Configuration — Manage the Azure AD credentials that sync jobs authenticate with
  • Audit Log — Cross-reference which user triggered which manual sync
  • Administration — Platform-level administration overview