The present invention relates to software management systems and, more particularly, to systems and methods for selecting, ordering, installing, managing, updating, and if necessary, uninstalling software applications provided to an entity by one or more application service providers (ASPs) or other sources.
Recently, substantial attention has been directed to the field of software management tools. One reason for this is that many vendors or purveyors of software now distribute their products directly to customers via wide area networks such as the Internet. Such vendors often are referred to as “Application Service Providers” or “ASPs.” Generally, businesses use ASPs as a means for outsourcing information technology (IT) functions to specialists. Moreover, rather than purchasing expensive software, high-powered computers, high-end telecommunications equipment, and the like, companies often now choose to rent or lease applications from ASPs, and they often access or use selected applications through the Internet. While this model allows companies to achieve significant savings from a hardware and software purchasing and maintenance perspective, the model may introduce significant management issues, where for example, multiple ASPs provide applications to a single entity.
Accordingly, it is believed that businesses may find systems, methods, and applications for managing ASP relationships to be quite useful.
In one particularly innovative aspect, the present invention is directed to systems and methods for enabling a company to manage its relationships with one or more ASPS, or other software sources. In one presently preferred embodiment, an applications management server may be deployed within a company and used to interface with a master database server and the servers of one or more ASPs. The interface preferably occurs via the Internet, thus enabling a personal computer, web computer, or other network appliance coupled to the management server to interact with the master database server and the servers of the ASPs.
For example, using a browser application provided on a personal computer, it is possible interact with the management server and query the master database server to identify those applications, services, and subscriptions that are available, as well as those which are currently being utilized within a company. Further, through the use of an appropriate graphic user interface (GUI) a user of the browser may add selected applications, functions, or capabilities to the company network, and the user may remove applications, functions, or capabilities that are no longer needed by the company. The result of these actions may be communicated, for example, through the Internet to the master database server, and the master database server may thereafter interact with any relevant ASP servers to enable or disable selected applications, functions, or features. In addition, the master database server may provide electronic messages to any personnel having responsibility for tasks necessary to carry out a transaction or complete an action.
Accordingly, it is an object of the invention to provide improved systems, methods, and applications for managing ASP relationships over a wide area network, such as the Internet.
Various objects and advantages and a more complete understanding of the present invention are apparent and more readily appreciated by reference to the following Detailed Description and to the appended claims when taken in conjunction with the accompanying Drawings wherein:
a)-4(d) comprise a series of screen images that may be used by a GUI in accordance with the present invention.
As shown in
The applications management server 12 and master database server 18 may be coupled to the Internet 16 via dial up, ISDN, DSL, or any other protocol that supports TCP/IP. The master database server 18 also may employ database management software available from any of a number of vendors including Microsoft Corp., Oracle Corp., and Sleepy Cat, Inc.
The applications management server 12 may be deployed within a company and used to interface with the master database server 18 and the servers of one or more ASPs 20(a) and 20(b). The interface preferably occurs via the Internet 16, thus enabling a personal computer, web computer, or other network appliance 14 coupled to the applications management server 12 to interact with the master database server 18 and the servers of the ASPs 20(a) and 20(b).
For example, using a browser application (not shown) provided on the personal computer 14, it is possible to interact with the applications management server 12 and query the master database server 18 to identify those applications, services, and subscriptions that are available, as well as those which are currently being utilized within a company. Further, through the use of an appropriate graphic user interface (GUI), a user of the browser (not shown) may add selected applications, functions, or capabilities to the company network, and the user may remove applications, functions, or capabilities that are no longer needed by the company. The result of these actions may be communicated, for example, through the Internet 16 to the master database server 18, and the master database server 18 may thereafter interact with any relevant ASP servers 20(a) and 20(b) to enable or disable selected applications, functions, or capabilities. In addition, the master database server 18 may provide electronic messages to any personnel 22 having responsibility for tasks necessary to carry out a transaction or complete an action.
In one presently preferred embodiment, a software subscription management module 50, shown in
In a preferred form, all queries issued by the applications management server 12 are in the form of hypertext transfer protocol (HTTP) requests and include a unique ID for the management applications server as part of a Uniform Resource Locator (URL). Those skilled in the art will appreciate, however, that other communications protocols, such as file transfer protocol (FTP) or hypertext transfer protocol secure (HTTPS), also may be used for queries issued by the applications management server 12.
Turning now to a description of the GUI, the GUI 100, shown in
Using the GUI 100, a system administrator 14 can retrieve a list 107 of available applications or services, and using the displayed list, the administrator 14 can select desired items to be installed on the applications management server 12, or other servers (not shown), within a local area network (LAN) or wide area network (WAN). The administrator also may view a history of all applications or services that have been selected for use within network over a prescribed period of time.
Preferably, the GUI 100 issues back-end commands that will cause any necessary HTTP requests to be generated, and information returned from the applications management server 12 or the master database server 18 will be parsed, formatted, and sent to a standard output. The GUI 100 may then read in the output from the back-end process and display the information to the administrator 14 along with any necessary interactive items, such as the subscribe and unsubscribe buttons 108(a) and (b) described above.
Preferably, whenever a list 107 of available services or applications is presented to an administrator, the list 107 will include all available applications or services, and the administrator 14 will be allowed to select services or applications for subscription or cancellation. The history item 104 may be used to display a chronological history of selected services or applications.
Turning now to
Table 1, below, provides an exemplary representation of the components comprising the subscriptions management item 102 (shown in
Turning now to a description of the backend support module 54 and related system programs, the backend support module 54 employs several scripts and routines described below to enable selection or deselection of services or applications in response to instructions received from the GUI 100.
In one preferred embodiment, a sysSubscriptionQuery routine, comprising a perl script, is used to create http queries for Peabody Software service APIs using inputs to the script and two ti.conf variables. A returned value from the query is sent to the standard output (not shown) of the GUI 100.
A sysSubscriptionQuery: System Calling routine passes an API name as a first parameter and, if necessary, a service identifier as a second parameter. Thus, the call does not require a service identifier. An exemplary call for a service listing may read as follows: /use/local/ti/bin/sysSubscriptionQuery GetServices. Whereas, a call to subscribe to a particular service requires an identification of the service to be subscribed to and may read as follows: /use/local/ti/bin/sysSubscriptionQuery Subscribe 100.
A sysSubscriptionQuery: System Operation routine enables the hostname of a server (not shown) to query and the path to an API script to be pulled from the ti.conf variable SUBSCRIPTION_QUERY_HOST_PATH. The API passed to this program is used as part of the name of the script to call on the server (not shown). The query to the script preferably comprises a DeviceKey, stored in SERIAL_NUMBER, and optionally a ServiceID, e.g., the name of the service to be subscribed to. Preferably, a HTTP::Request object is created with a GET method, and an LWP::UserAgent request is made using the HTTP::Request object. The response to the request is stored in a HTTP::Response object. If the request is successful the content of the response is sent to the standard output (not shown) of the GUI 100. Otherwise, an error is printed as a HTML document. Those skilled in the art will appreciate that in some circumstances the Response object may be parsed and formatted prior to being printed to the standard output (not shown).
In one preferred form, a SusUnsubscribe script uninstalls any RedHat Package Managers (RPMs) associated with a service being unsubscribed, and a SetServiceDisabled request is sent to the subscription server. In addition, a susUnsubscribe:System Calling script is called with the name of the service to unsubscribe. The script may read as follows: /use/local/ti/bin/sysUnsubscripe 100.
A susUnsubscribe:System Operation script may be used to check a repository directory in /usrlocal/redphish/snapin for a directory that matches a servicename. If there is no matching service name, then an error is reported, and the service is not unsubscribed. If the directory exists, a rpm-e command may be issued against each rpm in the directory. After the packages are uninstalled the directory and the files within are deleted.
A sysUpdateSubscriptions script may be used to check for a SUBSCRIPTION_ADD_SERVICES array in ti.conf and for each service listed may download the relevant files and install them on the applications management server 12.
To perform service installations, a sysUpdateSubscriptons: System Operation routine is preferably utilized. Thus, for each service listed in SUBSCRIPTION_ADD_SERVICES a GetServiceLocation query is made to the subscription server. The information returned from the server is used to transfer (via ftp) the RPMs to a Peabody system. Once all of the RPMs for a service have been downloaded they may be installed with the following command: rpm-U*.rpm. If any of the RPM packages fail to load, then none of them will be loaded. When a loading failure occurs, two additional loading attempts will be made to download and install the relevant files, before a given loading process will be abandoned, and installation of the next service will be initiated. If all the packages install then the service name will be removed from the SUBSCRIPTION_ADD_SERVICES array.
Table 2, below, sets forth a preferred set of data structures that may be used in accordance with the present invention.
In one presently preferred form, the backend support module utilizes a HTTP API for Software Subscriptions Management. Each API call preferably is in the form of a HTTP query with parameters passed as key-value pairs, and each response preferably is a list of key-value pairs in plain text form. The API call preferably has one of the two following formats: http://<host>/<path>/<API>/.cgi?DeviceID=<DeviceID[&ServiceID=<Number>or http://<host>/<path>/<GetServiceLocation.cgi?ServiceID=<Number>where: <host>identifies the software subscription server, and the host's name is stored in SOFTWARE_UPDATE_HOST; <DeviceID> is a unique number identifying the machine and may be the serial number of, for example, the applications management server 12 or the MAC address of the Ethernet card of the server 12 that is coupled to the Internet; and <Number> is the numeric identifier of the requested service. It will be appreciated by those skilled in the art that the <DEVICE_ID> also may be a series of numbers followed by a checksum, as would be the case with a typical InstaGate machine of the type that is well known in the art.
As an example, the request set forth below could represent a Subscribe request from a machine with an Ethernet hardware address of 00:A0:CC:69:55:B2 for service 1040—a tax software package. In the example, the subscription server is located at subscriptions.esoft.com, the scripts are in cgi.bin, and the software is located on blades.esoft.com in the directory /home/software/tax. In addition, the software is accessible with the password sn2ggl3.
Request:
Result: 1
Request:
Result:
Hostname:blades.esoft.com
Path:tax
Username:softname
Password:sn2ggl3
As explained above, in a preferred form a GetServices request will retrieve a list of available services that can be subscribed to by a requesting machine, and it will indicate which services are already subscribed to. The parameters and return values used in accordance with a GetServices request may comprise those set forth in Tables 3(a) and 3(b), below.
The parameters and return values used with a Subscribe request are set forth in Tables 4(a) and 4(b), and the parameters and return values used within an Unsubscribe request are set forth in Tables 5(a) and 5(b), below.
The parameters and return values used with a GetContactInfo request are set forth in Tables 6(a) and 6(b), below. However, when a subscription server is successfully contacted, “NextDay” and “Time” fields stored within the memory (not shown) of the subscriptions management server 12 preferably will dictate when to contact the server again. If the applications management server 12 fails to contact a server at a specified time, then the applications management server 12 preferably will attempt to establish contact three additional times over the course of the next fifteen minutes, e.g., once every 5 minutes. If all three retries fail, the device should give up and try again in the number of days specified in an “Interval” field, but at the same designated “Time”.
The parameters and return values used with a SetService Enabled request are set forth in Tables 7(a) and 7(b), below.
The parameters and return values used with a SetServiceDisabled request are set forth in Tables 8(a) and 8(b), below.
The parameters and return values used with a GetServiceLocation request are set forth in Tables 9(a) and 9(b), below.
In another aspect, the GUI 100 (or system front end) may use the support files listed in Table 10(a), below, and the backend support module may use the support files listed in Table 10(b), below.
Those skilled in the art will appreciate that, in addition to the systems and methodologies descrided herein, the present invention is directed to the computer software applications, programs, protocols, routines, and instructions (collectively “computer programming instructions”) that are used to implement the above-described features and functions. Computer programming instructions preferably are stored within memory of the system, and may be received or transmitted via a communications interface. When executed by a processor (not shown) of the applications management server 12 or database management server 18, the programming instructions will enable the system 10 to perform various methods and processes in accordance with the present invention and, therefore, represent controllers of the system 10 and, potentially, any ASP servers 20(a) and 20(b) that may be included within the system 10.
In this document, the term “computer program product” is used to refer to any media that may be used to provide programming instructions or data to the system 10, or to any server or processor within the system 10, through for example, the Internet. Examples of such media include any memory products used by or within the system 10, any storage drives or devices (whether fixed or removable) used by or within the system 10, and any signals that may be transmitted to, from, or within the system 10.
Because the invention is susceptible to various modifications and alternative forms, specific examples thereof have been shown in the drawings and are herein described in detail. It should be understood, however, that the invention is not to be limited to the particular forms or methods disclosed, but to the contrary, the invention should encompass all modifications, alternatives, and equivalents falling within the spirit and scope of the appended claims.
This application is a continuation application of application Ser. No. 09/766,469, filed Jan. 19, 2001 now U.S. Pat. No. 6,961,773, the entire content of which is hereby incorporated by reference.
Number | Name | Date | Kind |
---|---|---|---|
4791565 | Dunham et al. | Dec 1988 | A |
4815030 | Cross et al. | Mar 1989 | A |
4937863 | Robert et al. | Jun 1990 | A |
4992940 | Dworkin | Feb 1991 | A |
5023907 | Johnson et al. | Jun 1991 | A |
5138712 | Corbin | Aug 1992 | A |
5155809 | Baker et al. | Oct 1992 | A |
5204897 | Wyman | Apr 1993 | A |
5283868 | Baker et al. | Feb 1994 | A |
5329619 | Page et al. | Jul 1994 | A |
5341477 | Pitkin et al. | Aug 1994 | A |
5371532 | Gelman et al. | Dec 1994 | A |
5375206 | Hunter et al. | Dec 1994 | A |
5388215 | Baker et al. | Feb 1995 | A |
5410703 | Nilsson et al. | Apr 1995 | A |
5423003 | Berteau | Jun 1995 | A |
5438508 | Wyman | Aug 1995 | A |
5440744 | Jacobson et al. | Aug 1995 | A |
5442771 | Filepp et al. | Aug 1995 | A |
5522041 | Murakami et al. | May 1996 | A |
5539822 | Lett | Jul 1996 | A |
5548722 | Jalalian et al. | Aug 1996 | A |
5553239 | Heath et al. | Sep 1996 | A |
5553241 | Shirakihara | Sep 1996 | A |
5557747 | Rogers et al. | Sep 1996 | A |
5579222 | Baines et al. | Nov 1996 | A |
5581764 | Fitzgerald et al. | Dec 1996 | A |
5586304 | Stupek et al. | Dec 1996 | A |
5602991 | Berteau | Feb 1997 | A |
5642515 | Jones et al. | Jun 1997 | A |
5644718 | Belove et al. | Jul 1997 | A |
5668950 | Kikuchi et al. | Sep 1997 | A |
5671412 | Christiano | Sep 1997 | A |
5671414 | Nicolet | Sep 1997 | A |
5678007 | Hurvig | Oct 1997 | A |
5680548 | Trugman | Oct 1997 | A |
5680549 | Raynak et al. | Oct 1997 | A |
5692129 | Sonderegger et al. | Nov 1997 | A |
5694546 | Reisman | Dec 1997 | A |
5694550 | Takeda et al. | Dec 1997 | A |
5699526 | Siefert | Dec 1997 | A |
5706437 | Kirchner et al. | Jan 1998 | A |
5708960 | Kamisaka et al. | Jan 1998 | A |
5724525 | Beyers et al. | Mar 1998 | A |
5729682 | Marquis et al. | Mar 1998 | A |
5732219 | Blumer et al. | Mar 1998 | A |
5748493 | Lightfoot et al. | May 1998 | A |
5748897 | Katiyar | May 1998 | A |
5757925 | Faybishenko | May 1998 | A |
5758068 | Brandt et al. | May 1998 | A |
5761499 | Sonderegger | Jun 1998 | A |
5761662 | Dasan | Jun 1998 | A |
5764914 | Goto et al. | Jun 1998 | A |
5774668 | Choquier et al. | Jun 1998 | A |
5790664 | Coley et al. | Aug 1998 | A |
5809237 | Watts et al. | Sep 1998 | A |
5809287 | Stupek et al. | Sep 1998 | A |
5815665 | Teper et al. | Sep 1998 | A |
5826027 | Pedersen et al. | Oct 1998 | A |
5832219 | Pettus | Nov 1998 | A |
5835911 | Nakagawa et al. | Nov 1998 | A |
5838911 | Resenhauser et al. | Nov 1998 | A |
5845077 | Fawcett | Dec 1998 | A |
5859978 | Sonderegger et al. | Jan 1999 | A |
5859979 | Tung et al. | Jan 1999 | A |
5862339 | Bonnaure et al. | Jan 1999 | A |
5867661 | Bittinger et al. | Feb 1999 | A |
5881144 | Havens | Mar 1999 | A |
5884039 | Ludwig et al. | Mar 1999 | A |
5886991 | Guarneri et al. | Mar 1999 | A |
5905860 | Olsen et al. | May 1999 | A |
5918213 | Bernard et al. | Jun 1999 | A |
5919247 | Van Hoff et al. | Jul 1999 | A |
5923885 | Johnson et al. | Jul 1999 | A |
5925127 | Ahmad | Jul 1999 | A |
5930357 | Fukui | Jul 1999 | A |
5933646 | Hendrickson et al. | Aug 1999 | A |
5937162 | Funk et al. | Aug 1999 | A |
5940074 | Britt et al. | Aug 1999 | A |
5940504 | Griswold et al. | Aug 1999 | A |
5941949 | Pedersen | Aug 1999 | A |
5949975 | Batty et al. | Sep 1999 | A |
5956485 | Perlman | Sep 1999 | A |
5956490 | Buchholz et al. | Sep 1999 | A |
5961586 | Pedersen | Oct 1999 | A |
5978848 | Maddalozzo, Jr. et al. | Nov 1999 | A |
5991402 | Jia et al. | Nov 1999 | A |
5995965 | Experton | Nov 1999 | A |
5999740 | Rowley | Dec 1999 | A |
6006035 | Nabahi | Dec 1999 | A |
6009274 | Fletcher et al. | Dec 1999 | A |
6009469 | Mattaway et al. | Dec 1999 | A |
6012100 | Frailong et al. | Jan 2000 | A |
6029201 | Neill | Feb 2000 | A |
6035423 | Hodges et al. | Mar 2000 | A |
6038595 | Ortony | Mar 2000 | A |
6044403 | Gerszberg et al. | Mar 2000 | A |
6047323 | Krause | Apr 2000 | A |
6047376 | Hosoe | Apr 2000 | A |
6049670 | Okada et al. | Apr 2000 | A |
6049671 | Slivka et al. | Apr 2000 | A |
6049789 | Frison et al. | Apr 2000 | A |
6052711 | Gish | Apr 2000 | A |
6052725 | McCann et al. | Apr 2000 | A |
6058425 | White | May 2000 | A |
6058426 | Godwin et al. | May 2000 | A |
6073214 | Fawcett | Jun 2000 | A |
6078931 | Motoyama | Jun 2000 | A |
6088451 | He et al. | Jul 2000 | A |
6088717 | Reed et al. | Jul 2000 | A |
6101527 | Lejeune et al. | Aug 2000 | A |
6101542 | Miyamoto et al. | Aug 2000 | A |
6105063 | Hayes, Jr. | Aug 2000 | A |
6105066 | Hayes, Jr. | Aug 2000 | A |
6108420 | Larose et al. | Aug 2000 | A |
6108712 | Hayes et al. | Aug 2000 | A |
6115743 | Cowan et al. | Sep 2000 | A |
6119162 | Li et al. | Sep 2000 | A |
6119163 | Monteiro et al. | Sep 2000 | A |
6128644 | Nozaki | Oct 2000 | A |
6128776 | Kang | Oct 2000 | A |
6131121 | Mattaway et al. | Oct 2000 | A |
6134591 | Nickles | Oct 2000 | A |
6134593 | Alexander et al. | Oct 2000 | A |
6138160 | Boies et al. | Oct 2000 | A |
6141759 | Braddy | Oct 2000 | A |
6144960 | Okada et al. | Nov 2000 | A |
6151643 | Cheng et al. | Nov 2000 | A |
6154781 | Bolam et al. | Nov 2000 | A |
6157944 | Pedersen | Dec 2000 | A |
6161137 | Ogdon et al. | Dec 2000 | A |
6167449 | Arnold et al. | Dec 2000 | A |
6169976 | Colosso | Jan 2001 | B1 |
6173316 | De Boor et al. | Jan 2001 | B1 |
6189146 | Misra et al. | Feb 2001 | B1 |
6202207 | Donohue | Mar 2001 | B1 |
6223291 | Puhl et al. | Apr 2001 | B1 |
6256668 | Slivka et al. | Jul 2001 | B1 |
6269393 | Yost et al. | Jul 2001 | B1 |
6269456 | Hodges et al. | Jul 2001 | B1 |
6271846 | Martinez et al. | Aug 2001 | B1 |
6272536 | Van Hoff et al. | Aug 2001 | B1 |
6282709 | Reha et al. | Aug 2001 | B1 |
6282711 | Halpern et al. | Aug 2001 | B1 |
6292889 | Fitzgerald et al. | Sep 2001 | B1 |
6314167 | Johnson | Nov 2001 | B1 |
6327617 | Fawcett | Dec 2001 | B1 |
6339826 | Hayes et al. | Jan 2002 | B2 |
6347336 | Song et al. | Feb 2002 | B1 |
6374229 | Lowrey et al. | Apr 2002 | B1 |
6405266 | Bass et al. | Jun 2002 | B1 |
6460140 | Schoch et al. | Oct 2002 | B1 |
6510466 | Cox et al. | Jan 2003 | B1 |
6546002 | Kim | Apr 2003 | B1 |
6574612 | Paolo et al. | Jun 2003 | B1 |
6594819 | Ciarlante et al. | Jul 2003 | B1 |
6615258 | Barry et al. | Sep 2003 | B1 |
6658452 | Becker et al. | Dec 2003 | B1 |
6782527 | Kouznetsov et al. | Aug 2004 | B1 |
6826398 | Lagerstrom et al. | Nov 2004 | B1 |
6931546 | Kouznetsov et al. | Aug 2005 | B1 |
6938080 | Kahveci et al. | Aug 2005 | B1 |
6968384 | Redding et al. | Nov 2005 | B1 |
6990660 | Moshir et al. | Jan 2006 | B2 |
7035918 | Redding et al. | Apr 2006 | B1 |
7062567 | Benitez et al. | Jun 2006 | B2 |
7072934 | Helgeson et al. | Jul 2006 | B2 |
7200632 | Greschler et al. | Apr 2007 | B1 |
7275095 | Lebouill | Sep 2007 | B1 |
20010047386 | Domenikos | Nov 2001 | A1 |
20010049632 | Rigole | Dec 2001 | A1 |
20020010776 | Lerner | Jan 2002 | A1 |
Number | Date | Country |
---|---|---|
2268683 | Oct 2000 | CA |
0332304 | Sep 1989 | EP |
05-274275 | Oct 1993 | JP |
06-223040 | Aug 1994 | JP |
07-200492 | Aug 1995 | JP |
08-137768 | May 1996 | JP |
09-054734 | Feb 1997 | JP |
09-305675 | Nov 1997 | JP |
10-187455 | Jul 1998 | JP |
11-007391 | Jan 1999 | JP |
04-23JP04-23541 | Aug 1999 | JP |
2000-022753 | Jan 2000 | JP |
2000-030889 | Jan 2000 | JP |
2000-047870 | Feb 2000 | JP |
2000-132397 | May 2000 | JP |
1008262 | Nov 1999 | NL |
1012322 | Dec 2000 | NL |
2155984 | Oct 2000 | RU |
507319 | Sep 1997 | SE |
WO9220022 | Dec 1992 | WO |
WO0072185 | Nov 2000 | WO |
WO0101313 | Jan 2001 | WO |
Number | Date | Country | |
---|---|---|---|
20060021014 A1 | Jan 2006 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 09766469 | Jan 2001 | US |
Child | 11154891 | US |