Skip to main content

Projects

A Project groups all migration jobs for a single client engagement. It defines the destination storage, access credentials, bandwidth policy, and tracks cumulative costs and progress across all jobs within it.

Project Types

TypeUse Case
File MigrationMove files from local drives, OneDrive, SharePoint, Google Drive, or Dropbox to Azure Blob or M365
Mailbox MigrationMigrate Exchange/M365 mailboxes between Microsoft tenants
ArchiveOffload files to Azure Blob Cool, Cold, or Archive tier to free on-prem storage
Full MigrationCombined file and mailbox migration for a complete tenant move
RockRMS ImportMigrate organizational data from RockRMS SQL Server to The One Mission

Project Statuses

StatusMeaning
PlanningProject created, no jobs started yet
In ProgressAt least one job is running or ready
CompletedAll jobs finished successfully
CancelledProject was stopped before completion
Auth RequiredAzure credentials have expired and need re-authentication

Creating a Project

  1. Click ProjectsNew Project.
  2. Select the Client this project belongs to.
  3. Choose a Project Type.
  4. Enter a descriptive Name — include client name and scope (e.g., "Acme Corp — File Archive Q1 2026").
  5. Optionally enter a Description, PSA Ticket ID, and PSA Project ID for cross-product tracking.
  6. Configure Azure Storage (required for file, mailbox, archive, and full migration types).
  7. Set a Default Destination for jobs under this project.
  8. Optionally configure Bandwidth Scheduling.
  9. Click Create Project.

Azure Storage Connection

The project needs write access to an Azure Storage container to store migrated data.

Connecting Azure Storage

  1. On the project create/edit page, click Connect Azure Storage.
  2. Sign in with a Microsoft account that has Storage Blob Data Contributor role on the target storage account. This initiates an OAuth authorization flow.
  3. Select:
    • Storage Account — the Azure storage account name
    • Container — the blob container to write to
    • Storage TierHot, Cool, Cold, or Archive
    • Blob Prefix (optional) — a path prefix for all blobs in this project (e.g., acme-corp/migration-2026/)
  4. Click Save Connection.

The OAuth refresh token is stored encrypted (AES-256-GCM) in Key Vault. Agents never see it. Instead, they request a short-lived SAS token per job from the Migrate API.

Token Expiry and Re-authentication

Microsoft OAuth refresh tokens expire after ~90 days of inactivity. When a token expires:

  • The project status changes to auth_required.
  • Running jobs fail with error: Azure credentials expired — re-authenticate via dashboard.
  • To fix: click Reconnect Azure Storage on the project page and sign in again.

A background timer checks for expiring tokens hourly and sends email notifications before expiry.

Bandwidth Scheduling

Bandwidth scheduling lets you limit transfer speed during business hours to avoid impacting client network performance.

FieldDescription
Full Speed StartTime when unlimited speed begins (e.g., 18:00 for 6 PM)
Full Speed EndTime when throttle resumes (e.g., 06:00 for 6 AM)
Throttled Speed (Mbps)Maximum upload speed outside the full-speed window

The schedule is delivered to the agent as part of the job configuration. The agent enforces it locally.

Individual jobs can override the project schedule with their own bandwidth_limit_mbps setting.

Project Stats

The project detail page shows rolled-up stats across all jobs:

  • Total Jobs — number of jobs created
  • Total Bytes / Completed Bytes — aggregate data volume and progress
  • Total Mailboxes / Completed Mailboxes — for mailbox migration projects
  • Estimated Cost — calculated at $12/mailbox + $0.40/GB transferred

Editing a Project

You can update a project's name, description, PSA IDs, bandwidth schedule, and Azure connection at any time. Changing the Azure connection mid-project takes effect on the next job; running jobs continue with their existing credentials until the current SAS token expires.

Deleting a Project

Projects cannot be deleted if they have active jobs. Stop or cancel all jobs first. Deleting a project removes the project record and its Azure credential; it does not delete any data in Azure Storage.