Microsoft recommendations for best Office 365 performance:

  • When uploading high volume of file content, the best performance is accomplished outside normal business hours (night time or weekends).
  • Use AppID/Secret as the authentication model, NOT user accounts, when reading or uploading large amounts of data.
  • Use The “O365 Migration API.” Fusion does that by default while also supporting the legacy “CSOM API” useful in many cases not involving large amounts of data.
File Transport – Operation mode: “High Volume” (O365 Migration API)
Fastest method for high volume file upload. Minimal throttling imposed by Microsoft.
  • High Volume (Azure Synchronized)” Fusion is waiting for Azure to move the uploaded content from temporary Blob Storage to the Document Library
  • High Volume (Post to Azure)” Fusion is completing the job, well knowing that the files have been successfully uploaded but are in transit from temporary Blob Storage to the Document Library. Azure will complete the transfer asynchronously.
Metadata values for columns having validation rules are applied without validation by SharePoint
When the job has < 100 files or <10MB, CSOM operation is used to ensure optimal performance.
So in general you can use the default option “High Volume (Azure Synchronized)”, unless you want an error triggered if metadata is not complying with validation rules.
File Transport Operation mode: “Standard (CSOM API)”
Fastest method for few files or low volume upload. On high volume > 2 GB per day Microsoft will throttle the connections and reduce the throughput. In worst cases the tenant can be totally blocked.
Metadata assigned to columns having validation rules will trigger and error condition.

The Fusion implementation of the O365 Migration API

Microsoft have designed the O365 Migration API to use temporary content storage in Azure and Use Azure jobs to do the actual move of the binary content from “Azure Blob Storage Containers” into SPO Document Libraries.
The API recommends/dictate’s many small Azure jobs, each sized 250mb or 250 files per job.

Fusion is creating multiple Azure jobs in parallel there by maximizing the actual content throughput.
When a job is ready it is submitted to Azure for parallel execution while maintaining the simultaneous parallel upload.

Azure can be very slow picking up the jobs depending on time of day and on if you have a dedicated SPO tenant or not.
(In a non-dedicated tenant the job-pick-up latency is close to 3 seconds during weekends and we have seen up to 40 minutes during mid-day working hours.)

However Fusion can run multiple “complete migration jobs” simultaneously, on the same machine instance. So it really doesn’t matter because the file content is in-fact uploaded quite fast, and when done, Fusion is just “sitting there monitoring Azure” waiting for progress statistics to be incrementally available until all the small Azure jobs are completed.

Need more help with this?

Thanks for your feedback.