Abstract:
Systems, methods, and computer program products are provided for synchronizing device settings at a mobile device with settings held at a database in a synchronization server. This settings exchange mechanism is further extended to provide versioning information used in an auto upgrade process, in which the synchronization server is configured to push updates to the mobile device. Additional systems, methods, and computer program products are provided for configuring logging preferences on the mobile device from a server, and further for silently retrieving logs generated on the mobile device to the server.

Description:
BACKGROUND OF INVENTION 
       [0001]    1. Field of the Invention 
         [0002]    The present invention relates generally to enterprise networks and, more specifically, to synchronization and logging on mobile devices. 
         [0003]    2. Description of the Background Art 
         [0004]    In an enterprise environment, administrators need the ability to properly control devices attached to the enterprise network, and to diagnose the devices, without requiring intervention from end-users of the devices. Presently, it is necessary for administrators to perform many configuration functions manually on mobile devices attached to enterprise e-mail systems. In order to have remote access to the devices, third-party applications may be used specifically for this function, which results in significant overhead. This is similarly the case with device logging mechanisms. Installing and maintaining these components requires occasional user intervention, as the processes are under the mobile device user&#39;s control. 
         [0005]    Accordingly, what is desired is a mechanism for performing configuration and diagnostic functions using an existing enterprise framework. 
       SUMMARY OF INVENTION 
       [0006]    Embodiments of the invention include a server comprising a system configuration database, a settings exchange object configured to push an administrator modification made to the system configuration database to a client device, an auto upgrade object configured to push an upgrade component to the client device, and a trace and diagnostic object configured to silently pull a log generated by a logging process on the client device. 
         [0007]    Embodiments of the invention also include a client device comprising a device settings module, a settings exchange module configured to receive a settings change from a server, an auto upgrade module configured to receive and apply an upgrade component, and a trace and diagnostic module configured to execute a logging process, and to silently provide a log generated by the logging process upon request by the server. 
         [0008]    Embodiments of the invention also include a method comprising defining a template comprising one or more template device settings, applying the template device settings to a system configuration for a client device at a synchronization server, and sending the template device settings to the client device, the client device configured to update a local device setting using the template device setting, to restart one or more components subsequent to the updating, and to read and use the updated local device setting in the one or more components subsequent to restarting. 
         [0009]    Embodiments of the invention also include a system comprising a synchronization server comprising a stored device version, the synchronization server configured to push an update component to a client engine based on a comparison of the stored device version and a version of the update component, and a device comprising the client engine configured to receive the update component, to apply the update component, to update a local device version, to restart the client engine, and to send the updated local device version to the synchronization server, wherein the synchronization server is further operable to replace the stored device version with the updated local device version. 
         [0010]    Embodiments of the invention also include a computer-readable medium having computer-executable instructions stored thereon that, if executed by a computing device, cause the computing device to perform a method comprising sending logging preferences to a client device, the client device configured to run a logging process based on the logging preferences, selecting the client device for access at a server, pulling one or more logs generated by the logging process silently from a client engine on the client device, and storing the one or more logs on the server. 
         [0011]    Embodiments of the invention also include a method comprising receiving a settings change from a server, the settings change being made to a system configuration database at the server, applying the settings change to a local device setting, executing a logging process, and silently providing a log generated by the logging process upon request by the server. 
         [0012]    Embodiments of the invention also include a computer-readable medium having computer-executable instructions stored thereon that, if executed by a computing device, cause the computing device to perform a method comprising receiving a settings change from a server, the settings change being made to a system configuration database at the server, applying the settings change to a local device setting, executing a logging process, and silently providing a log generated by the logging process upon request by the server. 
         [0013]    Embodiments of the invention also include a method comprising modifying a setting in a system configuration database, pushing the modified setting to a client device for application at the client device, the client device configured to restart one or more components of the client device after the application, and pushing an upgrade component to the client device. 
         [0014]    Further features and advantages of the invention, as well as the structure and operation of various embodiments of the invention, are described in detail below with reference to the accompanying drawings. It is noted that the invention is not limited to the specific embodiments described herein. Such embodiments are presented herein for illustrative purposes only. Additional embodiments will be apparent to persons skilled in the relevant art(s) based on the teachings contained herein. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0015]    The accompanying drawings, which are incorporated herein and form a part of the specification, illustrate embodiments of the present invention and, together with the description, further serve to explain the principles of the invention and to enable a person skilled in the relevant art to make and use the invention. 
           [0016]      FIG. 1  depicts a mobile data environment, in accordance with an embodiment of the present invention. 
           [0017]      FIG. 2  illustrates interfaces between a mobile office server and a mobile device, in accordance with an embodiment of the present invention. 
           [0018]      FIG. 3  is a flowchart illustrating steps by which an administrator can modify a device setting using a synchronization server, in accordance with an embodiment of the present invention. 
           [0019]      FIG. 4  is a flowchart illustrating steps by which settings exchange through the synchronization server handles settings changes originating from the device, in accordance with an embodiment of the present invention. 
           [0020]      FIG. 5A  illustrates a user-interface by which an administrator is able to modify device settings at a synchronization server, in accordance with an embodiment of the present invention. 
           [0021]      FIG. 5B  illustrates a user-interface by which an administrator is able to modify device settings at a synchronization server which pertain to the display of e-mail, in accordance with an embodiment of the present invention. 
           [0022]      FIG. 5C  illustrates a user-interface by which an administrator can associate a group of settings and their values with a template, in accordance with an embodiment of the present invention. 
           [0023]      FIG. 6  is a flowchart illustrating steps by which a synchronization server can push a component upgrade to a mobile device, in accordance with an embodiment of the present invention. 
           [0024]      FIG. 7  is a flowchart illustrating steps by which an administrator can set trace and diagnostic behavior of a mobile device, in accordance with an embodiment of the present invention. 
           [0025]      FIG. 8  is a flowchart illustrating steps by which an administrator is able to utilize the logging behavior of a mobile device to review logging information obtained by a trace and diagnostic module of the mobile device, in accordance with an embodiment of the present invention. 
           [0026]      FIG. 9  depicts an example computer system in which embodiments of the present invention may be implemented. 
       
    
    
       [0027]    The present invention will now be described with reference to the accompanying drawings. In the drawings, generally, like reference numbers indicate identical or functionally similar elements. Additionally, generally, the left-most digit(s) of a reference number identifies the drawing in which the reference number first appears. 
       DETAILED DESCRIPTION 
     I. Introduction 
       [0028]    The following detailed description of the present invention refers to the accompanying drawings that illustrate exemplary embodiments consistent with this invention. Other embodiments are possible, and modifications can be made to the embodiments within the spirit and scope of the invention. Therefore, the detailed description is not meant to limit the invention. Rather, the scope of the invention is defined by the appended claims. 
         [0029]    It would be apparent to one of skill in the art that the present invention, as described below, can be implemented in many different embodiments of software, hardware, firmware, and/or the entities illustrated in the figures. Any actual software code with the specialized control of hardware to implement the present invention is not limiting of the present invention. Thus, the operational behavior of the present invention will be described with the understanding that modifications and variations of the embodiments are possible, given the level of detail presented herein. 
         [0030]      FIG. 1  depicts a mobile environment  100  which allows mobile devices  114   a - c  to synchronize email with email server  110  over a network  108 , in accordance with an embodiment of the present invention. While this embodiment is described in terms of email, it is applicable to other data objects. One skilled in the relevant arts will appreciate that any network, such as a corporate intranet or the Internet, comprised of wired or wireless interconnections, or several such interconnected networks, may be substituted for network  108 . One skilled in the relevant arts will further appreciate that additional devices, including non-mobile devices with wired connectivity, may be substituted for mobile devices  114   a - c . Mobile device  114   a  accesses network  108  via network access server  112   a  in order to send and receive email to and from email server  110 . Mobile devices  114   b  and  114   c  access network  108  via network access server  112   b  in order to synchronize email with email server  110 . 
         [0031]    Mobile devices  114   a - c  may be one of many devices commonly designated as mobile clients, such as, but not limited to, personal digital assistants (“PDAs”), devices operating according to the Microsoft Pocket PC specification with the Microsoft Windows® CE operating system, Symbian, PalmOSmobile phones, BlackBerry® devices, iPhone® devices, smart phones, hand held computers, palmtop computers, laptop computers, ultra-mobile PCs, and other wireless mobile devices capable of running mobile applications. 
         [0032]      FIG. 2  illustrates interfaces between a mobile office server and a mobile device, in accordance with an embodiment of the present invention. The mobile office server and mobile device environment  200  of  FIG. 2  includes a mobile office server  202 , which comprises synchronization server  102 , in accordance with an embodiment of the present invention. An auto upgrade object  208  and a settings exchange object  210  are each in communication with a system configuration database  205  (referred to herein as the “system configuration” or simply “database”), and further in communication with the mobile device  114  through the client interface  206  for the mobile device. 
         [0033]    Separately, within the mobile office server  202 , a trace and diagnostic object  220  is also in communication with the client interface  206  for mobile device  114 . An administrator  222  is shown in communication with synchronization server  102  and trace and diagnostic object  220 , in accordance with an embodiment of the present invention. 
         [0034]    One skilled in the relevant arts will appreciate that the auto upgrade object  208 , settings exchange object  210 , and the trace and diagnostic object  220  can each be present either alone or in combination with other objects in an embodiment of the present invention. Moreover, one skilled in the relevant arts will appreciate that the particular placement of the auto upgrade object  208 , settings exchange object  210 , and the trace and diagnostic object  220  within the mobile office server  202  framework can vary, and the particular layout of environment  200  is presented by way of example, and not limitation. 
         [0035]    Administrator  222  is a system in communication with the synchronization server  102  and the trace and diagnostic object  220 , in accordance with an embodiment of the present invention. One skilled in the relevant arts will appreciate that the administrator  222  can be in communication with any module present in mobile office server  202 , and the interfaces shown in environment  200  are presented by way of example, and not limitation. Furthermore, one skilled in the relevant arts will appreciate that administrator  222  may be a human user interacting directly with mobile office server  202  and its components, and need not be a separate system. 
         [0036]    The client interface  206  for mobile device  114  is operable to communicate messages to and from components of synchronization server  102 , such as settings exchange object  210  and auto upgrade object  208 , and trace diagnostic object  220  on mobile office server  202 , as well as client sync agent  212  in client engine  204 , in accordance with an embodiment of the present invention. Client sync agent is in communication with auto upgrade module  214 , settings exchange module  216 , and trace and diagnostic module  218  of client engine  204 , in accordance with a further embodiment of the present invention. Settings exchange module  216  is able to read and set device settings  224 , which are utilized by one or more components running on mobile device  114 , in accordance with an embodiment of the present invention. 
         [0037]    Although each of the aforementioned systems are illustrated as part of environment  200 , the settings exchange mechanisms of settings exchange object  210  and settings exchange module  216  can be implemented without also implementing the auto upgrade mechanisms of auto upgrade object  208  and auto upgrade module  214 , or the trace and diagnostic mechanisms of trace and diagnostic object  220  and trace and diagnostic module  218 . Accordingly, the various mechanisms are discussed separately below. 
       II. Settings Exchange 
     A. Settings Modified at the Synchronization Server 
       [0038]      FIG. 3  is a flowchart  300  illustrating steps by which an administrator, such as administrator  222 , can modify a device setting using synchronization server  102 , in accordance with an embodiment of the present invention. One skilled in the relevant arts will appreciate that modification of device settings by an administrator can be performed by a user granted administrator privileges, or by a process, device, or other component operating under administrator privileges. Other means by which a user, process, or device may be granted rights to modify device settings will also be readily apparent to one skilled in the relevant arts, and modification by way of an administrator  222  is presented by way of example, and not limitation. 
         [0039]    The method begins at step  302  and proceeds to step  304 , where an administrator  222  modifies a device setting at synchronization server  102 . By way of example, and not limitation, an administrator  222  is able to modify the settings for a particular device or user by adjusting the value of a setting as it is stored at system configuration database  205 . One skilled in the relevant arts will appreciate that a number of implementations exist for achieving this, including the use of a configuration object for the purpose of updating system configuration database  205 , direct modification, and modification through the settings exchange object  210 , among others. 
         [0040]    At step  306 , the synchronization server  102 , by way of the settings exchange object  210 , pushes the device setting to the client engine  204 , by way of client interface  206 , in accordance with an embodiment of the present invention. The synchronization server obtains the current setting from system configuration database  205 , which it uses to send to device  114 . In accordance with an embodiment of the present invention, the settings exchange protocol is optimized to only send one or more settings which have been changed. 
         [0041]    The client engine  204  receives the device setting, at the client sync agent  212 , which passes the device setting to the settings exchange module  216  for updating the device setting at step  308 . One skilled in the relevant arts will recognize that the precise architecture of mobile device  114  may be different, and the instant architecture is presented by way of example, and not limitation. Settings exchange module  216  applies the device setting received from synchronization server  102  to device settings  224 . Although device settings  224  is shown as a single module within mobile device  114 , device settings  224  may comprise a plurality of device settings located throughout various components of mobile device  114 . By way of example, and not limitation, device settings  224  comprise settings which affect display options for a mail client located on mobile device  114 . One skilled in the relevant arts will appreciate that other settings affecting other components, including, by way of example and not limitation, an operating system running on mobile device  114  or even firmware or hardware of mobile device  114 , may be modified by the techniques of flowchart  300 . 
         [0042]    At step  310 , the client engine  204  and associated processes restart, in accordance with an embodiment of the present invention. The term “processes” as used herein may refer to any component of mobile device  114 , including those operable to read and utilize device settings  224  for their configuration. One skilled in the relevant arts will recognize that such processes may include, by way of example and not limitation, an operating system running on mobile device  114 , various components running under the operating system, firmware running directly on mobile device  114 , including mobile device  114  itself, and other components. By restarting processes which rely on device settings  224 , the processes are efficiently updated to use the new device settings as stored in device settings  224 . Such processes are designed such that they implement clean shutdown mechanisms, ensuring that a restart is handled in a relatively safe manner. 
         [0043]    One skilled in the relevant arts will appreciate that other mechanisms for updating processes may be used, such as, by way of example and not limitation, notifying running processes of an update to device settings  224 . By notifying the running processes of an update, the processes can retrieve the updated device settings from device settings  224  without the need to restart. However, in an embodiment where processes have a clean shutdown mechanism, restarting the client engine  204  and the associated processes is the preferred embodiment, as it better ensures proper handling of the updated device settings by the processes. By restarting the processes, assuming such restarting can be handled safely, the process will be reinitialized with the current device settings  224 , and it is not necessary to rely on proper implementation of update routines by the process developers for satisfactory updating. However, either mechanism, as well as other update mechanisms, as will be recognized by one skilled in the relevant arts, may be employed. 
         [0044]    In accordance with an additional embodiment of the present invention, a process to be restarted at step  310  is only restarted if the changes to device settings  224  would affect the process. One skilled in the relevant arts will appreciate that a number of mechanisms exist for identifying which processes, including the client engine  204 , should be restarted, including, by way of example and not limitation, associating one or more settings from device settings  224  with a process, and only restarting the process if the one or more settings have been updated. Additionally, an update to device settings  224  which keeps the same setting value or has no effect on the process will result in the process not being restarted, in accordance with a further embodiment of the present invention. 
         [0045]    At step  312 , the client engine  204  and any running processes read and use the updated device settings  224  after the restart. The method ends at step  314 . 
       B. Settings Modified at the Mobile Device 
       [0046]      FIG. 4  is a flowchart  400  illustrating steps by which settings exchange through the synchronization server  102  handles settings changes originating from the mobile device  114 , in accordance with an embodiment of the present invention. The method begins at step  402  and proceeds to step  404  where a client modifies a device setting at the device. One skilled in the relevant arts will appreciate that the client making the modification could be a user or a system component, including hardware and software components, capable of modifying device settings  224 . Reference to a client is, therefore, by way of example, and not limitation. 
         [0047]    As above with step  310  of  FIG. 3 , the client engine and associated processes restart at step  406 , in accordance with an embodiment of the present invention. In accordance with a further embodiment of the present invention, as noted above, the client engine and associated processes restart only when device settings  224  are modified which require their restart. One skilled in the relevant arts will appreciate, as before, that other mechanisms for updating processes may be used, such as, by way of example and not limitation, notifying running processes of an update to device settings  224 . 
         [0048]    At step  408 , the client engine  204  sends an update to synchronization server  102 , in accordance with an embodiment of the present invention. In accordance with a further embodiment of the present invention, settings exchange module  216  detects changes made to device settings  224  and sends the updated settings to synchronization server  102  through client sync agent  212 , which in turn communicates with settings exchange object  210  on synchronization server  102  via client interface module  206 . The settings exchange module  216  is configured to send updates only for those device settings that have new values, in accordance with an additional embodiment of the present invention. 
         [0049]    The processing at step  410  involves resolving any conflicts between the received device settings and settings changes made by an administrator  222 . By way of example, and not limitation, a conflict may arise in the situation where an administrator modifies a device setting at synchronization server  102  per step  304  of  FIG. 3 , and a client modifies the same device setting at the mobile device  114  per step  404  of  FIG. 4 , during a same timeframe. This could occur, for example, if the administrator  222  modifies the device settings within system configuration  205  at the synchronization server  102  simultaneously with the client&#39;s modification of the device settings  224  at mobile device  114 . 
         [0050]    A conflict could also occur, for example, in the event that communications between client interface  206  and synchronization server  102 , or components thereof, have been interrupted. Communications between client interface  206  and synchronization server  102 , or components thereof, may include, by way of example and not limitation, the MOCA framework disclosed in U.S. patent application Ser. No. 12/104,905 to Jeide et al. (Atty. Dkt. No. 1933.0530001), filed Apr. 17, 2008, which is incorporated herein by reference in its entirety. One skilled in the relevant arts will recognize that other communications means may be utilized, and similar approaches for conflict resolution may be employed. If communications between client interface  206  and synchronization server  102 , or components thereof, have been interrupted, an update to device settings  224  would not be reflected within system configuration database  205  of synchronization server  102 . Neither would an update by administrator  222  to any device settings held in system configuration database  205  of synchronization server  102  be reflected on mobile device  114 . When communications between client interface  206  and synchronization server  102  are reestablished, a mechanism for resolving any conflicts in queued communications is employed, in accordance with an embodiment of the present invention. 
         [0051]    In accordance with an embodiment of the present invention, conflicts are resolved based on a timestamp on any settings exchange communications between client interface  206  and settings exchange object  210 . In a preferred embodiment utilizing timestamps for conflict resolution, mobile device  114  is synchronized to the system time of synchronization server  102 , such that the timestamps have a common reference point. One skilled in the relevant arts will recognize that other conflict resolution means may be employed, and the use of timestamps is presented by way of example, and not limitation. 
         [0052]    At step  412 , synchronization server  102 , by way of the settings exchange object  210 , retrieves the current device settings from system configuration database  205  and pushes them to client engine  204 , in accordance with an embodiment of the present invention. In the situation where the original client modification from step  404  has not been subject to a conflict with an administrator  222  modification at step  410 , this results in the echoing back of the client&#39;s own setting to the client engine  204 . Client engine  204 , particularly the settings exchange module  216 , then updates the device settings  224  using the received setting at step  414 , in accordance with an embodiment of the present invention. 
         [0053]    At step  416 , the client engine  204  and associated processes restart, in similar manner as with step  406 , in accordance with an embodiment of the present invention. However, as the restarting occurs only when a relevant device setting  224  change has been made, in accordance with a further embodiment of the present invention, it is unlikely that the client engine  204  and associated processes will restart at step  416 . If the client modifications to the device settings  224  at step  404  are not in conflict with any administrator  222  settings at step  410 , then the same settings are echoed back to client engine  204 . Using these settings to update device settings  224  will not result in a change to device settings  224 , and therefore there will be no need to restart the client engine  204  and associated processes at step  416 . However, if there has been a conflict with an administrator  222  setting at step  410 , then the device setting updated at step  414  by the client engine  204  could potentially be different from what was previously stored at device settings  224 . In this case, restarting the client engine  204  and associated processes at step  416  will enable the client engine  204  and associated processes to utilize the current device settings  224  as modified by the administrator  222 . 
         [0054]    At step  418 , the client engine  204  and any running processes read and use the updated device settings  224  after the restart. The method ends at step  420 . 
       C. Exemplary User Interfaces 
       [0055]      FIG. 5A  illustrates a user-interface  500  by which an administrator, such as administrator  222 , is able to modify device settings at synchronization server  102 , in accordance with an embodiment of the present invention. For example, an administrator  222  may utilize the user-interface  500  to perform modification step  304  of  FIG. 3 . 
         [0056]    User-interface  500  includes various categories  502  of settings such as, by way of example and not limitation, settings related to a calendar, client upgrades, and connections. Within each of the categories  502  are individual settings  504  and their current values  506 . An administrator modifying a device setting per step  304  of  FIG. 3  selects an individual setting  504  and adjusts the current value  506  associated with the individual setting  504 . After confirming the change (such as, for example, by hitting the “OK” button), the remaining steps of flowchart  300  of  FIG. 3  are carried out within mobile device environment  200 , in accordance with an embodiment of the present invention. 
         [0057]      FIG. 5B  illustrates a user-interface  520  by which administrator  222  is able to modify device settings at synchronization server  102  which pertain to the display of e-mail, such as from an e-mail or enterprise server  110  of  FIG. 1 , in accordance with an embodiment of the present invention. The administrator  222  is able to select individual subfolders  522  from e-mail or enterprise server  110  that will be synchronized to mobile device  114 . Additionally, administrator  222  can specify a preview size  524  for individual e-mail messages, as well as the number of past days  526  for which e-mails will be displayed on mobile device  114 . One skilled in the relevant arts will appreciate that additional e-mail specific settings useful in an enterprise environment, such as that depicted in  FIG. 1 , can be useful and included in a user-interface such as user-interface  520 . Accordingly, the particulars of user-interface  520  are presented by way of example, and not limitation. 
         [0058]    Although an administrator  222  is able to modify device settings for individual mobile devices  114  using the interfaces of  FIGS. 5A and 5B , it is useful to have a mechanism by which users and their mobile devices  114  which have been newly synchronized with synchronization server  102  have an entire set of device settings  224  applied to their mobile device  114 , rather than modifying the individual settings for each new device.  FIG. 5C  illustrates a user-interface  540  by which an administrator  222  can associate a group of settings and their values  546  with a template  542 , in accordance with an embodiment of the present invention. Administrator  222  can add  544  a new template which, by way of example and not limitation, may be associated with a particular role. Administrator  222  may also define default settings  546  associated with a default template  542 , in accordance with an embodiment of the present invention. This user-interface  540  enables an administrator  222  to quickly apply settings  546  to any user or mobile device  114 . 
         [0059]    In accordance with an embodiment of the present invention, the templates defined in template group  542  are not permanently associated with a user, such that future modifications to a particular template group  542  would not affect users that were previously created using that template. In an additional embodiment of the present invention, a user or mobile device  114  may be associated with one or more templates  542 , and future updates to the templates  542  would result in the updating of the mobile device  114  device settings  224  such as by the mechanism shown in flowchart  300  of  FIG. 3 . One skilled in the relevant arts will recognize that additional degrees of association and means of implementing the associations between templates and users or mobile devices  114  exist, and the functionality of user-interface  540  is presented by way of example, and not limitation. 
       III. Auto Upgrade 
       [0060]      FIG. 6  is a flowchart  600  illustrating steps by which synchronization server  102  can push a component upgrade to mobile device  114 , in accordance with an embodiment of the present invention. Through the use of the methodology of flowchart  600 , a user of mobile device  114  need not be aware that the auto upgrade process is taking place. Therefore, in accordance with an embodiment of the present invention, the auto upgrade process using the methodology of flowchart  600  is completely silent (or “transparent”, requiring no user interaction) to a user of mobile device  114 . One skilled in the relevant arts will recognize that a component upgraded by the methodology of flowchart  600  may include any software component, firmware component, data files, or other data on mobile device  114  that is maintained through synchronization server  102  by way of auto upgrade object  208 . 
         [0061]    The method begins at step  602  and proceeds to step  604  where a flag is checked to determine whether auto upgrades are permitted on a particular mobile device  114 . Step  606  tests whether the flag is enabled and, if not, proceeds to step  608  where the auto upgrade process is cancelled, and ends at step  622 . It is noted that, in accordance with an embodiment of the present invention, even if the flag is not enabled as tested at step  606 , an administrator  222  has the ability to override the flag and force the auto upgrade process to continue at later steps, such as step  610  or  614 . 
         [0062]    The flag tested in steps  604  and  606  is located, in accordance with an embodiment of the present invention, in the device settings for mobile device  114  as stored in system configuration database  205  of synchronization server  102 . This allows the flag to be updated by the administrator  222  or a user of mobile device  114  per the methods outlined in flowcharts  300  of  FIGS. 3 and 400  of  FIG. 4 . 
         [0063]    At step  610 , a version number for the component being upgraded, corresponding to the version currently on mobile device  114 , is checked. If the version is the correct version, as determined at step  612 , then the auto upgrade process is cancelled at step  608 , and ends at step  622 . As previously noted, an administrator  222  has the ability to override the version test and force the auto upgrade process to continue at later steps, such as step  614 , in accordance with an embodiment of the present invention. It is further noted that the determination of the correct version at step  612  may involve a variety of comparisons, and one skilled in the relevant arts will recognize that, by way of example and not limitation, a component on mobile device  114  may have the correct version per step  612  if it is of the same or greater version as the upgraded component. By way of further example, the correct version per step  612  may require that the component on mobile device  114  has the exact same version as the upgraded component, and may require downgrading. The precise methodology by which the correct version determination of step  612  is made will be evident to one skilled in the relevant art based on particular needs for an auto upgrade application. 
         [0064]    The version information tested at steps  610  and  612  is located, in accordance with an embodiment of the present invention, in the device settings for mobile device  114  as stored in system configuration database  205  of synchronization server  102 . This allows the version information to be updated by the administrator  222  or the synchronization server  102  itself in the performance of the methodology of flowchart  600 , or by a user of mobile device  114  or components thereof in the event of an upgrade performed locally at mobile device  114 . The updates can therefore be performed per the methods outlined in flowcharts  300  of  FIGS. 3 and 400  of  FIG. 4 . 
         [0065]    The component (or “package”) is then pushed to mobile device  114  at step  614 , in accordance with an embodiment of the present invention. The nature of the component being delivered may differ, in accordance with an embodiment of the present invention, with the software platform utilized on mobile device  114 . By way of example, and not limitation, a mobile device  114  running the Windows Mobile platform would require that components be pushed in a .cab file format, whereas a Symbian platform would require that components be pushed in a .sis file format. One skilled in the relevant arts will appreciate that additional component formats may be used on any platform, including the aforementioned platforms, and the particular component formats disclosed above are presented by way of example, and not limitation. 
         [0066]    At step  616 , client engine  204  updates the software package on mobile device  114  using the component received from synchronization server  102 , in accordance with an embodiment of the present invention. This is handled by auto upgrade module  214  in client engine  204 . In accordance with a further embodiment of the present invention, auto upgrade module  214  performs an additional version check, similar to the one performed at step  610  by auto upgrade object  208  of synchronization server  102 , prior to updating the local software package. However, in a preferred embodiment, this additional check is not performed at auto upgrade module  214  in order to avoid any need for interaction by a user at mobile device  114 , in keeping with the completely silent auto upgrade methodology. 
         [0067]    At step  618 , the updated software or other affected components restart, in accordance with an embodiment of the present invention. This enables the utilization of the upgraded package by any affected components. 
         [0068]    Furthermore, at step  620 , the version number of a successfully upgraded component is changed at device settings  224 , in accordance with an embodiment of the present invention. This change causes the version number to be synchronized with database  205  of synchronization server  102  using the methodology outlined in flowchart  400  of  FIG. 4 , in accordance with a further embodiment of the present invention. The method then ends at step  622 . 
       IV. Trace and Diagnostic 
       [0069]      FIG. 7  is a flowchart  700  illustrating steps by which an administrator  222  or other user or component of mobile office server  202  can set trace and diagnostic behavior of mobile device  114 , in accordance with an embodiment of the present invention. Through the use of the methodology of flowchart  700 , no interaction by a user at mobile device  114  is necessary to configure trace and diagnostic logging, and the logging can be performed silently without informing the user. 
         [0070]    The method starts at step  702  and proceeds to step  704  where administrator  222  sets a logging level device setting at synchronization server  102 , in accordance with an embodiment of the present invention. At step  706 , the administrator  222  also sets a maximum log size device setting at synchronization server  102 , in accordance with an additional embodiment of the present invention. The settings of steps  704  and  706  are handled, in accordance with a further embodiment of the present invention, through the use of settings exchange object  210 , as disclosed in detail in Section II. 
         [0071]    Step  708  pushes the aforementioned device settings to client engine  204  in a manner corresponding to step  306  of  FIG. 3 . At step  710 , client engine  204  updates the logging level and log size device settings, as appropriate, in a manner corresponding to step  308  of  FIG. 3 . At step  712 , the client engine  204  and associated processes are restarted in a manner corresponding to step  310  of  FIG. 3 . At step  714 , device settings  224 , including the new logging level and log size device settings, are read and used by the client engine  204  and associated processes in a manner corresponding to step  312  of  FIG. 3 . Each of the aforementioned steps is disclosed in further detail with reference to the corresponding steps of  FIG. 3  in Section II. The method then ends at step  716 . 
         [0072]    In an additional embodiment, trace and diagnostic object  220  operates to broker parameters such as the logging level and log size directly with mobile device  114  without the use of synchronization server  102 . In this embodiment, trace and diagnostic object  220  supports communications with client interface  206 , either directly or through the use of an intermediary module within mobile office server  202 . The communications between trace and diagnostic object  220  and client interface  206  may include, by way of example and not limitation, the MOCA framework disclosed in U.S. patent application Ser. No. 12/104,905 to Jeide et al. (Atty. Dkt. No. 1933.0530001), filed Apr. 17, 2008, which is incorporated herein by reference in its entirety. 
         [0073]    The trace and diagnostic parameters of steps  704  and  706  are presented by way of example, and not limitation. One skilled in the relevant arts will recognize that additional, fewer, or altogether different parameters for controlling logging behavior may be used. Mobile device  114 , through the use of trace and diagnostic module  218 , utilizes the trace and diagnostic parameters of steps  704  and  706  to adjust its logging behavior. For example, the logging level parameter of step  704  may specify a particular logging level from a set of logging levels, each logging level corresponding to a degree of verbosity in the logs retained by trace and diagnostic module  218 . The maximum log size parameter of step  706  specifies, for example, a maximum log size in terms of data usage, in terms of number of lines of text, or some other size parameter. 
         [0074]      FIG. 8  is a flowchart  800  illustrating steps by which an administrator is able to utilize the logging behavior of mobile device  114  to review logging information obtained by trace and diagnostic module  218  of mobile device  114 , in accordance with an embodiment of the present invention. The method starts at step  802  and proceeds to step  804  where the administrator  222  selects a particular user or mobile device  114  for which to retrieve the logs. In accordance with an embodiment of the present invention, this request from the administrator  222  is serviced directly by trace and diagnostic object  220 . At step  806 , mobile office server  202 , by way of trace and diagnostic object  220 , pulls logs from mobile device  114  by requesting the logs from trace and diagnostic module  218 . In accordance with an additional embodiment of the present invention, communications with trace and diagnostic module  218  are handled through client sync agent  212  of client engine  204  in communication with client interface  206 . 
         [0075]    At step  808 , the retrieved logs are stored on mobile office server  202  for later review by administrator  222 , or analysis by components of mobile office server  202 . The method ends at step  810 . 
       V. Example Computer System Implementation 
       [0076]    Various aspects of the present invention can be implemented by software, firmware, hardware, or a combination thereof.  FIG. 9  illustrates an example computer system  900  in which the present invention, or portions thereof, can be implemented as computer-readable code. For example, the methods illustrated by flowcharts  300  of  FIG. 3 ,  400  of  FIG. 4 ,  600  of  FIG. 6 ,  700  of  FIG. 7 , and  800  of  FIG. 8 , can be implemented in system  900 . Various embodiments of the invention are described in terms of this example computer system  900 . After reading this description, it will become apparent to a person skilled in the relevant art how to implement the invention using other computer systems and/or computer architectures. 
         [0077]    Computer system  900  includes one or more processors, such as processor  904 . Processor  904  can be a special purpose or a general purpose processor. Processor  904  is connected to a communication infrastructure  906  (for example, a bus or network). 
         [0078]    Computer system  900  also includes a main memory  908 , preferably random access memory (RAM), and may also include a secondary memory  910 . Secondary memory  910  may include, for example, a hard disk drive  912 , a removable storage drive  914 , and/or a memory stick. Removable storage drive  914  may comprise a floppy disk drive, a magnetic tape drive, an optical disk drive, a flash memory, or the like. The removable storage drive  914  reads from and/or writes to a removable storage unit  918  in a well known manner. Removable storage unit  918  may comprise a floppy disk, magnetic tape, optical disk, etc. which is read by and written to by removable storage drive  914 . As will be appreciated by persons skilled in the relevant art(s), removable storage unit  918  includes a computer usable storage medium having stored therein computer software and/or data. 
         [0079]    In alternative implementations, secondary memory  910  may include other similar means for allowing computer programs or other instructions to be loaded into computer system  900 . Such means may include, for example, a removable storage unit  922  and an interface  920 . Examples of such means may include a program cartridge and cartridge interface (such as that found in video game devices), a removable memory chip (such as an EPROM, or PROM) and associated socket, and other removable storage units  922  and interfaces  920  which allow software and data to be transferred from the removable storage unit  922  to computer system  900 . 
         [0080]    Computer system  900  may also include a communications interface  924 . Communications interface  924  allows software and data to be transferred between computer system  900  and external devices. Communications interface  924  may include a modem, a network interface (such as an Ethernet card), a communications port, a PCMCIA slot and card, or the like. Software and data transferred via communications interface  924  are in the form of signals which may be electronic, electromagnetic, optical, or other signals capable of being received by communications interface  924 . These signals are provided to communications interface  924  via a communications path  926 . Communications path  926  carries signals and may be implemented using wire or cable, fiber optics, a phone line, a cellular phone link, an RF link or other communications channels. 
         [0081]    In this document, the terms “computer program medium” and “computer usable medium” are used to generally refer to media such as removable storage unit  918 , removable storage unit  922 , and a hard disk installed in hard disk drive  912 . Signals carried over communications path  926  can also embody the logic described herein. Computer program medium and computer usable medium can also refer to memories, such as main memory  908  and secondary memory  910 , which can be memory semiconductors (e.g. DRAMs, etc.). These computer program products are means for providing software to computer system  900 . 
         [0082]    Computer programs (also called computer control logic) are stored in main memory  908  and/or secondary memory  910 . Computer programs may also be received via communications interface  924 . Such computer programs, when executed, enable computer system  900  to implement the present invention as discussed herein. In particular, the computer programs, when executed, enable processor  904  to implement the processes of the present invention, such as the steps in the methods illustrated by flowcharts  300  of  FIG. 3 ,  400  of  FIG. 4 ,  600  of  FIG. 6 ,  700  of  FIG. 7 , and  800  of  FIG. 8 , discussed above. Accordingly, such computer programs represent controllers of the computer system  900 . Where the invention is implemented using software, the software may be stored in a computer program product and loaded into computer system  900  using removable storage drive  914 , interface  920 , hard drive  912  or communications interface  924 . 
         [0083]    The invention is also directed to computer program products comprising software stored on any computer useable medium. Such software, when executed in one or more data processing device, causes a data processing device(s) to operate as described herein. Embodiments of the invention employ any computer useable or readable medium, known now or in the future. Examples of computer useable mediums include, but are not limited to, primary storage devices (e.g., any type of random access memory), secondary storage devices (e.g., hard drives, floppy disks, CD ROMS, ZIP disks, tapes, magnetic storage devices, optical storage devices, MEMS, nanotechnological storage device, etc.), and communication mediums (e.g., wired and wireless communications networks, local area networks, wide area networks, intranets, etc.). 
       VI. Conclusion 
       [0084]    While various embodiments of the present invention have been described above, it should be understood that they have been presented by way of example only, and not limitation. It will be understood by those skilled in the relevant art(s) that various changes in form and details may be made therein without departing from the spirit and scope of the invention as defined in the appended claims. It should be understood that the invention is not limited to these examples. The invention is applicable to any elements operating as described herein. Accordingly, the breadth and scope of the present invention should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.