# US 8,788,510 B2 · System, method, and computer program product for runtime invocation of an appropriate version of program instructions in an on-demand database

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 8,788,510 B2
- Document ID: US8788510B2
- Status: Granted
- Kind: B2
- Application number: 12/192,956
- Filed: 2008-08-15
- Published: 2009-02-19
- Granted: 2014-07-22
- Earliest claimed: 2007-08-17
- Assignees: salesforce.com, inc.
- Applicants: Craig Weissman
- Inventors: Craig Weissman
- Web page: https://patentgrep.com/patent/US8788510B2

## CPC

- G06F 8/71: Version control (security arrangements therefor G06F21/57); Configuration management
- G06F 8/70: Software maintenance or management
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

In accordance with embodiments, there are provided mechanisms and methods for runtime invocation of an appropriate version of program instructions in an on-demand database service. These mechanisms and methods for providing such runtime invocation can enable embodiments to ensure that new versions of developed applications will operate in the same application environment of a previous version. The ability of embodiments to provide such runtime invocation may lead to an improved application migration development/runtime framework, etc.

## Claims

### Claim 1

A method, comprising:
receiving, in an application, program instructions of the application at an on-demand database service, the program instructions including a plurality of different portions,
where each portion of program instructions comprises a different version of the application,
where at least one of the versions is an update to another one of the versions;
determining which of the different versions of the application is to be invoked by applying a test included with the program instructions to version information associated with a subscriber of the on-demand database service; and
invoking one of the portions of the program instructions in the application that comprises the determined version of the application for invoking the determined version of the application.

### Claim 2 (depends on 1)

The method of claim 1, wherein a first portion of the program instructions in the received application is invoked if it is determined that a first version of application is to be invoked, and a second portion of the program instructions in the received application is invoked if it is determined that a second version of the application is to be invoked.

### Claim 3 (depends on 2)

The method of claim 2, wherein the first version of the application and the second version of the application differ with respect to at least one method.

### Claim 4 (depends on 2)

The method of claim 2, wherein the first version of the application and the second version of application differ with respect to at least one class.

### Claim 5 (depends on 2)

The method of claim 2, wherein the first version of the application and the second version of the application differ with respect to at least one variable.

### Claim 6 (depends on 2)

The method of claim 2, wherein the first version of the application is a previous version and the second version of the application is a later version that is the update to the previous version.

### Claim 7 (depends on 6)

The method of claim 6, wherein the first version of the application is marked in accordance with a predetermined format.

### Claim 8 (depends on 1)

The method of claim 1, wherein the on-demand database service includes a multi-tenant on-demand service.

### Claim 9 (depends on 1)

The method of claim 1, wherein the application is pushed to a plurality of subscribers.

### Claim 10 (depends on 9)

The method of claim 9, wherein the application is pushed to a plurality of subscribers asynchronously.

### Claim 11 (depends on 1)

The method of claim 1, wherein it is determined that a first version of the application is to be invoked in response to a determination that a version of the application a subscriber of the on-demand database service is running, from the point of view of the subscriber, is the first version, and wherein it is determined that the second version of the application is to be invoked in response to a determination that the version of the application the subscriber of the on-demand database service is running, from the point of view of the subscriber, is the second version.

### Claim 12 (depends on 1)

The method of claim 1, wherein the application, including the plurality of different portions of program instructions each comprising a different version of the application, is received by one of a plurality of subscribers of an on-demand database service at a storage area of the on-demand database service that is associated with the organization, such that invoking the one of the portions of the program instructions in the application that comprises the determined version of the application is performed at the on-demand database service.

### Claim 13

A non-transitory machine-readable medium carrying one or more sequences of instructions which, when executed by one or more processors, cause the one or more processors to carry out the steps of:
receiving, in an application, program instructions of the application at an on-demand database service, the program instructions including a plurality of different portions,
where each portion of program instructions comprises a different version of the application,
where at least one of the versions is an update to another one of the versions;
determining which of the different versions of the application is to be invoked by applying a test included with the program instructions to version information associated with a subscriber of the on-demand database service; and
invoking one of the portions of the program instructions in the application that comprises the determined version of the application for invoking the determined version of the application.

### Claim 14

An apparatus, comprising:
a computer processor; and
one or more stored sequences of instructions which, when executed by the computer processor, cause the computer processor to carry out the steps of:
receiving, in an application, program instructions of the application at an on-demand database service, the program instructions including a plurality of different portions,
where each portion of program instructions comprises a different version of the application,
where at least one of the versions is an update to another one of the versions;
determining which of the different versions of the application is to be invoked by applying a test included with the program instructions to version information associated with a subscriber of the on-demand database service; and
invoking one of the portions of the program instructions in the application that comprises the determined version of the application for invoking the determined version of the application.

### Claim 15

A method for transmitting code for use in a multi-tenant database system on a transmission medium, the method comprising:
transmitting code for receiving, in an application, program instructions of the application at an on-demand database service, the program instructions including a plurality of different portions,
where each portion of program instructions comprises a different version of the application,
where at least one of the versions is an update to another one of the versions;
transmitting code for determining which of the different versions of the application is to be invoked by applying a test included with the program instructions to version information associated with a subscriber of the on-demand database service; and
transmitting code for invoking one of the portions of the program instructions in the application that comprises the determined version of the application for invoking the determined version of the application.

### Claim 16 (depends on 15)

The method of claim 15, wherein a first portion of the program instructions is invoked if it is determined that a first version of the application is to be invoked, and a second portion of the program instructions is invoked if it is determined that a second version of the application is to be invoked.

### Claim 17 (depends on 16)

The method of claim 16, wherein the first version of the application and the second version of the application are both included with the application.
