Abstract:
The invention enhances automatic incident control, problem control, and problem prevention using information provided by the analysis or analysis data. The burden on the part of both users and providers to resolve problems is reduced by using a method of automatic analysis data upload and intelligent problem analysis and resolution. Problems are better identified, investigated, diagnosed, recorded, classified, and tracked until affected services return to normal operation and errors trends are used to proactively prevent future problems.

Description:
FIELD OF THE INVENTION  
       [0001]     The invention relates to the electronic transfer of analysis data used to diagnose system errors. The analysis data is compiled in multiple forms.  
       BACKGROUND OF THE INVENTION  
       [0002]     Networks operate between a number of computers to transfer information between a provider and a user. However, communications between the providers and users that selectively interact with each other are prone to problems involving hardware, software, and user error. Such problems commonly occur in e-commerce, messaging, application hosting, or knowledge management. Various approaches are used to manage problems in order to minimize the ill-effects of service disruption between Servers and Clients.  
         [0003]     One conventional approach to problem management includes the provider providing a “help desk” that may or may not be staffed with a person providing live assistance. This approach requires the user to identify that there is a problem and contact the provider help desk. Once contact is made, the user must describe the problem and provide information to the provider regarding the client&#39;s hardware, software, and operating status. Often a user does not know how to identify or to explain what is causing the problem or how to begin going about fixing the problem. This method of problem management requires heavy involvement of time, energy, expense, and even annoyance of both the user and provider as both parties must verbalize the electronic malfunction and solutions.  
         [0004]     Another conventional method for problem management is the provider&#39;s supplying software updates on CD-ROMS or diskettes that the user can upload onto the system. Providers typically send updates to all known users of using their software. Provider updates by mail, email, or by download is expensive and inefficient as not every user is desirous of the update nor will install it. Further, the user must have some knowledge, time, and effort to successfully install the updates.  
         [0005]     Another problem management method known in the art is the provision of software updates in electronic “patches,” or bundles of new computer code, that overwrite or replace improperly functioning code. Patches may be provided on-line through the Internet or in the form of hardware updates discussed above.  
         [0006]     Patches are used to preemptively treat specific problems or possible problems manifesting from errors. The implementation of patch computer code may be embedded as an automatic function in the underlying software such that any updates delivered from the provider are automatically incorporated into the user&#39;s software program. Alternatively, implementation of patch code requires the user to selectively incorporate the patch computer code. In this instance, the user is notified that a new patch is available, questioned as to whether they would like to download the patch, and then the user is prompted to download the new computer code.  
         [0007]     However, there are several limitations related to the use of patch technology. Patches only treat problems already known by the provider. Patches do not address hardware or error specific to a particular user. Further, patches do not provide an immediate fix for those users first encountering problems that lead to the creation of patches; hence, users encounter longer waits for solutions to those problems that is resolved by patches.  
         [0008]     In addition to handling individual problems, conventional problem management often involves the collection of information during problem resolution to be used by providers to reduce the impact, recurrence, and to correct the underlying causes of the problems. Providers traditionally compile information gathered from customer service representatives and other customer response mechanisms to mitigate problem occurrence.  
       SUMMARY OF THE INVENTION  
       [0009]     The present invention relates to an improved method for problem management and resolution between providers and users. The present invention is a method and apparatus for providing users with a method of uploading analysis data to a central analysis data database for use in problem management and/or resolution. The systems and method support the provision of specific service solutions, and eliminates many of the difficulties involved in conventional problem management. The system and method assist users with compressing and emailing analysis data, as well as with sharing and retrieving data files. Users are automatically enabled or selectively enabled to upload analysis data to a server at the discretion of either the user or the provider. The present invention enables providers to automatically collect and compare error data useful in improving the provider&#39;s service by enhancing the ability to detect and forecast problems, thereby enhancing the workability of their product.  
         [0010]     The method includes one or more steps. Users select or are prompted to upload analysis data when the user, client, provider or server detects a problem. The analysis data is uploaded to the server with or without the knowledge of the user. In an embodiment, the analysis data are transmitted transparently between the user and the provider. The transparent transmission takes place without the user being aware that the files are being transferred. In an embodiment, the user may start the analysis data capture but all other features are not made known to the user, including the status of gathering the analysis data and the transmission of the analysis data to the server. Initiating the analysis data capture can also be performed by the provider and the user can be completely unaware that any gathering and transmission of data is taking place.  
         [0011]     Analysis data can be stored or reside on one or more servers and the servers can be used to diagnose and treat problems.  
         [0012]     The method for problem management includes, identifying the problem, capturing the pertinent analysis data to be used in resolution of that problem, sending analysis data to the server, organizing analysis data so that it can be easily accessed and analyzed, maintaining analysis data so that clients&#39; analysis data is compared or studied, analyzing analysis data via automated computer programs or human intervention, and responding to client problems and/or user concerns.  
         [0013]     Analysis data can consist of data recorded during the operation of one or both the user&#39;s client or device and the provider&#39;s service. The analysis data contains usage data, performance data, errors, warnings, and operational information. Analysis data can be written to files or databases, either in a standard format or a proprietary format. Analysis data can also include a history of what happened to a user&#39;s hardware and/or software, a provider&#39;s server, server network, and/or software or the communication between the two including bandwidth status between both the provider&#39;s servers and the provider and the user. Log files are one way to detect and trace an intrusion by a hacker, trace the reason behind a server failure, gather data for capacity planning, or determine which network sites were visited by the user.  
         [0014]     The method of automatically uploading analysis data according to preset user preferences provides several benefits over conventional methods of problem management and resolution. Users have greater control over computer functionality and providers have a method of providing users with either automatic or live customer service with reduced or no intrusion into users&#39; time, energy, or computer resources. 
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0015]     The above and still further objects, features and advantages of the present invention will become apparent upon consideration of the following detailed description of a specific embodiment thereof, especially when taken in conjunction with the accompanying drawings wherein like reference numerals in the various figures are utilized to designate like components, and wherein:  
         [0016]      FIG. 1  is a diagram of the present invention;  
         [0017]      FIG. 2  is a flow chart of an embodiment of a method of the present invention;  
         [0018]      FIG. 3  is a diagram illustrating an embodiment of analysis data of the present invention; and  
         [0019]      FIG. 4  is a diagram of an embodiment of the directory structure of the present invention. 
     
    
     DETAILED DESCRIPTION OF EMBODIMENTS  
       [0020]     The system and method assist in problem management and resolution encompassing many types of problems and errors. In addition to problems typically dealt with using conventional problem management methods, the system can automatically diagnose problems arising from incompatibility of programs maintained on a user&#39;s device, and problems attributable to the disruptions in the routine transmission of electronic information. Problems redressed using the system arise from user error, or hardware, software, electrical, weather, satellite, or network, including the Internet, connection problems.  
         [0021]      FIG. 1  illustrates a basic system of the present invention. A user  100  utilizes a device  102  connected over a network  104  to a provider&#39;s  106  system, typically including one or more servers  108 . The user&#39;s devices  102  can include a computer  102   a , a cellular telephone  102   b , a PDA/pager/Blackberry®  102   c , an portable media player  102   d , or entertainment device  102   e , including stereos, DVD/VHS players, game systems (e.g. PS2®, X-Box®) or any networked device both stationary or portable. User device  102  can, in one embodiment, run a client  104  which can be the software allowing the user  100  to access sever  108 . The user  100  can connect to the network  110  using any method known in the art, including telephone, DSL, cable, wireless and satellite. Network  110  can be a LAN, WAN and/or include the Internet.  
         [0022]     The provider&#39;s  106  system can include one or more servers  108  to run the service accessed by user  100 , and store and analyze analysis data. The provider  106  can distribute the functionally, across multiple servers, each server handling one of more specific tasks, or each server handling all tasks.  
         [0023]      FIG. 2  illustrates a flow chart of a method of error management and resolution. The method for resolving an error on a user device includes the steps of identifying the error on the user device (step  200 ). The user device  102  can be one or more of the devices described above. Also, the identifying step can include the server  108  identifying the error on the user device  102 . In this embodiment, the server  108  is monitoring the status of the client  104  and/or device  102  and if the server  108  notices instabilities that could lead to an error or an error itself, it can initiate the error correction procedure.  
         [0024]     Another step is the capturing step (step  202 ) which can include the steps of copying a client file  302  from the user device  102  (step  216 ), copying a device file  304  from the user device  102  (step  218 ), and copying a server file  306  (step  220 ).  
         [0025]     Analysis data  300 , as illustrated in  FIG. 3 , can include many different types of files and data. In one embodiment, a client file  302  contains information regarding the client error, the client software and the user&#39;s  100  use of the client software, including the version of the software, any updates or patches, and a history of usage, including times the client is active and sites within the provider&#39;s  106  system that the user  100  frequents.  
         [0026]     Analysis data  300  can also contain device file  304 . Device file  304  can contain all the information related to the user device  102 , including a listing of the hardware associated with the device  102  (e.g. memory capacity and allocation, drives, communication devices, printers, wireless links, peripherals, CPU usage), the software associated with the device  102  includes the operating systems, internet browser, media player, burning utility and all other programs. Device file  304  can also include data relating to any device errors occurring concurrent with the client error or within a predetermined period prior to the client error.  
         [0027]     Analysis data  300 , in an embodiment, can include a server file  306  that contains all the information pertaining to the server  108  that the user  100  encountered the error on and/or the server  108  the user  100  is communicating the error to. Server file  306  can contain hardware and software information present on the server  108 , any hardware or software server errors the server  108  encountered contemporaneously with the client error or within a predetermined period surrounding the client error. Further, the server file  306  can contain information related to communication over the network between the server  108  and the device  102  or between servers  108 , or both, including available bandwidth, network usage, and upload/download bit rates, active ports, etc. A user&#39;s  100  history of usage can also be included in the server file  306 , this can be in addition to or instead of the history provided in the client file  302 .  
         [0028]     Analysis data  300  in general contains usage data, performance data, errors, warnings, burn engine logs, DRM files, snap logs, installer logs, and operational information. Analysis data  300  is preferably written to files or databases in a standard format. However, a proprietary format can also used. In an embodiment, the analysis data  300  can be taken as a “snapshot” of the client  104 , device  102  and/or server  108  files contemporaneous with the client error.  
         [0029]     Alternately, or in addition to, the client  104  and/or the server  108  maintains rolling analysis data. Analysis data  300  can be recorded continuously and then older data is erased as new information continues to be entered. In another embodiment, the analysis data  300  is collected and deleted at set intervals. For example, separate, new files are created containing the log entries for a given time period, every hour, every day, every week, every month, etc. Other embodiments delete older log entries when the log file reaches its maximum size or wraparound. Regardless of the embodiment employed, using a set logging policy ensures a consistent and accurate capturing methodology. The system can be preset to capture analysis data  300  in particular ways and/or set to a user preference based on processing speed, frequency of use and storage capacity. Further, the capturing step (step  202 ) can be dynamic, capturing different elements of the analysis data  300  using different capture embodiments depending on actual use of the device and/or client.  
         [0030]     Returning to  FIG. 2 , another step can be encrypting the analysis data (step  204 ). The analysis data  300  is encrypted, in one embodiment, prior to transmitting the analysis data  300  to server  108 . Encryption can also include compressing the analysis data  300  using standard compression algorithms. In one embodiment, analysis data  300  can be encrypted using encryption protocol established by the server  108 . In another embodiment, the analysis data  300  can be encrypted using an encryption protocol determined by the client  104  or the user  100 . The server  108  is then provided with a key to decrypt the analysis data  300 .  
         [0031]     Another step is transmitting the analysis data  300  to server  108  (step  206 ). In one embodiment, problems can be automatically detected by the server  108  or client  104  and analysis data  300  can be transmitted to the server  108  without any action or knowledge on the part of the user  100 . In another embodiment, user  100  identifies a problem, error or concern and transmits analysis data  300 . In this instance, the user  100  can select which analysis data  300  to transmit (client file  302 , device file  304  and/or server file  306  or portions thereof) and uploads them to the server  108 . Alternatively, the analysis data  300  may be automatically prepared and transmitted to the server  108  under the direction of the user  100 . In one embodiment, the server  108  displays to the user  100  a modal dialog with a progress bar indicating the progress of the transmission.  
         [0032]     Analysis data  300  is typically transmitted to the server  108  via a network connection  110 , for example, over the Internet. The transmission to the server  108  can be set to occur immediately upon acknowledgement of a problem, or at such other time as designated by the user  100 .  
         [0033]     In an embodiment, transmitted analysis data  300  can include everything in a designated directory. Client  302  and device  304  files can be stored locally on device  102  or stored remotely on external memory or another device. For example, if the user device  102  has a small onboard memory for analysis data storage, for example, portable media player  102   d , the analysis data  300  can be stored on computer  102   a  and transmitted from computer  102   a  to server  108 . Analysis data  300  on user device  102  can be synchronized with the storage device either at regular intervals or whenever the user device  102  and storage device are in communication.  
         [0034]     A further embodiment can transmit analysis data  300  for every device  102  to server  108  once an error is detected on any device  102 . Alternately, analysis data  300  for related devices  102  can be transmitted once an error is detected on either device  102 . For example, an error can occur on portable media player  102   d  and analysis data  300  for both portable media player  102   d  and computer  102   a  that typically stores analysis data  300  for, or synchronizes with, portable media player  102   d.    
         [0035]     Accuracy can be an important factor. In one embodiment, a file format for the upload is a CAB file because the API is standard on Windows platforms and another format requires a compression and packaging library to be added to the client. However, other file formats are also used.  
         [0036]     In an embodiment, the user  100  transmits analysis data  300  to the server  108  using a standard HTTP PUT, with the packaged file as the PUT data. HTTPS is not required since the post data is encrypted.  
         [0037]     Analysis data  300  received by server  108  can be organized for storage (step  208 ). Organization can include the steps of creating a first level directory  402  (step  222 ), a second level directory  404  under the first level directory  402  (step  224 ), and storing the analysis data  300  (step  226 ).  FIG. 4  illustrates one embodiment of the storage structure. Alternately, the second level directory can be a hyperlink directing the provider  106  to the analysis data  300  stored elsewhere, including on the user device  102 .  
         [0038]     The directory of transmitted analysis data can be used to address problems on an individual basis or shared problems on a collective basis. In an embodiment, the directory structure is based on a first level directory  402  under a root directory  400  using the user&#39;s name and contact information. The second level directory  404  can use a timestamp of the transmission or receipt of the transmission. The analysis data  300  can be stored under the second level directory  404 . The timestamp permits separation of multiple uploads from the same user  100  and facilitates tracking of problem solving efficiency. Separating analysis data  300  by user name simplifies access and retrieval.  
         [0039]     The directory structure operates to facilitate both identification of the user 100  and/or client  104 , resolution of the problem encountered by the user 100  and/or client  104  and identification of problems shared by multiple users/clients occurring close together in time. The directory identifies the contact information of the user and can notify the provider  106  and/or the user  100  that the user  100  is having a problem and provides the contact information of parties whether notified or not. In another embodiment, the provider  106  is only notified of a client problem when that problem is not fixed automatically by the server  108  and/or when the problem requires human intervention.  
         [0040]     The information stored in the directory is searched to identify recurring problem types, seriousness, and frequency. The information gathered from the directory is used to target treatment of the specific problem encountered by any specific user, to treat any problem shared by a class of users, or to take preemptive action by creating and making available patches or updates.  
         [0041]     In an embodiment, any analysis data  300  sent to the server  108  is copied and stored on the user device  102  (step  228 ) until such time as the problem is resolved. Thus, one embodiment is that copies of the client file  302  and the device file  304  are copied and a copy of the server file  306  is transmitted to the device  102 . Saving a copy of the analysis data  300  to the user device  102  can be a security measure to ensure that the server  108  receives the analysis data  300  for problem analysis. In the event that the first attempt to transmit analysis data  300  to the server  108  is not successful, the client  104  either automatically, or under the direction of the user  100 , makes repeated attempts to send analysis data  300  to the server  108 . Upon resolution of the problem, the copied analysis data  300  on the user device  102  can be either deleted or saved, either automatically by the client  104 , or by selection of the user  100 . In another embodiment, transferred analysis data is not stored on the user device  102 .  
         [0042]     In the embodiment where analysis data  300  was encrypted (step  204 ) the server  108  can decrypt the analysis data  300  (step  210 ). Decryption can also include decompression of the analysis data  300 . The analysis data  300  can be stored on server  108  encrypted and/or compressed and decrypted/decompressed prior to analysis. Alternately, the analysis data  300  can be decrypted and/or decompressed prior to storage. The server  108  can be automated so that any analysis data  300  received are unpackaged and decrypted, if necessary.  
         [0043]     The analysis data  300  is analyzed to determine the problem (step  212 ). The underlying problem or error may be automatically diagnosed by the server  108  and fixed without human assistance, with or without the knowledge of the user  100  and/or provider  106 . This embodiment is fully transparent and no human party is aware of the diagnosis and repair. In another embodiment, the server  108  undertakes to resolve the problems encountered by client  104 /user  100  as outlined in log data  300 . If no solution is forthcoming, the server  108  notifies the provider  106  and/or the client  104 /user  100  that further contact or diagnosis beyond the initial analysis data  300  is necessary to resolve the problem.  
         [0044]     In another embodiment, the diagnosis of the underlying problem is undertaken by a third party acting on behalf of the provider  106 , with or without notice provided to the user  100 . The third-party can be another server  108  or provider  106 , such as a customer service representative.  
         [0045]     Access to the analysis data  300  is restricted to use for legitimate purposes only. In an embodiment, the server does not undertake to resolve the problem, but merely organizes and maintains log files. The analysis data  300  stored by the server is analyzed by the third party, and notice may not be provided to the user  100 . Access to the server can be restricted to only intended third-party recipients. The server  108  can be protected when the analysis data  300  is stored decrypted. Protections can include either using an authentication protocol, restricting it to the internal IPs, or another method.  
         [0046]     In an embodiment, users&#39; problems are managed by the server and the provider without any input from the user. The problem is diagnosed and the solution is directly implemented. The problem is diagnosed using a computer program stored on or implemented by the server  108 . User  100  may or may not be aware that their computer had a problem and is being, or has been serviced.  
         [0047]     In the event that the server  108  is unable to resolve the problem automatically and requires only assistance on the part of the user  100 , the user  100  is notified as to steps to take to either resolve or mitigate a problem. The provider  106  can also be notified as to any problem and directions provided to the user  100  by the server  108 .  
         [0048]     In another embodiment, in the event that the server is unable to resolve the problem automatically and requires only assistance on the part of the provider  106 , the provider  106  or a representative of the provider  106  is notified and acts to resolve the problem using the analysis data  300  on the server  108 . In this instance, user  100  may or may not be notified of the problem being resolved by the provider  106 .  
         [0049]     In a further embodiment, user  100  is aware of a problem, and log data  300  is either automatically transmitted or actively transmitted by the user  100  to the server  108 . As above, the server  108  either automatically resolves the problem and/or the provider  106  provides further assistance, if necessary. Notice to the user  100  regarding resolution of the problem is optionally provided.  
         [0050]     Once the analysis is performed, a resolution to the error, based on the analysis of the analysis data  300 , is communicated to the user (step  214 ). The resolution can be instructions to reboot the system, information regarding conflicting software, notification and/or the purging of a virus, a client upgrade or patch, a link to a third party software provider to upgrade other software present on the user device  102  or notification that the error was caused by the provider or a third party.  
         [0051]     The resolution of the error and/or problem can include providing appropriate patches, notification of appropriate hardware or software, instructions to the user regarding any steps to take in order to resolve the problem, notification to the user to contact the provider for live assistance with or without the provider&#39;s contact information, notification to the user of any problems resolved, notification to the provider to undertake analysis of problems not capable of resolution by the server, notification to the provider to contact the user, with or without the user&#39;s contact information, and notification to the user and/or the provider of any systemic or network failure not attributable to either the client or the provider.  
         [0052]     Embodiments of the invention include, the server  108  processing the transmission by decompressing and/or decrypting the analysis data  300 . The analysis data  300  is stored into a directory structure that facilitates identification, analysis and comparison of the analysis data  300 . The server  108  can be accessed by the provider  106  to retrieve the analysis data  300 .  
         [0053]     The analysis data  300  can alternately be accessed by the user  100 , the provider  106  or a third party. Third party access to the analysis data requires rights to access the information for legitimate purposes.  
         [0054]     Analysis data  300  can be maintained to facilitate problem resolution, monitor server effectiveness, and assist analysis of collective problems. The server  108  can maintain the analysis data  300  in an organized fashion. In one embodiment, the server  108  deletes analysis data  300  upon resolution of the problem. Alternately, the server  108  compiles the analysis data  300  according to how problems were resolved.  
         [0055]     Continued long term storage of analysis data  300  can be costly and resource intensive. Numerous embodiments maintain and/or expunge analysis data  300  stored on the server  108 . Removing older analysis data  300  regularly, preferably to tertiary storage, mitigates storage and maintenance concerns. In an embodiment, the server limits any single upload size. In an embodiment, the server  108  has a rolling storage system where only the most recent analysis data  300  from the user  300  is stored. The storage capacity of the server  108  can be actively monitored in case of spikes in transmissions. Further, where user  100  selects to transmit log data, repository maintenance prevents users from disrupting service by transmitting impromptu analysis data.  
         [0056]     Alternate embodiments include, the directory having three basic interfaces including, a browse, a search and a retrieval interface. The browse interface provides the ability to browse user names and files using the underlying directory structure. This interface is ideal for finding transmitted analysis data  300  when the user name is known. The search interface provides the ability to find analysis data based on a user name string with an optional time range. In one embodiment, the user name string includes wildcards (for example, to find all users, starting with the first three letters “foo*”). The result of the search is a list of matching user names that meet the search criteria. The retrieval interface is displayed when a user name is selected, either from the browse or search interface. This interface shows a list of timestamps  404  representing each unique analysis data  300  from the client  104  invoked from a user  100 . Each timestamp  404  can be a hyperlink to the list of files, from which the user  100  clicks to view or download the file.  
         [0057]     In another embodiment, the directory contains an interface that notes the problem solved and the result obtained for each upload. This interface is ideal for searching the contents of the directory for the frequency of certain problems and the manner of their subsequent resolution. This interface facilitates problem prevention by permitting an overall analysis of problem management efficiency and efficacy.  
         [0058]     In one embodiment the user receives notification that a problem was detected on the client  104  or device  102  either by the client  104  or the server  108 , that analysis data  300  has been transmitted to the server  108 , the results of any automatic analysis data analysis, and, if necessary, the need to seek live assistance by calling the provider, or customer support offered by the provider, and is provided with the contact information of the provider.  
         [0059]     While there have been shown, described, and pointed out fundamental novel features of the invention as applied to a preferred embodiment thereof, it will be understood that various omissions, substitutions, and changes in the form and details of the devices illustrated, and in their operation, may be made by those skilled in the art without departing from the spirit and scope of the invention. For example, it is expressly intended that all combinations of those elements and/or steps which perform substantially the same function, in substantially the same way, to achieve the same results are within the scope of the invention. Substitutions of elements from one described embodiment to another are also fully intended and contemplated. It is also to be understood that the drawings are not necessarily drawn to scale, but that they are merely conceptual in nature.