IP Library › Granted Patent US 11,520,735
Granted Patent B2
US 11,520,735 · App. 17/002,021 · Granted Dec 6, 2022

Data migration to a cloud computing system

Inventors: Joe Keng Yap (Sammamish, WA); Mahadevan Thangaraju (Sammamish, WA); Sean L. Livingston (Bothell, WA); Roberta Cannerozzi (Bellevue, WA); Ghania Moussa (Issaquah, WA); Ron Shimon Estrin (Bellevue, WA); Yu-Ting Lin (Redmond, WA); Simon Bourdages (Redmond, WA); Trung Duc Nguyen (Bellevue, WA); Wenyu Cai (Redmond, WA); Zachary Adam Koehne (Redmond, WA); Patrick J. Simek (Redmond, WA); Sukhvinder Singh Gulati (Redmond, WA); Ben Canning (Redmond, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F16/119G06F9/4856G06F16/2358
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,520,735
App. No.
17/002,021
Granted
Dec 6, 2022
Kind
B2
Abstract

A cloud-based migration system exposes a source-independent application programming interface for receiving data to be migrated. The data is uploaded and stored as a single entity in a cloud-based storage system. A migration system then accesses the migration package and begins migrating the data to its destination, from the cloud-based storage system.

Claims (76)

1. A method performed by a computing system, the method comprising:

receiving a migration request including a manifest that identifies information, stored in a source data store of a source system, to be migrated to a destination system that is remote from the source system;

based on the manifest, identifying a plurality of content objects, from the source data store of the source system, to be migrated to the destination system;

generating a migration log that is associated with the manifest, wherein the migration log:

tracks a completion status of a migration, from the source system to the destination system, of each content object of the plurality of content objects; and

stores a last-tracked content object identifier that identifies a last content object imported to the destination system;

migrating the plurality of content objects to the destination system by storing each content object of the plurality of content objects to a destination data store in the destination system; and

updating the last-tracked content object identifier in the migration log based on the migration to the destination system.

2. The method of claim 1 , and further comprising:

exposing a source-independent application programming interface (API) that is invoked by the migration request; and

receiving the manifest through the source-independent API.

3. The method of claim 1 , and further comprising:

queueing a work item corresponding to the migration request in a work item queue; and

storing the migration log in the manifest.

4. The method of claim 1 , and further comprising:

generating a differential manifest that represents changes, to the information stored in the source data store of the source system, that have occurred since receipt of the migration request including the manifest; and

performing an incremental migration of content objects from the source system to the destination system based on the differential manifest.

5. The method of claim 1 , and further comprising:

receiving the plurality of content objects to be migrated from the source system to the destination system;

storing the plurality of content objects to an intermediate storage system; and

importing the plurality of content objects from the intermediate storage system to the destination data store.

6. The method of claim 5 , wherein the destination system comprises a cloud-based destination system and wherein the intermediate storage system comprises a cloud-based, binary large object (blob) store that stores the plurality of content objects as a binary large object.

7. The method of claim 1 , and further comprising:

tracking, using the migration log, content objects that are imported to the destination system; and

in response to detecting a migration failure, resuming migration from the last-tracked content object by identifying content objects to be migrated from a beginning of the sequential order and ignoring all content objects identified in the sequential order prior to the last content object identified by the last-tracked content object identifier.

8. The method of claim 7 , wherein

ignoring all content objects identified in the sequential order prior to the last content object identified by the last-tracked content object identifier comprises:

setting an overwrite/ignore controller to an ignore state;

and further comprising:

upon reaching the last content object, changing the overwrite/ignore controller to an overwrite state.

9. The method of claim 1 , and further comprising:

identifying the plurality of content objects, to be migrated, in a sequential order based on object identifiers, that identify the plurality of content objects, in the manifest.

10. The method of claim 9 , and further comprising:

intermittently storing the last-tracked content object identifier, indicating the last content object imported to the destination system.

11. The method of claim 9 , wherein the last-tracked content object identifier includes the object identifier, from the manifest, of the last content object imported to the destination system.

12. A computing system, comprising:

at least one processor; and

memory storing instructions executable by the at least one processor, wherein the instructions, when executed, configure the computing system to provide:

a migration queue system configured to:

receive a migration request including a manifest that identifies information, stored in a source data store of a source system, to be migrated to a destination system that is remote from the source system;

a manifest accessing component configured to:

access the manifest to identify a set of content objects, from the source data store of the source system, to be migrated to the destination system; and

an import component configured to:

import the set of content objects to the destination system by storing each content object of the set of content objects to a destination data store in the destination system; and

generate a migration log that is associated with the manifest and stores:

status information indicative of a completion status of a migration of each content object of the set of content objects, and

error information identifying errors that occurred during the migration.

13. The computing system of claim 12 , and further comprising:

a number of virtual machines, controlled by the import component, to import the set of content objects;

wherein the instructions, when executed, configure the computing system to provide:

a bot thread controller configured to scale the number of virtual machines based on a number of work items in a work item queue.

14. The computing system of claim 12 , wherein

the migration queue system is configured to receive a migration package, that includes the manifest, in association with the migration request, the manifest identifying the information to be migrated from the source system to the destination system, and

the migration log identifies a completion status of the migration of each content object of the set of content objects.

15. The computing system of claim 12 , wherein the instructions configure the computing system to provide:

an intermediate storage system configured to receive, as part of the migration request from the source system, the set of content objects to be migrated from the source system to the destination system;

wherein the import component is configured to import the data from the intermediate storage to the destination data store.

16. The computing system of claim 12 , wherein the instructions configure the computing system to provide:

a resumability system configured to track content objects that are imported to the destination system and, when a migration failure is detected, resume migration from a last-tracked content object.

17. A computing system comprising:

at least one processor, and

memory storing instructions executable by the at least one processor, wherein the instructions, when executed, cause the computing system to:

receive a migration request including a manifest that identifies information, stored in a source data store of a source system, to be migrated to a destination system that is remote from the source system;

based on the manifest, identify a plurality of content objects, from the source data store of the source system, to be migrated to the destination system;

generate a migration log that is associated with the manifest, wherein the migration log:

tracks a completion status of a migration, from the source system to the destination system, of each content object of the plurality of content objects, and

stores a last-tracked content object identifier that identifies a last content object imported to the destination system;

migrate the plurality of content objects to the destination system by storing each content object of the plurality of content objects to a destination data store in the destination system; and

update the last-tracked content object identifier in the migration log based on the migration to the destination system.

18. The computing system of claim 17 , wherein the instructions cause the computing system to:

receive the plurality of content objects to be migrated from the source system to the destination system;

store the plurality of content objects to an intermediate storage system; and

import the plurality of content objects from the intermediate storage system to the destination data store.

19. The computing system of claim 18 , wherein the destination system comprises a cloud-based destination system and wherein the intermediate storage system comprises a cloud-based, binary large object (blob) store that stores the plurality of content objects as a binary large object.

20. The computing system of claim 17 , wherein the instructions cause the computing system to:

track, using the migration log, content objects that are imported to the destination system and, in response to detecting a migration failure, resume migration from the last-tracked content object identifier.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 25, 2020
From: YAP, JOE KENG; THANGARAJU, MAHADEVAN; LIVINGSTON, SEAN L.; CANNEROZZI, ROBERTA; MOUSSA, GHANIA; ESTRIN, RON SHIMON; LIN, YU-TING; BOURDAGES, SIMON; NGUYEN, TRUNG DUC; CAI, WENYU; KOEHNE, ZACHARY ADAM; SIMEK, PATRICK J.; GULATI, SUKHVINDER SINGH; CANNING, BEN
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 053597/0440 →
Continuity (4)
Continuation 16241262 · Jan 7, 2019
Continuation 14854798 · Sep 15, 2015
Provisional Application 62155735 · May 1, 2015
Related Publication 20200387476A1 · Dec 10, 2020