US20170237699A1 - Systems and methods for migrating mailbox data from systems with limited or restricted remote access - Google Patents
Systems and methods for migrating mailbox data from systems with limited or restricted remote access Download PDFInfo
- Publication number
- US20170237699A1 US20170237699A1 US15/586,812 US201715586812A US2017237699A1 US 20170237699 A1 US20170237699 A1 US 20170237699A1 US 201715586812 A US201715586812 A US 201715586812A US 2017237699 A1 US2017237699 A1 US 2017237699A1
- Authority
- US
- United States
- Prior art keywords
- action
- migration
- messaging system
- data
- buffer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/42—Mailbox-related aspects, e.g. synchronisation of mailboxes
-
- H04L51/22—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/029—Firewall traversal, e.g. tunnelling or, creating pinholes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
- H04L67/025—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
Definitions
- Examples described herein relate to computing systems including computing systems providing software as a service.
- Examples of mailbox migration between messaging systems is described, which may include computing systems programmed to open a communication channel with a mailbox migration service to facilitate migration.
- Software as a service has increased in popularity.
- software and associated data may be hosted on one or more computing systems (e.g. in the “cloud”) and may be accessed by client computing systems over a network connection using, for example, a web browser.
- Software hosting systems may connect to client systems by calling application programming interfaces (APIs) supported by those client systems. Utilizing APIs, the software hosting system may obtain access to data or functionality of the client system that may be necessary or desirable in performing the software service.
- APIs application programming interfaces
- Mailbox migration services may be provided as software as a service.
- Mailbox migration generally refers to copying messaging system content from a source messaging system to a destination messaging system.
- Examples of mailbox migrations include uni-directional migrations where messaging system content is moved from the source messaging system to the destination messaging system and bi-directional synchronization where messaging system content may be maintained on both the source and destination messaging systems.
- FIG. 1 is a schematic illustration of a system arranged in accordance with an embodiment of the present invention.
- FIGS. 2 and 3 are a flowchart illustrating actions to be performed by components of a system in accordance with an embodiment of the present invention.
- FIG. 4 is a flowchart of operations to start migrators and assign mailboxes to migrators arranged in accordance with an embodiment of the present invention.
- FIG. 5 is a flowchart of operations for a migrator to request a next action and provide data to a software hosting system in accordance with an embodiment of the present invention.
- FIG. 6 is a flowchart illustrating operations performed by a software hosting system responsive to initiation of a mailbox migration.
- FIG. 7 is a flowchart of operations performed by a communication service in examples of the present invention responsive to an action request call.
- FIG. 8 is a flowchart of operations for retrieving data and transmitting the data to a software hosting system in accordance with an embodiment of the present invention.
- FIG. 9 is a schematic illustration of one example of a computing system according to one embodiment of the invention.
- software hosting systems that may provide software as a service (e.g., mailbox migration services) may connect to client systems (e.g. source messaging systems) over a network by calling APIs support by those client systems.
- client systems e.g. source messaging systems
- client systems may be behind a network firewall and/or may not support web APIs.
- the firewall may block certain network activities. For example, some firewall systems may block connections over the network to APIs exposed by the client system.
- software as a service systems including, for example mailbox migration services
- some client systems may not support web services and/or offer APIs for remote access to data or functionality.
- Lotus Domino a collaborative software suite developed by IBM, which may provide a Lotus Notes messaging system, does not provide any API to remotely access its data from the interact without establishing a Virtual Private Network (VPN).
- software hosting systems that provide software as a service e.g. mailbox migration services
- such a system is behind a firewall, it may not be possible to access the system directly for data or functionality.
- embodiments of source messaging systems described herein may not be accessible to software hosting systems such as mailbox migration systems on their own.
- Embodiments of the present invention accordingly provide a data transmission mechanism between client systems and software hosting systems.
- Examples of the data transmission mechanism may operate through firewalls that allow common HTTP access.
- Examples of the data transmission mechanism may operate using a peering technique.
- software as a service may be provided to client systems behind firewalls, client systems without web APIs for remote access of data, or both. Examples include providing a software component (referred to herein as an extractor) to the client system for use in establishing communication between the software hosting system and the client system.
- mailbox migration services may be provided as software as a service.
- Mailbox migration generally refers to copying messaging system content from a source messaging system to a destination messaging system.
- Examples of mailbox migrations include uni-directional migrations where messaging system content is moved from the source messaging system to the destination messaging system and bi-directional synchronization where messaging system content may be maintained on both the source and destination messaging systems.
- a mailbox generally refers to messaging system content associated with an account (e.g. a user) on the messaging system.
- the mailbox may include any amount or type of messaging system content and may have folders and other organization that should be replicated during a migration.
- Mailbox migration is not a task that may be completed by hand, because the amount of data involved in migrating a mailbox, let alone a large number of mailboxes such as all mailboxes associated with an enterprise, may be too great or cumbersome for an individual to transfer by hand in a lifetime.
- the formats of stored mailbox data may require conversion (e.g. translation) between the format of the host and destination systems.
- conversion e.g. translation
- the large amount of conversion e.g. translation
- Efficiently completing mailbox migrations may be desirable for enterprises with large numbers of mailboxes that desire to upgrade or change to a different messaging system.
- Messaging system content may include, but is not limited to, emails, calendars, contacts, notes, journals, tasks, and combinations thereof.
- mailbox migration may occur between different types of messaging systems. Examples of messaging systems types include, but are not limited to, Microsoft Exchange, Microsoft Office 365, Microsoft Live@edu, Google Apps, Novell Groupwise, Zimbra, Lotus Notes, IMAP, and POP.
- FIG. 1 is a schematic illustration of a system arranged in accordance with an embodiment of the present invention.
- the system 100 includes a source messaging system 105 , a destination messaging system 110 , and a software hosting system 115 (e.g. migration system).
- Each of the source messaging system 105 , the destination messaging system 110 , and the software hosting system 115 may be implemented using computing systems which may include one or more processors, circuitry, memory, interfaces, and other components and may be programmed with computer executable instructions for performing the functionalities described herein. It is to be understood that the arrangement of the computing systems is flexible in embodiments of the present invention.
- the software hosting system 115 may be programmed to provide a software service to one or more other systems (e.g. the source and/or destination messaging systems).
- the software hosting system 115 may be programmed to provide mailbox migration services.
- the source messaging system 105 may be a computing system hosting messaging system content that may benefit from services provided by the software hosting system 115 .
- the source messaging system 105 may be representative of any client system that may benefit from the services of the software hosting system 115 .
- the source messaging system 105 may not include APIs for access by the software hosting system 115 , and/or may be behind a firewall from a network 125 accessible to the software hosting system 115 .
- the source messaging system 105 may include a mail server 130 which may include a mail database 131 which may store messaging system content.
- the mail server 130 may, for example, be implemented as a Lotus Domino server, or any other messaging system server,
- the mail database 131 may be implemented as a Lotus NSF database, or any other mail database.
- the source messaging system 105 may include a mail client 135 .
- the mail client 135 is exemplary, and any number of mail clients may be included in the source messaging system 105 .
- the mail client 135 may include a mail library 137 .
- the mail client 135 may be implemented by a Lotus Notes client and the mail library 137 may be implemented as a Lotus COM library.
- the mail server 130 and mail client 135 may be in communication with one another, directly or through a mail system network 140
- the mail system network 140 may be wired or wireless, and may be implemented using any networking technologies.
- the mail system network 140 may be behind a firewall from the network 125 in some examples.
- the mail server 130 may in some examples not expose APIs to the software hosting system 115 through the network 125 suitable for use in obtaining data from the mail server 130 for use in providing software as a service from the software hosting system 115 .
- the source messaging system 105 may further include an extractor 142 .
- the extractor 142 may be implemented as computer executable instructions programmed on a computing system in communication with the mail system network 140 .
- the extractor 142 may be run on the same computing system as the mail server 130 , mail client 135 , or both.
- the extractor 142 may facilitate communication between the mail server 130 and/or mail client 135 and the software hosting system 115 .
- the extractor 142 may be implemented as an executable file which may be installed on the source messaging system 105 , for example by an administrator.
- the extractor 142 may initiate a peering connection with the software hosting system 115 using HTTP (e.g.
- the extractor 142 may request actions to perform from the software hosting system 115 , perform the actions in the source messaging system 105 , and send responses to the software hosting system 115 through the firewall. Accordingly, in some examples no extra port is required to be opened in a firewall between the mail system network 140 and network 125 .
- any number of extractors including the extractor 142 may be provided on the source messaging system 105 .
- one computer or computing system may be provided in the source messaging system 105 per extractor. This may, for example, ensure sufficient processing resources to implement each extractor.
- each extractor such as the extractor 142 may handle up to a maximum number of mailbox migrations concurrently, a maximum of 30 mailbox migrations in one example. Accordingly, if a greater number of concurrent mailbox migrations is desired, additional extractors may be provided.
- the extractor 142 may include a heartbeat 150 .
- the heartbeat 150 may check periodically, such as every 10 seconds in one example, to confirm the mail server 130 remains responsive, and may maintain a timestamp of times during which the mail server 130 was responsive.
- the extractor 142 may further include a guardian 151 .
- the guardian 151 may check periodically, such as every few seconds in one example, that the heartbeat 150 has indicated a responsive mail server 130 . In the event the heartbeat 150 indicates the mail server 130 is unresponsive, or has been unresponsive for longer than a threshold time, the guardian 151 may stop other components of the extractor 142 and attempt to restart the extractor 142 , e.g. by relaunching other portions of the extractor 142 .
- the extractor 142 may include a coordinator 152 .
- the coordinator 152 may generate (e.g. launch or start) migrators 153 . Accordingly the extractor 142 may further include migrators 153 .
- any number of migrators 153 may be provided in the extractor 142 , and generally in some examples each migrator 153 may serve to migrate one mailbox. Accordingly, if the extractor may migrate up to a maximum number of mailboxes, it may be provided with up to that same maximum number of migrators in some examples.
- Mailbox users 157 may communicate with the mail server 130 and/or the mail client 135 directly or over the mail system network 140 .
- the mailbox users 157 may be individuals or may be other computer processes that utilize mailboxes.
- One or more administrators 158 may communicate with the mail server 130 and/or mail client 135 directly or over the mail system network 140 .
- the administrators 158 may be individuals or may be other computer processes used to administer the mail server 130 and/or mail client 135 .
- the administrators 158 may utilize another computing system (not shown) to access the mail server 130 and/or mail client 135 or the administrators may directly utilize the mail server 130 and/or mail client 135 computing systems to administer the systems.
- the administrators 158 may further communicate with the software hosting system 115 , for example, to initiate a request for a software service and/or provide configuration information for the software service.
- the software hosting system 115 may provide software services to client systems, such as the source messaging system 105 .
- the software hosting system 115 is programmed to provide mailbox migration services, but other software services may be provided by software hosting systems utilizing the communication techniques for connection to client systems described herein.
- the software hosting system 115 includes a migration website 160 , a migration web API 162 , a migration scheduler 163 , a migration service 164 , and a communication service 165 . These may all be implemented as software components that are programmed on the software hosting system 115 to provide the functionalities and interactions described herein.
- the migration website 160 may provide a web interface for receipt of a request for software services provided by the software hosting system 115 .
- the migration website 160 may receive a request to start a mailbox migration from the source system 105 to the destination messaging system 110 .
- the migration website 160 may start the requested migration, including communicating with the migration scheduler 163 to begin a migration.
- the migration web API 162 may check periodically, e.g. every 30 seconds in one embodiment, to determine if a software service, e.g. a mailbox migration, has been requested.
- the migration scheduler 163 may identify computing resources for the software hosting system 115 to utilize in providing the requested software service. For example, the migration scheduler 163 may associate particular servers to a requested migration.
- the migration scheduler 163 may dynamically obtain computing resources, for example, from a cloud provider, to perform the requested service.
- Embodiments of dynamically obtaining and assigning resources for mailbox migrations are described in co-pending U.S. Published Patent Application 2011/0264748, entitled “On-demand mailbox synchronization and migration system,” published on Oct. 27, 2011 from application Ser. No. 12/961,268, filed on Dec. 6, 2010 and claiming priority to provisional application No. 61/328,003.
- the entire contents of U.S. Published Application 2011/0264748, U.S. Ser. No. 12/961,268, and provisional application Ser. No. 61/328,003, are hereby incorporated by reference in their entirety for any purpose.
- the communication service 165 may open a communication channel to the source messaging system 105 , e.g. for communication with the extractor 142 . In some examples, one communication channel may be opened for each migrator 153 provided in the source messaging system 105 .
- the communication service 165 may be implemented using communication frameworks, such as but not limited to Microsoft's Windows Communication Framework (WCF). Accordingly, the communication service 164 may facilitate the receipt of data from the source messaging system 105 and the providing of actions to the source messaging system 105 for the source messaging system 105 to perform.
- WCF Microsoft's Windows Communication Framework
- the migration service 164 may generally perform the mailbox migration.
- the migration service 164 may receive data obtained from the source messaging system 105 (e.g. through the extractor 142 ) and may send the data to the destination messaging system 110 .
- the migration service 164 may perform a conversion translation) of the data obtained from the source messaging system 105 from a format used by the source messaging system 105 to a format used by the destination messaging system 110 (e.g. Lotus Notes to Gmail, etc.).
- the migration service 164 may maintain a list of actions for performing a mailbox migration and may provide next actions for sending to the source messaging system 105 .
- the software hosting system 115 may include an action buffer 170 and a data buffer 171 . Any number of action buffers and data buffers may be included in the software hosting system 115 , with generally one action buffer and data buffer provided per mailbox migration.
- the action buffer 170 and data buffer 171 may be implemented in memory (the two buffers may be implemented in the same or different memories) accessible to the software hosting system 115 .
- the action buffer 170 may store one or more actions to be provided to the source messaging system 105 (e.g. to the extractor 142 ) for the source messaging system 105 to act on a migration. For example, actions may include test, wait, stop, done, get items, and may include one or more parameters related to the action.
- the data buffer 171 may store data, e.g. messaging system content, received from the source messaging system 105 .
- the migration service 164 may access data in the data buffer 171 and provide the data to the destination messaging system 110 .
- FIGS. 2 and 3 are flowcharts illustrating actions to be performed by components of a system in accordance with an embodiment of the present invention.
- Components of the source messaging system 105 and the software hosting system 115 are shown with like reference numbers to those of FIG. 1 .
- Columns are shown to illustrate the actions performed by the mail server 105 , coordinator 152 portion of the extractor 142 , migrator 153 portion of the extractor 142 , communication service 165 , migration service 164 , and migration website 160 .
- An administrator 158 may start a migration in block 205 using the migration website 160 .
- Starting a migration may include indicating a source messaging system, a destination messaging system, a number of mailboxes to migrate, and in some examples may include providing credentials for access to the mailboxes for which migration is requested.
- the migration service 164 may open a communication channel for the migration in box 213 .
- the communication channel may be specific to the migration (e.g. may be specific to one mailbox). Accordingly, a communication channel may be opened by the migration service 164 for each mailbox to be migrated. The communication channel is accordingly shown open in block 214 .
- the administrator 158 may start an extractor on the source messaging system 105 , such as the extractor 142 of FIG. 1 .
- the extractor may be started, for example, by launching an executable containing the computer executable instructions for performing the extractor functionalities. Accordingly, an executable file for the extractor 142 may be provided to the administrator 158 or otherwise loaded onto the client messaging system 105 .
- the extractor may be started in box 207 .
- the coordinator 152 may, in box 209 , request mailbox migrations to be performed. For example, the source messaging system 105 may not be aware that a mailbox migration has been requested or is desired for the source messaging system 105 .
- the coordinator 152 may periodically communicate with the software hosting system 115 to determine if a mailbox migration has been started.
- the coordinator may start a migrator, such as the migrator 153 .
- a migrator 153 may be started for each mailbox migration requested.
- a migrator may accordingly be created in block 215 .
- the migrator may connect to the communication service, e.g. the communication service 165 of FIG. 1 .
- the migrator may periodically attempt to connect to the communication service.
- the migrator may be started in block 215 prior to the communication channel being opened in block 213 . Accordingly, the migrator may need to make several attempts to connect to the communication service in block 217 .
- the migration service 164 may set a next action in a migration action buffer in block 305 .
- the migration service 164 may maintain a list of actions that may be required in a migration, and an order in which the actions are to be performed.
- a next action may be placed in the action buffer in the block 305 .
- the migration service 164 may then wait for a migration data buffer to contain data in block 306 .
- the extractor 142 once connected to the communication service in block 217 , may request a next action to perform. To request a next action, the extractor may call the communication service 165 in block 310 .
- the extractor 142 may call a method supported by the communication service, e.g. ‘Action Request.’ Communication between the extractor 142 and the communication service 165 may occur using HTTP through a firewall in some examples, a standard configuration for http traffic.
- the communication service 165 may receive a next action from the action buffer in block 312 .
- the communication service 165 may get a next action stored in the action buffer, e.g. an action set in the action buffer in the block 305 .
- the communication service 165 may provide the next action to the migrator 153 .
- the migrator 153 may accordingly perform the action in block 316 .
- the migrator 153 may, for example, communicate with the mail server 105 to perform the action in block 318 , such as getting messaging system content. Communication between the extractor 142 , including the migrator 153 , and the mail server 105 may be behind a firewall on a mail system network, as shown in FIG. 1 .
- results of the action may be sent by the migrator 153 to the communication service in block 320 .
- the migrator 153 may call a method supported by the communication service 165 , e.g. a ‘Data Transfer’ method in block 322 .
- the migrator 153 may request a next action to perform in block 307 .
- the migrator 153 may repeatedly request an action from the communication service 165 , perform the action, and send results.
- the action received is indicative of stopping the migration (e.g.
- the migrator 153 may close, such that computing resources dedicated to the migrator 153 may become available to other programs on the computing system on which the migrator 153 resided. For example, the computing resources may be used to start other migrators for other requested migrations.
- the communication service 165 may receive data from the migrator 153 responsive to the action performed, and may set the received data in the data buffer in block 324 .
- the communication service 165 may in block 326 set a next action in the action buffer to ‘wait’. In this manner, should the migrator 153 request a next action prior to the software hosting system 115 processing the received data, the migrator 153 would receive a wait action responsive to requesting the next action in block 307 . Accordingly, the migrator 153 may wait to perform another action involving the mail server 105 until the data set in the data buffer has been cleared from the data buffer—e.g. has been migrated by the migration service 164 , or moved out of the data buffer to another location in memory accessible to the software hosting system in preparation for migration by the migration service 164 .
- the migration service 164 may identify the data buffer contains data in block 306 , and in block 330 , the migration service 164 may get and clear data from the data buffer. For example, data may be moved out of the data buffer in block 330 and read into or moved to another memory or memory area accessible to the migration service 164 .
- the memory to which the data is moved may be located on the same physical memory (e.g. hard drive) as the data buffer in some examples, but not logically part of the data buffer.
- the data from the data buffer either stored in the data buffer or in another location having been moved from the data buffer, may be migrated to a destination messaging system. Once the data is moved out of the data buffer, the migration service 164 may then set a next action into the action buffer in block 305 .
- examples of the present invention may control mailbox migrations utilizing an action buffer storing a next action, and a data buffer storing data received from a source messaging system.
- Communication between the source messaging system 105 and the software hosting system 115 may be performed through a firewall using HTTP in some examples and the software hosting system 115 may not directly access a mail server 105 .
- the source message system 105 may obtain next actions from the software hosting system 115 , connect with the mail server 130 to perform actions, and provide data back to the software hosting system 115 , which may migrate the data to the destination messaging system.
- FIG. 4 is a flowchart of operations to start migrators and assign mailboxes to migrators arranged in accordance with an embodiment of the present invention.
- An extractor may be started in block 400 .
- the extractor may already be provided on a client system, e.g. a source messaging system such as the source messaging system 105 of FIG. 1 .
- an administrator or other person or process may install an extractor, e.g. by launching an executable file having computer readable instructions to program the source messaging system to perform the extractor functions described herein.
- the extractor may validate a migration authentication.
- Block 401 may be performed by the coordinator 152 of FIG. 1 .
- the coordinator 152 may authenticate itself to the software hosting system 115 , for example.
- the extractor may check that it is operating with a latest version of the extractor software.
- the coordinator 152 of FIG. 1 may request a version check from the software hosting system 115 , and if not operating at the latest version, may obtain a latest version of the extractor from the software hosting system 115 .
- the coordinator 152 of FIG. 1 may perform block 402 in some examples.
- mailbox connectors may be requested.
- Each mailbox connector may specify a migration from one source messaging system to another source messaging system, e.g. “Lotus to GMail.”
- the mailbox connectors may be specified by an administrator using the migration website 160 of FIG. 1 in some examples.
- the administrator may further associate mailboxes to the connector (e.g. specify all of the mailboxes that should be migrated from the source to the destination messaging system).
- the coordinator 152 of FIG. 1 may request from the software hosting system all the mailbox connectors which pertain to the source messaging system with which the coordinator 152 is associated, e.g. the source messaging system 105 .
- the coordinator 152 may retrieve the associated mailbox migrations. For example, each individual mailbox to be migrated may be considered a separate mailbox migration. For each mailbox migration, a migrator may be started in block 405 .
- the coordinator 152 of FIG. 1 may perform the blocks 404 and 405 , and may start the migrators 153 in block 405 .
- each extractor may have any number of migrators, and may in some examples have up to a maximum amount of migrators to ensure the migrators do not exceed available computational resources.
- additional extractors may be provided.
- one extractor may only be able to run a maximum number of migrators. Multiple extractors may be installed on a machine (e.g. in several different folders), but this may result in a decrease in performance as the multiple extractors may compete for the same processing resources. Accordingly, in some examples, one extractor may be installed per machine, and multiple machines may be provided to provide a desired number of migrators, where the number of extractors desired may equal the number of mailboxes to be migrated simultaneously divided by the maximum number of migrators supported by an extractor.
- a fewer number of extractors may be used and the mailbox migration may take a longer time to run while the fewer number of migrators each provide a number of migrators equal or less than the maximum number they may support.
- the blocks in FIG. 4 may be repeated until a user, administrator, or other individual or process closes the extractor.
- FIG. 5 is a flowchart of operations for a migrator to request a next action and provide data to a software hosting system in accordance with an embodiment of the present invention.
- the actions shown in FIG. 5 may be performed by a migrator, e.g. one of the migrators 153 of FIG. 1 , in some examples.
- a migrator may be started.
- a coordinator e.g. coordinator 152 of FIG. 1
- the migrator may connect to the software hosting system.
- the migrator 153 of FIG. 1 may connect to the communication service 165 . Communication may occur, for example through a firewall using HTTP in some examples.
- the migrator may initialize a mail server session, for example a Lotus Notes session.
- the migrator 153 may initialize a mail session with the mail server 130 . Accordingly, the mail session allowing access to the mail database 131 may be initiated over the mail system network 140 or through a direct connection between the migrator 153 and the mail server 130 .
- the mail session may not be initialized using the network 125 in some examples. Accordingly, the mail server 130 itself may not need to communicate over the network 125 in some examples.
- the mail database is opened.
- the mail database may be opened by the migrator or by the mail server.
- the entire database may not be opened or accessible, but rather the portion of the database corresponding with the mailbox to be migrated by the migrator initializing the mail server connection. Accordingly, the mail database, such as the database 131 of FIG. 1 , and/or relevant portions of the database, may now be accessible to the migrator, including the messaging system content stored on the mail database.
- the migrator may optionally test the connection to the communication service.
- the test may be conducted, for example, by sending a test message and receiving a known reply from the software hosting service in response.
- the migrator may optionally check with the software hosting service to ensure it is running the latest version of the migrator and/or extractor software. If a more recent version or update is available, the update may be installed before the mailbox migration is begun.
- the migrator may request a next action to perform.
- the next action to perform may, for example, be requested by the migrator 135 of FIG. 1 from the communication service 165 of FIG. 1 .
- the communication service 165 may obtain the next action to perform from the action buffer 170 of FIG. 1 and provide the action to the migrator 135 ,
- the migrator may perform the action received responsive to the request in block 506 .
- the migrator may wait, or may request data from the mail server.
- the action received may specify how much data should be retrieved corresponding to the one action. It may be desirable not to retrieve large amounts of data responsive to a single action, because the retrieving of larger amounts of data may be more prone to failure. Accordingly, in some examples, an action is associated with a maximum amount of data to retrieve, or a number of content items to retrieve, 1000 content items is one example.
- the result, if any, from performing the action may be sent back to the software hosting system.
- the migrator 153 of FIG. 1 may send the result of an action, e.g. messaging system content retrieval, to the communication service 165 .
- the communication service 165 may store the received data in the data buffer 171 .
- the blocks 506 - 508 may be repeated until an action indicating the mailbox migration is complete or is to be stopped is received—e.g. an action ‘done’ or ‘stop’.
- FIG. 6 is a flowchart illustrating operations performed by a software hosting system responsive to initiation of a mailbox migration.
- a software hosting system in examples of the present invention may execute a series of actions to retrieve messaging system content for migration. Because the source messaging system may not be accessible over the Internet in examples of the present invention, actions may be stored (e.g. deposited, set) in an action buffer and recovered and performed by a migrator running in the source messaging system.
- a mailbox migration may be requested by an administrator.
- the mailbox migration may be requested, for example, using the migration website 160 of FIG. 1 .
- an administrator may specify a source messaging system, a destination messaging system, mailboxes to be migrated, authentication credentials for the mailboxes, or combinations thereof.
- the software hosting system may set a next action into an action buffer.
- the migration service 164 of FIG. 1 may set the next action into an action buffer.
- the action buffer into which the migration service may set the next action may be an action buffer accessible to a migrator running on a source messaging system through the communication service of FIG. 1 .
- the software hosting system in examples of the present invention may not be informed of the outcome of the next action.
- the calling system may be informed of the outcome of a requested action, and if the action was successful, the calling system may receive the requested data and continue processing.
- the source messaging system in examples of the present invention may not be accessible using a web service call, however, in embodiments of the present invention a different approach may be taken to inform the software hosting system of a completed action.
- the software hosting system may wait for a data buffer (e.g. the data buffer 171 of FIG. 1 ) to contain data.
- a data buffer e.g. the data buffer 171 of FIG. 1
- the migration service 164 may not know when or if the action in the action buffer was received by the source messaging system or if the action was successful, may wait for data to be present in the data buffer.
- the migration service 164 may check the data buffer periodically in block 603 (e.g. every 100 ms in the example of FIG. 6 —other frequencies may be used in other examples). If no data is present after a maximum amount of time in some examples (e.g. three minutes in the example of FIG. 6 , other maximum times may be used in other examples), the migration service may time out.
- the migration service in block 604 may retrieve and clear the data from the data buffer. For example, the migration service may read the data in the data buffer and/or copy the data from the data buffer to another location accessible to the migration service. The migration service may delete the data from the data buffer. Clearing (e.g. deleting) data from the data buffer may serve as an acknowledgement of receipt of the data by the migration service. In this manner, the communication service may be able to provide an indication to the source messaging system that the data has been received. In block 605 , the migration service may process the data and may migrate the data to the destination messaging system.
- the migration service may continue again at block 601 by placing a next action in the action buffer.
- FIG. 7 is a flowchart of operations performed by a communication service in examples of the present invention responsive to an action request call.
- a migrator e.g. the migrator 153 of FIG. 1
- the migrator may call the action request method when it is ready for a next action (e.g. in block 307 of FIG. 3 ).
- the communication service may verify that the mailbox migration associated with the migrator making the call is still in progress. For example, the communication service may check that there is an action in the action buffer associated with the migrator making the call. If no action is contained in the action buffer, the communication service may return a stop action in order to inform the migrator that the mailbox migration is complete or has been stopped.
- the communication service may check that previously received data has been cleared from the data buffer. If the data buffer contains data, the communication service may return the action ‘wait’ to the migrator, indicating to the migrator that the migrator should request an action later. This may allow sufficient time for the migration service to process (e.g. copy and/or begin migrating) the data in the data buffer. The communication service needs not wait in some examples until the data has been fully migrated (e.g. transferred to the destination messaging system), instead the communication service may wait for the data to be copied out of the data buffer to another storage location accessible to the migration service from which the migration service may complete the migration.
- data may be downloaded from the source messaging system generally at a faster rate than the data is migrated and uploaded at the destination messaging system which may result in accumulation of data in the software hosting system during a migration. For example, if a wait were not returned while data were still present in the data buffer, data may back up in the data buffer and/or software hosting system. Accordingly, the wait may improve performance by ensuring that a data backlog may not be created while the migration service is processing data.
- the communication service may get the next action from the action buffer. For example, the communication service may read the next action in the action buffer. In some examples, the communication service may then delete the action from the action buffer. In block 704 , the communication service may send the next action to the migrator. Communication may occur, for example, through a firewall using HTTP.
- FIG. 8 is a flowchart of operations for retrieving data and transmitting the data to a software hosting system in accordance with an embodiment of the present invention.
- a migrator e.g. the migrator 153 of FIG. 1
- a communication service e.g. the communication service 165 of FIG. 1
- the communication service may check if the migration to which the data transfer call pertains is still running.
- the communication service may check the action buffer associated with the migration, and if the action buffer contains an action, the communication service may determine the migration is still running.
- the communication service may check the action buffer associated with the migration in some examples to determine if the action buffer contains an action that requested the data received in the method call. If the action buffer does contain an action that requested the data, the communication service may proceed. If, however, the action buffer does not contain an action, or in some examples if the action buffer does not contain an action which requested the received data, the communication service may reject the received data.
- the communication service may check if all previously received data has been processed. For example, the communication service may check if the data buffer associated with the migration still contains data, If the data buffer contains data, the incoming data may be rejected to allow time for the existing stored data to be processed. If the data buffer does not contain data, the process of FIG. 8 may continue.
- the communication service may store (e.g. set) the received data into the data buffer (for example, the communication service 165 of FIG. 1 may store received data in the data buffer 171 of FIG. 1 ).
- the communication service may store (e.g. set) a next action in the action buffer to “wait”. By storing a next action as wait in the action buffer, if a migrator calls the action request method of the communication service before the migration service has determined a next action, the migrator may receive a wait action.
- FIG. 9 is a schematic illustration of one example of a computing system according to one embodiment of the invention.
- the computing system 900 may be used to implement the software hosting system 115 of FIG. 1 , the destination messaging system 110 of FIG. 1 , or the source messaging system 105 in some examples. In other examples, the computing system 900 may include many more or less components than those shown. While the computing system 900 of FIG. 9 is shown as including a single computing device, in examples of the present invention the computing system 900 may include multiple computing devices which may be in communication with one another.
- Computing system 900 includes processing unit 912 (additional processing units may be included in other embodiments), video display adapter 914 , and a memory, all in communication with each other via bus 922 .
- the memory generally includes RAM 916 , ROM 932 , and one or more permanent mass storage devices, such as hard disk drive 928 , tape drive, optical drive, and/or floppy disk drive.
- the memory may store operating system 920 for controlling the operation of the computing system 900 . Any general-purpose operating system may be employed.
- BIOS Basic input/output system
- BIOS Basic input/output system
- computing system 900 also can communicate with the Internet, or some other communications network, via network interface unit 910 , which may be constructed for use with various communication protocols including the TCP/IP protocol, and/or through the use of Network Protocol Layer 959 , or the like.
- Network interface unit 910 is sometimes known as a transceiver, transceiving device, or network interface card (NFC).
- Computer-readable storage media may include volatile, nonvolatile, removable, and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, computer executable instructions, data structures, program modules, or other data.
- Examples of computer readable storage media include RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other physical, transitory, or non-transitory medium which can be used to store the desired information and which can be accessed by a computing device.
- data stores 954 may include a database, text, spreadsheet, folder, file, or the like, that may be configured to maintain and/or store various content.
- Data stores 954 may further include program code, data, algorithms, and the like, for use by a processor, such as central processing unit (CPU) 912 to execute and perform actions.
- CPU central processing unit
- at least some of data and/or instructions stored in data stores 954 might also be stored on another device of the computing system 900 or accessible to the computing system 900 , including, but not limited to cd-rom/dvd-rom 926 , hard disk drive 928 , or other computer-readable storage device resident on the computing system 900 or accessible by the computing system 900 over, for example, network interface unit 910 .
- the memory may also store program code and data.
- One or more applications 950 may be loaded into memory (e.g. programmed) and run on operating system 920 .
- Examples of application programs may include transcoders, schedulers, calendars, database programs, word processing programs, Hypertext Transfer Protocol (HTTP) programs, customizable user interface programs, IPSec applications, encryption programs, security programs, SMS message servers, IM message servers, email servers, account managers, and so forth.
- Web services 956 , messaging services 958 , and Network Protocol Layer 959 may also be included as application programs within applications 950 .
- the invention is not limited to these non-limiting examples, and other applications may also be included.
- the system may not include web services capabilities, or messaging services sufficient to call a web service.
- Messaging services 958 may include virtually any computing component or components configured and arranged to forward messages from message user agents, and/or other message servers, or to deliver messages to a local message store, such as data store 954 , or the like.
- messaging services 958 may include a message transfer manager to communicate a message employing any of a variety of email protocols, including, but not limited, to Simple Mail Transfer Protocol (SMTP), Post Office Protocol (POP), Internet Message Access Protocol (MAP), NNTP, or the like.
- SMSTP Simple Mail Transfer Protocol
- POP Post Office Protocol
- MAP Internet Message Access Protocol
- Messaging services 958 may be configured to manage SMS messages, TM, MMS, IRC, RSS feeds, mIRC, or any of a variety of other message types.
- messaging services 958 may enable users to initiate and/or otherwise conduct chat sessions, VoIP sessions, or the like.
- examples of source messaging systems described herein may not include messaging services for calling web services.
- Network Protocol Layer 959 may represent those applications useable to provide communications rules and descriptions that enable communications in or between various computing devices. Such protocols, include, but are not limited to signaling, authentication, error detection and correction capabilities. In one embodiment, at least some of the applications for which Network Protocol Layer 959 represents may be included within operating system 920 , and/or within network interface unit 910 .
- the memory e.g. RAM 916
- the memory may be encoded with computer executable instructions (e.g. programmed) for performing the functions described for the migration website, migration web API, communication service, migration scheduler, and the migration service.
- the functions described with reference to those components may be performed in the network protocol layer 959 .
- the memory e.g. data stores 954
- the memory may store the action buffers and data buffers described above, e.g. the action buffer 170 and data buffer 171 of FIG. 1 .
- the memory e.g. RAM 916
- the memory may be encoded with computer executable instructions (e.g. programmed) for performing the functions described for the extractor 142 of FIG. 1 , including the heartbeat 150 , guardian 151 , coordinator 152 , and migrator 153 .
- the extractor executable instructions may be programmed on the source messaging system by an administrator launching an executable file on the source messaging system, which executable file is configured to program the source messaging system with the described functionalities.
Abstract
Examples described include software hosting systems able to provide software as a service to client systems through a firewall and/or to client systems which do not have web service capability. Examples include mailbox migration systems for migrating mailboxes from a source messaging system (e.g. a Lotus Notes system) to a destination messaging system. Software hosting systems described herein may maintain an action buffer including a next action to be performed by the source messaging system, and wait for data (e.g. messaging system content) to be returned and stored in a data buffer. Communication between the software hosting system and the source messaging system may occur over a communication channel which may be operated through a firewall using HTTP.
Description
- This application is a continuation of pending U.S. patent application Ser. No. 13/686,637 filed Nov. 27, 2017. The aforementioned application is incorporated herein by reference, in its entirety, for any purpose.
- Examples described herein relate to computing systems including computing systems providing software as a service. Examples of mailbox migration between messaging systems is described, which may include computing systems programmed to open a communication channel with a mailbox migration service to facilitate migration.
- Software as a service has increased in popularity. Generally, in software as a service systems, software and associated data may be hosted on one or more computing systems (e.g. in the “cloud”) and may be accessed by client computing systems over a network connection using, for example, a web browser.
- Software hosting systems (e.g. in the “cloud”) may connect to client systems by calling application programming interfaces (APIs) supported by those client systems. Utilizing APIs, the software hosting system may obtain access to data or functionality of the client system that may be necessary or desirable in performing the software service.
- Mailbox migration services may be provided as software as a service. Mailbox migration generally refers to copying messaging system content from a source messaging system to a destination messaging system. Examples of mailbox migrations include uni-directional migrations where messaging system content is moved from the source messaging system to the destination messaging system and bi-directional synchronization where messaging system content may be maintained on both the source and destination messaging systems.
-
FIG. 1 is a schematic illustration of a system arranged in accordance with an embodiment of the present invention. -
FIGS. 2 and 3 are a flowchart illustrating actions to be performed by components of a system in accordance with an embodiment of the present invention. -
FIG. 4 is a flowchart of operations to start migrators and assign mailboxes to migrators arranged in accordance with an embodiment of the present invention. -
FIG. 5 is a flowchart of operations for a migrator to request a next action and provide data to a software hosting system in accordance with an embodiment of the present invention. -
FIG. 6 is a flowchart illustrating operations performed by a software hosting system responsive to initiation of a mailbox migration. -
FIG. 7 is a flowchart of operations performed by a communication service in examples of the present invention responsive to an action request call. -
FIG. 8 is a flowchart of operations for retrieving data and transmitting the data to a software hosting system in accordance with an embodiment of the present invention. -
FIG. 9 is a schematic illustration of one example of a computing system according to one embodiment of the invention. - Certain details are set forth below to provide a sufficient understanding of embodiments of the invention. However, it will be clear to one skilled in the art that embodiments of the invention may be practiced without various of these particular details. In some instances, well-known computer system components, networking components, circuits, and software operations have not been shown in detail in order to avoid unnecessarily obscuring the described embodiments of the invention.
- As described above, software hosting systems that may provide software as a service (e.g., mailbox migration services) may connect to client systems (e.g. source messaging systems) over a network by calling APIs support by those client systems. However, some client systems may be behind a network firewall and/or may not support web APIs. The firewall may block certain network activities. For example, some firewall systems may block connections over the network to APIs exposed by the client system. Accordingly, software as a service systems (including, for example mailbox migration services) may not be able to connect to client systems behind the firewall without having a system administrator create a hole in the firewall for use by the software hosting system.
- In other examples, some client systems may not support web services and/or offer APIs for remote access to data or functionality. For example, Lotus Domino, a collaborative software suite developed by IBM, which may provide a Lotus Notes messaging system, does not provide any API to remotely access its data from the interact without establishing a Virtual Private Network (VPN). Accordingly, software hosting systems that provide software as a service (e.g. mailbox migration services) may not be able to access client systems which do not have APIs for remote data access if the software hosting system relies on APIs for required data and functionality access. Further, if such a system is behind a firewall, it may not be possible to access the system directly for data or functionality.
- Generally, embodiments of source messaging systems described herein may not be accessible to software hosting systems such as mailbox migration systems on their own. Embodiments of the present invention accordingly provide a data transmission mechanism between client systems and software hosting systems. Examples of the data transmission mechanism may operate through firewalls that allow common HTTP access. Examples of the data transmission mechanism may operate using a peering technique. In this manner, software as a service may be provided to client systems behind firewalls, client systems without web APIs for remote access of data, or both. Examples include providing a software component (referred to herein as an extractor) to the client system for use in establishing communication between the software hosting system and the client system.
- As described above, mailbox migration services may be provided as software as a service. Mailbox migration generally refers to copying messaging system content from a source messaging system to a destination messaging system. Examples of mailbox migrations include uni-directional migrations where messaging system content is moved from the source messaging system to the destination messaging system and bi-directional synchronization where messaging system content may be maintained on both the source and destination messaging systems.
- Generally, any number of mailboxes may be migrated in accordance with embodiments of the present invention. A mailbox generally refers to messaging system content associated with an account (e.g. a user) on the messaging system. The mailbox may include any amount or type of messaging system content and may have folders and other organization that should be replicated during a migration. Mailbox migration is not a task that may be completed by hand, because the amount of data involved in migrating a mailbox, let alone a large number of mailboxes such as all mailboxes associated with an enterprise, may be too great or cumbersome for an individual to transfer by hand in a lifetime. Beyond simply the amount of data, the formats of stored mailbox data (including, but not limited to, emails, calendars, contacts, tasks, etc.) between source and destination systems may require conversion (e.g. translation) between the format of the host and destination systems. The large amount of conversion (e.g. translation) further prohibits manual mailbox transfer. Efficiently completing mailbox migrations may be desirable for enterprises with large numbers of mailboxes that desire to upgrade or change to a different messaging system.
- Messaging system content may include, but is not limited to, emails, calendars, contacts, notes, journals, tasks, and combinations thereof. In some examples, mailbox migration may occur between different types of messaging systems. Examples of messaging systems types include, but are not limited to, Microsoft Exchange, Microsoft Office 365, Microsoft Live@edu, Google Apps, Novell Groupwise, Zimbra, Lotus Notes, IMAP, and POP.
- Examples of mailbox migration services are described in co-pending U.S. Published Patent Application 2011/0264748, entitled “On-demand mailbox synchronization and migration system,” published on Oct. 27, 2011 from application Ser. No. 12/961,268, filed on Dec. 6, 2010 and claiming priority to provisional application No. 61/328,003. The entire contents of U.S. Published Application 2011/0264748, U.S. Ser. No. 12/961,268, and provisional application Ser. No. 61/328,003, are hereby incorporated by reference in their entirety for any purpose.
-
FIG. 1 is a schematic illustration of a system arranged in accordance with an embodiment of the present invention. Thesystem 100 includes asource messaging system 105, adestination messaging system 110, and a software hosting system 115 (e.g. migration system). Each of thesource messaging system 105, thedestination messaging system 110, and thesoftware hosting system 115 may be implemented using computing systems which may include one or more processors, circuitry, memory, interfaces, and other components and may be programmed with computer executable instructions for performing the functionalities described herein. It is to be understood that the arrangement of the computing systems is flexible in embodiments of the present invention. Generally, thesoftware hosting system 115 may be programmed to provide a software service to one or more other systems (e.g. the source and/or destination messaging systems). In the example ofFIG. 1 , for example, thesoftware hosting system 115 may be programmed to provide mailbox migration services. Thesource messaging system 105 may be a computing system hosting messaging system content that may benefit from services provided by thesoftware hosting system 115. In other examples, thesource messaging system 105 may be representative of any client system that may benefit from the services of thesoftware hosting system 115. - The
source messaging system 105 may not include APIs for access by thesoftware hosting system 115, and/or may be behind a firewall from anetwork 125 accessible to thesoftware hosting system 115. For example, thesource messaging system 105 may include amail server 130 which may include amail database 131 which may store messaging system content. Themail server 130 may, for example, be implemented as a Lotus Domino server, or any other messaging system server, Themail database 131 may be implemented as a Lotus NSF database, or any other mail database. Thesource messaging system 105 may include amail client 135. Themail client 135 is exemplary, and any number of mail clients may be included in thesource messaging system 105. Themail client 135 may include amail library 137. In one example themail client 135 may be implemented by a Lotus Notes client and themail library 137 may be implemented as a Lotus COM library. Themail server 130 andmail client 135 may be in communication with one another, directly or through amail system network 140 Themail system network 140 may be wired or wireless, and may be implemented using any networking technologies. Themail system network 140 may be behind a firewall from thenetwork 125 in some examples. Themail server 130 may in some examples not expose APIs to thesoftware hosting system 115 through thenetwork 125 suitable for use in obtaining data from themail server 130 for use in providing software as a service from thesoftware hosting system 115. - Accordingly, in embodiments of the present invention, the
source messaging system 105 may further include anextractor 142. Theextractor 142 may be implemented as computer executable instructions programmed on a computing system in communication with themail system network 140. In some example, theextractor 142 may be run on the same computing system as themail server 130,mail client 135, or both. Theextractor 142. may facilitate communication between themail server 130 and/ormail client 135 and thesoftware hosting system 115. Theextractor 142 may be implemented as an executable file which may be installed on thesource messaging system 105, for example by an administrator. Theextractor 142 may initiate a peering connection with thesoftware hosting system 115 using HTTP (e.g. port 80, 443, or other custom ports) through a firewall for themail system network 140—something most firewalls may allow or be configured to allow. In this manner, theextractor 142 may request actions to perform from thesoftware hosting system 115, perform the actions in thesource messaging system 105, and send responses to thesoftware hosting system 115 through the firewall. Accordingly, in some examples no extra port is required to be opened in a firewall between themail system network 140 andnetwork 125. - Any number of extractors, including the
extractor 142 may be provided on thesource messaging system 105. In some examples, one computer or computing system may be provided in thesource messaging system 105 per extractor. This may, for example, ensure sufficient processing resources to implement each extractor. In mailbox migration examples, each extractor, such as theextractor 142 may handle up to a maximum number of mailbox migrations concurrently, a maximum of 30 mailbox migrations in one example. Accordingly, if a greater number of concurrent mailbox migrations is desired, additional extractors may be provided. Theextractor 142 may include aheartbeat 150. Theheartbeat 150 may check periodically, such as every 10 seconds in one example, to confirm themail server 130 remains responsive, and may maintain a timestamp of times during which themail server 130 was responsive. Theextractor 142 may further include aguardian 151. Theguardian 151 may check periodically, such as every few seconds in one example, that theheartbeat 150 has indicated aresponsive mail server 130. In the event theheartbeat 150 indicates themail server 130 is unresponsive, or has been unresponsive for longer than a threshold time, theguardian 151 may stop other components of theextractor 142 and attempt to restart theextractor 142, e.g. by relaunching other portions of theextractor 142. Theextractor 142 may include acoordinator 152. Thecoordinator 152 may generate (e.g. launch or start)migrators 153. Accordingly theextractor 142 may further includemigrators 153. Any number ofmigrators 153 may be provided in theextractor 142, and generally in some examples each migrator 153 may serve to migrate one mailbox. Accordingly, if the extractor may migrate up to a maximum number of mailboxes, it may be provided with up to that same maximum number of migrators in some examples. -
Mailbox users 157 may communicate with themail server 130 and/or themail client 135 directly or over themail system network 140. Themailbox users 157 may be individuals or may be other computer processes that utilize mailboxes. One ormore administrators 158 may communicate with themail server 130 and/ormail client 135 directly or over themail system network 140. Theadministrators 158 may be individuals or may be other computer processes used to administer themail server 130 and/ormail client 135. Theadministrators 158 may utilize another computing system (not shown) to access themail server 130 and/ormail client 135 or the administrators may directly utilize themail server 130 and/ormail client 135 computing systems to administer the systems. Theadministrators 158 may further communicate with thesoftware hosting system 115, for example, to initiate a request for a software service and/or provide configuration information for the software service. - The
software hosting system 115 may provide software services to client systems, such as thesource messaging system 105. In the example ofFIG. 1 , thesoftware hosting system 115 is programmed to provide mailbox migration services, but other software services may be provided by software hosting systems utilizing the communication techniques for connection to client systems described herein. Thesoftware hosting system 115 includes amigration website 160, amigration web API 162, amigration scheduler 163, amigration service 164, and acommunication service 165. These may all be implemented as software components that are programmed on thesoftware hosting system 115 to provide the functionalities and interactions described herein. - The
migration website 160 may provide a web interface for receipt of a request for software services provided by thesoftware hosting system 115. For example, themigration website 160 may receive a request to start a mailbox migration from thesource system 105 to thedestination messaging system 110. Themigration website 160 may start the requested migration, including communicating with themigration scheduler 163 to begin a migration. Themigration web API 162 may check periodically, e.g. every 30 seconds in one embodiment, to determine if a software service, e.g. a mailbox migration, has been requested. Themigration scheduler 163 may identify computing resources for thesoftware hosting system 115 to utilize in providing the requested software service. For example, themigration scheduler 163 may associate particular servers to a requested migration. In other examples, themigration scheduler 163 may dynamically obtain computing resources, for example, from a cloud provider, to perform the requested service. Embodiments of dynamically obtaining and assigning resources for mailbox migrations are described in co-pending U.S. Published Patent Application 2011/0264748, entitled “On-demand mailbox synchronization and migration system,” published on Oct. 27, 2011 from application Ser. No. 12/961,268, filed on Dec. 6, 2010 and claiming priority to provisional application No. 61/328,003. The entire contents of U.S. Published Application 2011/0264748, U.S. Ser. No. 12/961,268, and provisional application Ser. No. 61/328,003, are hereby incorporated by reference in their entirety for any purpose. - The
communication service 165 may open a communication channel to thesource messaging system 105, e.g. for communication with theextractor 142. In some examples, one communication channel may be opened for each migrator 153 provided in thesource messaging system 105. Thecommunication service 165 may be implemented using communication frameworks, such as but not limited to Microsoft's Windows Communication Framework (WCF). Accordingly, thecommunication service 164 may facilitate the receipt of data from thesource messaging system 105 and the providing of actions to thesource messaging system 105 for thesource messaging system 105 to perform. - The
migration service 164 may generally perform the mailbox migration. For example, themigration service 164 may receive data obtained from the source messaging system 105 (e.g. through the extractor 142) and may send the data to thedestination messaging system 110. Themigration service 164 may perform a conversion translation) of the data obtained from thesource messaging system 105 from a format used by thesource messaging system 105 to a format used by the destination messaging system 110 (e.g. Lotus Notes to Gmail, etc.). Themigration service 164 may maintain a list of actions for performing a mailbox migration and may provide next actions for sending to thesource messaging system 105. - The
software hosting system 115 may include anaction buffer 170 and adata buffer 171. Any number of action buffers and data buffers may be included in thesoftware hosting system 115, with generally one action buffer and data buffer provided per mailbox migration. Theaction buffer 170 anddata buffer 171 may be implemented in memory (the two buffers may be implemented in the same or different memories) accessible to thesoftware hosting system 115. Theaction buffer 170 may store one or more actions to be provided to the source messaging system 105 (e.g. to the extractor 142) for thesource messaging system 105 to act on a migration. For example, actions may include test, wait, stop, done, get items, and may include one or more parameters related to the action. - The
data buffer 171 may store data, e.g. messaging system content, received from thesource messaging system 105. Themigration service 164 may access data in thedata buffer 171 and provide the data to thedestination messaging system 110. -
FIGS. 2 and 3 are flowcharts illustrating actions to be performed by components of a system in accordance with an embodiment of the present invention. Components of thesource messaging system 105 and thesoftware hosting system 115 are shown with like reference numbers to those ofFIG. 1 . Columns are shown to illustrate the actions performed by themail server 105,coordinator 152 portion of theextractor 142,migrator 153 portion of theextractor 142,communication service 165,migration service 164, andmigration website 160. Anadministrator 158 may start a migration inblock 205 using themigration website 160. Starting a migration may include indicating a source messaging system, a destination messaging system, a number of mailboxes to migrate, and in some examples may include providing credentials for access to the mailboxes for which migration is requested. Once a migration is started inblock 205, themigration service 164. may open a communication channel for the migration inbox 213. The communication channel may be specific to the migration (e.g. may be specific to one mailbox). Accordingly, a communication channel may be opened by themigration service 164 for each mailbox to be migrated. The communication channel is accordingly shown open inblock 214. - The
administrator 158, or in other examples a different person or electronic process, may start an extractor on thesource messaging system 105, such as theextractor 142 ofFIG. 1 . The extractor may be started, for example, by launching an executable containing the computer executable instructions for performing the extractor functionalities. Accordingly, an executable file for theextractor 142 may be provided to theadministrator 158 or otherwise loaded onto theclient messaging system 105. The extractor may be started inbox 207. Thecoordinator 152 may, inbox 209, request mailbox migrations to be performed. For example, thesource messaging system 105 may not be aware that a mailbox migration has been requested or is desired for thesource messaging system 105. Thecoordinator 152 may periodically communicate with thesoftware hosting system 115 to determine if a mailbox migration has been started. When thecoordinator 152 determines that a mailbox migration has been started, inbox 211, the coordinator may start a migrator, such as themigrator 153. Amigrator 153 may be started for each mailbox migration requested. - A migrator may accordingly be created in
block 215. Inblock 217, the migrator may connect to the communication service, e.g. thecommunication service 165 ofFIG. 1 . In some examples, the migrator may periodically attempt to connect to the communication service. For example, in some embodiments the migrator may be started inblock 215 prior to the communication channel being opened inblock 213. Accordingly, the migrator may need to make several attempts to connect to the communication service inblock 217. - Referring now to
FIG. 3 , themigration service 164 may set a next action in a migration action buffer inblock 305. Themigration service 164 may maintain a list of actions that may be required in a migration, and an order in which the actions are to be performed. A next action may be placed in the action buffer in theblock 305. Themigration service 164 may then wait for a migration data buffer to contain data inblock 306. Theextractor 142, once connected to the communication service inblock 217, may request a next action to perform. To request a next action, the extractor may call thecommunication service 165 inblock 310. Theextractor 142 may call a method supported by the communication service, e.g. ‘Action Request.’ Communication between theextractor 142 and thecommunication service 165 may occur using HTTP through a firewall in some examples, a standard configuration for http traffic. - The
communication service 165 may receive a next action from the action buffer inblock 312. For example, responsive to the ‘Action Request’ call received from theextractor 142. inblock 310, thecommunication service 165 may get a next action stored in the action buffer, e.g. an action set in the action buffer in theblock 305. Inblock 314, thecommunication service 165 may provide the next action to themigrator 153. Themigrator 153 may accordingly perform the action inblock 316. Themigrator 153 may, for example, communicate with themail server 105 to perform the action inblock 318, such as getting messaging system content. Communication between theextractor 142, including themigrator 153, and themail server 105 may be behind a firewall on a mail system network, as shown inFIG. 1 . - Referring again to
FIG. 3 , results of the action may be sent by themigrator 153 to the communication service inblock 320. For example, themigrator 153 may call a method supported by thecommunication service 165, e.g. a ‘Data Transfer’ method inblock 322. After sending the result inblock 320, themigrator 153 may request a next action to perform inblock 307. Accordingly, themigrator 153 may repeatedly request an action from thecommunication service 165, perform the action, and send results. When the action received is indicative of stopping the migration (e.g. a done action), themigrator 153 may close, such that computing resources dedicated to themigrator 153 may become available to other programs on the computing system on which themigrator 153 resided. For example, the computing resources may be used to start other migrators for other requested migrations. - After the ‘Data Transfer’ method is called in
block 322, thecommunication service 165 may receive data from themigrator 153 responsive to the action performed, and may set the received data in the data buffer inblock 324. Thecommunication service 165 may inblock 326 set a next action in the action buffer to ‘wait’. In this manner, should themigrator 153 request a next action prior to thesoftware hosting system 115 processing the received data, themigrator 153 would receive a wait action responsive to requesting the next action inblock 307. Accordingly, themigrator 153 may wait to perform another action involving themail server 105 until the data set in the data buffer has been cleared from the data buffer—e.g. has been migrated by themigration service 164, or moved out of the data buffer to another location in memory accessible to the software hosting system in preparation for migration by themigration service 164. - Following data set in the data buffer in
block 324, themigration service 164 may identify the data buffer contains data inblock 306, and inblock 330, themigration service 164 may get and clear data from the data buffer. For example, data may be moved out of the data buffer inblock 330 and read into or moved to another memory or memory area accessible to themigration service 164. The memory to which the data is moved may be located on the same physical memory (e.g. hard drive) as the data buffer in some examples, but not logically part of the data buffer. Inblock 332, the data from the data buffer, either stored in the data buffer or in another location having been moved from the data buffer, may be migrated to a destination messaging system. Once the data is moved out of the data buffer, themigration service 164 may then set a next action into the action buffer inblock 305. - In this manner, examples of the present invention may control mailbox migrations utilizing an action buffer storing a next action, and a data buffer storing data received from a source messaging system. Communication between the
source messaging system 105 and thesoftware hosting system 115 may be performed through a firewall using HTTP in some examples and thesoftware hosting system 115 may not directly access amail server 105. :Instead, thesource message system 105 may obtain next actions from thesoftware hosting system 115, connect with themail server 130 to perform actions, and provide data back to thesoftware hosting system 115, which may migrate the data to the destination messaging system. -
FIG. 4 is a flowchart of operations to start migrators and assign mailboxes to migrators arranged in accordance with an embodiment of the present invention. An extractor may be started inblock 400. In some examples, the extractor may already be provided on a client system, e.g. a source messaging system such as thesource messaging system 105 ofFIG. 1 . In other examples, an administrator or other person or process may install an extractor, e.g. by launching an executable file having computer readable instructions to program the source messaging system to perform the extractor functions described herein. - In
block 401, the extractor, e.g. theextractor 142 ofFIG. 1 , may validate a migration authentication.Block 401 may be performed by thecoordinator 152 ofFIG. 1 . Thecoordinator 152 may authenticate itself to thesoftware hosting system 115, for example. Inblock 402, the extractor may check that it is operating with a latest version of the extractor software. For example, thecoordinator 152 ofFIG. 1 may request a version check from thesoftware hosting system 115, and if not operating at the latest version, may obtain a latest version of the extractor from thesoftware hosting system 115. Thecoordinator 152 ofFIG. 1 may perform block 402 in some examples. - In
block 403, mailbox connectors may be requested. Each mailbox connector may specify a migration from one source messaging system to another source messaging system, e.g. “Lotus to GMail.” The mailbox connectors may be specified by an administrator using themigration website 160 ofFIG. 1 in some examples. The administrator may further associate mailboxes to the connector (e.g. specify all of the mailboxes that should be migrated from the source to the destination messaging system). Accordingly, inblock 403, thecoordinator 152 ofFIG. 1 may request from the software hosting system all the mailbox connectors which pertain to the source messaging system with which thecoordinator 152 is associated, e.g. thesource messaging system 105. For each connector involving thesource messaging system 105, inblock 404, thecoordinator 152 may retrieve the associated mailbox migrations. For example, each individual mailbox to be migrated may be considered a separate mailbox migration. For each mailbox migration, a migrator may be started inblock 405. Thecoordinator 152 ofFIG. 1 may perform theblocks migrators 153 inblock 405. As has been described above, each extractor may have any number of migrators, and may in some examples have up to a maximum amount of migrators to ensure the migrators do not exceed available computational resources. In examples where the number of mailbox migrations retrieved inblock 404 exceeds the maximum number of migrators for a single extractor, additional extractors may be provided. In some examples, one extractor may only be able to run a maximum number of migrators. Multiple extractors may be installed on a machine (e.g. in several different folders), but this may result in a decrease in performance as the multiple extractors may compete for the same processing resources. Accordingly, in some examples, one extractor may be installed per machine, and multiple machines may be provided to provide a desired number of migrators, where the number of extractors desired may equal the number of mailboxes to be migrated simultaneously divided by the maximum number of migrators supported by an extractor. In other examples, a fewer number of extractors may be used and the mailbox migration may take a longer time to run while the fewer number of migrators each provide a number of migrators equal or less than the maximum number they may support. The blocks inFIG. 4 may be repeated until a user, administrator, or other individual or process closes the extractor. -
FIG. 5 is a flowchart of operations for a migrator to request a next action and provide data to a software hosting system in accordance with an embodiment of the present invention. The actions shown inFIG. 5 may be performed by a migrator, e.g. one of themigrators 153 ofFIG. 1 , in some examples. Inblock 500, a migrator may be started. Recall, for example, a migrator may be started by a coordinator,e.g. coordinator 152 ofFIG. 1 , responsive to an indication a mailbox migration has been requested. one migrator may be started for each mailbox to be migrated. Inblock 501, the migrator may connect to the software hosting system. For example, themigrator 153 ofFIG. 1 may connect to thecommunication service 165. Communication may occur, for example through a firewall using HTTP in some examples. - In
block 502, the migrator may initialize a mail server session, for example a Lotus Notes session. Referring back toFIG. 1 , themigrator 153 may initialize a mail session with themail server 130. Accordingly, the mail session allowing access to themail database 131 may be initiated over themail system network 140 or through a direct connection between the migrator 153 and themail server 130. The mail session may not be initialized using thenetwork 125 in some examples. Accordingly, themail server 130 itself may not need to communicate over thenetwork 125 in some examples. Referring again toFIG. 5 , inblock 503, the mail database is opened. The mail database may be opened by the migrator or by the mail server. In some examples, the entire database may not be opened or accessible, but rather the portion of the database corresponding with the mailbox to be migrated by the migrator initializing the mail server connection. Accordingly, the mail database, such as thedatabase 131 ofFIG. 1 , and/or relevant portions of the database, may now be accessible to the migrator, including the messaging system content stored on the mail database. - In
block 504, the migrator may optionally test the connection to the communication service. The test may be conducted, for example, by sending a test message and receiving a known reply from the software hosting service in response. Inblock 505, the migrator may optionally check with the software hosting service to ensure it is running the latest version of the migrator and/or extractor software. If a more recent version or update is available, the update may be installed before the mailbox migration is begun. - In
block 506, the migrator may request a next action to perform. The next action to perform may, for example, be requested by themigrator 135 ofFIG. 1 from thecommunication service 165 ofFIG. 1 . Thecommunication service 165 may obtain the next action to perform from theaction buffer 170 ofFIG. 1 and provide the action to themigrator 135, - Referring again to
FIG. 5 , inblock 507, the migrator may perform the action received responsive to the request inblock 506. For example, the migrator may wait, or may request data from the mail server. In some example, the action received may specify how much data should be retrieved corresponding to the one action. It may be desirable not to retrieve large amounts of data responsive to a single action, because the retrieving of larger amounts of data may be more prone to failure. Accordingly, in some examples, an action is associated with a maximum amount of data to retrieve, or a number of content items to retrieve, 1000 content items is one example. - In
block 508, the result, if any, from performing the action may be sent back to the software hosting system. For example, themigrator 153 ofFIG. 1 may send the result of an action, e.g. messaging system content retrieval, to thecommunication service 165. Thecommunication service 165 may store the received data in thedata buffer 171. Referring again toFIG. 5 , the blocks 506-508 may be repeated until an action indicating the mailbox migration is complete or is to be stopped is received—e.g. an action ‘done’ or ‘stop’. -
FIG. 6 is a flowchart illustrating operations performed by a software hosting system responsive to initiation of a mailbox migration. A software hosting system in examples of the present invention may execute a series of actions to retrieve messaging system content for migration. Because the source messaging system may not be accessible over the Internet in examples of the present invention, actions may be stored (e.g. deposited, set) in an action buffer and recovered and performed by a migrator running in the source messaging system. - In
block 600, a mailbox migration may be requested by an administrator. The mailbox migration may be requested, for example, using themigration website 160 ofFIG. 1 . In requesting a mailbox migration, an administrator may specify a source messaging system, a destination messaging system, mailboxes to be migrated, authentication credentials for the mailboxes, or combinations thereof. - In
block 601, the software hosting system may set a next action into an action buffer. For example, themigration service 164 ofFIG. 1 may set the next action into an action buffer. The action buffer into which the migration service may set the next action may be an action buffer accessible to a migrator running on a source messaging system through the communication service ofFIG. 1 . - Unlike a classic call to a web service, the software hosting system in examples of the present invention may not be informed of the outcome of the next action. For example, in the case of a web service call, the calling system may be informed of the outcome of a requested action, and if the action was successful, the calling system may receive the requested data and continue processing. Because the source messaging system in examples of the present invention may not be accessible using a web service call, however, in embodiments of the present invention a different approach may be taken to inform the software hosting system of a completed action.
- In
block 602, the software hosting system (e.g. themigration service 164 ofFIG. 1 ) may wait for a data buffer (e.g. the data buffer 171 ofFIG. 1 ) to contain data. Recall as described above with reference toFIGS. 3 and 5 , data provided from the source messaging system responsive to an action may be stored in the data buffer. Accordingly, themigration service 164, which may not know when or if the action in the action buffer was received by the source messaging system or if the action was successful, may wait for data to be present in the data buffer. In some examples, themigration service 164 may check the data buffer periodically in block 603 (e.g. every 100 ms in the example ofFIG. 6 —other frequencies may be used in other examples). If no data is present after a maximum amount of time in some examples (e.g. three minutes in the example ofFIG. 6 , other maximum times may be used in other examples), the migration service may time out. - If data is found by the migration service in the data buffer, the migration service in
block 604 may retrieve and clear the data from the data buffer. For example, the migration service may read the data in the data buffer and/or copy the data from the data buffer to another location accessible to the migration service. The migration service may delete the data from the data buffer. Clearing (e.g. deleting) data from the data buffer may serve as an acknowledgement of receipt of the data by the migration service. In this manner, the communication service may be able to provide an indication to the source messaging system that the data has been received. Inblock 605, the migration service may process the data and may migrate the data to the destination messaging system. - If there are still actions to perform in the migration, the migration service may continue again at
block 601 by placing a next action in the action buffer. -
FIG. 7 is a flowchart of operations performed by a communication service in examples of the present invention responsive to an action request call. Inblock 700, a migrator (e.g. themigrator 153 ofFIG. 1 ), may call an action request method supported by a communication service (e.g. thecommunication service 165 ofFIG. 1 ). The migrator may call the action request method when it is ready for a next action (e.g. inblock 307 ofFIG. 3 ). - In
block 701, the communication service may verify that the mailbox migration associated with the migrator making the call is still in progress. For example, the communication service may check that there is an action in the action buffer associated with the migrator making the call. If no action is contained in the action buffer, the communication service may return a stop action in order to inform the migrator that the mailbox migration is complete or has been stopped. - In
block 702, the communication service may check that previously received data has been cleared from the data buffer. If the data buffer contains data, the communication service may return the action ‘wait’ to the migrator, indicating to the migrator that the migrator should request an action later. This may allow sufficient time for the migration service to process (e.g. copy and/or begin migrating) the data in the data buffer. The communication service needs not wait in some examples until the data has been fully migrated (e.g. transferred to the destination messaging system), instead the communication service may wait for the data to be copied out of the data buffer to another storage location accessible to the migration service from which the migration service may complete the migration. In examples of systems and methods described herein, data may be downloaded from the source messaging system generally at a faster rate than the data is migrated and uploaded at the destination messaging system which may result in accumulation of data in the software hosting system during a migration. For example, if a wait were not returned while data were still present in the data buffer, data may back up in the data buffer and/or software hosting system. Accordingly, the wait may improve performance by ensuring that a data backlog may not be created while the migration service is processing data. - In
block 703, the communication service may get the next action from the action buffer. For example, the communication service may read the next action in the action buffer. In some examples, the communication service may then delete the action from the action buffer. Inblock 704, the communication service may send the next action to the migrator. Communication may occur, for example, through a firewall using HTTP. -
FIG. 8 is a flowchart of operations for retrieving data and transmitting the data to a software hosting system in accordance with an embodiment of the present invention. Inblock 800, a migrator (e.g. themigrator 153 ofFIG. 1 ) may call a data transfer method of a communication service (e.g. thecommunication service 165 ofFIG. 1 ). For example, the data transfer method is called inblock 322 ofFIG. 3 . Inblock 801, the communication service may check if the migration to which the data transfer call pertains is still running. For example, the communication service may check the action buffer associated with the migration, and if the action buffer contains an action, the communication service may determine the migration is still running. Moreover, the communication service may check the action buffer associated with the migration in some examples to determine if the action buffer contains an action that requested the data received in the method call. If the action buffer does contain an action that requested the data, the communication service may proceed. If, however, the action buffer does not contain an action, or in some examples if the action buffer does not contain an action which requested the received data, the communication service may reject the received data. - In
block 802, the communication service may check if all previously received data has been processed. For example, the communication service may check if the data buffer associated with the migration still contains data, If the data buffer contains data, the incoming data may be rejected to allow time for the existing stored data to be processed. If the data buffer does not contain data, the process ofFIG. 8 may continue. - In
block 803, the communication service may store (e.g. set) the received data into the data buffer (for example, thecommunication service 165 ofFIG. 1 may store received data in thedata buffer 171 ofFIG. 1 ). Inblock 804, the communication service may store (e.g. set) a next action in the action buffer to “wait”. By storing a next action as wait in the action buffer, if a migrator calls the action request method of the communication service before the migration service has determined a next action, the migrator may receive a wait action. -
FIG. 9 is a schematic illustration of one example of a computing system according to one embodiment of the invention. Thecomputing system 900 may be used to implement thesoftware hosting system 115 ofFIG. 1 , thedestination messaging system 110 ofFIG. 1 , or thesource messaging system 105 in some examples. In other examples, thecomputing system 900 may include many more or less components than those shown. While thecomputing system 900 ofFIG. 9 is shown as including a single computing device, in examples of the present invention thecomputing system 900 may include multiple computing devices which may be in communication with one another. -
Computing system 900 includes processing unit 912 (additional processing units may be included in other embodiments),video display adapter 914, and a memory, all in communication with each other viabus 922. The memory generally includesRAM 916,ROM 932, and one or more permanent mass storage devices, such ashard disk drive 928, tape drive, optical drive, and/or floppy disk drive. The memory may storeoperating system 920 for controlling the operation of thecomputing system 900. Any general-purpose operating system may be employed. Basic input/output system (“BIOS”) 918 may also be provided for controlling the low-level operation ofcomputing system 900. As illustrated inFIG. 9 ,computing system 900 also can communicate with the Internet, or some other communications network, vianetwork interface unit 910, which may be constructed for use with various communication protocols including the TCP/IP protocol, and/or through the use ofNetwork Protocol Layer 959, or the like.Network interface unit 910 is sometimes known as a transceiver, transceiving device, or network interface card (NFC). - The memory as described above illustrates a type of computer-readable media, namely computer-readable storage media. Computer-readable storage media (e.g. devices) may include volatile, nonvolatile, removable, and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, computer executable instructions, data structures, program modules, or other data. Examples of computer readable storage media include RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other physical, transitory, or non-transitory medium which can be used to store the desired information and which can be accessed by a computing device.
- As shown,
data stores 954 may include a database, text, spreadsheet, folder, file, or the like, that may be configured to maintain and/or store various content.Data stores 954 may further include program code, data, algorithms, and the like, for use by a processor, such as central processing unit (CPU) 912 to execute and perform actions. in one embodiment, at least some of data and/or instructions stored indata stores 954 might also be stored on another device of thecomputing system 900 or accessible to thecomputing system 900, including, but not limited to cd-rom/dvd-rom 926,hard disk drive 928, or other computer-readable storage device resident on thecomputing system 900 or accessible by thecomputing system 900 over, for example,network interface unit 910. - The memory may also store program code and data. One or
more applications 950 may be loaded into memory (e.g. programmed) and run onoperating system 920. Examples of application programs may include transcoders, schedulers, calendars, database programs, word processing programs, Hypertext Transfer Protocol (HTTP) programs, customizable user interface programs, IPSec applications, encryption programs, security programs, SMS message servers, IM message servers, email servers, account managers, and so forth.Web services 956,messaging services 958, andNetwork Protocol Layer 959, may also be included as application programs withinapplications 950. However, the invention is not limited to these non-limiting examples, and other applications may also be included. As has been described above, in some examples of thesource messaging system 105 ofFIG. 1 (e.g. Lotus Notes systems), the system may not include web services capabilities, or messaging services sufficient to call a web service. -
Messaging services 958 may include virtually any computing component or components configured and arranged to forward messages from message user agents, and/or other message servers, or to deliver messages to a local message store, such asdata store 954, or the like. Thus,messaging services 958 may include a message transfer manager to communicate a message employing any of a variety of email protocols, including, but not limited, to Simple Mail Transfer Protocol (SMTP), Post Office Protocol (POP), Internet Message Access Protocol (MAP), NNTP, or the like.Messaging services 958 may be configured to manage SMS messages, TM, MMS, IRC, RSS feeds, mIRC, or any of a variety of other message types. In one embodiment,messaging services 958 may enable users to initiate and/or otherwise conduct chat sessions, VoIP sessions, or the like. However, in some examples, as described above, examples of source messaging systems described herein may not include messaging services for calling web services. -
Network Protocol Layer 959 may represent those applications useable to provide communications rules and descriptions that enable communications in or between various computing devices. Such protocols, include, but are not limited to signaling, authentication, error detection and correction capabilities. In one embodiment, at least some of the applications for whichNetwork Protocol Layer 959 represents may be included withinoperating system 920, and/or withinnetwork interface unit 910. - Accordingly, when used to implement the
software hosting system 115 ofFIG. 1 , the memory (e.g. RAM 916) may be encoded with computer executable instructions (e.g. programmed) for performing the functions described for the migration website, migration web API, communication service, migration scheduler, and the migration service. The functions described with reference to those components may be performed in thenetwork protocol layer 959. The memory (e.g. data stores 954) may store the action buffers and data buffers described above, e.g. theaction buffer 170 anddata buffer 171 ofFIG. 1 . - When used to implement the
source messaging system 105 ofFIG. 1 , the memory (e.g. RAM 916) may be encoded with computer executable instructions (e.g. programmed) for performing the functions described for theextractor 142 ofFIG. 1 , including theheartbeat 150,guardian 151,coordinator 152, andmigrator 153. As described above, the extractor executable instructions may be programmed on the source messaging system by an administrator launching an executable file on the source messaging system, which executable file is configured to program the source messaging system with the described functionalities. - From the foregoing it will be appreciated that, although specific embodiments of the invention have been described herein for purposes of illustration, various modifications may be made without deviating from the spirit and scope of the invention.
Claims (20)
1. A software hosting system for performing mailbox migrations, the software hosting system comprising:
at least one action buffer associated with a mailbox migration;
at least one data buffer associated with the mailbox migration;
at least one computing device programmed with:
a migration service configured to open a communication channel with a source messaging system, the communication channel associated with the mailbox migration, wherein the migration service is further configured to store a next action to be performed for the mailbox migration in the action buffer, and is further configured to migrate received messaging system content to a destination messaging system;
a communication service configured to communicate with the source messaging system over the communication channel, the communication service configured to read the next action to be performed in the action buffer and provide the next action to be performed to the source messaging system, and wherein the communication service is further configured to read messaging system content from the data buffer received responsive to the next action to be performed and provide the messaging system content to the migration service.
2. The system of claim 1 , wherein the communication channel comprises a communication channel through a firewall using HTTP.
3. The system of claim I, wherein source messaging system does not support web services.
4. The system of claim 1 , wherein the source messaging system comprises a Lotus Notes messaging system.
5. The system of claim 1 , wherein the at least one computing device is further programmed with a web API configured to receive configuration information related to the mailbox migration including an identity of the source messaging system, an identity of the destination messaging system, a number of mailboxes for migration, and authentication parameters for the mailboxes.
6. The system of claim 1 , wherein the system further includes a plurality of action buffers and a plurality of data buffers, each of the action and data buffers associated with a respective mailbox migration.
7. The system of claim 1 , wherein the migration service is further configured to open a plurality of communication channels, wherein each of the communication channels is associated with a respective mailbox migration.
8. A method for migrating mailboxes, the method comprising:
opening a communication channel with a source messaging system, wherein the communication channel is associated with a mailbox migration;
providing a next action to perform in an action buffer;
providing the next action from the action buffer to the source messaging system over the communication channel;
waiting for data responsive to the next action from the source messaging system to be stored in a data buffer; and
copying the data out of the data buffer to begin migration to a destination messaging system and providing a further next action to perform in the action buffer.
9. The method of claim 8 , further comprising timing out the mailbox migration if said waiting for data occurs for longer than a maximum time.
10. The method of claim 8 , wherein the communication channel comprises a channel through a firewall using HTTP.
11. The method of claim 8 , the method further comprising:
providing an executable file for installation on the source messaging system, the executable file configured to install software on the source messaging system for receiving the next action, performing the next action, and returning the data responsive to the next action.
12. The method of claim 8 , wherein said providing a further next action to perform in the action buffer is performed after said migrating the data from the data buffer to the destination messaging system is complete.
13. The method of claim 8 , further comprising receiving the data responsive to the next action and storing the data responsive to the next action in the data buffer.
14. The method of claim 13 , further comprising storing a wait action in the action buffer after storing the data responsive to the next action in the data buffer.
15. A source messaging system comprising:
a mail server configured to provide messaging services, including a plurality of mailboxes, to mail clients;
a mail database configured to store messaging system content associated with the plurality of mailboxes;
at least one computing device programmed with an extractor, wherein the extractor includes a coordinator configured to initiate a migrator for each of a plurality of mailbox migrations, wherein the at least one computing device is further programmed with the migrator, wherein the migrator is configured to connect to a software hosting system and request a next action to be performed, receive the next action to be performed, perform the action, and return messaging system content responsive to the action to the software hosting system.
16. The system of claim 15 , wherein communication between the at least one computing device and the software hosting system occurs over a firewall using HTTP.
17. The system of claim 15 , wherein said perform the action comprises connect to the mail database through the mail server to retrieve the messaging system content.
18. The system of claim 15 , wherein said mail server comprises a Lotus Domino mail server without web service capability.
19. The system of claim 15 , further comprising a plurality of computing devices programmed with respective extractors, wherein each extractor is configured to facilitate migration of a maximum number of mailboxes.
20. The system of claim 15 , wherein the extractor is programmed on the at least one computing device by launching an executable file.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/586,812 US20170237699A1 (en) | 2012-11-27 | 2017-05-04 | Systems and methods for migrating mailbox data from systems with limited or restricted remote access |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/686,637 US9654436B2 (en) | 2012-11-27 | 2012-11-27 | Systems and methods for migrating mailbox data from systems with limited or restricted remote access |
US15/586,812 US20170237699A1 (en) | 2012-11-27 | 2017-05-04 | Systems and methods for migrating mailbox data from systems with limited or restricted remote access |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/686,637 Continuation US9654436B2 (en) | 2012-11-27 | 2012-11-27 | Systems and methods for migrating mailbox data from systems with limited or restricted remote access |
Publications (1)
Publication Number | Publication Date |
---|---|
US20170237699A1 true US20170237699A1 (en) | 2017-08-17 |
Family
ID=50774252
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/686,637 Active 2033-01-21 US9654436B2 (en) | 2012-11-27 | 2012-11-27 | Systems and methods for migrating mailbox data from systems with limited or restricted remote access |
US15/586,812 Abandoned US20170237699A1 (en) | 2012-11-27 | 2017-05-04 | Systems and methods for migrating mailbox data from systems with limited or restricted remote access |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/686,637 Active 2033-01-21 US9654436B2 (en) | 2012-11-27 | 2012-11-27 | Systems and methods for migrating mailbox data from systems with limited or restricted remote access |
Country Status (1)
Country | Link |
---|---|
US (2) | US9654436B2 (en) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8938510B2 (en) | 2010-04-26 | 2015-01-20 | Bittan Inc. | On-demand mailbox synchronization and migration system |
US10965742B2 (en) * | 2012-02-13 | 2021-03-30 | SkyKick, Inc. | Migration project automation, e.g., automated selling, planning, migration and configuration of email systems |
JP5954752B2 (en) | 2014-09-30 | 2016-07-20 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | Apparatus, method, and program for testing system |
US10210232B2 (en) * | 2014-10-01 | 2019-02-19 | SkyKick, Inc. | Automated staged data migration |
US10027738B2 (en) * | 2014-10-01 | 2018-07-17 | SkyKick, Inc. | Optimizing data migration processes |
US9973572B2 (en) | 2015-04-14 | 2018-05-15 | SkyKick, Inc. | Server load management for data migration |
US10447638B2 (en) * | 2015-09-03 | 2019-10-15 | Quest Software Inc. | Automatically applying data loss prevention rules during migration |
US10764370B2 (en) | 2017-12-11 | 2020-09-01 | Accenture Global Solutions Limited | Hybrid cloud migration delay risk prediction engine |
CN112492051A (en) * | 2020-12-18 | 2021-03-12 | 中国农业银行股份有限公司 | Data migration method and device |
US20220294849A1 (en) * | 2021-03-15 | 2022-09-15 | Microsoft Technology Licensing, Llc | Cloud computing system for mailbox identity migration |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020112007A1 (en) * | 1999-11-03 | 2002-08-15 | Christopher (Noah) Wood | Personal message management system |
US6502191B1 (en) * | 1997-02-14 | 2002-12-31 | Tumbleweed Communications Corp. | Method and system for binary data firewall delivery |
US20040146147A1 (en) * | 2003-01-24 | 2004-07-29 | Common Voices Llc | Subscriber migration system |
US7493394B2 (en) * | 2003-12-31 | 2009-02-17 | Cisco Technology, Inc. | Dynamic timeout in a client-server system |
US20090187632A1 (en) * | 2008-01-22 | 2009-07-23 | Microsoft Corporation | Mail Object Migration |
US20100036923A1 (en) * | 2008-07-30 | 2010-02-11 | Byrne John C | Methods and Systems for Dynamically Migrating Electronic Messages From A First Messaging Platform To A Second Messaging Platform |
US20110264748A1 (en) * | 2010-04-26 | 2011-10-27 | BitTitan Inc. | On-demand mailbox synchronization and migration system |
US8285817B1 (en) * | 2006-03-20 | 2012-10-09 | Netapp, Inc. | Migration engine for use in a logical namespace of a storage system environment |
Family Cites Families (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5915004A (en) * | 1996-07-11 | 1999-06-22 | Microsoft Corporation | Moving a messaging system mailbox |
US6208717B1 (en) * | 1997-03-03 | 2001-03-27 | Unisys Corporation | Method for migrating or altering a messaging system |
US6735691B1 (en) | 2000-01-27 | 2004-05-11 | Microsoft Corporation | System and method for the automated migration of configuration information |
US6748447B1 (en) | 2000-04-07 | 2004-06-08 | Network Appliance, Inc. | Method and apparatus for scalable distribution of information in a distributed network |
US6820081B1 (en) | 2001-03-19 | 2004-11-16 | Attenex Corporation | System and method for evaluating a structured message store for message redundancy |
US6785756B2 (en) | 2001-05-10 | 2004-08-31 | Oracle International Corporation | Methods and systems for multi-policy resource scheduling |
US20040073639A1 (en) | 2002-09-06 | 2004-04-15 | Tony Basoglu | Method of load balancing across two or more servers in a computer network |
US7313560B2 (en) | 2002-12-09 | 2007-12-25 | International Business Machines Corporation | Data migration system and method |
FR2854014A1 (en) | 2003-04-18 | 2004-10-22 | France Telecom | METHOD AND DEVICE FOR MIGRATING A MESSAGING TO ANOTHER |
US7710874B2 (en) * | 2003-06-04 | 2010-05-04 | International Business Machines Corporation | System and method for automatic management of many computer data processing system pipes |
US7320068B2 (en) | 2003-06-05 | 2008-01-15 | Microsoft Corporation | Systems and methods to migrate a user profile when joining a client to a server and/or domain |
US7184753B2 (en) | 2004-01-22 | 2007-02-27 | Research In Motion Limited | Mailbox pooling pre-empting criteria |
JP4604543B2 (en) | 2004-04-30 | 2011-01-05 | 日本電気株式会社 | Computer, computer startup method, management server device, and program |
US7587455B2 (en) | 2004-05-14 | 2009-09-08 | Mirapoint Software, Inc. | Method for mailbox migration |
US20080028100A1 (en) | 2004-10-29 | 2008-01-31 | The Go Daddy Group, Inc. | Tracking domain name related reputation |
US7577805B2 (en) | 2004-11-01 | 2009-08-18 | Hitachi, Ltd. | Using bandwidth and capacity parameters to control remote copy operations in storage systems |
US20060173908A1 (en) | 2005-01-10 | 2006-08-03 | Browning Michelle M | System and method for automated customization of a workflow management system |
US8429630B2 (en) | 2005-09-15 | 2013-04-23 | Ca, Inc. | Globally distributed utility computing cloud |
US8165906B2 (en) | 2005-09-29 | 2012-04-24 | International Business Machines Corporation | Business planning tool |
US8078681B2 (en) | 2005-09-29 | 2011-12-13 | Teamon Systems, Inc. | System and method for provisioning an email account using mail exchange records |
SG10201501549XA (en) | 2006-11-06 | 2015-04-29 | Metric Holdings Llc | A system and method for managing data across multiple environments |
US7856437B2 (en) | 2007-07-31 | 2010-12-21 | Hewlett-Packard Development Company, L.P. | Storing nodes representing respective chunks of files in a data store |
US20090144743A1 (en) | 2007-11-29 | 2009-06-04 | Microsoft Corporation | Mailbox Configuration Mechanism |
US8250215B2 (en) | 2008-08-12 | 2012-08-21 | Sap Ag | Method and system for intelligently leveraging cloud computing resources |
US9367257B2 (en) | 2008-09-11 | 2016-06-14 | Microsoft Technology Licensing, Llc | Techniques for resource location and migration across data centers |
US10025627B2 (en) | 2008-11-26 | 2018-07-17 | Red Hat, Inc. | On-demand cloud computing environments |
US8429308B2 (en) | 2009-01-29 | 2013-04-23 | Ca, Inc. | System and method for migrating data from a storage device |
US8849955B2 (en) | 2009-06-30 | 2014-09-30 | Commvault Systems, Inc. | Cloud storage and networking agents, including agents for utilizing multiple, different cloud storage sites |
US20110004629A1 (en) | 2009-07-02 | 2011-01-06 | Computer Associates Think, Inc. | Method and System for Automating the Migration of User Settings from a First Domain to a Second Domain |
US9094292B2 (en) | 2009-08-31 | 2015-07-28 | Accenture Global Services Limited | Method and system for providing access to computing resources |
US8272031B2 (en) * | 2009-09-23 | 2012-09-18 | Avaya Inc. | Policy-based virtualization method involving adaptive enforcement |
US9009294B2 (en) | 2009-12-11 | 2015-04-14 | International Business Machines Corporation | Dynamic provisioning of resources within a cloud computing environment |
US8346999B2 (en) | 2009-12-15 | 2013-01-01 | Intel Corporation | Dynamic receive queue balancing with high and low thresholds |
US8307362B1 (en) | 2009-12-18 | 2012-11-06 | Emc Corporation | Resource allocation in a virtualized environment |
US8843571B2 (en) | 2010-01-15 | 2014-09-23 | Endurance International Group, Inc. | Web hosting service based on a common service architecture and third party services |
US8566552B2 (en) | 2010-03-12 | 2013-10-22 | Cleversafe, Inc. | Dispersed storage network resource allocation |
US8918607B2 (en) | 2010-11-19 | 2014-12-23 | International Business Machines Corporation | Data archiving using data compression of a flash copy |
KR101315177B1 (en) | 2011-05-09 | 2013-10-07 | 한국생산기술연구원 | Method on Patent Information Processing for Producing Score of Convergence Index Elements |
US9608831B2 (en) * | 2012-06-22 | 2017-03-28 | Facebook, Inc. | Migrating a chat message service provided by a chat server to a new chat server |
US8762725B2 (en) * | 2012-10-19 | 2014-06-24 | Caterpillar Inc. | Secure machine-to-machine communication protocol |
WO2016138474A1 (en) | 2015-02-26 | 2016-09-01 | Bittitan, Inc. | Data migration systems and methods including archive migration |
-
2012
- 2012-11-27 US US13/686,637 patent/US9654436B2/en active Active
-
2017
- 2017-05-04 US US15/586,812 patent/US20170237699A1/en not_active Abandoned
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6502191B1 (en) * | 1997-02-14 | 2002-12-31 | Tumbleweed Communications Corp. | Method and system for binary data firewall delivery |
US20020112007A1 (en) * | 1999-11-03 | 2002-08-15 | Christopher (Noah) Wood | Personal message management system |
US20040146147A1 (en) * | 2003-01-24 | 2004-07-29 | Common Voices Llc | Subscriber migration system |
US7493394B2 (en) * | 2003-12-31 | 2009-02-17 | Cisco Technology, Inc. | Dynamic timeout in a client-server system |
US8285817B1 (en) * | 2006-03-20 | 2012-10-09 | Netapp, Inc. | Migration engine for use in a logical namespace of a storage system environment |
US20090187632A1 (en) * | 2008-01-22 | 2009-07-23 | Microsoft Corporation | Mail Object Migration |
US20100036923A1 (en) * | 2008-07-30 | 2010-02-11 | Byrne John C | Methods and Systems for Dynamically Migrating Electronic Messages From A First Messaging Platform To A Second Messaging Platform |
US20110264748A1 (en) * | 2010-04-26 | 2011-10-27 | BitTitan Inc. | On-demand mailbox synchronization and migration system |
Also Published As
Publication number | Publication date |
---|---|
US20140149517A1 (en) | 2014-05-29 |
US9654436B2 (en) | 2017-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20170237699A1 (en) | Systems and methods for migrating mailbox data from systems with limited or restricted remote access | |
US11700238B2 (en) | Systems and methods for providing communications between on-premises servers and remote devices | |
US8938510B2 (en) | On-demand mailbox synchronization and migration system | |
US8458269B2 (en) | Selection of email attachment storage location | |
CN104137511B (en) | Method, equipment and client device for the dynamic select of security protocol | |
US11729129B2 (en) | Message quests for rapid re-hosting of client devices | |
CN107431630B (en) | Highly scalable, fault-tolerant remote access architecture and method of interfacing therewith | |
US20170264610A1 (en) | Data processing method and apparatus based on mobile application entrance and system | |
EP3028437B1 (en) | Messaging api over http protocol to establish context for data exchange | |
US20210289036A1 (en) | Computer system providing saas application session state migration features and related methods | |
CN105357110B (en) | E-mail sending method, apparatus and system | |
JP2019522282A (en) | Secure configuration of cloud computing nodes | |
US20130151638A1 (en) | Method, apparatus, and system for transferring file to user of instant message system | |
US20170171286A1 (en) | Methods and devices for validating a video connection or other types of communication sessions over a computer network | |
US10609155B2 (en) | Scalable self-healing architecture for client-server operations in transient connectivity conditions | |
CA2923896A1 (en) | Email webclient notification queuing | |
US20210037362A1 (en) | Method and apparatus for dynamically reconfiguring mobile devices from primary to secondary services based on pushed data | |
CN117356081A (en) | Messaging proxy architecture for email delivery systems | |
TW201015342A (en) | Asynchronous queued messaging for web applications | |
US9450906B2 (en) | Managing a messaging queue in an asynchronous messaging system | |
RU2629444C2 (en) | Method and server for determining spam activity in cloud system | |
CN108377217A (en) | A kind of real-time communication method and device | |
US9577946B1 (en) | Account-specific login throttling | |
RU2800107C2 (en) | System and method for deleting or editing sent messages from recipients' chat history | |
US11115371B2 (en) | System for managing electronic mail including disabling replying to a given email and related methods |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |