IP Library Granted Patent US 12,307,244
Granted Patent B2
US 12,307,244 · App. 18/080,714 · Granted May 20, 2025

Development and deployment of custom applications

Inventors: Alejandro Olvera Velasco (Falls Church, VA); Jose Nocedal de la Garza (Leesburg, VA); Timothy Lang (McLean, VA); Holly Stevens (Winchester, VA); Andrew Smith (Oakton, VA); Wei Jiang (Hangzhou, CN); Jin Liu (Hangzhou, CN); Divya Singh (Chantilly, VA); Qingru Shen (Arlington, VA)
Assignee: MicroStrategy Incorporated
G06F8/71G06F8/38G06F8/65G06F21/629
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,307,244
App. No.
18/080,714
Granted
May 20, 2025
Kind
B2
Abstract

Methods, systems, and apparatus, including computer programs encoded on computer-storage media, for development and deployment of custom applications. In some implementations, configuration data that specifies a configuration of application elements is stored. A repository of modules that are used to implement the respective application elements is stored. A request from a client device over a network is received. User interface data for a view of the custom application is generated. The user interface data for the custom application is provided to the client device over the network in response to the request.

Claims (56)

1. A computer-implemented method comprising:

storing, by a server system, configuration data that specifies a configuration of application elements, from among a predetermined set of application elements, to provide in a custom application, wherein the configuration data comprises a set of values that specify a subset of the application elements for inclusion in the custom application;

storing, by the server system, a repository of modules that are used to implement the application elements;

receiving, by the server system, a request from a client device over a network;

in response to receiving the request, generating, by the server system, user interface data for a view of the custom application, wherein the server system (i) identifies the configuration of the application elements for the custom application based on the configuration data for the custom application, and (ii) generates the user interface data using modules from the repository of modules that correspond to the application elements specified in the configuration data for the custom application, and wherein the user interface data is generated such that the user interface data (i) includes the modules from the repository of modules that correspond to the application elements included in the subset of the application elements, and (ii) omits the modules from the repository of modules that correspond to the application elements that are not included in the subset of the application elements; and

providing, by the server system, the user interface data for the view of the custom application to the client device over the network in response to the request.

2. The computer-implemented method of claim 1 , wherein the set of values in the configuration data for the custom application specifies a range of values available for a user of the custom application to select for a corresponding application element.

3. The computer-implemented method of claim 1 , wherein the configuration data for the custom application indicates, for each of the application elements specified in the configuration data for the custom application, whether the application element is included in the custom application.

4. The computer-implemented method of claim 1 , wherein the user interface data for the view of the custom application specifies at least one of (i) a layout, (ii) formatting, or (iii) media used to present the view of the custom application.

5. The computer-implemented method of claim 1 , wherein the server system stores a different set of configuration data for each of multiple custom applications provided by the server system, and wherein the sets of configuration data for the multiple custom applications specify different sets of application elements.

6. The computer-implemented method of claim 1 , wherein the custom application is a first custom application, and wherein the computer-implemented method further comprises:

receiving a request from a client device to access a second custom application;

determining that a user of the client device does not have authorization to access the second custom application; and

in response to determining that the user of the client device does not have authorization to access the second custom application, providing user interface data for controls to select one or more custom applications that the user of the client device has authorization to access.

7. The computer-implemented method of claim 1 , wherein the custom application is a first custom application, and wherein the computer-implemented method further comprises:

receiving a request from a client device to access a second custom application;

determining that a user of the client device does not have authorization to access the second custom application; and

in response to determining that the user of the client device does not have authorization to access the second custom application:

selecting, from among a set of custom applications, a third custom application that is selected based on similarity to the second custom application; and

providing access to the third custom application in response to the request.

8. The computer-implemented method of claim 1 , wherein the custom application is a first custom application, and wherein the computer-implemented method further comprises:

receiving a request from a client device to access a second custom application;

determining whether the second custom application is not available;

in response to determining that the second custom application is not available, determining that a newer version of the second custom application is available; and

providing user interface data for the newer version of the second custom application to the client device.

9. The computer-implemented method of claim 1 , further comprising providing user interface data for a selection page to the client device over the network, wherein the user interface data for the selection page allows a user of the client device to select a custom application from among a list of custom applications.

10. The computer-implemented method of claim 1 , further comprising:

after receiving the request:

retrieving, from the repository of modules, the modules that implement the subset of the application elements that is specified by the configuration data for the custom application; and

combining the retrieved modules to generate the user interface data for a view of the custom application.

11. The computer-implemented method of claim 10 , wherein combining the retrieved modules comprises combining the retrieved modules with an application template to generate the user interface data for the view of the custom application.

12. The computer-implemented method of claim 1 , wherein the custom application is based on a previously-existing interactive document, and wherein the previously-existing interactive document includes a connection to obtain data from one or more data sources or data sets;

wherein the configuration data for the custom application indicates (i) the connection to obtain data from the one or more data sources or data sets, and (ii) application elements that provide a set of interactive functionalities provided by the previously-existing interactive document; and

wherein generating the user interface data for the view of the custom application comprises providing application data for the custom application, wherein the application data for the custom application enables the custom application to obtain data from the one or more data sources or data sets, and wherein the application data for the custom application includes the modules from the repository of modules that provide the set of interactive functionalities of the previously-existing interactive document.

13. A system comprising:

one or more computers of a server system; and

one or more non-transitory computer-readable media storing instructions that are operable, when executed by the one or more computers of the server system, to cause the one or more computers of the server system to perform operations comprising:

storing, by the server system, configuration data that specifies a configuration of application elements, from among a predetermined set of application elements, to provide in a custom application, wherein the configuration data comprises a set of values that specify a subset of the application elements for inclusion in the custom application;

storing, by the server system, a repository of modules that are used to implement the application elements;

receiving, by the server system, a request from a client device over a network;

in response to receiving the request, generating, by the server system, user interface data for a view of the custom application, wherein the server system (i) identifies the configuration of the application elements for the custom application based on the configuration data for the custom application, and (ii) generates the user interface data using modules from the repository of modules that correspond to the application elements specified in the configuration data for the custom application, and wherein the user interface data is generated such that the user interface data (i) includes the modules from the repository of modules that correspond to the application elements included in the subset of the application elements, and (ii) omits the modules from the repository of modules that correspond to the application elements that are not included in the subset of the application elements; and

providing, by the server system, the user interface data for the view of the custom application to the client device over the network in response to the request.

14. The system of claim 13 , wherein the set of values in the configuration data for the custom application specifies a range of values available for a user of the custom application to select for a corresponding application element.

15. The system of claim 13 , wherein the configuration data for the custom application indicates, for each of the application elements specified in the configuration data for the custom application, whether the application element is included in the custom application.

16. The system of claim 13 , wherein the user interface data for the view of the custom application specifies at least one of (i) a layout, (ii) formatting, or (iii) media used to present the view of the custom application.

17. The system of claim 13 , wherein the server system stores a different set of configuration data for each of multiple custom applications provided by the server system, and wherein the sets of configuration data for the multiple custom applications specify different sets of application elements.

18. The system of claim 13 , wherein the custom application is a first custom application, and wherein the operations further comprise:

receiving a request from a client device to access a second custom application;

determining that a user of the client device does not have authorization to access the second custom application; and

in response to determining that the user of the client device does not have authorization to access the second custom application, providing user interface data for controls to select one or more custom applications that the user of the client device has authorization to access.

19. One or more non-transitory computer-readable media storing instructions that are operable, when executed by one or more computers of a server system, to cause the one or more computers of the server system to perform operations comprising:

storing, by the server system, configuration data that specifies a configuration of application elements, from among a predetermined set of application elements, to provide in a custom application, wherein the configuration data comprises a set of values that specify a subset of the application elements for inclusion in the custom application;

storing, by the server system, a repository of modules that are used to implement the application elements;

receiving, by the server system, a request from a client device over a network;

in response to receiving the request, generating, by the server system, user interface data for a view of the custom application, wherein the server system (i) identifies the configuration of the application elements for the custom application based on the configuration data for the custom application, and (ii) generates the user interface data using modules from the repository of modules that correspond to the application elements specified in the configuration data for the custom application, and wherein the user interface data is generated such that the user interface data (i) includes the modules from the repository of modules that correspond to the application elements included in the subset of the application elements, and (ii) omits the modules from the repository of modules that correspond to the application elements that are not included in the subset of the application elements; and

providing, by the server system, the user interface data for the view of the custom application to the client device over the network in response to the request.

Assignments (4)
CHANGE OF NAME Recorded Sep 19, 2025
From: MICROSTRATEGY INCORPORATED
To: STRATEGY INC
Reel/Frame 072974/0529 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 2, 2024
From: VELASCO, ALEJANDRO OLVERA; DE LA GARZA, JOSE NOCEDAL; LANG, TIMOTHY; STEVENS, HOLLY; SMITH, ANDREW; JIANG, WEI; LIU, JIN; SINGH, DIVYA; SHEN, QINGRU
To: MICROSTRATEGY INCORPORATED
Reel/Frame 069453/0406 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT AT REEL/FRAME: 056647/0687, REEL/FRAME: 057435/0023, REEL/FRAME: 059256/0247, REEL/FRAME: 062794/0255 AND REEL/FRAME: 066663/0713 Recorded Sep 26, 2024
From: U.S. BANK TRUST COMPANY, NATIONAL ASSOCIATION, AS SUCCESSOR IN INTEREST TO U.S. BANK NATIONAL ASSOCIATION, IN ITS CAPACITY AS COLLATERAL AGENT FOR THE SECURED PARTIES
To: MICROSTRATEGY INCORPORATED; MICROSTRATEGY SERVICES CORPORATION
Reel/Frame 069065/0539 →
SUPPLEMENTARY PATENT SECURITY AGREEMENT Recorded Feb 17, 2023
From: MICROSTRATEGY INCORPORATED; MICROSTRATEGY SERVICES CORPORATION
To: U.S. BANK TRUST COMPANY, NATIONAL ASSOCIATION, AS SUCCESSOR IN INTEREST TO U.S. BANK NATIONAL ASSOCIATION, IN ITS CAPACITY AS COLLATERAL AGENT FOR THE SECURED PARTIES
Reel/Frame 062794/0255 →
Continuity (1)
Related Publication 20240192952A1 · Jun 13, 2024
References Cited (53)
US 8635287B1 · Shih et al. · 2014 [cited by applicant]
US 8719339B2 · Reisman · 2014 [cited by applicant]
US 8978006B2 · Hirsch et al. · 2015 [cited by applicant]
US 8978106B2 · Swamy et al. · 2015 [cited by applicant]
US 9134964B2 · Hirsch et al. · 2015 [cited by applicant]
US 9305275B2 · McLachlan · 2016 [cited by applicant]
US 9858063B2 · Jain et al. · 2018 [cited by applicant]
US 10133558B2 · Farooqi · 2018 [cited by applicant]
US 10248401B1 · Chen et al. · 2019 [cited by applicant]
US 10733266B2 · Whitehurst · 2020 [cited by applicant]
US 10747944B1 · Kirkpatrick et al. · 2020 [cited by applicant]
US 20050257190A1 · Shaburov · 2005 [cited by examiner]
US 20070168962A1 · Heinke · 2007 [cited by examiner]
US 20070180386A1 · Ballard · 2007 [cited by examiner]
US 20080034314A1 · Louch et al. · 2008 [cited by applicant]
US 20090119678A1 · Shih et al. · 2009 [cited by applicant]
US 20110145782A1 · Brukner et al. · 2011 [cited by applicant]
US 20120047029A1 · Veres et al. · 2012 [cited by applicant]
US 20120260232A1 · Hirsch · 2012 [cited by examiner]
US 20130047138A1 · Radez · 2013 [cited by applicant]
US 20130247005A1 · Hirsch · 2013 [cited by examiner]
US 20130305218A1 · Hirsch · 2013 [cited by examiner]
US 20140026113A1 · Farooqi · 2014 [cited by applicant]
US 20140109046A1 · Hirsch · 2014 [cited by examiner]
US 20140109072A1 · Lang et al. · 2014 [cited by applicant]
US 20140109115A1 · Low et al. · 2014 [cited by applicant]
US 20140201707A1 · Schroeder · 2014 [cited by examiner]
US 20140278536A1 · Zhang et al. · 2014 [cited by applicant]
US 20140358482A1 · Sehgal et al. · 2014 [cited by applicant]
US 20150135160A1 · Gauvin et al. · 2015 [cited by applicant]
US 20170139725A1 · Koufogiannakis et al. · 2017 [cited by applicant]
US 20170337040A1 · Salvi · 2017 [cited by examiner]
US 20180129581A1 · Abadi et al. · 2018 [cited by applicant]
US 20180157468A1 · Stachura · 2018 [cited by applicant]
US 20180176097A1 · Russell · 2018 [cited by examiner]
US 20190065177A1 · Khoongumjorn et al. · 2019 [cited by applicant]
US 20210096826A1 · Duggal et al. · 2021 [cited by applicant]
US 20210211362A1 · Vihervuori · 2021 [cited by applicant]
US 20210256627A1 · Hollis et al. · 2021 [cited by applicant]
US 20210326237A1 · Moser · 2021 [cited by applicant]
US 20220215019A1 · Cohen · 2022 [cited by examiner]
US 20230022493A1 · Madhugiri et al. · 2023 [cited by applicant]
US 20230083894A1 · Duggal et al. · 2023 [cited by applicant]
US 20230176824A1 · Ghosh et al. · 2023 [cited by applicant]
US 20230195424A1 · Shin et al. · 2023 [cited by applicant]
US 20240192926A1 · Velasco et al. · 2024 [cited by applicant]
Blog.MicroStrategy.com [online], “MicroStrategy 2021 Update 4 CTO Newsletter,” Dec. 17, 2021, retrieved on Jan. 11, 2023, retrieved from URL <https://blog.microstrategy.com/microstrategy-2021-update-4-cto-newsletter-cf6… [cited by applicant]
Community.MicroStrategy.com [online], “Create New Applications in Workstation,” Dec. 3, 2019, retrieved on Jan. 11, 2023, retrieved from URL <https://community.microstrategy.com/s/article/Create-new-application-in-Works… [cited by applicant]
MicroStrategy.com [online], “Enterprise Analytics: A technical guide to the architecture of the industry's leading enterprise analytics platform,” 2016, retrieved on Jan. 11, 2013, retrieved from URL <https://www3.micro… [cited by applicant]
MicroStrategy.com [online], “MicroStrategy 2021 Readme,” Version 2021, Jan. 2023, retrieved on Jan. 11, 2023, retrieved from URL <https://www2.microstrategy.com/producthelp/Current/manuals/en/Readme.pdf>, 222 pages. [cited by applicant]
TechTarget.com [online], “App development a focus of MicroStrategy analytics platform,” Feb. 2, 2022, retrieved on Jan. 11, 2023, retrieved from URL <https://www.techtarget.com/searchbusinessanalytics/news/252512831/App… [cited by applicant]
Office Action in U.S. Appl. No. 18/080,708, dated Jun. 13, 2024, 26 pages. [cited by applicant]
Office Action in U.S. Appl. No. 18/080,708, dated Nov. 14, 2024, 24 pages. [cited by applicant]