IP Library Granted Patent US 12,470,636
Granted Patent B1
US 12,470,636 · App. 18/972,815 · Granted Nov 11, 2025

Efficient software release management and deployment

Inventors: Ira Fhima (New York, NY); Poornima Vasudevan (Bengaluru, IN); Susmitha Kunisetty (Bengaluru, IN); Anish Singh (Bengaluru, IN); Baisakhi Mitra (Bengaluru, IN); Lovely Kumari (Bengaluru, IN); Konika Preethi Tupili (Bengaluru, IN); Himanshu Kumar (Bengaluru, IN)
Assignee: Morgan Stanley Services Group Inc.
H04L67/34H04L67/55H04L67/566
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 12,470,636
App. No.
18/972,815
Granted
Nov 11, 2025
Kind
B1
Abstract

A method performed by one or more computers for managing software distribution, comprising assigning computing devices into batches based on a plurality of criteria, including a software environment and a virtual machine cluster; obtaining a deployment schedule that associates each software release with a deployment date for each batch; generating a release scope list that indicates, for each computing device, an associated user account and a local deployment time from the deployment schedule; resolving conflicts in the deployment schedule to generate an updated deployment schedule based on the release scope list; deploying one or more software releases to the computing devices; transmitting a script to one or more of the computing devices, instructing determining a current status of any user account logged into the computing device and a message display type based on the current status, the message enabling installation of a software release of the one or more software releases.

Claims (106)

1 . A method of managing software distribution, comprising:

assigning a plurality of computing devices into a plurality of batches based on a plurality of criteria, including a software environment and a virtual machine cluster;

receiving one or more software releases;

managing a plurality of user accounts, each identifying a respective computing device;

for each computing device in each batch of the plurality of batches, associating a respective user account with the computing device, based on the identified respective computing device of the respective user account;

producing a list of list records, each list record uniquely identifying:

a particular batch of the plurality of batches,

a particular computing device associated with the particular batch, and

a particular user account associated with the particular computing device;

obtaining a deployment schedule that associates each software release of the one or more software releases with a deployment date for each batch of the plurality of batches;

generating a release scope list that indicates, for each computing device of the plurality of computing devices, an associated user account and a local deployment time from the deployment schedule;

resolving conflicts in the deployment schedule to generate an updated deployment schedule based on the release scope list;

deploying one or more software releases to the plurality of computing devices based on the updated deployment schedule;

retrieving a computing device identifier for each record in the list of list records into a first sub-list;

retrieving a particular user account identifier and a particular computing device identifier for each user account in the list of list records where the particular user account identifier is available into a second sub-list;

removing each computing device identifier from the first sub-list which is present in the second sub-list;

transmitting a script to a computing device in the first sub-list,

the script instructing determining a current status of any user account logged into any computing device and a message display type based on the current status, including:

determining whether a first user account associated with the first user account identifier is logged into a first computing device associated with the first computing device identifier, and

when the first user account is logged in to the first computing device, causing a display of a message as a pop-up,

the message enabling installation of a software release of the one or more software releases,

wherein the method is performed by one or more computers.

2 . The method of claim 1 , further comprising:

receiving an exception list;

removing each list record of the list of list records where a value in the list record includes a match to an exception in the exception list.

3 . The method of claim 1 , further comprising:

receiving information regarding a specific computing device;

assigning the specific computing device to a catch-all batch of the plurality of batches;

re-assigning the specific computing device to a specific batch of the plurality of batches based on the plurality of criteria.

4 . The method of claim 1 , wherein resolving conflicts in the deployment schedule to generate the updated deployment schedule based on the release scope list further comprises:

receiving a first record including a first batch with a first deployment date;

receiving a second record including a second batch with a second deployment date;

transmitting the first record and the second record to an interface;

receiving a third record including the first batch with a third deployment date;

overwriting the first record with the third record.

5 . The method of claim 1 , the plurality of criteria further including a business division, geographic region, or membership of an exclusion list or an early adopter list of a computing device.

6 . The method of claim 1 , the script further instructing causing an email or end user communication to display when the first user account is logged into the first computing device and is associated with the first computing device according to the release scope list.

7 . A system of managing software distribution, comprising:

a memory;

one or more processors coupled to the memory and configured to perform:

assigning a plurality of computing devices into a plurality of batches based on a plurality of criteria, including a software environment and a virtual machine cluster;

receiving one or more software releases;

managing a plurality of user accounts, each identifying a respective computing device;

for each computing device in each batch of the plurality of batches, associating a respective user account with the computing device, based on the identified respective computing device of the respective user account;

producing a list of list records, each list record uniquely identifying:

a particular batch of the plurality of batches,

a particular computing device associated with the particular batch, and

a particular user account associated with the particular computing device;

obtaining a deployment schedule that associates each software release of the one or more software releases with a deployment date for each batch of the plurality of batches;

generating a release scope list that indicates, for each computing device of the plurality of computing devices, an associated user account and a local deployment time from the deployment schedule;

resolving conflicts in the deployment schedule to generate an updated deployment schedule based on the release scope list;

deploying one or more software releases to the plurality of computing devices based on the updated deployment schedule;

retrieving a computing device identifier for each record in the list of list records into a first sub-list;

retrieving a particular user account identifier and a particular computing device identifier for each user account in the list of list records where the particular user account identifier is available into a second sub-list;

removing each computing device identifier from the first sub-list which is present in the second sub-list;

transmitting a script to a computing device in the first sub-list,

the script instructing determining a current status of any user account logged into any computing device and a message display type based on the current status, including:

determining whether a first user account associated with the first user account identifier is logged into a first computing device associated with the first computing device identifier, and

when the first user account is logged in to the first computing device, causing a display of a message as a pop-up,

the message enabling installation of a software release of the one or more software releases.

8 . The system of claim 7 , the one or more processors configured to further perform:

receiving an exception list;

removing each list record of the list of list records where a value in the list record includes a match to an exception in the exception list.

9 . The system of claim 7 , the one or more processors configured to further perform:

receiving information regarding a specific computing device;

assigning the specific computing device to a catch-all batch of the plurality of batches;

re-assigning the specific computing device to a specific batch of the plurality of batches based on the plurality of criteria.

10 . The system of claim 7 , wherein resolving conflicts in the deployment schedule to generate the updated deployment schedule based on the release scope list further comprises:

receiving a first record including a first batch with a first deployment date;

receiving a second record including a second batch with a second deployment date;

transmitting the first record and the second record to an interface;

receiving a third record including the first batch with a third deployment date;

overwriting the first record with the third record.

11 . One or more computer-readable, non-transitory storage media storing instructions which when executed cause one or more processors to perform:

assigning a plurality of computing devices into a plurality of batches based on a plurality of criteria, including a software environment and a virtual machine cluster;

receiving one or more software releases;

managing a plurality of user accounts, each identifying a respective computing device;

for each computing device in each batch of the plurality of batches, associating a respective user account with the computing device, based on the identified respective computing device of the respective user account;

producing a list of list records, each list record uniquely identifying:

a particular batch of the plurality of batches,

a particular computing device associated with the particular batch, and

a particular user account associated with the particular computing device;

obtaining a deployment schedule that associates each software release of the one or more software releases with a deployment date for each batch of the plurality of batches;

generating a release scope list that indicates, for each computing device of the plurality of computing devices, an associated user account and a local deployment time from the deployment schedule;

resolving conflicts in the deployment schedule to generate an updated deployment schedule based on the release scope list;

deploying one or more software releases to the plurality of computing devices based on the updated deployment schedule;

retrieving a computing device identifier for each record in the list of list records into a first sub-list;

retrieving a particular user account identifier and a particular computing device identifier for each user account in the list of list records where the particular user account identifier is available into a second sub-list;

removing each computing device identifier from the first sub-list which is present in the second sub-list;

transmitting a script to a computing device in the first sub-list,

the script instructing determining a current status of any user account logged into any computing device and a message display type based on the current status, including:

determining whether a first user account associated with the first user account identifier is logged into a first computing device associated with the first computing device identifier, and

when the first user account is logged in to the first computing device, causing a display of a message as a pop-up,

the message enabling installation of a software release of the one or more software releases.

12 . The one or more computer-readable, non-transitory storage media of claim 11 , the instructions when executed cause the one or more processors to further perform:

receiving information regarding a specific computing device;

assigning the specific computing device to a catch-all batch of the plurality of batches;

re-assigning the specific computing device to a specific batch of the plurality of batches based on the plurality of criteria.

13 . The one or more computer-readable, non-transitory storage media of claim 11 , wherein resolving conflicts in the deployment schedule to generate the updated deployment schedule based on the release scope list further comprises:

receiving a first record including a first batch with a first deployment date;

receiving a second record including a second batch with a second deployment date;

transmitting the first record and the second record to an interface;

receiving a third record including the first batch with a third deployment date;

overwriting the first record with the third record.

14 . The one or more computer-readable, non-transitory storage media of claim 11 , the plurality of criteria further including a business division, geographic region, or membership of an exclusion list or an early adopter list of a computing device.

15 . The one or more computer-readable, non-transitory storage media of claim 11 , the script further instructing causing an email or end user communication to display when the first user account is logged into the first computing device and is associated with the first computing device according to the release scope list.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2024
From: FHIMA, IRA; VASUDEVAN, POORNIMA; KUNISETTY, SUSMITHA; SINGH, ANISH; MITRA, BAISAKHI; KUMARI, LOVELY; TUPILI, KONIKA PREETHI; KUMAR, HIMANSHU
To: MORGAN STANLEY SERVICES GROUP INC.
Reel/Frame 069527/0124 →
References Cited (16)
US 8677315B1 · Anderson · 2014 [cited by examiner]
US 10585656B1 · Das et al. · 2020 [cited by applicant]
US 11157253B1 · Shteyman et al. · 2021 [cited by applicant]
US 20030079132A1 · Bryant · 2003 [cited by examiner]
US 20060168575A1 · Bhatt et al. · 2006 [cited by applicant]
US 20060168581A1 · Goger et al. · 2006 [cited by applicant]
US 20080040455A1 · Macleod et al. · 2008 [cited by applicant]
US 20080098386A1 · Leung et al. · 2008 [cited by applicant]
US 20090144730A1 · Chen et al. · 2009 [cited by applicant]
US 20090320019A1 · Ellington et al. · 2009 [cited by applicant]
US 20110126192A1 · Frost · 2011 [cited by examiner]
US 20120159468A1 · Joshi et al. · 2012 [cited by applicant]
US 20140331225A1 · Helander · 2014 [cited by examiner]
US 20160239280A1 · Scheiner et al. · 2016 [cited by applicant]
US 20180060066A1 · Rihani et al. · 2018 [cited by applicant]
US 20230153093A1 · Rajagopalan et al. · 2023 [cited by applicant]