IP Library › Granted Patent US 10,379,818
Granted Patent B2
US 10,379,818 · App. 15/975,832 · Granted Aug 13, 2019

Multi-tenant, tenant-specific applications

Inventors: Morten Jensen (Copenhagen, DK); Thomas Hejlsberg (Horsholm, DK); Michael Steven Hammond (Moorhead, MN); Christopher Michael Rudolph (Rapid City, SD); Kevin Martin Racer (Osage, MN)
Assignee: Microsoft Technology Licensing, LLC
G06F8/20G06F8/70G06F9/44505G06F8/60
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 10,379,818
App. No.
15/975,832
Granted
Aug 13, 2019
Kind
B2
Abstract

Customizations, made at various levels in the customization channel, are saved as separate sets of customization deltas that are applied to a base computing system in order to generate a given solution. In a multi-tenant environment, groups of tenants access different solutions or customization deltas. The tenants are automatically grouped, based upon the solution or customization deltas that they access, and the deltas for those customizations are applied to the base system at runtime, for each group.

Claims (84)

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

identifying a computing solution that corresponds to a tenant associated with the computing system;

obtaining a hierarchical set of a plurality of customization deltas corresponding to the computing solution, each customization delta comprising delta metadata that:

is separate from base system metadata that defines a base computing system, and

represents a different customization to the base system metadata to generate computing functionality of the computing solution;

generating a runtime environment configured to provide the tenant with runtime access to the base computing system;

receiving, through the base computing system in the generated runtime environment, a first request input from the tenant and is indicative of a request for first computing functionality in the runtime environment;

in response to the first request input,

identifying a first one of the customization deltas that corresponds to the first computing functionality; and

modifying the base computing system in the runtime environment by applying the first customization delta to the base computing system;

receiving, through the modified base computing system in the generated runtime environment, a second request input from the tenant and is indicative of a request for second computing functionality in the runtime environment; and

in response to the second request input,

identifying a second one of the customization deltas that corresponds to the second computing functionality; and

applying the second customization delta to the modified base computing system in the runtime environment.

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

identifying a customization hierarchy that is associated with the plurality of customization deltas and defines hierarchical relationships between customization deltas in the plurality of customization deltas; and

applying the common set of customization deltas to the base computing system in the runtime environment based on a determined order to generate the computing solution.

3. The method of claim 2 , wherein the runtime environment comprises a set of resources configured to run the computing solution, and further comprising:

caching the computing solution: and

providing access to the cached computing solution to one or more other tenants.

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

detecting inputs associated with a plurality of different tenants, the inputs being indicative of requests by the plurality of different tenants to access the computing solution; and

providing each tenant, of the plurality of different tenants, with runtime access to a same set of resources configured to run the computing solution in the runtime environment.

5. The method of claim 4 , wherein the plurality of different tenants comprises a first plurality of tenants, and runtime environment comprises a first runtime environment, and further comprising:

identifying the first plurality of different tenants as a first tenant group; and

providing the first tenant group access to the first runtime environment.

6. The method of claim 5 , wherein the computing solution comprises a first computing solution, and further comprising:

detecting inputs associated with a second plurality of different tenants;

determining that the detected inputs correspond to a second. computing solution that is different than the first computing solution and has a second common set of customization deltas; and

based on the determination, grouping the second plurality of different tenants into a second tenant group; and

generating a second runtime environment configured to provide each tenant in the second tenant group with runtime access to the second computing solution.

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

determining that the first plurality of different tenants comprise the first tenant group based on a determination that each of the tenants access a common set of customization deltas.

8. The method of claim 7 , mid further comprising:

associating each customization delta with a corresponding hierarchy level; and

determining that each customization delta in the common set of customization deltas is assigned to a same hierarchy level in the customization hierarchy.

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

detecting an indication of a customization input in a development environment;

generating a customization relative to the base computing system, based on the indication of the customization input;

detecting a difference between the base computing system before the customization is applied and after the customization is applied; and

generating a customization delta representing the detected difference.

10. A computing system comprising:

a processor; and

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

identify a computing solution that corresponds to a tenant associated with the computing system;

obtain a hierarchical set of a plurality of customization deltas corresponding to the computing solution, each customization delta comprising delta metadata that:

is separate from base system metadata that defines a base computing system, and

represents a different customization to the base system metadata to generate computing functionality of the computing solution;

generate a runtime environment configured to provide the tenant with runtime access to the base computing system;

receive, through the base computing system in the generated runtime environment, a first request input from the tenant and is indicative of a request for first computing functionality in the runtime environment; and

in response to the first request input,

identify a first one of the customization deltas that corresponds to the first computing functionality; and

modify the base computing system in the runtime environment by applying the first customization delta to the base computing system in the runtime environment;

receive, through the modified base computing system in the generated runtime environment, a second request input from the tenant and is indicative of a request for second computing functionality in the runtime environment; and

in response to the second request input,

identify a second one of the customization deltas that corresponds to the second computing functionality; and

apply the second customization delta to the modified base computing system in the runtime environment.

11. The computing system of claim 10 , wherein the instructions configure the computing system to:

identify a customization hierarchy that is associated with the plurality of customization deltas and defines hierarchical relationships between customization deltas in the plurality of customization deltas; and

apply the common set of customization deltas to the base computing system in the runtime environment based on a determined order to generate the computing solution.

12. The computing system of claim 11 , wherein the runtime environment comprises a set of resources configured to run the computing solution, wherein tie instructions configure the computing system to:

cache the computing solution; and

provide access to the cached computing solution to one or more other tenants.

13. The computing system of claim 11 , wherein the instructions configure the computing system to:

detect inputs associated with a plurality of different tenants, the inputs being, indicative of requests by the plurality of different tenants to access the computing solution; and

provide each tenant, of the plurality of different tenants, with runtime access to a same set of resources configured to run the computing solution in the runtime environment.

14. The computing system of claim 13 , wherein the plurality of different tenants comprises a first plurality of tenants, and runtime environment comprises a first runtime environment, wherein the instructions configure the computing system to:

identify the first plurality of different tenants as a first tenant group; and

provide the first tenant group access to the first runtime environment.

15. The computing system of claim 14 , wherein the computing solution comprises a first computing solution, wherein the instructions configure the computing system to:

detect inputs associated with a second plurality of different tenants;

determine that the detected inputs correspond to a second computing solution that is different than the first computing solution and has a second common set of customization deltas; and

based on the determination, group the second plurality of different tenants into a second tenant group; and

generate a second runtime environment configured to provide each tenant in the second tenant group with runtime access to the second computing solution.

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

determine that the first plurality of different tenants comprise the first tenant group based on a determination that each of the tenants access a common set of customization deltas.

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

associate each customization delta with a corresponding hierarchy level; and

determine that each customization delta in the common set of customization deltas is assigned to a same hierarchy level in the customization hierarchy.

18. The computing system of claim 10 , wherein the instructions configure the computing system to:

detect an indication of a customization input in a development environment;

generate a customization relative to the base computing system, based on the indication of the customization input;

detect a difference between the base computing system before the customization is applied and after the customization is applied; and

generate a customization delta representing the detected difference.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 10, 2018
From: JENSEN, MORTEN; HEJLSBERG, THOMAS; HAMMOND, MICHAEL STEVEN; RUDOLPH, CHRISTOPHER MICHAEL; RACER, KEVIN MARTIN
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 045763/0559 →
Continuity (2)
Continuation 14747527 · Jun 23, 2015
Related Publication 20180336016A1 · Nov 22, 2018
Cited By (1)
US 12,719,869