During an email migration, converting distribution list messages into single-instanced content within a collaboration platform group

During an email migration, a migration engine can identify which emails in the source system are associated with distribution lists. The migration engine can convert any emails that are associated with a distribution list into group content of an appropriate group in the target system. In contrast, for any email that is not associated with a distribution list, the migration engine can migrate the email into a corresponding mailbox in the target system.

CROSS-REFERENCE TO RELATED APPLICATIONS

BACKGROUND

A distribution list is a grouping of contacts that is often employed in an email or other collaboration system to facilitate sending an email to a number of recipients. For example, a user could create a distribution list named “Friends” that groups together the email addresses of a number of the user's friends. Then, when the user wants to send an email to each of the friends, the user can simply specify the Friends distribution list in the To: field of the email and a separate copy of the email will be sent to each friend.

Recently, a number of collaboration platforms have been created to facilitate group interactions. These collaboration platforms typically provide a group communication interface that functions similar to an email mailbox (hereinafter “mailbox”) except that each member of the group has shared access to the group's content. For example, Microsoft's Office 365 includes a feature known as Office 365 Groups (“O365 Groups”). An O365 Group is a logical grouping of a number of users which allows each user of the group to have shared access to content, including communications, of the group. These groups, therefore, function similar to distribution lists in that they facilitate group communication.

FIG. 1illustrates a user interface100that generally illustrates how O365 Groups and other similar collaboration tools are structured. In this example, it is assumed that user interface100is displayed to a user, User_123, who is a member of a number of groups including Group A, Group B, and Group C. The left-hand side of user interface100comprises a navigation pane101that includes a typical email folders section101aand a groups section101b. As indicated by the underline, User_123has selected Group A from within groups section101b. As a result, user interface100also displays a selected group section102which lists a number of conversations that have been created within Group A. As shown, each conversation includes a title (which is similar to the title of an email originally sent to a distribution list), an indication of the user that created the conversation (which is similar to the sender of the original email), and a summary of the content of the conversation (which is similar to the body of the original email and the body of any email sent in response to the original email). Although not shown, each conversation may also include an indicator of the users (or at least the number of users) that have participated in the conversation (which, in terms of distribution lists, would represent which users have responded to the original email).

As indicated by the shading, User_123has selected Conversation A within selected group section102. As a result, user interface100is displaying the communications of Conversation A within a contents section103. As shown, the title103aof Conversation A (which is defined as part of creating the first communication103a1in the conversation) is shown at the top of contents section103. Then, each individual communication103a1-103a3within conversation103ais listed. Each communication identifies who created the communication and then lists the contents of the communication.

Although not shown inFIG. 1, a group can provide access to shared documents. Such documents could be attached to individual group communications (similar to an email attachment) or may be associated generally with a conversation or a group (e.g., via a direct upload). Similarly, a group may include a shared calendar and other features that are often provided within a typical email interface. A key benefit of groups is that the content of the group, including all communications sent within the group, is single-instanced and persistent. In other words, a communication from a member of the group to the group can be viewed as a single email being stored in a shared location. In contrast, with a distribution list, a separate copy of the email would be created and sent to each member of the distribution list.

FIG. 2provides a simplified representation of the data structures that can be used to define a group which in this case is Group A. As shown, Group A is defined by the members data structure201which lists each member that belongs to the group. Group A is also defined by a number of conversation data structures202a,202bwhich define the content of the communications in the conversation as well as the sender of such communications. The actual content would be stored centrally to enable shared access by any member of the group. This example is intended only to illustrate how a group employs single-instanced content and is not intended to represent the specific structure employed by any particular implementation of a collaboration platform including Office 365.

The fact that group content is single-instanced content provides various benefits. For example, if a user is added to a group, the user would receive access to all previous conversations and content within the group since this data is centrally stored. In contrast, if a user is added to a distribution list, that user will not have access to any previous communications that were sent to the distribution list because the user would not have been a recipient of any of the previous communications.

Although it is possible to map a distribution list to a group, doing so does not provide group access to communications previously sent to the distribution list. Such a mapping would only create a new group that includes the members of the old distribution list. However, any communications that had been sent using the distribution list would not be available within the new group. Therefore, the group could be used for future communications, but all previous communications within the distribution list would only be accessible within the traditional mailbox of each member of the distribution list.

BRIEF SUMMARY

The present invention extends to methods, systems, and computer program products for converting distribution list messages into single-instanced content within a collaboration platform group during an email migration. In other words, the present invention can be employed to convert existing distribution list emails into group content.

A migration engine, which is used to migrate email and possibly other content from a source system to a target system, can be configured to discover and classify which objects in the source system are distribution lists, users, contacts, resources, etc. Then, during the migration process, the migration engine can identify which emails in the source system are associated with distribution lists. The migration engine can then convert the emails into group content of an appropriate group in the target system. In a particular example, the present invention can be used to convert emails associated with a distribution list into group content within an O365 group.

In one embodiment, the present invention is implemented as a method for processing an email during a migration from a source system to a target system. A migration engine accesses a first email that is stored in a first mailbox of a first user specified for migration from the source system. The migration engine processes the first email to determine whether the first email is associated with a distribution list such that when the migration engine determines that the first email is associated with a first distribution list, the migration engine converts the first email into group content within a first group in the target system, whereas when the migration engine determines that the first email is not associated with a distribution list, the migration engine migrates the first email into a first mailbox of the first user within the target system.

In another embodiment, the present invention is implemented as a method for migrating email from a source system to a target system. The migration engine accesses the source system to identify a number of objects defined within the source system. The objects include a number of users having a mailbox in the source system and one or more distribution lists. For each user, the migration engine creates a mailbox in the target system. For each distribution list, the migration engine creates a group in the target system. For at least one of the mailboxes in the source system, the migration engine processes at least one email in the mailbox by performing the following: determining whether the email is associated with one of the one or more distribution lists; when the email is associated with one of the one or more distribution lists, converting the email into group content within the corresponding group in the target system; and when the email is not associated with one of the one or more distribution lists, migrating the email to the corresponding mailbox in the target system.

In another embodiment, the present invention is implemented as a migration engine that migrates email from a source system to a target system. The migration engine accesses the source system to identify a number of users and a number of distribution lists that are defined with the source system. The migration engine creates, within the target system, a group for each distribution list and a mailbox for each user defined within the source system. The migration engine accesses, in the source system, a first mailbox for a first user. The migration engine processes each of a plurality of emails in the first mailbox by: determining whether the email is associated with one of the distribution lists; when the email is determined to be associated with one of the distribution lists, creating or identifying a conversation within a corresponding group in the target system and creating a conversation based on the email within the created or identified conversation; and when the email is determined to not be associated with one of the distribution lists, migrating the email into a mailbox for the first user on the target system.

DETAILED DESCRIPTION

In this specification, a group should be construed as a logical construct of a collaboration platform which provides a number of members of the group with shared access to single-instanced group content. As described above, one example of a group is an O365 group. Single-instanced content should be construed as content that is centrally stored and shared among members of a group to which the content pertains. A single-instanced email (or communication) can therefore be construed as a single copy of the email that can be accessed by each member of the group. This is in contrast to a distribution list where each member would receive his or her own copy of the email.

FIG. 3illustrates an example of an environment300in which the present invention can be implemented. Environment300includes a migration engine301that functions as an intermediary between a source system302and a target system303during an email migration. Migration engine301can be configured, as is known in the art, to migrate emails and other content from source system302to target system303. For example, migration engine301can employ the Messaging Application Program Interface (MAPI) protocol, the Exchange Web Services (EWS) protocol, or another suitable protocol for migrating emails from source system302to target system303.

Source system302can represent any type of system that employs distribution lists. In a typical scenario, source system302can represent a mail server such as a Microsoft Exchange Server. However, source system302may also represent a system that implements another type of collaboration platform that includes distribution list functionality. Target system303can represent any type of system that employs groups. For example, target system303can represent an Office 365 implementation. Accordingly, in a typical scenario, the present invention may be employed to migrate a company's existing email server to an Office 365 implementation. Any type of networking connection may be employed to interconnect migration engine301with source system302and target system303.

Although the specification will primarily refer to emails associated with distribution lists being converted into group content, such references to emails should be construed as including other types of communications that are associated with distribution lists. Therefore, the term “email” should be construed broadly to encompass any type of communication whose recipients are defined using a distribution list.

Prior to performing a migration, migration engine301can be configured to identify a number of objects that exist within source system302. These objects may include users, contacts, distribution lists, and resources among other things. For example, in a Microsoft Exchange Server implementation, source system302would typically employ Active Directory to store an object for each user, distribution list, contact, etc. In such cases, migration engine301could identify such objects within source system302's Active Directory. Of course, in source systems that employ other platforms, the users, contacts, distribution lists, etc. would be identified in other manners as is known in the art. In any case, as an initial step of the migration process, migration engine301can identify which users exist within the source system as well as any distribution lists that have been created by such users. Then, once migration engine301has identified the users and distribution lists that exist within source system302, migration engine301can commence the migration process.

FIGS. 4A-4Dprovide an example of how the migration process can be performed. For purposes of this example and as shown inFIG. 4A, it will be assumed that migration engine301discovered a number of users including User A, User B, and User C, and a number of distribution lists including DL1and DL2that were defined on source system302. This information will be referred to herein as identified objects401. Migration engine301can then employ identified objects401during the migration process to determine whether any email or other communication was sent to a distribution list, and, if so, convert the email or other communication into group content within target system303. In contrast, any email or other communication that is determined to not be associated with a distribution list can be migrated directly to the corresponding user's mailbox on target system303as is known in the art.

Based on identified objects401, migration engine301can create corresponding data structures within target system303. As shown inFIG. 4B, this includes creating a mailbox for each user (including User A, User B, and User C) identified within source system302. Additionally, migration engine301can create a group for each distribution list (including DL1and DL2) identified in source system302. As indicated by the arrows, a first group, Group1, is created for DL1and a second group, Group2, is created for DL2within target system303. The creation of these groups can include defining a name for the group (which may be based on the name of the distribution list or otherwise defined based on user input during the configuration process) and adding each member of the distribution list to the group.

Once the appropriate mailboxes and groups have been created in target system303, migration engine can then begin migrating the content from source system302to target system303. In accordance with embodiments of the present invention, migration engine301can determine whether a particular communication found within a mailbox in source system302should be migrated to a corresponding mailbox in target system303or instead should be mapped into corresponding group content within a group in target system303. In other words, migration engine301can employ identified objects401to determine whether a particular communication is associated with a distribution list, and, if so, map the communication to a group rather than migrating it to the corresponding mailbox.

FIG. 4Cillustrates how migration engine301can make this determination. As indicated by the arrow, migration engine301has accessed email403awithin User B's mailbox. As shown, email403awas sent to DL1@company.com (which is assumed to be the email address defined for DL1). Because DL1includes User A, User B, and User C, a copy of email403awas sent to each of these users (i.e., to user_a@company.com, user_b@company.com, and user_c@company.com). Migration engine301can access the contents of one or more headers of email403aand compare such contents to the distribution lists defined within identified objects401. Although not shown, identified objects401can store additional information about each distribution list including an email address defined for the distribution list (which in this example would be DL1@company.com). In this case, the contents of the To: field (which is assumed to be based on the email's To header) match DLL Migration engine301can therefore determine that email403ais associated with DLL

InFIG. 4C, it is assumed that the email address of the distribution list is displayed in the To: field of the email. However, it is noted that this is not always the case with all email programs. For example, in the Simple Mail Transfer Protocol (“SMTP”) an “Envelope Recipient” header is employed to define the recipients of the email. When a distribution list is used by the sender, this header would include the email address of the distribution list. The contents of this header, however, are not displayed within the email To: field. A separate header, the To: header, is employed to define what will be displayed. In some cases, these two headers will contain the same content (i.e., they may both include the distribution list email address such as DL1@company.com). However, in other cases, the server may place the email addresses of each member of the distribution list in the To: header so that these email addresses will be displayed to the recipients. For this reason, when SMTP is employed by the source system, the present invention may be configured to inspect the contents of the “Envelope Recipient” header and compare such contents to identified objects401to determine whether the email is associated with a distribution list. For purposes of illustration,FIG. 4Cas well asFIGS. 5B-5Eshow a comparison between the displayed To: field of the email and identified objects401. Although this is one possible way to perform the comparison, the typical comparison would be performed as described above using the “Envelope Recipient” header.

It is noted that it is also possible to determine that an email is associated with a distribution list by comparing the email addresses of each recipient of the email to the users of the distribution list. For example, the To: field or any header of email403acould list user_a@company.com, user_b@company.com, and user_c@company.com. Migration engine301could be configured to compare such identified recipients to the users defined for DL1and, since they match, conclude that the email is associated with the distribution list.

Because email403ais identified as being associated with DL1, migration engine301can map the content of email403ato Group1rather than migrating the email directly into User B's mailbox on target system303. For simplicity,FIG. 4Dillustrates that email403ais simply stored within Group1. The particular manner in which the content of email403acan be added to Group1will depend on the particular implementation of collaboration software used on target system303. An example of this process will be described below with reference toFIGS. 5A-5F.

As can be seen, after the processing of email403a, User B's mailbox on target system303does not include a copy of email403aeven though User B's mailbox on source system302did. Because email403awas sent to DL1, User A and User C also received copies of the email. Therefore, when each of User A's and User C's mailboxes are migrated, the corresponding copy of the email (assuming it is still present in the mailboxes) would likewise not be migrated to their mailboxes on target system303. In this way, after migration, email403abecomes a single-instanced email stored centrally within Group1. As will be further described below with reference toFIG. 5E, migration engine301can employ a technique for ensuring that copies of the same email are not duplicated within the group.

In some embodiments, when an email contained within a user's mailbox on source system302is mapped to a group on target system303, a placeholder message can be added to the user's mailbox on the target system. This placeholder message, while not including the content of the original email, can include a link to the corresponding content that was added to the group. This can allow the user to quickly navigate from the user's mailbox on target system303to the group content.

FIGS. 5A-5Fillustrate an example of how migration engine301can process a number of emails associated with a distribution list in accordance with embodiments of the present invention. In this example, it will be assumed that migration engine301has performed initial processing on source system302to generate identified objects401and that appropriate mailboxes and groups have been created on target system303.

FIG. 5Aprovides a representation500of Group1that can represent the state of Group1as it may exist on target system303prior to migration engine301migrating any communications from source system302to target system303. As shown, migration engine301has created the structure of Group1based on the definition of D1within identified objects401. The creation of this structure includes creating a members data structure501that defines which members belong to Group1which in this case are User A, User B, and User C. At this point, because no emails have been migrated (or at least because no emails determined to be associated with DL1have been migrated), Group1does not include any conversations.

FIGS. 5B-5Drepresent various steps that migration engine301can perform while migrating User B's mailbox from source system302to target system303. InFIG. 5B, migration engine301is processing an email403a. Initially, and as described above, migration engine301can determine whether email403ais associated with a distribution list. This determination can be based at least primarily on an identification of the distribution list within the email (e.g., the presence of the distribution list's email address within the “Envelope Recipient” header of the email). In this case, the To: field is shown as including DL1@company.com which is the email address for DLL Migrating engine301can therefore determine that email403ais associated with DLL

Because email403ais determined to be associated with DL1, migration engine301converts the content of email403ainto the appropriate format for inclusion in Group1. This may include creating a conversation data structure502within Group1(assuming one has not already been created for this conversation) and naming conversation data structure502with the subject of email403a. In this case, email403ahas a subject of “Draft of Proposal.” Accordingly, migration engine301creates a conversation named “Draft of Proposal” within Group1. The conversion of email403ainto the appropriate format may also include creating a communication502awithin conversation data structure502to represent email403a. As shown, migration engine301uses the contents of email403a's From field, which in this case is user_a@company.com, to populate the From field within communication502a. Because migration engine301knows that user_a@company.com is User A's email address (e.g., based on information within identified objects401), User A's name can be populated into the From field.

Migration engine301can also use the contents of email403a's Sent field and body to populate corresponding Sent and Contents fields within communication502a. However, the contents of email403a's To: field is not propagated since there is no longer any need to preserve such information given that the Group inherently represents the recipients of all communications it contains.

As indicated above, since email403ais converted into group content, it is not migrated into User B's mailbox on target system303. In some embodiments, a placeholder may be created in User B's mailbox on target system303that includes a link to communication502aor at least to conversation502.

FIG. 5Crepresents similar steps that can be performed when migration engine301processes an email403cwithin User B's mailbox which happens to be a reply to email403a. As shown, email403cwas sent by User B in response to User A's original email403a. During processing of email403c, migration engine can initially determine whether email403cis associated with a distribution list. As described above, this could be done based on the contents of the “Envelope Recipient” header (or possibly on the contents of the To: field or another similar field/header when a protocol other than SMTP is used). Because email403cwas sent to DL1@company.com, migration engine301can conclude that email403cshould be converted into group content within Group1.

When processing email403aas described above, no conversation existed in Group1. However, while processing email403c, migration engine301can identify that conversation data structure502has been created within Group1and compare email403cto conversation data structure502and its contents (as well as to any other conversation data structures that may exist in Group1). Such a comparison can be performed to determine a number of things including whether a new conversation should be created from email403c, whether email403cshould be considered a communication of an existing conversation, and whether email403cis a duplicate of a communication already created within an existing conversation.

In this case, migration engine301can identify that email403cincludes a subject that matches the name assigned to conversation data structure502. For purposes of determining whether an email includes a matching subject, migration engine301can consider the presence of Re: or any other similar identifier within the subject. Since email403c's subject matches the name of conversation data structure502, migration engine301can determine that email403cshould likely be converted into a communication within the conversation. Similarly, migration engine301can examine the body of email403c. Because the body of email403cincludes the contents of email403a, migration engine301can determine that email403cis a response to email403aand therefore should be included as a communication within the conversation. Accordingly,FIG. 5Cshows that migration engine301has created another communication502bwithin conversation data structure502and mapped the From field, Sent field, and body of email403cinto corresponding fields within communication502b.

Because migration engine301can determine that a portion of the body of email403cis content of email403a(e.g., by identifying that matching content already exists within communication502a), this portion of email403ccan be excluded from the contents of communication502bto eliminate redundant content. Accordingly, the contents of communication502bonly includes “Looks good!” which corresponds to the content that was added by User B within email403c.

FIG. 5Dillustrates that a similar process is performed when evaluating email403dwhich happens to be User C's reply to email403c. As described above, migration engine301can determine that email403dis associated with DL1and that email403dshould be considered a communication within the “Draft of Proposal” conversation (e.g., based on its subject and body that includes emails403aand403c). Accordingly, migration engine301creates communication502cwithin conversation data structure502.

Although not shown in this example, if during processing of any email on source system302, migration engine301identifies that the email is associated with DL1but is from a different thread than the “Draft of Proposal” thread, migration engine301can create a new conversation data structure for the thread in a similar manner as described above.

FIG. 5Eillustrates how migration engine301can discard and optionally reference duplicate emails or other content. In this example, migration engine301is processing an email402bfrom within User A's mailbox on source system302. It is assumed that this processing occurs after the processing of User B's mailbox as described above and that email402bis a copy of email403a. Because email403aand email403bare copies of the same email, migration engine301will have already created the corresponding conversation and communication. In other words, communication502arepresents email402b. For this reason, migration engine301can discard email402b. Similarly, when migrating User C's mailbox, migration engine301could discard the copy of the email that User C received. In this way, multiple copies of an email are converted into single-instanced content within the group. The process of determining whether an email is a duplicate can be performed in a similar manner as described above. For example, migration engine301can examine the date, subject, sender, and body of an email and compare it to dates, subjects, senders, and contents of group conversations and communications to determine whether the email is a duplicate. To facilitate comparison of the body of the email, a checksum of the body may be employed.

In some embodiments, migration engine301can maintain a log (or index) of all emails that it has identified as being associated with a distribution list and use this log during processing of subsequent emails. For example, the log can contain a listing of the dates, subjects, senders, and bodies (e.g., checksums of the contents of the bodies) of all emails that were identified as being associated with a distribution list. This log can be structured in a manner that facilitates comparison with emails during the migration process. For example, when an email that appears to be associated with a distribution list is processed, the email's subject can be compared to all subjects in the log to quickly determine if the email is likely a communication of a conversation that has already been created in a group. Similarly, the email's date, sender, and contents (or checksum of its contents) could be compared to the date, sender, and contents of corresponding entries in the log to quickly determine if the email is a duplicate.

It is also noted that, in contrast to what is shown inFIGS. 5B-5D, migration engine301may be configured to generate multiple communications from a single email. For example, if migration engine301processes email403dprior to processing email403cor email403a, migration engine301may generate conversation data structure502and populate it with communications502a-502cbased only on the information obtained from email403d. In particular, because the body of email403dcontains the content of email403aand email403c, communications502aand502bcan be generated from the body of email403d. If such were the case, migration engine301would discard email403aand email403conce they are processed.

FIG. 6provides a flowchart of an example method600for processing email during a migration from a source system to a target system.

Method600includes an act601of accessing a first email that is stored in a first mailbox of a first user specified for migration from the source system. For example, migration engine301can access an email, such as email403a,403c, or403d, within User B's mailbox on source system302. Similarly, migration engine301can access an email, such as email402b, within User A's mailbox on source system302.

Method600includes an act602of processing the first email to determine whether the first email is associated with a distribution list. For example, migration engine301can examine the contents of a header (e.g., the “Envelope Recipients” header) in emails403a,403c,403d,402b, etc., and/or can examine the contents of other fields of these emails and compare the contents to identified objects401or other information compiled during the migration.

Method600includes an act602aof converting the first email into group content within a first group in the target system when the migration engine determines that the first email is associated with a first distribution list. For example, email403acan be converted into communication502a, email403ccan be converted into communication502b, or email403dcan be converted into communication502c.

Method600includes an act602bof migrating the first email into a first mailbox of the first user within the target system when the migration engine determines that the first email is not associated with a distribution list. For example, migration engine301can migrate an email that is stored in User B's mailbox on source system302and not determined to be associated with a distribution list into User B's mailbox on target system303.

In summary, the present invention provides a way to convert emails into group content during a migration process. By converting emails associated with distribution lists into group content, all members of the group will obtain/retain access to all group content after the migration. In addition, new members added to the group after the migration will have access to the historical content of the group.