Source: http://www.google.com/patents/US7155462?dq=6,952,563
Timestamp: 2017-04-26 10:49:06
Document Index: 470841084

Matched Legal Cases: ['art 90', 'art 130', 'art 130', 'arts 130', 'art 130', 'art 130']

Patent US7155462 - Method and apparatus enabling migration of clients to a specific version of ... - Google PatentsSearch Images Maps Play YouTube News Gmail Drive More »Sign inPatentsA method and apparatus enabling migration of clients to a specific version of a server-hosted application, where multiple software versions of the server-hosted application are installed on the network, such that clients using the application experience minimal downtime related to upgrades and revisions...http://www.google.com/patents/US7155462?utm_source=gb-gplus-sharePatent US7155462 - Method and apparatus enabling migration of clients to a specific version of a server-hosted application, where multiple software versions of the server-hosted application are installed on a networkAdvanced Patent SearchTry the new Google Patents, with machine-classified Google Scholar results, and Japanese and South Korean patents.Publication numberUS7155462 B1Publication typeGrantApplication numberUS 10/062,944Publication dateDec 26, 2006Filing dateFeb 1, 2002Priority dateFeb 1, 2002Fee statusPaidPublication number062944, 10062944, US 7155462 B1, US 7155462B1, US-B1-7155462, US7155462 B1, US7155462B1InventorsShaiwal Singh, William D. Devlin, John Eric Gilbert, Dave TamasiOriginal AssigneeMicrosoft CorporationExport CitationBiBTeX, EndNote, RefManPatent Citations (3), Referenced by (101), Classifications (10), Legal Events (4) External Links: USPTO, USPTO Assignment, EspacenetMethod and apparatus enabling migration of clients to a specific version of a server-hosted application, where multiple software versions of the server-hosted application are installed on a network
In response to the needs of the software market, software developers are continually at work developing new versions of software having increased capabilities and functionality. Most software developers regularly offer upgrades to their product lines to stimulate further sales and interest among their customers. Users are motivated to upgrade to obtain access to the enhanced functionality and capabilities. Upgrades are also sometimes directed at correcting errors or “bugs” in a prior version of the software. For individual users of software who typically install a specific version of a software product on a computing device, the decision of whether to upgrade to a newer version of the software may be made as a matter of personal preference.
Preferably a portion of the server includes a client database that stores meta information related to each network client having access to the hosted application in a register, including an indication of the version of the hosted application with which each client is associated, and an indication of the status of the client. When the system administrator wishes to make the new application version available to a specific client, the data relating to that client in the client database are changed to reflect that the selected client is associated with the newly installed version of the hosted application, and to indicate that the client's status is in a “migrating” state. The “migrating” state indicates that data unique to that client are being reformatted to be compatible with the newly installed version of the hosted application. While such reformatting can generally be accomplished rapidly, if a client has a large volume of data, the process can take several minutes. During that time, if that client attempts to access the data, a message will be displayed to the client indicating that the hosted application is temporarily unavailable. It should be noted that clients attempting to access data that are being migrated could be handled in alternative manners. For example, the client could be provided read-only access to the data as it existed before the migration. The client could be provided read-write access to subsets of the data. The request from a client can even be queued until the data is completely migrated, and then a response could be generated using the migrated data. Once the data have been properly migrated, the status of the client is changed to an “active” state, and the client can utilize the newly installed version of the hosted application. While it is true that in some embodiments that the hosted application is unavailable to a client when that client's data are being migrated, the data migration for a small group of clients can be accomplished much more rapidly than migrating data for all of the clients at once. Indeed, if only a small selected group of clients is being upgraded to the new version, and if only small amounts of data must be converted, a client may experience such a minor delay that the client would assume the delay is due to network traffic, rather than due to the upgrading of the hosted application. While one group of clients is being migrated to the new application version, other clients are unaffected by this process, and therefore experience no interruption in service, because they continue to use the existing application version. Thus, the present invention provides for little or no interruption of service. The present invention also provides a framework for further innovation to allow for more seamless upgrades, by reducing the problem to that of upgrading individual clients. The upgrade of individual clients is very application dependent, and as such improving the upgrading (or migrating) of individual clients is often a function of the technologies employed in a specific application.
A preferred embodiment of the present invention is to be incorporated into Microsoft Corporation's bCentral™ website and will initially be employed to enable managers of the website to simultaneously provide multiple versions of the FINANCE MANAGER™ application to Internet clients. The multiple versions of the FINANCE MANAGER application will function in a manner that is transparent to the Internet clients of the application, in that the clients will have no indication that they are accessing any particular version of the FINANCE MANAGER application. Only when a new version includes additional features or modified graphics would a client recognize that a different version of FINANCE MANAGER is being accessed.
While the exemplary embodiment, described in greater detail below, is disclosed in regard to the FINANCE MANAGER application, it is not intended that the invention be limited to any specific application, since it can be clearly applied to other types of applications, and it is anticipated that the present invention will be utilized with other bCentral™ properties. It should further be understood that the present invention is neither limited to a specific website, nor to any specific type of network, since it clearly can be applied to other Internet/Intranet websites, and other types of networks. Furthermore, while it is likely that only two versions of software will be run simultaneously (an existing version and new or upgrade version), it should be understood that, in accord with the present invention, more than two versions of a software application can be hosted at a network site at any one time.
Before explaining how the present invention is implemented, it will be helpful to define several terms. The term “Structured Query Language” (SQL) as used herein and in the claims that follow refers to a language used to interrogate and process data in a relational database. Originally developed by IBM for its mainframes, all database systems designed for client/sever environments support SQL. SQL commands can be used to interactively work with a database or can be embedded within a programming language to interface to a database.
Some of the major database management systems (DBMSs) that support SQL are Microsoft SQL Server, DB2™, SQL/DS™, Oracle™, Sybase™, SQL base™, INFORMIX™, and CA-OpenIngres™ (Ingres). As an example, the following SQL query selects customers with credit limits of at least $5,000 and puts them into sequence from highest credit limit to lowest. The words in bold font are SQL verbs.
The term “server” refers to a computer in a network that is shared by multiple clients, and as used herein, refers either just to the software that performs the service, or to both the hardware and software. For example, a Web server may refer to the Web server software in a computer that also runs other applications, or it may refer to a computer system dedicated only to the Web server application.
The term “client” refers to a computer or computing device in a network that an individual client utilizes to access data or applications from one or more servers. Such client/server architecture exists in various networked systems, such as legacy systems, WANs, LANs, intranets, and the Internet.
In a very simple form, a server can be merely a file server, that acts as a remote storage device, and most or all processing is executed by the client. This is sometimes referred to as a non-client/server system. Lengthy searches can bog down such a network, because each client has to read the entire contents of the file server. In a two-tier client/server, the application and database processing are executed by the server. An SQL request is generated by the client and transmitted to the server. For database searches, the server returns only matching records to the client. In a three-tier client/server, the processing is divided between two or more servers, one typically used for application processing and another for database processing. This architecture is common in large enterprises. Because of the Internet, terms such as “Web based” and “Web enabled” have often replaced the client/server language, yet the client/server architecture is conceptually the same.
The term Hyper Text Transport Protocol (HTTP) refers to the communications protocol used to connect to servers on the World Wide Web. Its primary function is to establish a connection with a Web server and transmit HTML pages to the client browser. Addresses of Web sites begin with an http:// or an https:// prefix; however, Web browsers typically default to the HTTP protocol. For example, typing “www. ” followed by the characters required to connect with a desired uniform resource locator (URL) produces the same effect as typing “http://” followed by “www” followed by the characters required to connect with the desired URL.
The term “cookie” refers to data created by a Web server that is stored on a client's computer. Such data provide a way for a Web site to keep track of a client's patterns and preferences and, with the cooperation of a Web browser, to store them on the client's own computer. Such cookies contain a range of URLs (addresses) for which they are valid. When a browser encounters those URLs again, it sends those specific cookies to the Web server. For example, if a client's ID was stored as a cookie, that client would not have to input the same information again when subsequently accessing that Web server. Client's can selectively disable cookies; thus, not all requests from clients will include such cookies.
FIG. 2 illustrates an architecture for a preferred embodiment of the present invention. A system 60 includes a front end tier 70 that preferably employs Microsoft Corporation's IIS™ (Internet Information Server) web server, and a back end tier 80 that utilizes Microsoft Corporation's SQL Server™ 2000 program. Those of ordinary skill in the art will recognize that the use of other configurations (such as a single tier, or the use of highly available clusters) and other server applications are not only possible, but also contemplated. Accordingly, the present invention is not limited to a two-tiered configuration, or to specific server management applications.
In FIG. 2A, clients 60 a–60 c of a server-hosted application (such as FINANCE MANAGER) access a server 64 via a network 62. Server 64 (which, as discussed in greater detail below, can be implemented as more than one server) simultaneously hosts a plurality of different versions of the server-hosted application (i.e., versions 66 a, 66 b, and 66 c, respectively corresponding to Version 1.0, Version 1.1, and Version 1.2, where the versions are intended to be exemplary, rather than limiting). When accessing the server-hosted application, server 64 selectively directs clients 60 a and 60 b to version 66 a (i.e., Version 1.0), but directs client 66 c to version 66 b (i.e., Version 1.1). As noted above, once it is clear that Version 1.1 is working well, clients 60 a and 60 b can be migrated to Version 1.1. Version 1.2 is not being utilized in this scenario; it has been included simply to indicate that more than two versions can be simultaneously hosted.
As shown in FIG. 2, front end tier 70 includes a load balancing component 72 that distributes communications with incoming clients among two or more servers 74. Those of ordinary skill in the art will understand that while such load balancing is a useful feature, it is not critical to the functionality of the present invention and can be omitted. Furthermore, multiple servers are not required, as the present invention can be achieved on a single server (and/or a single tier). Each server 74 maintains the forms and scripts of the application. Preferably, the forms encapsulate the client interface for the application, and the scripts contain part of the business logic for the application. The forms and scripts are grouped together in an IIS Virtual Directory. More specifically, those forms and scripts that are not dependent upon a particular version of the software application reside in a virtual directory 78. Forms and scripts that are reliant upon a particular software version reside in virtual directories 79 a–79 c, each of which is associated with in a particular software version number. Thus, virtual directory 79 a stores scripts and forms required by software version 1.0; virtual directory 79 b stores scripts and forms required by software version 1.1; and, virtual directory 79 c stores scripts and forms required by software version 1.2. The group of virtual directories 78 and 79 a–79 c form a logical virtual directory.
Key elements of the present invention are filters/diverters 76, a single filter/diverter residing on each front end tier server 74. In a preferred embodiment, filters/diverters 76 are realized as an IIS ISAPI filter (a web request filter) that directs the client request to a specific virtual directory 79 a–79 c, depending on the software version number in the context of the request. In the preferred embodiment, the filter will determine if a cookie included in the request for access by a client references a particular version associated with that client. If so, that client is directed to the specific version of the application. If no reference to the software version is included as a cookie in the client request (note that the software version selection process is preferably independent of the client, i.e., the client is not affirmatively interrogated to determine the software version that is to be accessed), then a provision SQL Instance 86 is consulted to determine the software version to which the client should be directed. Rather than looking for the appropriate software version in a cookie, provision SQL Instance 86 could instead be consulted. It is anticipated, however, that performance will be enhanced if not all client requests require consulting provision SQL Instance 86. As noted above, the present invention is not limited to use in conjunction with the Internet. For networked systems that do not support cookies, and for client requests that do not include version data within a cookie, filters/diverters 76 will consult provision SQL Instance 86 to determine software version to which the client should be directed. Further details of filters/diverters 76 are provided below.
Back end tier 80 maintains all of the financial data records for FINANCE MANAGER clients. Each client's data are preferably separated into individual SQL Server client databases 82 a–82 c to isolate and secure one client's data from another client's data. In addition, client databases 82 a–82 c also may contain partial business logic for the application. Client databases 82 a–82 c are grouped together into SQL Server instances. All of the client databases in a specific SQL Server instance are at the same software version number. Thus, as illustrated in FIG. 2, client databases 82 a are grouped together in an SQL instance 84 a correlating to version 1.0, client databases 82 b are grouped together in an SQL instance 84 b correlating to version 1.1, and client databases 82 c are grouped together in an SQL instance 84 c correlating to version 1.2. While not shown in FIG. 2, it should be noted that client databases associated with a specific software version can be distributed over more than one SQL instance. This type of distribution is particularly likely to happen for an existing or older version of a software application, as it is preferred that the bulk of the network clients use an existing version of the software application, while a small percentage of the network clients are directed to a newer version of the software application.
Software revision independent components of FIG. 2 are indicated by bold block, and bold/italicized text. Such components include load balancing component 72, filters/diverters 76, virtual directories 78, and provision SQL Instance 86. The software revision specific components are the version specific virtual directories 79 a–79 c, and the version specific SQL Instances 84 a–84 c. In addition to the aforementioned components, the architecture preferably contains a migration tool 88 that is used to migrate a client database from one software version to another. This migration tool allows easy plug-in of migration logic for a particular start version number to a particular end version number. For example, assume that software version 1.2 has been used for a sufficiently long period of time that the system manager determines that software versions 1.0 and 1.1 are no longer required. Client data residing in SQL Instances 84 a (data compatible with version 1.0) and 84 b (data compatible with version 1.1) can be manipulated by migration tool 88 such that the client data is compatible with version 1.2. Once all client related data is converted to version 1.2, software versions 1.0 and 1.1 are no longer required, and can be removed from both front end tier 70 and back end tier 80 if desired.
For example, in the context of FIGS. 2 and 3, assume that system 60 originally contains a deployment of Version 1.0 of the application software. The system manager desires to deploy Version 1.1 (or some other version), as indicated in a block 92 in a flowchart 90, which is shown in FIG. 3. If this is a new version, the new version will be registered in provision SQL Instance 86 of FIG. 2. In a block 94, an SQL Instance is generated for the added version (see SQL Instances 84 a and 84 b of FIG. 2) within the back-end tier. The next step described in a block 96 is to populate the added SQL Instance (such as SQL Instance 84 b of FIG. 2, for Version 1.1) with application business logic corresponding to the selected version. Then, in a block 98, the appropriate forms and scripts for the added version are added to the front-end tier servers (see virtual directories 79 b of servers 74 in FIG. 2, into which forms and scripts for Version 1.1 have been added). While in the preferred embodiment, multiple servers, a front end tier, and a back end tier are described, the present invention does not require such elements. Thus, in a different networked environment where an application resides on a single server, steps 94–98 would be combined into a single step of adding the selected new version to the server.
Decision block 106 will be determining if a migration has been successful at several levels. While it is possible that in decision block 106 it might be determined that the newly installed version is so flawed that it must be removed entirely from the system, it is more likely that errors have occurred in the conversion of client data from a prior version to the newly installed version. Such errors don't require the removal of the new version from the system, but rather require correcting the error in the data conversion. This can be effected by “rolling back” the entire set of migrated clients, or only rolling back those clients whose data was not correctly migrated.
Note that if it has been determined that the newly installed version is so flawed that it must be removed, then all clients migrated to the new version will need to be rolled back to the prior version, or migrated to a “fixed” version that replaces the flawed newly installed version. There are two broad categories of flaws that are likely to occur during migration. In the first category, the tool that is executing the migration fails to migrate the client data to the new version. In the second category the migration tool completes migrating the data, but the actual migrated data is flawed or corrupt.
Normally when errors of the first category occur, the client data would not need to be reverted back to the prior version, because the actual conversion to the new version format never occurred. Note that at this time, the client will not be able to access their data, because the provision SQL 86 indicates that the client is associated with the new version, but the clients data still resides in an SQL Instance associated with the prior version. Either provision SQL 86 needs to be changed to indicate the client is still associated with the prior version, or the client data in the prior version SQL Instance needs to be migrated to the SQL Instance associated with the new version. If relatively few clients in the selected group of clients being migrated experienced such a migration error, preferably an additional attempt will be made to migrate that client's data. If this type of migration error occurs frequently for a selected group, an administrator might decide to roll back all clients to the prior version, until the new version can be more thoroughly tested, or replaced with a “fixed” version.
For migration errors falling into the second category described above, such errors are usually caught during a testing phase after a batch of clients have been successfully converted to the new data format using the migration tool, which is also a function that occurs in block 106. Thus in block 106, it is determined both if data is successfully migrated (errors in either the first or second category as described above) and also whether or not the new version is functioning properly (there may be a functionality/performance problem with the new version that is not related to data migration). If during the testing in block 106 it is determined that an occasional client experienced a data migration error in which data was migrated, but not migrated properly, then generally that client's data would be rolled back to the prior version format, and the migration process would be repeated (hopefully successfully). Again, if such migration errors occur frequently, an administrator might determine that the new version was the probable cause of the errors, and thus decide to roll back all clients to the prior version, until the new version can be more thoroughly tested, or replaced with a “fixed” version.
For example, for each client whose data needs to be rolled back, Version 1.0 data originally associated with SQL Instance 84 a, which was converted to Version 1.1 data and moved to SQL Instance 84 b in blocks 102 and 104, would need to be converted back into the format of Version 1.0, and returned to SQL Instance 84 a. In a block 110, for each client whose data was rolled back, that client must once again be associated with the previous version of the application in provision SQL Instance 86. In a block 112, for each client whose data was rolled back, the SQL Instance added in block 94, as described above, is removed. In an optional block 114, if it has been determined that the errors associated with the migration of clients from one version to a newly added version are so great that the added version must be removed, then that version is removed from the server (i.e., virtual directories 79 b or 79 c that were added to servers 74 in block 98 are removed). At that point, a different version can be selected when desired, and the process described above can be repeated using a new version in which the problems have been corrected. The sequence in which the steps of blocks 108–114 are performed is not critical.
The provision database in provision SQL Instance 86 can also be used to prevent clients from accessing the host application as their data are being migrated. The provision database preferably includes the version associated with each client, the identity of the SQL Instance in which that client's data are stored, and the status of the client. By indicating that a client's status is “migrating,” the host can prevent the client from accessing the hosted application and that client's data during the migration process. Or, as discussed above, a client's access might be limited to read only data, or subsets of their entire data set.
It should also be noted that the step of block 120 does not need to occur immediately after the new version is determined to be successful in decision block 106. More than one, or even two, different versions of a hosted application can be run simultaneously. Of course, at some point a sufficiently large number of different versions will consume so many system resources as to degrade performance to unacceptable levels. However, as illustrated in FIG. 2, it is certainly contemplated that more than two versions of a hosted application can be installed on servers 74, as virtual directories 79 a–79 c, relating to Versions 1.0–1.2, clearly indicate. An administrator may elect to allow a significant amount of time to elapse before executing the steps described in blocks 116–120.
Preferably, during the migration process (either of blocks 104 or 120), each individual client's database is locked down to preclude client access. As noted above, other options, such as allowing a client read only access to data, are also contemplated. In the preferred embodiment, this function is accomplished by modifying the security attributes on the SQL database (one of SQL Instance 84 a–84 c) that contains the client data being migrated, so as preclude a client accessing their database (one of databases 82 a–82 c). During migration, only administrators are allowed full access to the client databases being migrated. Note that this exclusion only effects the access of the specific clients being migrated at any one time. By migrating clients individually, the chance of any single client being denied access to their data is minimized. Preferably, the last step of the migration process is to update the software version number, the SQL Instance hosting the client's database, and the status for the client in the provision database (block 120 as described above).
If in decision block 134 it is determined the version referenced in the cookie is no longer supported by the hosted application, then in a block 138, the provision SQL Instance is consulted to determine the correct software version associated with that client (i.e., which of virtual directories 79 a–79 c from FIG. 2 is associated with the client). As noted above, such a situation can occur when a host has migrated a client to a different version of the hosted application after that client's last visit. Thus the cookie references the “old” version. To determine which version of the hosted application that client was migrated to, the client database (i.e. the provision SQL Instance) must be consulted. In block 138, the proper location of the client's database (i.e., the appropriate SQL Instance 34 a–34 c) is also determined by consulting the provision SQL Instance. Then, in a block 140, the current version of the hosted application that is associated with that client is added to the cookie, so that when that client returns to the hosted application in the future, the provision SQL Instance does not need to be consulted. Of course, if the client does not revisit the hosted application for a significant period of time, the version reference might become outdated once again. The version is written to the HTTP response headers. In a block 142, the virtual directory containing the appropriate version of the hosted application is accessed. The forms and scripts from the referenced virtual directory then run against the back end tier SQL Instance hosting the client's database (see databases 32 a–32 c in FIG. 2). In a block 144, the client is enabled to use the proper version of the hosted application until the client elects to exit the hosted application in a block 146.
If in decision block 134, it is determined that no version number is referenced in the HTTP request from the client (i.e., that client has disabled the use of cookies on their browser program), then the same steps as described above in blocks 138–146 are similarly executed. If in decision block 134 it is determined that a valid version is referenced in an HTTP cookie received from a client, then in a block 148 (equivalent to block 142, which was described above), the virtual directory containing the appropriate version of the hosted application is accessed, and the forms and scripts from the referenced virtual directory are used along with the back end tier SQL Instance hosting the client's database to provide a functional application to the client.
The second potential scenario introduced above relates to an existing client that tries to access the hosted application during an upgrade, only to find out that their data are being migrated and are thus unavailable. Flowchart 130 c of FIG. 5 illustrates the process followed in this case, which is very similar to those described above. In block 132, a client seeks access to the hosted application, and in decision block 134, the filter/diverter component intercepts the request at the front end tier and checks the request cookies for the software version number of the client. If the software version number is either not present or represents a version not supported by the host, the software version number and status of the company are obtained from the provision SQL Instance database in block 138. Part of the client information stored in provision SQL Instance is the status of the client. Whenever a client's database and version are being migrated, the status is changed to reflect that the client is currently being migrated. In a decision block 152, if it is determined that the status of the client is “migration in progress,” a message is displayed to the client in a block 154 (for example, a “company is being migrated” web page can be displayed to such a client). Upon seeing such a message, a client can elect to exit the host via block 146, or alternatively (as indicated by the dashed line) occasionally refresh the browser program display to determine when the migration is completed. As noted above, other options are available during the migration of client data, such as allowing a client read-only access to their data, or some other limited access to their data. Such options would be more preferable as the time required for migration increases.
Referring now to decision block 152, if it is determined that the client status does not indicate a migration is underway, the correct version is included in the HTTP response header (i.e., written into the client's cookie) in block 140, and the client is directed to the proper version in block 142. As before, the client is enabled to use the host application in block 144, until the client decides to exit in block 146. Blocks 140 and 142 have been shown in dashed lines, as flowchart 130 c has been described as being the sequence of steps employed when a migration is in progress for a particular network client. It should be understood that flowcharts 130 a–130 e each illustrate specific logical steps employed in specific circumstances, rather than a high level flowchart for all of these circumstances.
The fourth potential scenario introduced above relates to a “tester” client who tries to provision themselves with the hosted application during a host upgrade. Flowchart 130 e of FIG. 7 illustrates the process. As above, flowchart 130 e shares some common steps with those processes described above, and the same reference numbers have been utilized where appropriate. A tester attempts to access the hosted application in a block 132 b. In a block 160, the tester is directed to one of virtual directories 78 in servers 74 on front end tier 70 of system 60, as shown in FIG. 2. As noted above, virtual directories 78 a contain scripts and forms related to the hosted application that are version independent. The tester is directed to a special tester page stored in the version independent virtual directories 78 a. The special tester page adds a host defined tester default version to the tester's request cookie in a block 162. Thus in a decision block 134 a, the filter/diverter determines that an existing version is included in the tester's request cookie. In a block 142 a, the tester is directed to the virtual directory corresponding to the specified version. In a block 164, a tester database is defined for an SQL Instance associated with the specified version, and the tester meta data (version, status, database location) is written into the provision database. In a block 144 a, the tester is enabled to use the host application, until the tester decides to exit in block 146 a. Note that as used herein, the term “tester” can refer to someone who is testing the hosted application, special partners, or beta clients.
Even though the provision database (provision SQL Instance 76 of FIG. 2) includes client meta data, including a version identity, to enhance performance, the system preferably relies on cookies and filters to cache as much meta information as possible about the client accessing the hosted application. This step improves the performance of the system, since provisional database lookups are not performed for every request. Another important performance consideration is to invalidate “stale” cached cookies that incorrectly refer to a prior version after a particular client has been migrated to a new version.
Patent CitationsCited PatentFiling datePublication dateApplicantTitleUS6044367 *Apr 15, 1998Mar 28, 2000Hewlett-Packard CompanyDistributed I/O storeUS20020103907 *Jun 20, 2001Aug 1, 2002Erik PetersenSystem and method of storing data to a recording mediumUS20040249927 *Jul 1, 2004Dec 9, 2004David PezuttiIntelligent network providing network access services (INP-NAS)* Cited by examinerReferenced byCiting PatentFiling datePublication dateApplicantTitleUS7386617 *May 15, 2003Jun 10, 2008International Business Machines CorporationMethod, system and program product for managing multiple network application versionsUS7487536 *Mar 26, 2004Feb 3, 2009Fujitsu LimitedApparatus and method for applying revision information to softwareUS7546361 *May 3, 2004Jun 9, 2009Nortel Networks LimitedMethod and network for delivering management software for a network elementUS7739681 *Sep 26, 2005Jun 15, 2010Novell, Inc.Delayed application installationUS7765272 *Sep 30, 2003Jul 27, 2010Cisco Technology, Inc.Method and system for migrating content on a networkUS7769843 *Sep 22, 2006Aug 3, 2010Hy Performix, Inc.Apparatus and method for capacity planning for data center server consolidation and workload reassignmentUS7823145 *Mar 31, 2006Oct 26, 2010Vmware, Inc.Updating software on dormant disksUS7921330 *Feb 29, 2008Apr 5, 2011Red Hat, Inc.Data migration managerUS7941502Jun 2, 2010May 10, 2011Cisco Technology, Inc.Method and system for migrating content on a networkUS8060856Nov 18, 2005Nov 15, 2011Aol Inc.Native objects accessible by platform neutral APIUS8122447 *Jul 31, 2007Feb 21, 2012Hewlett-Packard Development Company, L.P.Firmware installationUS8181071 *Jun 29, 2007May 15, 2012Microsoft CorporationAutomatically managing system downtime in a computer networkUS8200634Oct 8, 2008Jun 12, 2012Sap AgZero downtime maintenance using a mirror approachUS8276121 *Jun 19, 2007Sep 25, 2012Microsoft CorporationSelection of versioned resource among multiple compatible versionsUS8452862Jun 17, 2010May 28, 2013Ca, Inc.Apparatus and method for capacity planning for data center server consolidation and workload reassignmentUS8464228 *Aug 23, 2007Jun 11, 2013Accenture Global Services LimitedBinary libraryUS8522228Mar 31, 2006Aug 27, 2013Vmware, Inc.Updating software on dormant disksUS8583613 *Aug 21, 2007Nov 12, 2013Oracle International CorporationOn demand data conversionUS8595338Jan 26, 2011Nov 26, 2013Endurance International Group, IncMigrating a web hosting service via a virtual network from one architecture to anotherUS8595715Dec 31, 2010Nov 26, 2013International Business Machines CorporationDynamic software version selectionUS8688628Feb 29, 2008Apr 1, 2014Red Hat, Inc.Nested queued transaction managerUS8701103 *Oct 31, 2007Apr 15, 2014Wal-Mart Stores, Inc.Method and system for minimizing or eliminating downtime when updating a websiteUS8762463Jan 14, 2011Jun 24, 2014Endurance International Group, Inc.Common services web hosting architecture with multiple branding and OSS consistencyUS8762484Jan 14, 2011Jun 24, 2014Endurance International Group, Inc.Unaffiliated web domain hosting service based on a common service architectureUS8788569 *Apr 2, 2007Jul 22, 2014British Telecommunications Public Limited CompanyServer computer system running versions of an application simultaneouslyUS8819121Jan 19, 2011Aug 26, 2014Endurance International Group, Inc.Unaffiliated web domain hosting service based on service pools with flexible resourceUS8819122Jan 19, 2011Aug 26, 2014Endurance International Group, Inc.Unaffiliated web domain common hosting service with service representative plug-inUS8819207Jan 19, 2011Aug 26, 2014Endurance International Group, Inc.Unaffiliated web domain hosting service based on common service pools architectureUS8825746Jan 19, 2011Sep 2, 2014Endurance International Group, Inc.Unaffiliated web domain hosting service based on shared data structureUS8843571Jan 14, 2011Sep 23, 2014Endurance International Group, Inc.Web hosting service based on a common service architecture and third party servicesUS8935314Jan 20, 2011Jan 13, 2015Endurance International Group, Inc.Common service web hosting architecture with CRM plus reportingUS8949817Aug 26, 2013Feb 3, 2015Vmware, Inc.Updating software on dormant disksUS9021461 *Feb 25, 2014Apr 28, 2015Wal-Mart Stores, Inc.Method and system for minimizing or eliminating downtime when updating a websiteUS9031910Jun 24, 2013May 12, 2015Sap SeSystem and method for maintaining a cluster setupUS9047162Oct 3, 2013Jun 2, 2015International Business Machines CorporationDynamic software version selectionUS9053005 *Jan 2, 2008Jun 9, 2015Micron Technology, Inc.Recycled version number values in flash memoryUS9058428Apr 12, 2012Jun 16, 2015Amazon Technologies, Inc.Software testing using shadow requestsUS9071552 *Jan 23, 2011Jun 30, 2015Endurance International Group, Inc.Migrating a web hosting service between a one box per client architecture and a cloud computing architectureUS9071553 *Jan 25, 2011Jun 30, 2015Endurance International Group, Inc.Migrating a web hosting service between a dedicated environment for each client and a shared environment for multiple clientsUS9081640Dec 19, 2011Jul 14, 2015Fujitsu LimitedApparatus, method and medium for calculating an update order on a service level objectiveUS9197517Nov 1, 2013Nov 24, 2015Endurance International Group, Inc.Migrating a web hosting service via a virtual network from one architecture to anotherUS9251498 *Oct 18, 2007Feb 2, 2016Oracle International CorporationFacilitating deployment of customizations of enterprise applicationsUS9256412 *Jul 4, 2012Feb 9, 2016Sap SeScheduled and quarantined software deployment based on dependency analysisUS9268663 *Apr 12, 2012Feb 23, 2016Amazon Technologies, Inc.Software testing analysis and controlUS9268841Feb 29, 2008Feb 23, 2016Red Hat, Inc.Searching data based on entities related to the dataUS9274830 *Nov 18, 2005Mar 1, 2016Aol Inc.Service clean-upUS9277022Jan 11, 2013Mar 1, 2016Endurance International Group, Inc.Guided workflows for establishing a web presenceUS9288108 *Aug 29, 2014Mar 15, 2016Salesforce.Com, Inc.Mechanism for facilitating spin mode-based dynamic updating of application servers in an on-demand services environmentUS9418087 *Feb 29, 2008Aug 16, 2016Red Hat, Inc.Migrating information data into an applicationUS9430538Feb 29, 2008Aug 30, 2016Red Hat, Inc.Providing additional information and data in cooperation with a communication applicationUS20040236799 *May 15, 2003Nov 25, 2004International Business Machines CorporationMethod, system and program product for managing multiple network application versionsUS20050066023 *Mar 26, 2004Mar 24, 2005Fujitsu LimitedApparatus and method for applying revision information to softwareUS20050097216 *May 3, 2004May 5, 2005Nortel Networks LimitedMethod and network for delivering management software for a network elementUS20060168579 *Nov 18, 2005Jul 27, 2006Besbris David GService clean-upUS20060179440 *Nov 18, 2005Aug 10, 2006Besbris David GNative objects accessible by platform neutral APIUS20070006219 *Sep 26, 2005Jan 4, 2007Novell, Inc.Delayed application installationUS20080077366 *Sep 22, 2006Mar 27, 2008Neuse Douglas MApparatus and method for capacity planning for data center server consolidation and workload reassignmentUS20080098099 *Oct 18, 2007Apr 24, 2008Oracle International CorporationFacilitating Deployment Of Customizations Of Enterprise ApplicationsUS20080320460 *Jun 19, 2007Dec 25, 2008Microsoft CorporationFulfillment of requirement for versioned resourceUS20090006884 *Jun 29, 2007Jan 1, 2009Microsoft CorporationAutomatically managing system downtime in a computer networkUS20090024984 *Jul 17, 2008Jan 22, 2009Canon Kabushiki KaishaMethod of managing application softwareUS20090037904 *Jul 31, 2007Feb 5, 2009Eugene CohenFirmware InstallationUS20090055445 *Aug 21, 2007Feb 26, 2009Oracle International CorporationOn demand data conversionUS20090055809 *Aug 23, 2007Feb 26, 2009Accenture Global Services GmbhBinary LibraryUS20090172641 *Jan 2, 2008Jul 2, 2009Wanmo WongRecycled version number values in flash memoryUS20090204647 *Feb 13, 2009Aug 13, 2009Gregory Dean BentleyMethods and systems for creating and saving multiple versions of a cimputer fileUS20090222413 *Feb 29, 2008Sep 3, 2009Mattox John RMethods and systems for migrating information and data into an applicationUS20090222433 *Feb 29, 2008Sep 3, 2009Mattox John RMethods and systems for searching data based on entities related to the dataUS20090222691 *Feb 29, 2008Sep 3, 2009Riemers Bill CData Migration ManagerUS20090300093 *Apr 2, 2007Dec 3, 2009Tim GriffithsServer computerUS20100088281 *Oct 8, 2008Apr 8, 2010Volker DriesenZero Downtime Maintenance Using A Mirror ApproachUS20100217750 *Feb 19, 2010Aug 26, 2010Fujitsu LimitedArchive apparatus, conversion apparatus and conversion programUS20100238945 *Jun 2, 2010Sep 23, 2010Cisco Technology, Inc.Method and system for migrating content on a networkUS20110029880 *Jun 17, 2010Feb 3, 2011Neuse Douglas MApparatus and method for capacity planning for data center server consolidation and workload reassignmentUS20110143780 *Feb 17, 2011Jun 16, 2011Joseph PohutskyWireless network location-based reference informationUS20110178838 *Jan 14, 2011Jul 21, 2011Endurance International Group, Inc.Unaffiliated web domain hosting service survival analysisUS20110178840 *Jan 28, 2011Jul 21, 2011Endurance International Group, Inc.Unaffiliated web domain hosting service client financial impact analysisUS20110179103 *Jan 20, 2011Jul 21, 2011Endurance International Group, Inc.Common service web hosting architecture with crm plus reportingUS20110179111 *Jan 23, 2011Jul 21, 2011Endurance International Group, Inc.Migrating a web hosting service between a one box per client architecture and a cloud computing architectureUS20110179112 *Jan 26, 2011Jul 21, 2011Endurance International Group, Inc.Migrating a web hosting service between a virtualized environment and a shared environment for multiple clientsUS20110179135 *Jan 14, 2011Jul 21, 2011Endurance International Group, Inc.Unaffiliated web domain hosting service based on a common service architectureUS20110179137 *Jan 25, 2011Jul 21, 2011Endurance International Group, Inc.Migrating a web hosting service between a one box per client architecture and a grid computing architectureUS20110179141 *Jan 25, 2011Jul 21, 2011Endurance International Group, Inc.Migrating a web hosting service between a one box per multiple client architecture and a cloud or grid computing architecture with many boxes for many clientsUS20110179142 *Jan 25, 2011Jul 21, 2011Endurance International Group, Inc.Migrating a web hosting service between a dedicated environment for each client and a shared environment for multiple clientsUS20110179154 *Jan 14, 2011Jul 21, 2011Endurance International Group, Inc.Web hosting service based on a common service architecture and third party servicesUS20110179156 *Jan 26, 2011Jul 21, 2011Endurance International Group, Inc.Migrating a web hosting service from a shared environment for multiple clients to a shared environment for multiple clientsUS20110179165 *Jan 28, 2011Jul 21, 2011Endurance International Group, Inc.Unaffiliated web domain hosting service product mappingUS20110179175 *Jan 14, 2011Jul 21, 2011Endurance International Group, Inc.Migrating a web hosting service from one architecture to another, where at least one is a common service architectureUS20110179176 *Jan 20, 2011Jul 21, 2011Endurance International Group, Inc.Migrating a web hosting service between a one box per client architecture and a multiple box per client architectureUS20130014084 *Jul 5, 2011Jan 10, 2013Microsoft CorporationInternational Testing PlatformUS20140013315 *Jul 4, 2012Jan 9, 2014Pavel GENEVSKIScheduled and quarantined software deployment based on dependency analysisUS20140173566 *Feb 25, 2014Jun 19, 2014Wal-Mart Stores, Inc.Website update method and systemUS20140189648 *Dec 27, 2012Jul 3, 2014Nvidia CorporationFacilitated quality testingUS20140281732 *Mar 15, 2013Sep 18, 2014Red Hat, Inc.Automated update testing and deploymentUS20140366002 *Jun 11, 2013Dec 11, 2014Sap AgSearching for an entity most suited to provide knowledge regarding an objectUS20140372578 *Aug 29, 2014Dec 18, 2014Salesforce.Com, Inc.Mechanism for facilitating spin mode-based dynamic updating of application servers in an on-demand services environmentUS20150205592 *Jan 22, 2015Jul 23, 2015Electronics And Telecommunications Research NstituteSystem and method for managing application program for terminalUS20160011573 *Jul 9, 2014Jan 14, 2016Honeywell International Inc.Multisite version and upgrade management systemUS20160173583 *Jan 15, 2016Jun 16, 2016Salesforce.Com, Inc.Mechanism for facilitating spin mode-based dynamic updating of application servers in an on-demand services environmentCN101821711BAug 22, 2008May 1, 2013埃森哲环球服务有限公司Binary libraryEP2175365A1Jun 15, 2009Apr 14, 2010Sap AgZero downtime maintenance using a mirror approach* Cited by examinerClassifications U.S. Classification717/170, 707/695, 707/959, 707/999.203, 707/999.01International ClassificationG06F17/30Cooperative ClassificationY10S707/99954, Y10S707/959, G06F8/65European ClassificationG06F8/65Legal EventsDateCodeEventDescriptionFeb 1, 2002ASAssignmentOwner name: MICROSOFT CORPORATION, WASHINGTONFree format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SINGH, SHAIWAL;DEVLIN, WILLIAM D.;GILBERT, JOHN ERIC;ANDOTHERS;REEL/FRAME:012566/0504;SIGNING DATES FROM 20020124 TO 20020131May 27, 2010FPAYFee paymentYear of fee payment: 4May 28, 2014FPAYFee paymentYear of fee payment: 8Dec 9, 2014ASAssignmentOwner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTONFree format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034541/0477Effective date: 20141014RotateOriginal ImageGoogle Home - Sitemap - USPTO Bulk Downloads - Privacy Policy - Terms of Service - About Google Patents - Send FeedbackData provided by IFI CLAIMS Patent Services