# US 11,907,708 B2 · Application and infrastructure template management to easily create secure applications for enterprises

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

- Number: US 11,907,708 B2
- Document ID: US11907708B2
- Status: Granted
- Kind: B2
- Application number: 17/833,778
- Filed: 2022-06-06
- Published: 2023-04-20
- Granted: 2024-02-20
- Earliest claimed: 2021-10-15
- Assignees: Salesforce, Inc.
- Applicants: Salesforce, Inc.
- Inventors: Mayank Kumar
- Web page: https://patentgrep.com/patent/US11907708B2

## CPC

- G06F 8/71: Version control (security arrangements therefor G06F21/57); Configuration management
- G06F 8/65: Updates (security arrangements therefor G06F21/57)
- G06F 9/54: Interprogram communication
- G06F 11/3684: {for test design, e.g. generating new test cases}
- G06F 11/3688: {for test execution, e.g. scheduling of test suites}
- G06F 11/3692: {for test results analysis}
- G06F 21/577: {Assessing vulnerabilities and evaluating computer system security}
- G06F 21/6218: {to a system of files or objects, e.g. local or distributed file system or database}
- G06F 11/302: {where the computing system component is a software system}
- G06F 2201/865: Monitoring of software
- G06F 2221/033: Test or assess software
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

An extensible platform-as-a-service (PaaS) system is used during the software development lifecycle (SDLC) processes of an application. The system, according to various embodiments, receives indications that changes are made to one or more templates or software bundles stored in a software library and coordinates how changes to a particular template will be applied to applications for an enterprise system. Specifically, the system may identify applications that are using the template and determine an ordering for a plurality of application groups that indicates a sequence in which the updates will be applied to the applications. In this manner, template updates can be automatically and systematically deployed to applications without significant involvement by users of the PaaS system.

## Claims

### Claim 1

A computer-implemented method for deploying an update to a template, the method comprising:
storing by an extensible platform-as-a-service (PaaS) system, a plurality of software bundles, wherein a software bundle includes a collection of templates for configuring a plurality of software modules;
receiving an indication that an update is made to a template by making one or more changes to configurations specified in the template for a respective software module for the template;
determining, by the extensible PaaS system, one or more applications deployed in a production environment that use the template;
assigning the one or more applications to a respective application group to determine a plurality of application groups;
determining an ordering of the plurality of application groups for applying the one or more changes of the updated template;
deploying a set of test applications in a development environment using a plurality of test modules configured with the one or more changes of the updated template; and
responsive to validating the one or more changes based on the set of test applications, sequentially applying, to an application group, the one or more changes of the updated template according to the determined ordering of the plurality of application groups.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, wherein the template is associated with a set of attributes including at least one of a name of the template, a type indicating a type of the respective software module for the template, and a provider associated with the template.

### Claim 3 (depends on 1)

The computer-implemented method of claim 1, wherein the one or more applications are managed by a plurality of units of an online system, and a unit manages a respective subset of the one or more applications.

### Claim 4 (depends on 1)

The computer-implemented method of claim 1, wherein the one or more applications are managed by a plurality of units of an online system.

### Claim 5 (depends on 4)

The computer-implemented method of claim 4, wherein a first unit manages a first subset of applications in the one or more applications, and an application in the first subset is a canary application that is configured using a same software bundle as another application in the first subset.

### Claim 6 (depends on 5)

The computer-implemented method of claim 5, wherein the canary application is assigned to a first application group in the ordering such that the one or more changes are applied first to the canary application before being applied to the another application in the first subset.

### Claim 7 (depends on 1)

The computer-implemented method of claim 1, wherein a software module in the plurality of software modules corresponds to at least one of a source code repository, basic program templates, a collection of resources for creating containerized applications, a configured pipeline for continuous integration (CI), or a configured pipeline for continuous delivery (CD).

### Claim 8

A non-transitory computer readable storage medium for storing instructions that when executed by one or more computer processors cause the one or more computer processors to perform steps comprising:
storing by an extensible platform-as-a-service (PaaS) system, a plurality of software bundles, wherein a software bundle includes a collection of templates for configuring a plurality of software modules;
receiving an indication that an update is made to a template by making one or more changes to configurations specified in the template for a respective software module for the template;
determining, by the extensible PaaS system, one or more applications deployed in a production environment that use the template;
assigning the one or more applications to a respective application group to determine a plurality of application groups;
determining an ordering of the plurality of application groups for applying the one or more changes of the updated template;
deploying a set of test applications in a development environment using a plurality of test modules configured with the one or more changes of the updated template; and
responsive to validating the one or more changes based on the set of test applications, sequentially applying, to an application group, the one or more changes of the updated template according to the determined ordering of the plurality of application groups.

### Claim 9 (depends on 8)

The non-transitory computer-readable storage medium of claim 8, wherein the template is associated with a set of attributes including at least one of a name of the template, a type indicating a type of the respective software module for the template, and a provider associated with the template.

### Claim 10 (depends on 8)

The non-transitory computer-readable storage medium of claim 8, wherein the one or more applications are managed by a plurality of units of an online system, and a unit manages a respective subset of the one or more applications.

### Claim 11 (depends on 8)

The non-transitory computer-readable storage medium of claim 8, wherein the one or more applications are managed by a plurality of units of an online system.

### Claim 12 (depends on 11)

The non-transitory computer-readable storage medium of claim 11, wherein a first unit manages a first subset of applications in the one or more applications, and an application in the first subset is a canary application that is configured using a same software bundle as another application in the first subset.

### Claim 13 (depends on 12)

The non-transitory computer-readable storage medium of claim 12, wherein the canary application is assigned to a first application group in the ordering such that the one or more changes are applied first to the canary application before being applied to the another application in the first subset.

### Claim 14 (depends on 8)

The non-transitory computer-readable storage medium of claim 8, wherein a software module in the plurality of software modules corresponds to at least one of a source code repository, basic program templates, a collection of resources for creating containerized applications, a configured pipeline for continuous integration (CI), or a configured pipeline for continuous delivery (CD).

### Claim 15

A computer system, comprising:
one or more computer processors; and
a non-transitory computer-readable storage medium for storing instructions that when executed by the one or more computer processors cause the one or more computer processors to perform steps comprising:
storing by an extensible platform-as-a-service (PaaS) system, a plurality of software bundles, wherein a software bundle includes a collection of templates for configuring a plurality of software modules;
receiving an indication that an update is made to a template by making one or more changes to configurations specified in the template for a respective software module for the template;
determining, by the extensible PaaS system, one or more applications deployed in a production environment that use the template;
assigning the one or more applications to a respective application group to determine a plurality of application groups;
determining an ordering of the plurality of application groups for applying the one or more changes of the updated template;
deploying a set of test applications in a development environment using a plurality of test modules configured with the one or more changes of the updated template; and
responsive to validating the one or more changes based on the set of test applications, sequentially applying, to an application group, the one or more changes of the updated template according to the determined ordering of the plurality of application groups.

### Claim 16 (depends on 15)

The system of claim 15, wherein the template is associated with a set of attributes including at least one of a name of the template, a type indicating a type of the respective software module for the template, and a provider associated with the template.

### Claim 17 (depends on 15)

The system of claim 15, wherein the one or more applications are managed by a plurality of units of an online system, and a unit manages a respective subset of the one or more applications.

### Claim 18 (depends on 15)

The system of claim 15, wherein the one or more applications are managed by a plurality of units of an online system.

### Claim 19 (depends on 18)

The system of claim 18, wherein a first unit manages a first subset of applications in the one or more applications, and an application in the first subset is a canary application that is configured using a same software bundle as another application in the first subset.

### Claim 20 (depends on 19)

The system of claim 19, wherein the canary application is assigned to a first application group in the ordering such that the one or more changes are applied first to the canary application before being applied to the another application in the first subset.
