# Patent

## Title
Managing distributed devices with limited connectivity

## Abstract

A method of managing devices may include downloading information to a courier device from an enterprise. The information may be information for performing a device management operation. The method also includes communicating the information from the courier device to a monitored agent coupled to at least one of a disconnected device and an intermittently connected device.

## Background
CROSS-REFERENCE TO RELATED APPLICATIONS
Not Applicable.
BACKGROUND
1. Field of the Art
The present disclosure generally relates to managing distributed devices and to the management of distributed devices with limited contact-ability.
2. Background and Relevant Art
Remote management of equipment in the field has become a common practice for many Original Equipment Manufacturers (OEMs). The equipment is frequently distributed over a broad geographical region and often involves hundreds if not thousands or tens of thousands of individual devices. Remote management functions include but are not limited to monitoring and usage data collection, bi-directional file transfer, software update delivery, configuration management, etc. for the device or the monitor agent. These device management functions are most valuable when they contain and operate on accurate and current device data. Furthermore, one single system for providing these types of functions, regardless of device capability, is important to minimize the need for different business process and/or underlying application functions.
A centralized server system is often used to provide connectivity between the OEMs and the equipment. This connectivity allows the OEM to be much faster in resolving problems with the equipment, in part at least because a centralized server system allows the OEM to manage the devices remotely rather than at the site of each piece of equipment. Such an approach allows the OEMs to be more proactive in preventing problems or be more proactive in addressing problems before they become serious. Remote connectivity also enables OEMs to provide many new value added services, such as automatic consumables replenishment, or add completely new business models (e.g. usage based billing).
One very common hurdle that companies wishing to deploy remotely contactable devices face is the network infrastructure that is deployed at the customer site. Security measures such as firewalls and Internet proxies as well as common IT infrastructure mechanisms such as Network Address Translation (NAT) represent a barrier for direct connectivity to the equipment. In particular, to provide direct connections between all the equipment and the centralized server system would often be prohibitively expensive. As a result, many approaches have been proposed that involve use of the Internet or other global networks. One difficulty with such approaches is that security measures frequently block access to on-site devices by external systems. Solutions to these problems have also been proposed as described in patent application Ser. No. 10/028,126, Method and apparatus for managing intelligent assets in a distributed environment. These methods, however, require network connectivity from the device to the central server, often via the Internet or other public networks.
While such an approach may allow the system to communicate with devices that can communicate with the central server, it may be difficult or even impossible to communicate with devices which are not allowed or otherwise unable to communicate with the central server via a network. These solutions are further complicated by devices that may occasionally have network connectivity to the central server, but intermittently lose that connectivity for extended periods of time.
SUMMARY OF THE INVENTION
In one example, a method of managing distributed devices may include downloading information to a courier device from an enterprise. The information may be information for performing a device management operation. The method also includes communicating the information from the courier device to a monitor agent coupled to at least one of a disconnected device and an intermittently connected device.
In a system that communicates information between devices and an Enterprise, a method is provided for managing the devices. The method includes selecting devices coupled to at least one monitor agent to perform a device management operation; determining whether the selected monitor agents are disconnected or connected; performing the device management operation between the enterprise and the device if the monitor agent is connected over a network, and if the monitor agent is disconnected performing the device management operation on the device using an intermediate courier device.
This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
Additional features and advantages will be set forth in the description that follows, and in part will be obvious from the description, or may be learned by the practice of the teachings herein. Features and advantages of the invention may be realized and obtained by means of the instruments and combinations particularly pointed out in the appended claims. Features of the present invention will become more fully apparent from the following description and appended claims, or may be learned by the practice of the invention as set forth hereinafter.



BRIEF DESCRIPTION OF THE DRAWINGS
In order to describe the manner in which the above-recited and other advantages and features can be obtained, a more particular description of the subject matter briefly described above will be rendered by reference to specific embodiments illustrated in the appended drawings. Understanding that these drawings depict only typical embodiments and are not, therefore, to be considered to be limiting in scope, embodiments will be described and explained with additional specificity and detail through the use of the accompanying drawings in which:
FIG. 1A illustrates a system managing configurations of distributed devices having varying degrees of connectivity according to one example;
FIG. 1B is a flowchart illustrating a method of performing device management operations on distributed devices according to one example;
FIG. 2A is a flowchart illustrating one example for performing a device management operation on an intermittently connected device.
FIG. 2B is a flowchart illustrating a method of performing a device management operation on a disconnected device according to one example;
FIG. 3 is a flowchart illustrating one example of creating a site visit on an Enterprise server;
FIG. 4 is a flowchart illustrating a method of delivering messages and picking up stored device information and responses according to one example;
FIG. 5 is a flowchart illustrating a process for reconciling site visit results; and
FIG. 6 is a schematic diagram of a courier device coupled to a disconnected device for performing a device management operation according to one example;



DETAILED DESCRIPTION OF THE INVENTION
Systems, devices, and methods are described herein for performing device management operations on distributed devices. In at least one implementation, the device management operations are performed using one or more monitor agents that are coupled to the distributed devices. The system is able to perform the device management operation on the distributed devices regardless of whether the devices are able to access an Enterprise over a network. In one example, the distributed devices are coupled to at least one monitor agent, which may provide communication between the distributed device and an Enterprise system. A distributed device that is coupled to a monitor agent that is disconnected from the Enterprise, or a disconnected monitor agent, may be referred to as a disconnected device. Similarly, a distributed device that is coupled to a monitor agent that is connected the Enterprise may be referred to as a connected device. Further, a distributed device that is coupled to a monitor agent that is intermittently connected to the Enterprise may be referred to as an intermittently connected device. These distributed devices may be thus described regardless of whether the monitor agent resides within the distributed device or is otherwise communicatively coupled to the distributed device. It will be understood that the communication between external devices, such as the Enterprise system or courier devices as described below will be performed on each distributed device using a monitor agent. The system may make use of an intermediate courier device to perform the device management operation on disconnected devices. The courier device receives all the information necessary to perform the device management operation from the enterprise. The courier device then accesses the disconnected monitor agent to perform the device management operation on the associated device.
The system audits the communication between the Enterprise and connected devices, as well as the communication between a courier device and the Enterprise and the courier device disconnected device.
The system may also perform device management operations on devices which are only intermittently connected. In this scenario, the intermediate Courier is not required, but Courier-like functionality is required on the device and support for such connectivity modes is required on the enterprise server. For example, a monitor agent that determines a connection is present can simply communicate with the enterprise server as a connected device. If and when the connection to the enterprise is not possible, the monitor agent can detect this and change communication modes from “connected” to “disconnected” where data is stored in persistent storage rather than communicated over the network. When the connection is once again possible, the monitor agent can detect this and upload all stored device information for processing directly to the enterprise server and change back to a connected communication mode. The enterprise also needs to be aware of the intermittent loss of connectivity so it can detect and handle error conditions correctly. For example, a timeout for processing a device bound message would be different for an intermittently connected monitor agent versus a connected monitor agent. Intermittently connected monitor agents may also work with the Courier in the same fashion as disconnected monitor agents. When the Courier is servicing intermittently connected monitor agents, safe guards may be in place to preserve the order of order-dependent remote management operations.
As shown in FIG. 1A, the system can include an Enterprise 100 with a database 120 and a server 110 that communicates with at least one device that may include a disconnected device 200 as well as an intermittently connected device 300 and a connected device 400. The devices 200, 300, 400 are shown as separate and distinct devices for ease of reference. Each of the devices 200, 300, 400 is configured to communicate device information 210, 310, 410 to an external device or system to allow the Enterprise 100 to perform device management operations. In particular, a courier device 215 may be used to deliver device management information from the disconnected device 200 and to retrieve the device information 210.
A disconnected device 200 may include a device operating in a location in which network connectivity is not desired and/or not possible. An example may include a device located in a hospital setting where only local network traffic is allowed. Another example is a device that simply does not connect to a local or global network, such as a roof top air handling unit. A further example may be a device, such as a medical device, in which network connectivity for the device is not desired in the device's typical operating environment, such as in an operating room or an emergency room in which the network connectivity may interfere with the device operation. Intermittently connected devices may be devices that are moved from one location to another where the network availability may change.
Additionally, varying degrees of connectivity may be found within the same device depending on the circumstances. For example, portable equipment whose wired connection may be disconnected for portability or wirelessly networked equipment that may be operated out of range of the wireless network. The devices may include, without limitation, a power meter, MRI machine, printing press, X-Ray machine, or other devices that include, or can be adapted to include, a monitor agent. These devices may vary in complexity and may have a set of subsystems associated with them.
Each device is coupled to a monitor agent 220, 320, and 420 respectively. Alternatively (not shown in the figure) a single monitor agent may be coupled to a plurality of devices. The monitor agents 220, 320, 420 may be contained within a corresponding device or may be connected to the device by way of a serial port, USB, firewire, Ethernet, or the like. Each monitor agent 220, 320, 420 is configured to monitor the device status, usage, software configuration, etc. and verify that the device is properly functioning and maintained. Each monitor agent 220, 320, 420 collects device information 210, 310, 410 which includes, but is not limited to basic device profile information, device serial number, unique identifiers, data readings, installed components, and software versions. The device information may be collected for several reasons, including but not limited to, enterprise user requests, monitored conditions as met by defined rules, monitor agent restarts, software updates applied, etc. This information ultimately is sent back to the Enterprise server 110. The method for communicating the information varies depending on the connectivity mode of the monitor agent. For connected monitor agents, this information is communicated to the Enterprise server 110 directly.
Disconnected monitor agents 220 store this information in persistent storage and communicate the information to a courier device 310 when the courier device 310 is on site, and the courier device 310 subsequently uploads it to the Enterprise server 110. An intermittently-connected monitor agent 320 sends the information directly to the Enterprise server 110 when it has network connectivity to the Enterprise server 110 and stores this information locally in persistent storage when it does not have network connectivity to the Enterprise 100. The intermittently-connected monitor agent 320 uploads stored information when connectivity is restored. In addition, the intermittently-connected monitor agent 320 may communicate with the courier device 215 to upload stored device information.
In particular, the device information 410 may be sent directly from the connected monitor agent 420 to the Enterprise 100 over a network 130 based on established conditions and/or rules, which may include, without limitation monitoring data, device usage data, software configuration information and the like. This information may be sent, without limitation based on user requests, scheduled tasks, device activity, software updates, requests received by external control or systems, and/or rule evaluation.
If the ability of the enterprise 100 to reach a monitor agent over a network 130 is limited, such as with the disconnected monitor agent 220 or with the intermittently connected monitor agent 320, the disconnected monitor agent 220 and the intermittently connected monitor agent 320 may be configured to store the information for transmission at a later point. The intermittently connected monitor agent 320 can upload the stored information when network connectivity is restored. The disconnected monitor agent 220 may communicate the stored device information 210 to a courier device 210 when the courier device 210 is on site, as will be discussed in more detail below. In particular, the disconnected monitor agent 220 may communicate with the courier device 215 when the courier device 215 is on site and discovered by the courier device 215.
The intermittently connected monitor agent 320 may also transmit the device information 310 in a similar manner as occurs in the connected scenario when connectivity over network 130 is available, or store the information when the network connectivity over network 130 is not available. The intermittently connected monitor agent 320 may be configured to send the stored device information 320 over the network 130 when network connectivity becomes available and/or to send the stored device information 320 to a courier device 215. For ease of reference, the intermittently connected monitor agent 320 is illustrated communicating over the network 130.
Each monitor agent 220, 320, 420 collects the device information 210, 310, 410 from the sources of device data, such as a database, a registry, the file system, or data collection protocols. The device information 210, 310, 410 may include various classes of information including: monitoring data, usage data, and configuration data, operational status, operational data, usage information, location information, environmental information, SW/HW version information (i.e., “configuration” information), or any data available on the device. To collect the device information 210, 310, 410 the monitor agents 220, 320, 420 may use plug-in modules using either standard or device-proprietary methods.
The manner in which the Enterprise 100 communicates with the devices 200, 300, 400 by way of the monitor agent 220, 320, 420 may be selected according to the connectivity of the monitor agent. In particular, the Enterprise 100 may communicate with the intermittently connected monitor agent 320 and the connected monitor agent 420 over the network 130, such as the global network, the Internet, a wide area network or other network. The Enterprise 100 may communicate with the disconnected monitor agent 220 using a courier device 215. The courier device 215 has a courier application 225 residing thereon that allows the courier device 215 to interactively communicate with the disconnected monitor agent 220 to perform device management operations previously requested on the Enterprise 100. Device management operations may include, without limitation, delivering software updates and other communications from the Enterprise 100 and receiving requests, receipts, and other information for delivery to the Enterprise 100. The device management operations may be performed on the end devices 200, 300, 400 and/or on the monitor agents 220, 320, 420. One exemplary implementation of a courier application will be described in more detail with reference to FIGS. 2A-2B.
Continuing with reference to FIG. 1A, the Enterprise 100 is also configured to communicate with a monitor agent 320 that is intermittently connected to the network 130. The monitor agent 320 associated with the intermittently connected device 300 may be configured to determine whether a connection to the Enterprise 100 via the network 130 is available. If a network connection is available, the monitor agent 320 may communicate with the Enterprise 100 over the network 130. If a network connection is not available, the monitor agent 320 may be configured to store the information in non-volatile memory until it desirable to transmit the information, such as when a network connection is reestablished.
Still referring to FIG. 1A, the Enterprise 100 is also configured to communicate with a connected device 400 by way of monitor agent 420. In particular, the Enterprise 100 may communicate with the monitor agent 420 through the network 130. Accordingly, the Enterprise 100 is able to communicate with various types of devices over the network 130 or by using a courier device 215.
The Enterprise 100 is able to perform device management operations on each of the devices using these types of communication. Accordingly, the monitor agent may be configured to communicate with all of the devices, regardless of ability of the enterprise 100 to contact the devices 200, 300, 400 over the network 130. As introduced, examples will be provided in which the monitor agents allow communication between devices and the Enterprise 100, beginning with a disconnected device.
FIG. 1B is a flowchart of one exemplary method for managing remote devices. The method begins in step S10 by receiving registrations from devices. Step S10 can occur immediately before or much earlier than any subsequent step, for example, days, weeks, months, or even years later. A technician can build the defined configuration based on the hardware and software specification for the device. The devices which are connected or intermittently connected 400, 300 to the Enterprise 100 over the network 130 may send the registrations over the network 130. Disconnected devices may be register with the Enterprise 100 in a different manner, such as through the use of the courier device 215, by the devices manufacturer, or manually by a user accessing the Enterprise over a network.
Accordingly, at step S11 the method continues when a device management operation is scheduled. Scheduling a device management operation may include selecting a device or group of devices. Selecting a device or group of device may be accomplished by selecting the device or group of device themselves or by selecting a device or group of devices with one or more desired characteristics. For example, scheduling a device management operation may include scheduling a device management operation for a group of medical devices with similar characteristics, such as devices of a certain type made by a given manufacturer.
Further, if a user schedules the device operation management, the user may do so without a knowledge of which devices are connected or disconnected at a given time. In particular, the Enterprise 100 is configured to perform the device management operation on the intermittently connected device 300 and the connected device 400 using the network 130 and to perform the device management operation on the disconnected device 200 using the courier device 215. The selection may be performed automatically, as will be discussed in more detail below.
At step S12, the Enterprise 100 determines which devices should receive the software distribution. In one example, the Enterprise 100 analyzes the configuration of each of the devices to determine whether a given device is eligible to receive the device management operation. If a device is eligible for the device management operation, at S13 the Enterprise 100 determines which information should be sent to and/or received from the device.
At S14, the Enterprise 100 then determines a communication mode for performing the device management operation. The communication mode the Enterprise 100 uses may depend, at least in part, on the connectivity of the target monitor agent. In particular, the Enterprise 100 may contact devices over the network 130, such as the intermittently connected device 300 and the connected device 400. The Enterprise 100 is also able to manage disconnected devices 200 through the use of a courier device 215 and/or a courier application. Accordingly, the Enterprise selects between communication with a device over a network and communication using the courier device 215 as an intermediary between the disconnected device 200 and the Enterprise 100. Once the Enterprise has determined how to communicate with each device, at S15 the device management operation is performed on each device.
FIG. 2A is a schematic diagram of a disconnected device 200 with a monitor agent 220 that is in communication with a courier application 225. The courier application 225 is shown as residing on a courier device 215. The courier application 225 communicates with the monitor agent 220 to perform device management operations, which include, without limitation, determining the configuration of the disconnected device 200, transmitting appropriate software updates stored on the courier device, and receiving monitoring or usage data from the monitor agent 220 for communication to the Enterprise 100.
In one example, the courier device 215 may be a portable device that may be moved to the physical location of a disconnected device. In another example, the courier device 215 may be a stationary device to which the disconnected device is docked.
In either case, the courier device 215 may have persistent storage 227 in communication with the courier application 225. The persistent storage 227 is configured to store the instructions for the device management operations and all other data that is required to perform the operations. The device persistent storage 227 may also store information that is generated during the execution of the device management operations, which the monitor agent 220 communicates to the courier application 225. The device persistent storage 227 may also store information previously stored by disconnected device 200 on persistent storage 235 that was collected or generated while disconnected device 200 was not connected to the courier application 225. The information from the monitor agent 220 may then be uploaded to an Enterprise 100 at a later point. In the present example, the courier application 225 includes a courier enterprise surrogate 229 residing thereon that is configured to control the interaction between the monitor agent 220 and external connections. The courier enterprise surrogate 229 allows the courier device 215 to be configured to access the Enterprise 100 (FIG. 1A) in a number of ways. In particular, the courier device 215 may be configured to access a global or other network in order to access the Enterprise (100).
The monitor agent 220 also includes a monitor agent OCM 230. The monitor agent OCM 230 allows the monitor agent 220 to communicate with various types of networks and devices. In particular, the monitor agent OCM 230 may be configured to determine the appropriate protocol for sending outgoing communication and for subsequently ensuring the communication is in the appropriate protocol. The monitor agent OCM 230 may also be configured to interact with the courier device 215 as well as to allow for any number of failed attempt retries as desired. In the present example, the monitor agent OCM 230 is shown in communication with the courier enterprise surrogate 229. The monitor agent OCM 230 can also recognize if there is no connection and store the information on the disk.
Each of the devices 200, 300, 400 illustrated in FIG. 1A may include a monitor agent having an OCM. The principles of the monitor agent OCM 230 discussed generally below may be applied to the other monitor agents as well. The monitor agent OCM 230 is switchably coupled to a persistent storage 235 and to an external line 240. In the illustrated example, the persistent storage 235 and the monitor agent 230 both reside on the disconnected device 200. In other examples, the monitor agent 230 and persistent storage 235 may on a separate device communicatively coupled to the disconnected device 200. Methods for such communicative coupling may include, but are not limited to, serial, USB, Ethernet, and other communicative means. The OCM 230 will direct communications to be output and/or information to be conveyed to the monitor agent to the persistent storage 235 or the external connection 240 according to the external connections available to the monitor agent. The determination of which external connections may be made by the OCM 230 based on network access to the Enterprise as determined by the OCM or the availability of courier devices as determined by discovery module 245.
In particular, if an external connection is available, the monitor agent OCM 230 may be configured to route the communication over the external line. Similarly, if no external connection is available, the monitor agent OCM 230 may be configured to route the communication to the persistent storage 235. Information routed to the persistent storage 235 may be stored there until such time as an external connection becomes available. At that point the monitor agent OCM 230 may cause the information stored on the persistent storage 235 to be routed over the external connection 240. The monitor agent OCM 230 is coupled to a device discovery module 245. The device discovery module 245 interacts with external devices that may attempt to access the monitor agent 220.
The discussion will now turn to the specific example of the monitor agent OCM 230 operating in the disconnected device 215. The courier application 225 includes a courier discovery module 250 that communicates with the device discovery module 245 to establish communication between the monitor agent 220 and the courier application 225 as previously discussed. Once communication has been established, the monitor agent OCM 230 communicates with the courier application 225 through external connection 240 and to the courier enterprise surrogate 229 in particular.
The persistent storage 235 associated with the monitor agent 220 is shown as including a device inbox 255 as well as a device outbox 260. The device inbox 255 is configured to receive messages, updates, or other information transmitted from an external source to the monitor agent 220. In the present example OCM 230 is configured to receive information from a courier inbox 270 In a similar fashion, the device outbox 260 is configured to send information to a courier outbox 265.
Several types of information may be stored in the device outbox 260 and/or sent to the courier outbox 270. This information may be related to events within the device. Some events may include installation of new software. The information stored in the device outbox 260 may be retained until confirmation is received that the information has been successfully received by the Enterprise 100 (FIG. 1A).
All of the information communicated between the monitor agent 220 and the courier application 225 is audited such that a record or receipt of the data exchanged is maintained on the monitor agent 220, the courier device 215, or both. Once the communication between the monitor agent 220 and the courier application 225 is complete, the courier device 215 may be disconnected from the monitor agent 220.
The courier device 215 may be used to perform any number of device management operations on any number of devices, including disconnected devices. After the device management operations are completed, the courier device 215 may be connected to the Enterprise 100 (FIG. 1A). Once the courier device 215 is coupled to the Enterprise 100, the information uploaded from the monitor agent 220 to the courier outbox 270 is then transferred from the courier outbox 265 to the Enterprise 100.
A receipt of the communication is stored in the courier inbox 270, in the Enterprise 100, or both. While the courier device 215 is coupled to the Enterprise 100, the courier device 215 may download additional packages to perform additional device management operations on disconnected devices, if such packages are available. As previously discussed, in order to perform device management operations on the disconnected devices, the courier device is connected to a monitor agent.
When the courier device 215 is coupled to the monitor agent 220, the record of the Enterprise's receipt of the information previously uploaded to the courier device is communicated to the monitor agent. Receiving the receipt that the previously conveyed information has been received by the Enterprise, the previously transmitted information may be deleted from the monitor agent 220, as there is a record that the information has been received.
FIG. 2B is a flowchart of one exemplary method for performing a device management operation on disconnected devices. By way of introduction, the method illustrated in FIG. 2 may include the steps of performing remote management operations with different message management at step S20, creating a site visit at step S21, downloading a site visit to a courier at step S22, traveling to a site with the courier at step S23, delivering remote management operations messages and picking up stored device information and responses at step S24, returning to a location where a network connection to the enterprise is possible at step S25, and reconciling site visit results with the Enterprise at step S26. Each of these steps will now be discussed in more detail below.
As introduced, the method begins at step S20 by performing remote management operations with different message management. The messages may contain anything, but may specifically contain remote management operation requests such as software updates, data collection requests, configuration management data collection requests, file transfer requests, etc. In one example, users of the Enterprise may request remote management operations on disconnected devices in a similar manner as they do for requesting remote management operations on connected devices. Internally, the Enterprise server manages these messages slightly differently.
For example, in the case of performing device management operations on connected monitor agents, the messages may stay in the message queue indefinitely or the messages may have some delivery timeout associated with them. In the case where the message is for a disconnected monitor agent, the timeout (if present) will be consistent with the expected frequency of a site visit for the given monitor agent, or an arbitrary value. Timeout value for a disconnected monitor agent may generally be larger than for a connected monitor agent.
Once the message management operation has been performed, the method continues at step S21 when a site visit is created. In one example, the site visit may be created on the Enterprise system. The site visit as used herein is a construct that represents the intention to make a site visit to deliver the messages. The site visit may have information such as the assigned field service technician, delivery date, name, description, the user who created it, a state, etc. The state of the site visit may initially be that site visit is ready for download. Such a state may indicate that the site visit has been created and the site visit and/or the messages associated with the site visit are ready to be downloaded to a courier. Other states of the site visit may include that the site visit has been downloaded, activated, reconciled, or cancelled. If the site visit has been downloaded, the site visit and all associated device information are downloaded to a courier device. An activated state indicates the site visit has been activated at least once on site to deliver messages and content. This state may be entered multiple times to deal with sites with a large number of monitor agents. A reconciled state occurs when the results from the site visit have been reconciled with the Enterprise. A cancelled state occurs when a user has decided to cancel the site visit for some reason. One specific example of method for creating a site visit will be discussed in more detail with reference to FIG. 3.
FIG. 3 is a flowchart illustrating one example of creating a site visit on an Enterprise server. The method begins at step S30 when the user requests the site visit to be made for one monitor agent or a group of monitor agents at a site. The user may specify many of the parameters for the site visit. These parameters may include specifying the field technician that will deliver the site visit, the expected delivery date, etc.
The method continues at step S31 when messages that have been created for the disconnected monitor agents that are in the list from S10 are then associated with the site visit. The state of the messages are appropriately updated to indicate they are “in flight” to the monitor agents. Next, at step S32 the Enterprise system determines whether to send out notifications to the users. For example, the Enterprise system may be configured to send out notifications to users. Users may include the field service technicians to which the site visit is assigned. The Enterprise system may also send out notifications to other users or Enterprise systems for business process integration.
Continuing at step S33, the Enterprise system then send any notifications to users and external systems that should be updated about the creation of the site visit. Notifications may also be sent on other updates to the site visit, including re-assignment to another field server technician, changes to the expected delivery date, and state changes (such as cancellation).
Finally, at step S34 the Enterprise system initiates any message-management functions, such as setting timeouts, etc. Accordingly, the Enterprise system may be configured to create a site visit and notify users of the site visit. The flowchart illustrated in FIG. 3 is only one exemplary process for step S21 illustrated in FIG. 2.
Turning now to FIG. 2, once the site visit has been created, the site visit is downloaded to a courier device at step S22. Downloading the site visit to the courier device may be initiated by the courier device. In one example, an intermediate software application and portable computer may be used to transfer messages between the Enterprise server and disconnected monitor agents.
The user of the courier device requests to list the site visits that are assigned from them. From the list, the user may choose to download one or more site visits. The download process may include downloading the messages that are to be delivered to the disconnected monitor agents associated with the site visit. In addition to the remote management operation messages, the content to fulfill the messages may also be downloaded. This content may include, but is not limited to, device profile information, software packages, files to transfer, etc. The messages and content may be stored locally on the courier device's persistent storage. The messages and content may be compressed on the Enterprise and decompressed at the Courier after download or just before it is needed to save download time, bandwidth, and storage space on the Courier.
Some of the content may be shared across site visits. Examples include software packages or other files to transfer that could be large. This may be beneficial because it may reduce or minimize site visit download time and storage consumed on the courier device.
Next, a user, such as the field service technician, takes the courier device with the downloaded site visits to the various sites at step S23. In the case where a permanent courier device is resident at the site, this step may be omitted.
With courier device at the site of the disconnected monitor agent, at step S24 the courier device delivers remote management operations messages and picks up stored content and responses. For example, once on site, the field service technician may use the courier device to locate and deliver the remote management operation messages and the associated content. In addition to delivering Enterprise-to-monitor agent operation requests, the courier device also collects the information that the disconnected monitor agents may have stored to the persistent storage associated with the disconnected monitor agent as well as the information that may result from the delivery of the remote management operations. All of the information collected from the disconnected monitor agents may be stored on the courier device's persistent storage for later upload to the Enterprise server. One specific example of step S24 delivering messages and picking up stored content and responses is illustrated in more detail in FIG. 4.
FIG. 4 is a flowchart illustrating a method of delivering messages and picking up stored content and responses according to one example. The method begins at step S40 when the courier device discovers the disconnected monitor agents. Since the field technician may not know how to communicate with the monitor agents on the site, it may be desirable to have a way to “find” the monitor agents that are disconnected from the Enterprise server and publish the local address of the courier application running on the courier device.
To accomplish this, any means of discovering monitor agents is applicable. For example, a specific discovery message could be sent to all monitor agents that are listening to a predefined multi-cast group or broadcast address. Well-defined discovery protocols may also be used, such as the Service Location Protocol (SLP). Numerous other protocols are available for achieving the discovery of monitor agents.
Once found, filtering techniques may be used to avoid discovering monitor agents that are not under management by the field service technician or the organization represented by the field server technician. The monitor agents that are discovered may also be authenticated against the profile information downloaded as part of the site visit download step.
The list of monitor agents that are discovered (and authenticated) may be displayed to a user. The user may choose to deliver and pick up content to one or more of the monitor agents.
Once the field technician chooses to communicate to the discovered monitor agents, the monitor agents are notified to thereby “capture” the disconnected monitor agents at step S41. Once notified that the monitor agent should be captured, the process may include redirecting all communications to the Courier and receiving and storing stored device content at step S42. In one example, the disconnected monitor agents may take upload previously stored content to the Courier. This operation could optionally include bundling messages into a single entity, compressing the content, etc. for the sake of efficiency. The disconnected monitor agents may also mark the uploaded messages or message bundles as “waiting for receipt”. Further, the disconnected monitor agents may redirect communications from the local persistent storage to the courier application. At this point, the Courier may be serving as a surrogate for the Enterprise server.
At step S43, the method continues by delivering device management operations to the disconnected monitor agents that have been captured. The disconnected monitor agents may have several modes of operation. The monitor agents may “pull” messages using a polling paradigm or may be “contactable” and allow the messages to be pushed to the monitor agents. If using the polling scenario, the capture can be used to trigger high frequency polling to minimize the polling latency and hence time spent on site. In either model, the messages that are stored on the Courier are delivered to the now Courier-connected monitor agents.
At step S44, many remote management operations may require that the monitor agent send back some type of information to the Enterprise. For example, a software update request operation may require that the monitor agent send back status updates to track the progress of the installation (downloaded, installed, activated, etc.). Since the Courier is the surrogate for the Enterprise server, these notification messages are sent to the Courier and stored in the Courier persistent storage. In addition, device information as described above may also be stored in the Courier persistent storage. In one example, information sent to the Courier may be compressed on the monitor agent and then later decompressed on the Courier.
Steps S43 and S44 may repeat until the Courier-connected monitor agent completes all remote management operations. Once complete, the connection to the Courier is released and the monitor agents return to their disconnected mode of operation, storing Enterprise-bound messages on their local persistent storage. Thus, step S45 includes determining if the delivery and pickup step is complete and repeating steps S43 and S44 until the delivery and pickup step is complete. Accordingly, FIG. 4 is one example of performing step S25 of FIG. 2.
Once the step of delivering the remote management operations messages and picking up stored content and responses is complete at step S25, at step S26 the courier device is returned to a location where a network connection the Enterprise is possible. In the case where a permanent Courier is resident at the site, this step may be omitted.
Finally, at step S27 results of the site visit, which includes, but is not limited to, the information about the delivery of messages to the monitor agents and all collected information, is communicated to the Enterprise. This closes the loop on the communications between Enterprise and monitor agent. All of the information from the site visit may be communicated back to the Enterprise.
FIG. 5 is a flowchart illustrating a process for reconciling site visit results with the Enterprise. To close the loop on the communications between the Enterprise and monitor agents, the information collected from the disconnected monitor agents as well as the site visit state information (such as the message delivery status) may be sent to the Enterprise. The process may be initiated from the courier device user when there is connectivity to the Enterprise application. Accordingly, the process begins at step S50 when a user of the courier device initiates the reconciliation of information for one or more site visit operations.
At step S51, the courier device uploads the content collected from the monitor agents to the Enterprise server. This information includes the messages or message bundles collected from the disconnected monitor agents as well as the information that was produced as a result of the delivery of the remote management operations.
Next at step S52, when the Enterprise receives information that was collected from a disconnected monitor agent, the Enterprise may generate a receipt for the monitor agent so that it may cleanup the stored information. This receipt may simply be a remote management request that will be delivered on the next site visit. The monitor agent may also have an age-based mechanism to cleanup the messages or message bundles even if a receipt is not received.
Thereafter, at step S53 the state of the site visit is also sent to the Enterprise. The state includes the on site actions taken by the Courier user, such as activation of the site visit. The state also includes information such as status of message deliveries to maintain the message management processing on the Enterprise.
Finally, at step S54 it may be desirable for the courier device to mark the site visit as reconciled after successfully uploading and reporting state to the Enterprise server. The Enterprise may in turn use this final closure notice on the site visit to do any remaining cleanup, notifications (to users and/or external Enterprises) and processing on the site visit.
The management of a disconnected monitor agent has been described with the use of a monitor agent in communication with a courier application running on a courier device. As previously introduced, other device types may be managed using monitor agents. In one example, the monitor agents 320 and 420 illustrated in FIG. 1A are substantially similar to the monitor agent 220 described above.
The monitor agent 320 includes an outgoing communication module (OCM) 330. The OCM 330 is configured to determine whether a connection is available to the Enterprise 100 (FIG. 1A) and to manage communication of the monitor agent 320 with the Enterprise. If a connection to the Enterprise 100 is not available, the OCM 330 stores the information in persistent storage 335. If the OCM 330 determines that a connection is available and that communication with the Enterprise 100 is appropriate, the OCM 330 may communicate with the Enterprise 100 to perform device management operations. In addition to performing device management operations, the OCM 330 may also directly upload (just like the courier does) the data that was stored while the monitor agent was disconnected. By uploading the data directly, the receipt also comes back directly to the monitor agent so cleanup may be performed.
FIG. 6 is a flowchart illustrating a method of delivering messages and retrieving content and responses from an intermittently connected monitor agent. In one example, a monitor agent can also contain selected capabilities of the courier device to efficiently transition between connected mode and disconnected mode.
The Enterprise may treat intermittently connected monitor agents the same as or similar to a disconnected monitor agent with respect to the message management. For example, the Enterprise may use timeout values based on the expected frequency of the monitor agent being connected, or some arbitrary timeout value.
The process begins at step S60 with normal monitor agent processing, In particular, Enterprise-bound information may be generated in response to local monitoring, user input, or other device events. Examples of such information include submitting a notification of a fault condition or high frequency data readings around an event.
Next, at step S71 the monitor agent can detect if it has a connection and behave differently based on the status of the connection. Several methods can be used to determine if the connection is present, such as a “ping” (ICMP) to the Enterprise destination, a simple network connection to the Enterprise endpoint, or a full-blown service invocation (using Web Services, for example).
If the determination at step S61 is that the connection is not available, the outbound message is stored on the local persistent storage for processing later at step S62. If the determination at step S61 is that there is a connection, the monitor agent checks if stored outbound messages are present at step S63.
If the determination at step S63 is that there are stored outbound messages, the stored outbound messages are uploaded to the Enterprise at step S64. The stored outbound messages may be uploaded in a similar manner as when the monitor agent is connected to the courier device after which new messages are also sent to the courier device at step S65. If no messages are stored, new messages are sent directly to the courier at step S65. The courier device then uploads the content to the Enterprise as described above. This provides the information to the Enterprise that was generated while the monitor agent was disconnected.
The Enterprise processes the messages the same as if the Courier application had uploaded the messages, including generating receipts for the uploaded content. The monitor agent responds to the receipt in the same way the disconnected monitor agent does.
Finally, as in the simple connected mode case, the message that was generated and initiated the whole process is sent directly to the Enterprise. In another example, once the connection has gone away the message can simply be stored as in step S62.
The communication between the enterprise 100 and the monitor agent 320 can be rejected due to firewalls, NAT, etc., that are implemented to block unwanted communication. The system can use a “polling server” model to enhance the ability to communicate between the monitor agent and the enterprise if needed. The “polling server” model is discussed, for example, in U.S. Patent Publication No. 2003/0118353 entitled Method and Apparatus for Managing Intelligent Assets in a Distributed Environment, which is incorporated by referencing its entirety. Any other polling strategy may also be used.
The present invention may be embodied in other specific forms without departing from its spirit or essential characteristics. The described embodiments are to be considered in all respects only an illustrative and not restrictive. The scope of the invention is, therefore, indicated by the appended claims rather than by the foregoing description. All changes that come within the meaning and range of equivalency of the claims are to be embraced within their scope.

## Claims

1. A method performed by a courier device configured to communicate with one or more devices, the courier device storing first information relating to a target device among the one or more devices, the first information being received from an enterprise system, the method comprising:
discovering a monitor agent that is associated with the target device and that is disconnected from the enterprise system, the monitor agent being connectable to the enterprise system over a network, wherein discovering is performed by a software module on the courier device by attempting communication with the monitor agent and by performing a filtering operation to avoid discovery of at least one other device;
capturing the monitor agent to thereby redirect communications from the monitor agent to the courier device;
communicating the first information from the courier device to the monitor agent, the monitor agent being disconnected from the enterprise system when the first information is communicated from the courier device, the courier device being separate from the enterprise system; and
communicating, to the monitor agent, confirmation that the enterprise system received second information previously sent to the courier device by the monitor agent for transmission to the enterprise system, the second information being different from the first information.

2. The method of claim 1, wherein the first information is for performing device management operations when the courier device visits a location of the target device.

3. The method of claim 1, wherein the first information comprises messages and content associated with the target device.

4. The method of claim 1, wherein the first information is compressed.

5. The method of claim 2, further comprising receiving device information from the monitor agent.

6. The method of claim 5, wherein the device information comprises (i) a bundle comprised of pieces of device information or (ii) compressed device information.

7. The method of claim 1, further comprising receiving, from the monitor agent, at least one of device information stored on the monitor agent and responses to messages contained in the first information.

8. The method of claim 1, wherein, during communicating, the courier device is at a site of the target device.

9. The method of claim 1, further comprising receiving the first information from the enterprise system.

10. The method of claim 1, further comprising:
receiving device information from the monitor agent, the device information relating to the target device; and
communicating the device information to the enterprise system.

11. A method comprising:
the method of claim 1 performed by the courier device; and
a method performed by the enterprise system, the method performed by the enterprise system being performed prior to the method of claim 1 performed by the courier device, the method performed by the enterprise system comprising:
selecting the target device;
determining that the monitor agent is disconnected from the enterprise system; and
sending, to the courier device, the first information and the confirmation that the enterprise system received the second information.

12. A computer-readable storage medium that stores instructions that are executable by a courier device configured to communicate with one or more devices, the courier device storing first information relating to a target device among the one or more devices, the first information being received from an enterprise system, the instructions for performing operations comprising:
discovering a monitor agent that is associated with the target device and that is disconnected from the enterprise system, the monitor agent being connectable to the enterprise system over a network, wherein discovering is performed by a software module comprising at least some of the instructions (i) by attempting communication with the monitor agent and (ii) by performing a filtering operation to avoid discovery of at least one other device;
capturing the monitor agent to thereby redirect communications from the monitor agent to the courier device;
communicating the first information from the courier device to the monitor agent, the monitor agent being disconnected from the enterprise system when the first information is communicated from the courier device, the courier device being separate from the enterprise system; and
communicating, to the monitor agent, confirmation that the enterprise system received second information previously sent to the courier device by the monitor agent for transmission to the enterprise system, the second information being different from the first information.

13. The computer-readable storage medium of claim 12, wherein the first information is for performing device management operations when the courier device visits a location of the target device.

14. The computer-readable storage medium of claim 12, wherein the first information comprises messages and content associated with the target device.

15. The computer-readable storage medium of claim 12, wherein the first information is compressed.

16. The computer-readable storage medium of claim 13, wherein the operations comprise receiving device information from the monitor agent.

17. The computer-readable storage medium of claim 16, wherein the device information comprises (i) a bundle comprised of pieces of device information or (ii) compressed device information.

18. The computer-readable storage medium of claim 12, wherein the operations comprise receiving, from the monitor agent, at least one of device information stored on the monitor agent and responses to messages contained in the first information.

19. The computer-readable storage medium of claim 12, wherein the operations comprise:
receiving device information from the monitor agent, the device information relating to the target device; and
communicating the device information to the enterprise system.

20. A courier device configured to communicate with one or more devices, the courier device comprising:
memory storing (i) instructions and (ii) first information relating to a target device among the one or more devices, the first information being received from an enterprise system; and
a processing device to execute the instructions to perform operations comprising:
discovering a monitor agent that is associated with the target device and that is disconnected from the enterprise system, the monitor agent being connectable to the enterprise system over a network, wherein discovering is performed by a software module comprising at least some of the instructions (i) by attempting communication with the monitor agent and (ii) by performing a filtering operation to avoid discovery of at least one other device;
capturing the monitor agent to thereby redirect communications from the monitor agent to the courier device;
communicating the first information from the courier device to the monitor agent, the monitor agent being disconnected from the enterprise system when the first information is communicated from the courier device, the courier device being separate from the enterprise system; and
communicating, to the monitor agent, confirmation that the enterprise system received second information previously sent to the courier device by the monitor agent for transmission to the enterprise system, the second information being different from the first information.

21. The courier device of claim 20, wherein the first information is for performing device management operations when the courier device visits a location of the target device.

22. The courier device of claim 20, wherein the first information comprises messages and content associated with the target device.

23. The courier device of claim 20, wherein the first information is compressed.

24. The courier device of claim 21, wherein the operations comprise receiving device information from the monitor agent.

25. The courier device of claim 24, wherein the device information comprises (i) a bundle comprised of pieces of device information or (ii) compressed device information.

26. The courier device of claim 20, wherein the operations comprise receiving, from the monitor agent, at least one of device information stored on the monitor agent and responses to messages contained in the first information.

27. The courier device of claim 20, wherein the courier device is configured for communication at a site of the target device.

28. The courier device of claim 20, wherein the operations comprise receiving the first information from the enterprise system.

29. The courier device of claim 20, wherein the operations comprise:
receiving device information from the monitor agent, the device information relating to the target device; and
communicating the device information to the enterprise system.