<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Tim McMichael</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/timmcmic/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/timmcmic/feed.xml</link>
    <description>Navigating the world of high availability...and occasionally sticking my head in the cloud...</description>
    <lastBuildDate>Wed, 27 Mar 2019 18:13:49 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Office 365: Challenges with Distribution Groups for Migrated Mailboxes and a Script Based Solution ( Script Version 1.4 )</title>
      <link>https://docs.microsoft.com/archive/blogs/timmcmic/office-365-challenges-with-distribution-groups-for-migrated-mailboxes-and-a-script-based-solution-script-version-1-4</link>
      <pubDate>Tue, 19 Mar 2019 19:19:09 GMT</pubDate>
      <dc:creator><![CDATA[TIMMCMIC]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/timmcmic/?p=3905</guid>
      <description><![CDATA[In script version 1.3 we began the introduction of logic that allowed administrators to convert the...]]></description>
      <content:encoded><![CDATA[<p align="justify">In script version 1.3 we began the introduction of logic that allowed administrators to convert the distribution group to a mail enabled contact post migration.&nbsp; It was extremely simplistic in that the function utilized retained as many attributes of the distribution list, deleted the distribution list, and created a mail enabled contact utilizing the retained attributes.&nbsp; On the surface this functionality worked well for preserving mail flow and allowing an object to be represented in the global address list.&nbsp; </p><p align="justify">The simplistic logic introduced several potential issues.</p><ul><li><div align="justify">The deleted distribution list could be members of other distribution lists or groups.</div></li><li><div align="justify">The deleted distribution list could have exceptions on other groups – for example managedBy, AcceptMessagesOnlyFromSendersOrMembers, RejectMessagesFromSendersOrMembers, etc.</div></li><li><div align="justify">When the distribution list is deleted all of the other dependencies on that list are lost.</div></li></ul><p align="justify">In addition to the concerns of what is lost when deleting the distribution group this version also attempts to address a concern brought forth by a customer utilizing the script for migration.&nbsp; In version 1.4 the default behavior was to move the distribution group to an organizational unit that does not synchronize through Azure Active Directory Connect.&nbsp; This method is utilized to ensure that the group object on premises does not collide with the group object created directly in Office 365.&nbsp; In this customers instance the organizational unit that was intentionally excluded from synchronization was accidentally selected for synchronization.&nbsp; When the groups were detected – Azure Active Directory Connect soft matches the on-premises group to the migrated group and changes the source of authority to on-premises.&nbsp; In addition any changes that were processed directly in the cloud were overwritten with old data retained on-premises. </p><p align="justify">With the background what changed in version 1.4.</p><p align="justify"><strong><em>Changing default convert to contact logic:</em></strong></p><p align="justify">In prior versions the conversion to contact was optional.&nbsp; It continues to be optional but the default behavior has changed.&nbsp; Instead of moving the group to the non-sync OU and leaving it – it is now deleted and converted to a mail enabled contact by default.</p><p align="justify"><em><strong>Changing domain controller logic:</strong></em></p><p align="justify">In prior versions a specific domain controller was not specified by the administrator for directory operations.&nbsp; Using the Exchange Management Shell logic – a domain controller local to the connected Exchange Server was utilized.&nbsp; In multi-site environments it was possible that the endpoint processing the Exchange commands and the Azure Active Directory Connect server would be utilizing different sets of domain controller.&nbsp; The scripts logic for dealing with this was to perform a global Active Directory replication which was inefficient.&nbsp; The script now requires the administrator to specify a specific domain controller for operations.&nbsp; Inbound and outbound replication is triggered from this specific domain controller.&nbsp; The domain controller specified should be <strong><font color="#ff0000">in the same site as the Azure Active Directory Connect Server</font></strong>.&nbsp; When utilizing a domain controller in the same site as the ADConnect server we cut down on overall time waiting for ADConnect to replicate the distribution group removal from Office 365.</p><p align="justify"><strong><em>Tracking migrated distribution group settings for on-premises objects:</em></strong></p><p align="justify">To facilitate a lossless migration new logic was implemented to track permissions and settings of the migrated group.&nbsp; Specifically we do the following:</p><ul><li><div align="justify">Record all distribution lists where the migrated distribution group has managedBy rights.</div></li><li><div align="justify">Record all distribution lists where the migrated distribution group has BypassModerationFromSendersOrMembers rights.</div></li><li><div align="justify">Record all distribution lists where the migrated distribution list has AcceptMessagesFromSendersOrMembers rights.</div></li><li><div align="justify">Record all distribution lists where the migrated distribution lists has RejectMessagesFromSendersOrMembers rights.</div></li><li><div align="justify">Record all groups in the Active Directory where the migrated distribution list is a member.</div></li></ul><p align="justify">It should be noted that this process does introduce some inefficiency into the overall scripts.&nbsp; Unfortunately BypassModerationFromSendersOrMembers is not a filterable property of get-distributionGroup.&nbsp; This requires scanning all distribution groups in the organization in order to determine if the migrated DL has this right.&nbsp; Depending on the number of on-premises distribution group this could add significant time to the migration process.</p><p align="justify"><strong><em>Changed the convert to mail enabled contact logic:</em></strong></p><p align="justify">In order to facilitate changing the distribution list to a mail enabled contact several logic items needed to change.&nbsp; The first logic change that needed to occur was provisioning the mail enabled contact.&nbsp; When the on-premises distribution list is deleted a mail enabled contact is created in the original OU where the distribution list originally resided.&nbsp; The script utilizes a name prefix specified in the script by the administrator, and is appended to the distribution groups name, to create&nbsp; random contact name.&nbsp; The remote routing address on the contact is set to the *.onmicrosoft.com email address of the migrated distribution list.&nbsp; When a mail enabled contact is created the remote routing address is added as a proxy address to the proxy addresses attribute.&nbsp; This causes proxy address collisions with the migrated distribution list since the object is created in a synchronized OU.&nbsp; The script removes these email addresses from the proxy addresses attribute to prevent any collision – they are not required to be present.&nbsp; The last customizations to the mail enabled contact are to set custom attribute 1 of the object to a migration string for easy location and customer attribute 2 to the original primary SMTP address.&nbsp; This is required to retain mail flow from on premises to Office 365.&nbsp; The mail contact is replicated to ensure that group membership and distribution list rights settings can be retained from on-premises to Office 365.&nbsp; </p><p align="justify">The second logic change that need to occur was preserving an object on premises that allowed for cross premises mail flow.&nbsp; The object needed to not replicate or have the ability to replicate and be soft matched to the migrated group in the event of an accident.&nbsp; A dynamic distribution group is the perfect object.&nbsp; A dynamic distribution list can be created, will appear in the global address list, but in no way can be replicated to Exchange Online.&nbsp; The script provisions a dynamic distribution group in the organizational unit specified for converted distribution groups.&nbsp; The settings of the original distribution group are preserved on the dynamic distribution group.&nbsp; These include name, alias, and proxy addresses.&nbsp;&nbsp; In addition the X500 address of the migrated distribution list is stamped on the dynamic distribution group to ensure that reply to and nickname functionality works.&nbsp; The dynamic distribution list is scoped to look for mail enabled contacts in the distribution groups original organizational unit where custom attribute 2 equals the original primary SMTP address.&nbsp; I will outline the mail flow scenarios later in the article.</p><p align="justify">The third logic change was to change how membership lists were built during the migration process.&nbsp; A function of the script is to scan all settings of the DL to be migrated and convert attributes lists into primary SMTP address lists.&nbsp; In the case of the mail enabled contact we do not want to include it as the member where we should be adding another migrated DL.&nbsp; The script looks at each object and if it is a mail enabled contact where custom attribute 1 is the migration string – the recorded SMTP address to the array is custom attribute 2 which is the original DLs primary SMTP address.&nbsp; This ensures that when attributes are reset within Office 365 the migrated group is added back with permissions or membership and not the mail enabled contact that also exists.</p><p align="justify">The forth logic change was to preserve group membership.&nbsp; Distribution groups can be nested into any number of other security and distribution groups in the organization.&nbsp; If we simply deleted the original distribution list this membership would be lost.&nbsp; The script will go through and reset the mail enabled contact to be members of the groups that the migrated DL was originally a member of.&nbsp; In the case of security groups on premises this DOES NOT preserve permissions as a mail enabled contact is not a security context for shares or other resources.&nbsp; Retaining the membership also ensures that as other distribution lists are migrated the membership can be converted and retained in Office 365.</p><p align="justify">The fifth logic change is to handle any other settings that the migrated distribution list could have on other distribution groups.&nbsp; These include managedBy, BypassModerationFromSendersOrMembers, AcceptMessagesFromSendersOrMembers, and RejectMessagesFromSendersOrMembers.&nbsp; The script tracks arrays of all of these settings and then steps through the remaining groups on premises to add the mail enabled contact to the lists.&nbsp; This allows the contact to be detected when future distribution list migrations occur and for the group permission to be added to those lists in Office 365 post migration.&nbsp; </p><p align="justify"><strong><em>On-Premises Mail Flow:</em></strong></p><p align="justify">To ensure full migrated group access to on premises the script has implemented logic that changes the message flow.&nbsp; Here is how messages will flow after the DL migration has completed.</p><ul><li><div align="justify">Message enters receive connector to on-premises Exchange Server.&nbsp; Sample address migratedDL@contoso.com.</div></li><li><div align="justify">Transport matches the address migratedDL@contoso.com to the script created dynamic distribution group migratedDL@contoso.com.</div></li><li><div align="justify">Transport expands the distribution group searching for a mail enabled contact in the migrated distribution lists original organizational unit where custom attribute 2 equals the primary SMTP address.</div></li><li><div align="justify">The mail enabled contact is located and has a remote routing address of migratedDL@mail.domain.onmicrosoft.com.&nbsp; The email is then converted to migratedDL@mail.contoso.onmicrosoft.com.</div></li><li><div align="justify">The message is transferred through the hybrid connector to Office 365.</div></li><li><div align="justify">The message arrives in Office 365 addressed to migratedDL@mail.contoso.onmicrosoft.com.&nbsp; The message address is converted to <a href="mailto:migratedDL@contoso.com">migratedDL@contoso.com</a>.</div></li><li><div align="justify">The message delivers to the migrated distribution list where it is expanded and sent to the recipients.</div></li></ul><p align="justify"><strong><em>Script Performance:</em></strong></p><p align="justify">I wanted to provide some sample script performance values.&nbsp; In this test we have the following:</p><ul><li><div align="justify">A distribution list to migrate that has 10,000 members comprised of mailboxes, remote mailboxes, mail enabled users, and mail enabled contacts.</div></li><li><div align="justify">The distribution list is a member of 10,000 other groups within the Active Directory.</div></li><li><div align="justify">The distribution list to be migrated is set as managedBy to 5,000 other distribution groups.</div></li><li><div align="justify">The distribution list to be migrated is set as BypassModerationFromSendersOrMembers to 5,000 other distribution groups.</div></li><li><div align="justify">The distribution list to be migrated is set as AcceptMessagesFromSendersOrMembers on 5,000 other distribution groups.</div></li><li><div align="justify">The distribution list to be migrated is set as RejectMessagesFromSendersOrMembers on 5,000 other distribution groups.</div></li></ul><p align="justify">Here is the performance statistics given those values.</p><p><font face="Courier New" size="3">Days&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0</font><p><font face="Courier New" size="3">Hours&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 6</font><p><font face="Courier New" size="3">Minutes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 19</font><p><font face="Courier New" size="3">Seconds&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 32</font><p><font face="Courier New" size="3">Milliseconds&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 34</font><p><font face="Courier New" size="3">Ticks&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 227720349894</font><p><font face="Courier New" size="3">TotalDays&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0.263565219784722</font><p><font face="Courier New" size="3">TotalHours&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 6.32556527483333</font><p><font face="Courier New" size="3">TotalMinutes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 379.53391649</font><p><font face="Courier New" size="3">TotalSeconds&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 22772.0349894</font><p><font size="2"><font size="3"><font face="Courier New">TotalMilliseconds : 22772034.9894</font> </font></font><p>The distribution list took short of 7 hours to migrate in that configuration.<p>A more reasonable test was performed with the following characteristics:<ul><!--StartFragment-->
<li>
<div align="justify">A distribution list to migrate that has 1,000 members 
comprised of mailboxes, remote mailboxes, mail enabled users, and mail enabled 
contacts.</div></li>
<li>
<div align="justify">The distribution list is a member of 1,000 other groups 
within the Active Directory.</div></li>
<li>
<div align="justify">The distribution list to be migrated is set as managedBy to 100 other distribution groups.</div></li>
<li>
<div align="justify">The distribution list to be migrated is set as 
BypassModerationFromSendersOrMembers to 100 other distribution 
groups.</div></li>
<li>
<div align="justify">The distribution list to be migrated is set as 
AcceptMessagesFromSendersOrMembers on 100 other distribution 
groups.</div></li>
<li>
<div align="justify">The distribution list to be migrated is set as 
RejectMessagesFromSendersOrMembers on 100 other distribution 
groups.</div></li></ul><p><font face="Courier New" size="3">Days&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0</font><p><font face="Courier New" size="3">Hours&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0</font><p><font face="Courier New" size="3">Minutes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 21</font><p><font face="Courier New" size="3">Seconds&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 58</font><p><font face="Courier New" size="3">Milliseconds&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 822</font><p><font face="Courier New" size="3">Ticks&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 13188223153</font><p><font face="Courier New" size="3">TotalDays&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0.0152641471678241</font><p><font face="Courier New" size="3">TotalHours&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0.366339532027778</font><p><font face="Courier New" size="3">TotalMinutes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 21.9803719216667</font><p><font face="Courier New" size="3">TotalSeconds&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1318.8223153</font><p><font face="Courier New" size="3">TotalMilliseconds : 1318822.3153</font> <ul><!--EndFragment--></ul><p>In this instance the distribution group took 21 minutes to finalize and sync.&nbsp; <p>For factors affecting overall time please review the additional blog posts on prior script revisions.<p>Happy migrating!<p align="justify"><br></p><p align="justify"><br></p><p align="justify"></p>]]></content:encoded>
    </item>
    <item>
      <title>Office 365:  Tracking last run times of the managed folder assistance / exchange life cycle.</title>
      <link>https://docs.microsoft.com/archive/blogs/timmcmic/office-365-tracking-last-run-times-of-the-managed-folder-assistance-exchange-life-cycle</link>
      <pubDate>Wed, 13 Feb 2019 18:52:25 GMT</pubDate>
      <dc:creator><![CDATA[TIMMCMIC]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/timmcmic/?p=3895</guid>
      <description><![CDATA[In Office 365 the managed folder assistance is responsible for applying data retention policies to...]]></description>
      <content:encoded><![CDATA[<p>In Office 365 the managed folder assistance is responsible for applying data retention policies to mailbox items.&nbsp; For example, if you have a policy to purge items older that 90 days from deleted items – the managed folder assistant will process this information.</p><p><br></p><p>A question that sometimes arises is how can I track the last time the managed folder assistant processed a given mailbox.&nbsp; Administrators of Exchange Online actually have an interface into this information.&nbsp; Within the Exchange Online Management Shell there is a commandlet Export-MailboxDiagnosticLogs.&nbsp; This commandlet will extract the details of the mailbox folder assistant process.&nbsp; Here is an example:</p><p><br></p><p><font face="Courier New">PS C:\&gt; Export-MailboxDiagnosticLogs -Identity tmcmichael -ExtendedProperties &gt; c:\temp\output.txt</font></p><p><br></p><p><font face="Courier New">RunspaceId&nbsp; : 1290130b-c3af-49c2-a42c-b9dd98ed702d<br>
MailboxLog&nbsp; : &lt;Properties&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;MailboxTable&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Name&gt;DatabaseSchemaVersion&lt;/Name&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Value&gt;65543&lt;/Value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Name&gt;StorageQuotaLimit&lt;/Name&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Value&gt;51380224&lt;/Value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Name&gt;NormalMessageSize64&lt;/Name&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Value&gt;437365777&lt;/Value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Name&gt;SystemMessageSize&lt;/Name&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Value&gt;93908012&lt;/Value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Name&gt;TotalPages&lt;/Name&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Value&gt;41405&lt;/Value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Name&gt;PersistableTenantPartitionHint&lt;/Name&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Value&gt;0xA8ECFDEE5058A54CA1600716F2D8496E&lt;/Value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Name&gt;IsContentIndexingEnabled&lt;/Name&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Value&gt;True&lt;/Value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Name&gt;ProhibitReceiveQuota&lt;/Name&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Value&gt;52428800&lt;/Value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Property&gt;</font></p><p><font face="Courier New">………………………..</font></p><p><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Name&gt;DisplayName&lt;/Name&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Value&gt;Timothy McMichael&lt;/Value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Name&gt;StoreEntryId&lt;/Name&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Value&gt;0x000000001B55FA20AA6611CD9BC800AA002FC45A09004800534E36505230364D42343132352E6E616D70726430<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 362E70726F642E6F75746C6F6F6B2E636F6D0012252C7D0E254B40AA6BABAF0A40F1FE7110C9033B684947B56544938EFF582F&lt;/V<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alue&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/MailboxTable&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Properties&gt;<br>
LogName&nbsp;&nbsp;&nbsp;&nbsp; : ExtendedProperties<br>
Identity&nbsp;&nbsp;&nbsp; : Timothy McMichael<br>
IsValid&nbsp;&nbsp;&nbsp;&nbsp; : True<br>
ObjectState : Unchanged</font></p><p><br></p><p>The output above is abbreviated as it is quite large.&nbsp; One of the fields contained within the XML output is the ELCLastSuccessTimestamp.&nbsp; Here is an example.</p><p><br></p><p><font face="Courier New">&lt;Property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Name&gt;ELCLastSuccessTimestamp&lt;/Name&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Value&gt;2/13/2019 12:20:18 PM&lt;/Value&gt;<br>
&lt;/Property&gt;</font></p><p><br></p><p>In this example the last time the mailbox folder assistant processed the given mailbox was on 2/13 at 12:20.&nbsp; The commandlet itself is excellent for extracting single mailbox data.&nbsp; What happens if we want to generate a report for multiple mailboxes?</p><p><br></p><p>If the need arises to query multiple mailboxes the following code can be utilized.</p><p><br></p><p><font face="Courier New">$mailboxes = get-mailbox -resultsize unlimited</font></p><font face="Courier New">
</font><p><font face="Courier New">$mailboxes | </font></p><font face="Courier New">
</font><p><font face="Courier New">% { $exportPath = "c:\temp\"+$_.alias+".xml" ; </font></p><font face="Courier New">
</font><p><font face="Courier New">&nbsp;&nbsp;&nbsp; $exportPath ; <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; $xml = Export-MailboxDiagnosticLogs -ExtendedProperties -Identity $_.alias ; <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; $xml | Export-Clixml -Path $exportPath ; <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; $mailboxIdentity = ([Xml]$xml.MailboxLog).Properties.MailboxTable.Property | where { $_.Name -eq 'DisplayName' } ; <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; $mailboxIdentity.value ; $elcLastSuccessTimestamp = ([Xml]$xml.MailboxLog).Properties.MailboxTable.Property | where { $_.Name -eq 'ELCLastSuccessTimestamp' } ; <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; $elcLastSuccessTimestamp.value ; $object = new-object -TypeName PSObject ; <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; $object | Add-Member -MemberType NoteProperty -Name DisplayName -Value $mailboxIdentity.value ; <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; $object | add-member -memberType NoteProperty -name "Alias" -value $_.alias ; <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; $object | add-member -memberType NoteProperty -name "PrimarySMTPAddress" -value $_.primarySMTPAddress ; <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; $object | Add-Member -MemberType NoteProperty -Name ELCLastSuccessTimestamp -Value $elcLastSuccessTimestamp.value ; <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; $object | Export-Csv -Path c:\temp\output.csv -Append ; start-sleep -Milliseconds 500<br>&nbsp;&nbsp; }</font></p><p><br></p><p>In the first command we gather all of the mailboxes in the organization.&nbsp; If your organization is large it is recommended to batch this to smaller numbers of mailboxes by performing a filter on the get-mailbox.&nbsp; We then take the list of mailboxes and move it into a loop – where we process each mailbox by pulling the diagnostic logging.&nbsp; With the diagnostic log pulled we extract pertinent information such as display name and last run time.&nbsp; This is intentionally pulled from the XML to validate we are aligning the output to the correct export data.&nbsp; An object is then built containing the information from the XML output and from the mailbox output stored in the array.&nbsp; These objects are then exported to a CSV file.&nbsp; The CSV file can be manipulated in excel.</p><p><br></p><p>Here is a sample CSV file:</p><p><br></p><p>#TYPE System.Management.Automation.PSCustomObject<br>
"DisplayName","Alias","PrimarySMTPAddress","ELCLastSuccessTimestamp"<br>
"Alert Mailbox","alert","alert@domain.org","2/12/2019 10:11:34 PM"<br>
"AH","a-alias","a-alias@domain.org","2/12/2019 11:55:21 PM"<br>
"BM","b-alias","b-alias@domain.org","2/13/2019 9:07:35 AM"</p><p><br></p><p>In the output directory specified the XML is retained in case further analysis is necessary.</p><p><br></p><p>This method utilizing powershell allows us to interrogate multiple mailboxes and determine the last time the managed folder assistant processed the mailbox.</p>]]></content:encoded>
    </item>
    <item>
      <title>Office 365: Dynamic distribution lists created by email domains.</title>
      <link>https://docs.microsoft.com/archive/blogs/timmcmic/office-365-dynamic-distribution-lists-created-by-email-domains</link>
      <pubDate>Tue, 29 Jan 2019 17:47:52 GMT</pubDate>
      <dc:creator><![CDATA[TIMMCMIC]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/timmcmic/?p=3885</guid>
      <description><![CDATA[Dynamic distribution lists offer excellent mechanisms to email groups of users based on their...]]></description>
      <content:encoded><![CDATA[<p>Dynamic distribution lists offer excellent mechanisms to email groups of users based on their attribute rather than maintaining manual group membership.&nbsp; One request I often receive is how can we create a distribution list for everyone that has their primary SMTP address within a certain domain.</p><p><br></p><p>By their initial design a dynamic distribution list supports a recipient filter property.&nbsp; The recipient filter property allows administrators to specify a query of objects to ensure those objects are included in the dynamic distribution list.&nbsp; With this in mind many administrators will attempt to utilize the recipient filter in attempts to filter a domain to create the dynamic distribution list.&nbsp; Here is an example:</p><p><br></p><p><font face="Courier New">PS C:\&gt; New-DynamicDistributionGroup -Name TestDynamicDL -RecipientFilter {PrimarySMTPAddress -like '*.consoto.com'}<br>
Wildcards cannot be used as the first character. Please revise the filter criteria.<br>&nbsp;&nbsp;&nbsp;&nbsp; + CategoryInfo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : NotSpecified: (:) [], TaskArgumentException<br>&nbsp;&nbsp;&nbsp;&nbsp; + FullyQualifiedErrorId : [Server=MWHPR06MB2446,RequestId=c6124483-2c49-4542-a783-4177dbe9119e,TimeStamp=1/29/2019<br>&nbsp;&nbsp;&nbsp;&nbsp; 3:10:33 PM] [FailureCategory=Cmdlet-TaskArgumentException] AE6DCA3<br>&nbsp;&nbsp;&nbsp;&nbsp; + PSComputerName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : ps.outlook.com</font></p><p><br></p><p>In the recipient filter the wildcard character cannot be the first character.&nbsp; This effectively prevents us from querying everyone regardless of alias that contains the domain specified.&nbsp; </p><p><br></p><p>Without the ability to lead off with a wild card character we need to be more creative in how we approach this solution.&nbsp; I find the easiest and most common recommendation is to utilize a custom attribute that is not being utilized for another purpose.&nbsp; In an environment where directory synchronization is available the custom attributes are sourced from on premises Active Directory.&nbsp; Administrators have easy access to the custom attributes through the on-premises Exchange Management Shell.&nbsp; Utilizing powershell administrators could craft a script that would find all objects with a given primary SMTP address where the designated custom attribute is not set to the predetermaned value.&nbsp; The custom attribute can then be updated.&nbsp; The script to perform these operations could be scheduled.&nbsp; Here is an example:</p><p><br></p><p><font face="Courier New">#Gather all remote mailboxes where the primary SMTP address is *domain.com and where the custom attribute 10 is not already the domain attribute.</font></p><p><font face="Courier New">PS C:\&gt; $mailboxes = Invoke-Command { Get-RemoteMailbox -ResultSize unlimited | where { $_.primarySMTPAddress -like "*domain.org" -and $_.customAttribute10 -ne "DOMAIN" } }</font></p><p><font face="Courier New">#Iterate through the array and set the custom attribute.</font></p><p><font face="Courier New">PS C:\&gt; $mailboxes | % { Set-RemoteMailbox -identity $_.primarySMTPAddress -CustomAttribute10 "DOMAIN" }</font></p><p><font face="Courier New">#Iterate through all mailboxes where the custom attribute 10 is set to the defined value and where the primary smtp address is not at the designated domain.</font></p><p><font face="Courier New">#These are users whos primary SMTP address changed form the designated domain.</font></p><p><font face="Courier New">PS C:\&gt; $mailboxes = Invoke-Command { Get-RemoteMailbox -ResultSize unlimited | where { $_.primarySMTPAddress -notlike "*domain.org" -and $_.customAttribute10 -eq "DOMAIN" } }</font></p><p><font face="Courier New">#Iterate through the array and NULL the custom attribute.</font></p><p><font face="Courier New">PS C:\&gt; $mailboxes | % { Set-RemoteMailbox -identity $_.primarySMTPAddress -CustomAttribute10 $NULL }</font></p><p><br></p><p>There are some advantages to this approach.<br><br></p><ul><li>The script can be scheduled eliminating administrator intervention.</li><li>The script pulls the smallest number of objects to be changed with each iteration through filtering.</li><li>The script utilizes custom attributes which are included in the default replication set with AD Connect.</li><li>The script changes the on premises value to match the replicated cloud value – ensuring that it is visually easy to determine how the values are derived.</li></ul><p><br></p><p>There are some dis-advantages to this approach.</p><p><br></p><ul><li>Distribution list membership is only updated / modified after the script has executed leading to delays in group membership delays in Office 365.</li></ul><p><br></p><p>An alternate approach is to utilize the Azure Active Directory Connect synchronization rules to populate the designated custom attribute.&nbsp; Using the ad connect rules editor we can create a low priority inbound rule.&nbsp; The rule type would be a join, operate on a user object in the local active directory, and translate to a person object in Office 365.&nbsp; We will transform the specified custom attribute using an expression searching for a field that contains a value.&nbsp; Let us take a look at how this would operate.</p><p><br></p><p>The first item to look at is what attribute will be base the filter off of.&nbsp; If we perform a metaverse search and locate a reference member, we can review the attributes of the user.&nbsp; In our instance the mail attribute reflects the primary SMTP address of the user.&nbsp; </p><p><br></p><p><a href="https://msdnshared.blob.core.windows.net/media/2019/01/image80.png"><img width="244" height="192" title="image" style="margin: 0px" alt="image" src="https://msdnshared.blob.core.windows.net/media/2019/01/image_thumb79.png" border="0"></a></p><p><br></p><p>Having identified the mail attribute as containing the information we want to filter on – we can begin creating the rule to modify the custom attribute.&nbsp;&nbsp; The synchronization rule editor is utilized for this operation. </p><p><br></p><p>The first step is to ensure that we have the direction is set correctly.&nbsp; In our instance the direction will be INBOUND.&nbsp; </p><p><br></p><p><a href="https://msdnshared.blob.core.windows.net/media/2019/01/image81.png"><img width="244" height="57" title="image" style="margin: 0px" alt="image" src="https://msdnshared.blob.core.windows.net/media/2019/01/image_thumb80.png" border="0"></a></p><p><br></p><p>The second step is to select the “Add New Rule” button.&nbsp; This launches the create inbound synchronization rule editor.</p><p><br></p><p><a href="https://msdnshared.blob.core.windows.net/media/2019/01/image82.png"><img width="244" height="163" title="image" style="margin: 0px" alt="image" src="https://msdnshared.blob.core.windows.net/media/2019/01/image_thumb81.png" border="0"></a></p><p><br></p><p>The third step is to establish the properties on the description page.&nbsp; I recommend a name field that accurate describes what the rule is going to do.&nbsp; I also recommend that we supply an accurate description that allows future administrators to understand what has changed.&nbsp; The connected system will be the local active directory.&nbsp; The connected system object type is “User”.&nbsp; The metaverse object type is “Person”.&nbsp; The link type is Join.&nbsp; The precedence should be lower than any of the default rules.&nbsp; In this case default rules begin at 100, so we will select a precedence of 50.&nbsp; </p><p><br></p><p><a href="https://msdnshared.blob.core.windows.net/media/2019/01/image83.png"><img width="244" height="221" title="image" style="margin: 0px" alt="image" src="https://msdnshared.blob.core.windows.net/media/2019/01/image_thumb82.png" border="0"></a></p><p><br></p><p>The forth step is to review a scoping filter.&nbsp; In this case there are no scopes that will be defined.&nbsp; </p><p><br></p><p><a href="https://msdnshared.blob.core.windows.net/media/2019/01/image84.png"><img width="244" height="163" title="image" style="margin: 0px" alt="image" src="https://msdnshared.blob.core.windows.net/media/2019/01/image_thumb83.png" border="0"></a></p><p><br></p><p>The fifth step is to review join rules.&nbsp; In this case there will be no join rules.</p><p><br></p><p><a href="https://msdnshared.blob.core.windows.net/media/2019/01/image85.png"><img width="244" height="163" title="image" style="margin: 0px" alt="image" src="https://msdnshared.blob.core.windows.net/media/2019/01/image_thumb84.png" border="0"></a></p><p><br></p><p>The last step is to create the transformation that will stamp the customer attribute 10.&nbsp; To begin this process select the add transformation button.&nbsp; Under flow type – select expression in the drop down menu.&nbsp; Under target attribute – select the target custom attribute desired.&nbsp; In this example extensionAttribute10.&nbsp; The source will be based off supported functions for expressions in transformation.&nbsp; In this case the following syntax:</p><p><br></p><p><font face="Courier New">IIF(InStr([mail],"fortmillems.org")&gt;0,"DOMAINA","")</font></p><p><br></p><p>If the substring of the domain exists in the mail attribute the position within the string is returned otherwise 0.&nbsp; If the position is returned stamp DOMAINA otherwise stamp nothing.</p><p><br></p><p><a href="https://msdnshared.blob.core.windows.net/media/2019/01/image86.png"><img width="244" height="163" title="image" style="margin: 0px" alt="image" src="https://msdnshared.blob.core.windows.net/media/2019/01/image_thumb85.png" border="0"></a></p><p><br></p><p>There are some benefits to this approach:</p><p><br></p><ul><li>There are no scheduled tasks or scripts involved.</li><li>The user is immediately added as a member of the dynamic DL upon replication.</li></ul><p><br></p><p>There are some disadvantages to this approach:</p><p><br></p><ul><li>I generally discourage rule modification in AD Connect unless absolutely necessary.&nbsp; Modifying rules can have un-intended consequences, rule changes must be tracked, and build documentation prepared to ensure that any future builds of AD Connect have the same rules.&nbsp; IE – this can often introduce complications to installations.</li><li>The on premises attribute no longer matches the cloud attribute for the custom attribute – since the attribute was transformed via a rule in AD Connect.&nbsp; This sometimes leads to confusion as to the source of values and how to handle future modifications.</li><li>Modifying the rule set requires that a full ad connect sync cycle be initiated – which may cause outages in the overall sync cycle depending on the size and number of objects to be resynchronized.</li><li>The proposed rule only works if there’s a single domain in question.</li></ul><p><br></p><p>What happens if there are multiple domains.&nbsp; If there are multiple domains in play the rule expression must be modified.&nbsp; A switch statement must be utilized.&nbsp; The switch statement evaluates the mail attribute for each of the mail domains – and stamps the custom attribute with a value.&nbsp; As with an IIF statement there must be one results returned that is true.&nbsp; In this sample I set anyone without a domain that we’re interested in making a dynamic distribution group to NODOMAIN.&nbsp; Here is the example expression:</p><p><br></p><p><font face="Courier New">Switch(InStr([mail],"domainA.org")&gt;0,"DOMAINA",InStr([mail],"domainB.com")&gt;0,"DOMAINB",True,"NODOMAIN")</font></p><p><br></p><p>You could also have the custom attribute stamped with NULL if there was not a matching domain.</p><p><br></p><p><font face="Courier New">Switch(InStr([mail],"domainA.org")&gt;0,"DOMAINA",InStr([mail],"domainB.com")&gt;0,"DOMAINB",True,"")</font></p><p><br></p><p>These are some example methods to utilize on premises attributes to provision dynamic distribution lists in Office 365 based on email domain.</p>]]></content:encoded>
    </item>
    <item>
      <title>Office 365: Challenges with Distribution Groups for Migrated Mailboxes and a Script Based Solution ( Script Version 1.1 )</title>
      <link>https://docs.microsoft.com/archive/blogs/timmcmic/office-365-challenges-with-distribution-groups-for-migrated-mailboxes-and-a-script-based-solution-script-version-1-1</link>
      <pubDate>Tue, 25 Sep 2018 17:51:58 GMT</pubDate>
      <dc:creator><![CDATA[TIMMCMIC]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/timmcmic/?p=3735</guid>
      <description><![CDATA[===========================================================================================Group...]]></description>
      <content:encoded><![CDATA[<p align="justify">===========================================================================================<p align="justify">Group Migration Script v1.1 –&gt; <a title="https://github.com/timmcmic/DLConversion/blob/master/src/DLConversion.ps1" href="https://github.com/timmcmic/DLConversion/blob/master/src/DLConversion.ps1">https://github.com/timmcmic/DLConversion/blob/master/src/DLConversion.ps1</a><p align="justify">===========================================================================================</p><p align="justify"><br></p><p align="justify">In script version 1.1 we introduced a new feature to control how the group is provisioned in Office 365.&nbsp; When a group is create on-premises the group type can be established as either distribution or security.&nbsp; The group type can be dynamically changed through Active Directory Users and Computers by changing the group type on the groups properties.</p><p align="justify"><br></p><p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/2018/09/image98.png"><img width="205" height="244" title="image" style="margin: 0px" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/09/image_thumb86.png" border="0"></a></p><p align="justify"><br></p><p align="justify">By changing the radio button to security the group type will change from mail universal distribution to mail universal security.</p><p align="justify"><br></p><p align="justify">The same process is not available to administrators in Office 365.&nbsp; When a distribution list is provisioned in Office 365 the group type selected is persisted.&nbsp; If the group is created as a mail distribution group it can only be converted to a mail security group if deleted and recreated.&nbsp; This would essentially prevent administrators from applying security rights to a group in the future.&nbsp; </p><p align="justify"><br></p><p align="justify">In version 1.0 of the script and the default settings in versions 1.1 the group type is retained.&nbsp; If conversion of a mail enabled security group is selected the new group created in Office 365 is also created as a mail enabled security group.&nbsp; The same is true for just a mail enabled distribution group.&nbsp; In the past there have been conditions where this may not be the desired outcome.&nbsp; For example – in the past security groups may have been provisioned but the desire is not to carry them forward as security groups in Office 365.&nbsp; </p><p align="justify"><br></p><p align="justify">Version 1.1 of the script implements a switch –GroupTypeOverride.&nbsp; The administrator may specify a value of “DISTRIBUTION” or “SECURITY”.&nbsp; This value will override the group type specified when creating the Office 365 distribution group.&nbsp; In essence a security group on-premises may now be created as a distribution group in Office 365.</p><p align="justify"><br></p><p align="justify">Here is an example of command execution:</p><p align="justify"><br></p><p><font face="Courier New">ConvertDL.ps1 -dlToConvert Migrate -ignoreInvalidDLMember:$TRUE -ignoreInvalidManagedByMember:$TRUE -groupTypeOverride:"DISTRIBUTION"</font></p>]]></content:encoded>
    </item>
    <item>
      <title>Office 365: Challenges with Distribution Groups for Migrated Mailboxes and a Script Based Solution ( Script Version 1.0 )</title>
      <link>https://docs.microsoft.com/archive/blogs/timmcmic/office-365-challenges-with-distribution-groups-for-migrated-mailboxes-and-a-script-based-solution</link>
      <pubDate>Wed, 19 Sep 2018 17:21:30 GMT</pubDate>
      <dc:creator><![CDATA[TIMMCMIC]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/timmcmic/?p=3705</guid>
      <description><![CDATA[===========================================================================================Group...]]></description>
      <content:encoded><![CDATA[<p align="justify">===========================================================================================<p align="justify">Group Migration Script v1.0 –&gt; <a title="https://github.com/timmcmic/DLConversion/blob/master/src/DLConversion.ps1" href="https://github.com/timmcmic/DLConversion/blob/master/src/DLConversion.ps1">https://github.com/timmcmic/DLConversion/blob/master/src/DLConversion.ps1</a><p align="justify">===========================================================================================<p align="justify"><br><p align="justify">Distribution groups are an excellent way to organize multiple recipients under a single address.&nbsp; Like Exchange Server on-premises, Office 365 supports mail-enabled distribution groups, security groups, and dynamic distribution groups.&nbsp; When Active Directory and Exchange are used on-premises, distribution groups are typically created in the on-premises Active Directory and Azure Active Directory Connect is used to maintain and replicate the distribution groups to Office 365.<p align="justify"><br><p align="justify">Generally, there are two types of administration models that use distribution groups (which can co-exist or be used exclusively):<p align="justify"><br><p align="justify">1. The first model uses centralized administration for all configuration and membership changes. When a member needs to be added or removed, the help desk or an admin typically processes the request.&nbsp; When co-existing with Office 365 this type of administration model is very effective.&nbsp; With all changes originating on premises – Azure AD Connect can easily replicated them into the Azure AD where Office 365 workloads can process them.<p align="justify"><br><p align="justify">2. The second model delegates some or all to the user that owns the distribution group. In this model, Outlook is used for management of the distribution group.&nbsp; In a hybrid configuration, this model often creates management challenges. Outlook processes the membership changes by modifying membership on the domain controller provided to the user’s mailbox by Active Directory. After the membership change is made, Azure AD Connect pushes the requested changes to Azure AD where Office 365 workloads can process them. Office 365 mailboxes receive their list of domain controllers from Exchange Online, which prevents distribution group synchronized from on-premises from being modified in Office 365. Therefore, anyone whose mailbox has been migrated to Office 365 can no longer managed distribution groups. The same is also true for administrators that attempt to manage the distribution group in Office 365.<p align="justify"><br><p align="justify">When asked how to allow migrated mailboxes to manage distribution groups that are owned by the mailboxes the answer is to migrate the distribution groups to Office 365. For some, this involves manually deleting and recreating the distribution groups. Others have also found scripts to do this, but they don’t always address all the attributes associated with a distribution group and instead focus on simple attributes like proxy addresses, membership, name, etc.<p align="justify"><br><p align="justify">In this post, I’ll show you a script that addresses these concerns and allows you to migrate distribution groups to Office 365 with full fidelity. Before we get into the script, let’s look at some of the challenges encountered when attempting to migrate distribution groups.<p align="justify"><br><h3 align="justify"><font size="4" style="font-weight: bold">Group Membership</font></h3><p align="justify"><br></p><p align="justify">Distribution groups created on-premises are managed using AD tools or Exchange management tools. When managing distribution groups with Exchange tools, membership rules are enforced (for example, a member can be added only if the object is mail-enabled). This can include mail contacts, mail users, and mailboxes. Groups and users, both mail-enabled and not, can be added using Exchange tools.&nbsp; AD tools are more forgiving, though; the administrator can add any valid AD object to the group membership (for example, a contact that is not mail-enabled could be added to the distribution group, although this would have no effect on mail flow).<p align="justify"><br><p align="justify">Exchange Online has a set of rules for objects that are replicated from Azure AD to Exchange Online Active Directory.&nbsp; If an object is not mail-enabled, it is not represented in Exchange Online AD. This includes any groups that are members of an on-premises distribution group but not mail-enabled.&nbsp; An exception to this rule is user accounts. User account objects are replicated to Exchange Online even if they are not mail-enabled.<p align="justify"><br><p align="justify">When migrating distribution groups, all objects that are not mail-enabled or users must be filtered out. Here is an example of a distribution group that contains a mix of members.<p align="justify"><br><p align="justify"><font face="Courier New">PS C:\&gt; Get-DistributionGroupMember -Identity Migrate</font><p align="justify"><font face="Courier New"></font><p align="justify"><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RecipientType<br>----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -------------<br>Domain Users&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Group<br>Journal Mailbox&nbsp;&nbsp; UserMailbox<br>Brian Murphy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MailContact<br>Timothy McMichael MailUser<br>Migrate1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MailUniversalSecurityGroup<br>Migrate2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MailUniversalDistributionGroup<br>Team Manager&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; User<br>Dynamic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DynamicDistributionGroup<br>Test Contact&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Contact</font></p><font face="Courier New"><p align="justify"><br></p></font><h4 align="justify"><font size="4"><font style="font-weight: bold">Users and Groups</font></font></h4><p align="justify"><br></p><p align="justify">For users and groups to be members of a distribution group they must exist in Office 365.&nbsp; There are common scenarios where Organizational Units are intentionally excluded from replication to Azure Active Directory.&nbsp; Before migrating any distribution groups you must ensure that the members exist in Office 365.&nbsp; If they don’t, attempts to create the distribution group through automation will fail.&nbsp; Since it is possible for groups to have other group as members, any type of migration of a group to Office 365 will require removal of the on-premises group. If the groups that are members are not migrated first, their membership in that group would be lost.<p align="justify"><br><h4 align="justify"><font size="4" style="font-weight: bold">Multivalued Attributes</font></h4><p align="justify"><br></p><p align="justify">Distribution groups have several multi-valued attributes that require consideration before migrated.&nbsp; The attributes managedBy, moderatedBy, acceptMessagesOnlyFromSendersOrMembers, grantSendOnBehalfTo, rejectMessagesFromSendersOrMembers, and bypassModerationFromSendersOrMembers, for example, store their member references as distinguished names of objects.&nbsp; Here is a sample output:<p align="justify"><br><p align="justify"><font face="Courier New">PS C:\&gt; $a=Get-DistributionGroup migrate<br>PS C:\&gt; $a.managedBy<br>domain.local/Organization/Users/Officers/Timothy McMichael<br>domain.local/Organization/Users/Officers/Bill Smith<br>PS C:\&gt; $a.moderatedBy<br>domain.local/Organization/Users/Officers/Timothy McMichael<br>PS C:\&gt; $a.AcceptMessagesOnlyFromSendersOrMembers domain.local/Organization/Users/Officers/Bill Smith<br>domain.local/ConvertedDL/Migrate1<br>PS C:\&gt; $a.BypassModerationFromSendersOrMembers<br>domain.local/ConvertedDL/Migrate1<br>PS C:\&gt; $a.RejectMessagesFromSendersOrMembers<br>domain.local/ConvertedDL/Migrate2<br>PS C:\&gt; $a.GrantSendOnBehalfTo<br>domain.local/Organization/Users/Officers/Timothy McMichael</font></p><font face="Courier New"><p align="justify"><br></p></font><p align="justify">If these attributes were extracted as arrays and then used with Office 365, the references would not work because the DNs of the objects stored in Office 365 needs to reference the DN of the object in Exchange Online.&nbsp; <p align="justify"><br><p align="justify">The managedBy attribute is a shared attribute with Active Directory, and it can be set to a non-mail-enabled user.&nbsp; In Exchange Online, only a valid recipient object can be entered in the managedBy field.&nbsp; Thus, before you can convert the distribution group, you must ensure that all members of the managedBy field are Exchange Online recipients.<p align="justify"><br><p align="justify">The remaining multi-valued attributes can only be set via Exchange cmdlets, which ensures that the objects are mail-enabled user objects.<p align="justify"><br><h4 align="justify"><font size="4" style="font-weight: bold">Proxy / Email Addresses</font></h4><p align="justify"><br></p><p align="justify">The email addresses field is a multi-valued attribute.&nbsp; If the proxy addresses are not in use on another object in Exchange Online, they can be moved to the new distribution group.&nbsp; Note, that it is important to preserve the Reply To functionality.&nbsp; Migrated distribution groups don’t really change – they have the same name, same proxy addresses, and same members.&nbsp; But the nickname cache in Outlook uses the distinguished name of the group (which points to on-premises).&nbsp; If a user were to address an email to the migrated group by selecting the group from nickname cache, the message would NDR.<p align="justify"><br><h4 align="justify"><font size="4"><font style="font-weight: bold">Other Attributes</font></font></h4><p align="justify"><br></p><p align="justify">Other attributes of a distribution group are mostly text based, allowing them to be exported and imported as text. There are also several Boolean values that can be translated to the equivalent on the new distribution group, including custom attributes.<p align="justify"><br><h3 align="justify"><font size="4" style="font-weight: bold">Group Migration Script</font></h3><p align="justify"><br></p><p align="justify">The group migration script described in this post considers all the factors presented above. Executing the script starts by preparing some pre-requisites.<p align="justify"><br><h4 align="justify"><font size="3"><em>Prerequisites</em></font></h4><p align="justify"><br></p><p align="justify">The first pre-requisite is to establish an Organizational Unit (OU) within Active Directory that is not synchronized to Azure Active Directory. This OU will be where the group objects will be moved during the conversion process. The conversion process in v1 of the script retains the original distribution group.&nbsp; The distinguished name of this group will need to be recorded as it will be a script variable.<p align="justify"><br><p align="justify">The second pre-requisite involves creating a secure credentials XML file that can be used by the script. The administrator must note the file names and the path where they are stored. These are variables within the script that must be updated, or the administrator can match the files contained in the script.&nbsp; Create one file for on-premises credentials and one file for cloud credentials. If using XML files is not your preferred method of handling credentials, you can modify the script to prompt for credentials or consider storing credentials using other methods supported by PowerShell.<p align="justify"><br><p align="justify"><font face="Courier New">$cred = get-credential</font><p align="justify"><font face="Courier New">$cred | export-cliXML –path c:\Scripts\credentials.xml</font></p><strong></strong><b><p align="justify"><br></p></b><p align="justify">One caveat to using these files is that they are signed to the user and machine on which they were created.&nbsp; Therefore, all admins using the script have to create their own sets of files.<p align="justify"><br><p align="justify">The third pre-requisite is to ensure that the PSLOGGING module from the <a href="https://www.powershellgallery.com/packages/PSLogging/2.5.2">PowerShell Gallery</a> is installed. This module is necessary to create files that record operations along with clean-up and logging when an error has occurred.<p align="justify"><br><p align="justify"><font face="Courier New">install-module PSLOGGING</font></p><strong><font face="Courier New"></font></strong><b><p align="justify"><br></p></b><p align="justify">The fourth pre-requisite is to configure Basic authentication on a local PowerShell directory.&nbsp; By default, Basic authentication is not enabled in on-premises, which limits the ability to create a “remote” PowerShell session to on-premises Exchange server. Administrators often work around this by identifying one server where Basic authentication is enabled or by enabling Basic authentication on all PowerShell virtual directories behind a load-balanced name.&nbsp; Whether a single server or multiple servers are used, it is a requirement to establish an SSL session to the name provided, which means there must be a public certificate installed on the specified endpoint.<p align="justify"><br><p align="justify"><font face="Courier New">Get-PowerShellVirtualDirectory –server &lt;SERVERNAME&gt; | Set-PowerShellVirtualDirectory –basicAuthentication:$TRUE</font></p><strong></strong><b><p align="justify"><br></p></b><p align="justify">The last pre-requisite is to review the variables contained within the script for any necessary modifications. Variables that are recommended for the admin to adjust are noted with <b>###ADMIN###</b> in front of their definition. These variables include PowerShell URLs, paths, and file names. <p align="justify"><br><h4 align="justify"><font size="3"><em>Script Mechanics</em></font></h4><p align="justify"><br></p><p align="justify">With the pre-requisites covered, let’s dive into the mechanics of how the script works and review the individual functions.<p align="justify"><br><p align="justify">The process starts by gathering the credentials XML files and preparing them for use in subsequent functions. The success or failure of these operations is largely dependent on ensuring the credentials stored in the files are accurate and that the associated variables with the files have been updated successfully.<p align="justify"><br><p align="justify">The script then proceeds to create the necessary PowerShell sessions for operations to be performed.&nbsp; There are three PowerShell sessions created:<p align="justify"><br><p align="justify">1. The first session is to an on-premises server where commands will operate against on-premises recipient objects.<p align="justify">2. The second session is to Office 365 where Office 365 recipient commands will be executed.<p align="justify">3. The third session is to the Azure AD Connect server, which will be used to invoke synchronization as recipient objects are modified.<p align="justify"><br><p align="justify">To activate the on-premises and Office 365 PowerShell sessions, they must be imported.&nbsp; When importing remote PowerShell sessions, you can often have the same cmdlets returned in each session.&nbsp; In this case, there is definite overlap between Exchange and Exchange Online.&nbsp; To avoid any confusion when importing the Office 365 PowerShell session we append the cmdlets with <b>O365</b>.&nbsp; This effectively takes a cmdlet like Get-Recipient and makes it Get-O365Recipient. PowerShell is smart enough to detect the correct cmdlet and invoke it within the appropriate session.<p align="justify"><br><p align="justify">After the underlying PowerShell sessions are started, the script exports all properties of the on-premises distribution group and all properties of the Office 365 distribution group to variables for later use.&nbsp; The Office 365 distribution group should match the on-premises group as the source of authority for the Office 365 group is on-premises.<p align="justify"><br><p align="justify">After the data has been extracted, the script performs a safety check against the distribution group, which reviews the directory synchronization flag of the distribution group in Office 365. If this flag is set to FALSE, it indicates that the distribution group is cloud-only.&nbsp; If this scenario occurs, the script is automatically ended. The script can only be so smart, and it uses the SMTP address of the on-premises distribution group to locate the replicated copy in Office 365. Because it’s possible for a group in Office 365 and on-premises to share the same address even though they are not directory synchronized, the script must stop because if it continued, the Office 365 group would be removed and replaced with the on-premises group which could have unintended consequences.<p align="justify"><br><p align="justify">After the safety check is complete, the script records and exports the information for the on-premises and Office 365 groups to XML files defined by the administrator. XML output allows us to retain full fidelity of the multivalued attributes in case something goes wrong, or we need to manually correct a failure condition.<p align="justify"><br><p align="justify">The last portion of data collection (membership) and backup then proceeds. Membership is obtained and written to a variable that will be used in later operations. It is also exported to XML file to ensure that we have a copy of the information prior to starting any of the conversion activities.<p align="justify"><br><p align="justify">With all the pertinent information stored within variables and backup XML files, the next step is processing this information. In the previous section, I outlined some of the challenges in working with this data.&nbsp; There can be non-mail-enabled objects that need to be accounted for – these will not have primary SMTP addresses. There are mail-enabled objects that need to be accounted for but may be stored as distinguished names on certain attributes. Knowing that we need to account for all these differences forces us to develop a method to translate those individual users and recipients to objects that can be located in Exchange Online. To that end, we know that we can locate recipients via their primary SMTP address or a user account through the user principal name. So, the script iterates through all the multi-valued attributes and attempts to normalize the data into references that can be found in Exchange Online. If the object is a recipient class, we record the primarySMTPAddress of the object.&nbsp; If the object is a non-mail-enabled user, we record the userPrincipalName of the object.&nbsp; For each multi-valued attribute this culminates in an individual array of references that will allow us to find the objects in Exchange Online.<p align="justify"><br><p align="justify">When the arrays of normalized data have been built we need to validate that the objects can be found in Exchange Online. The script looks for objects in Exchange Online using Get-Recipient and Get-User cmdlets in the Office 365 PowerShell. If the object is found, the recipient or user is valid and is synchronized by Azure AD Connect.&nbsp; If an object is not found, the process stops and allows the administrator to correct any issues. Groups can also be members of distribution groups, so the script reviews all groups that are members and determines if they have been migrated to Office 365. Assuming all users are found, and all member groups have been migrated, it is safe to proceed with the migration.<p align="justify"><br><p align="justify">The first step in finalizing the migration is to move the distribution group to the OU that does not synchronize. As the script proceeds, Azure AD Connect will see this as a group deletion and eventually remove it from Office 365.&nbsp; The removal from Azure AD will propagate to Exchange Online Active Directory, resulting in the distribution group becoming deleted.<p align="justify"><br><p align="justify">To ensure that all domain controllers show that the group was moved to the OU, repadmin is used to force replication across all domain controllers in the domain.&nbsp; If your domain is very large, consider changing this function to a list of domain controllers or to a single domain controller.&nbsp; You can also comment out the function and just increase the wait time to allow for normal replication to occur.<p align="justify"><br><p align="justify">With domain replication underway/completed, next is to remove the distribution group from Azure AD. This process uses a remote PowerShell session to perform a delta synchronization.&nbsp; A delta synchronization may already be in progress, so the script is designed to retry every 1 minute until it can assure that at least one delta sync was triggered by the script.&nbsp; A delta sync can take several minutes to run depending on the size of the environment, and it only removes the group from Azure AD. The forward synchronization process will detect the groups removal from Azure AD and synchronize the change to Exchange Online.&nbsp; Because there really is no way to monitor progress once the delta synchronization is issued, the script begins issuing calls to Azure AD for the group. If the call is successful, the group still exists, and the script waits 1 minute between attempts, looping until the group is not found (basically, an error occurs locating the group, which confirms the group is no longer in Office 365).<p align="justify"><br><p align="justify">Once the group has been removed the script can now create the new replacement group using the base settings.&nbsp; Next, all the non-multivalued attributes of the distribution group are set, including email addresses, custom attribute, extension attributes, and other Boolean variables that control mail flow, delivery, etc.&nbsp; Next, multi-valued attributes are set by using the normalized arrays that were built previously. After all attributes have been addressed, the new distribution group in Office 365 now mirrors the original distribution group on-premises.<p align="justify"><br><p align="justify">The final step is to gather all the settings of the new distribution group and export them to XML, which serves as a record of the operation. At the end of the script, all created PowerShell sessions are removed in preparation for the next migration.<p align="justify"><br><h3 align="justify"><font size="4"><font style="font-weight: bold">Frequently Asked Questions</font></font></h3><p align="justify"><br></p><p align="justify"><em>Q:&nbsp; How can I prevent PowerShell sessions from timing out?</em><p align="justify">A:&nbsp; There is really no method to prevent the PowerShell settings from timing out.&nbsp; During testing, we determined that the operation that ran the longest was building the array of normalized SMTP addresses for the distribution group membership.&nbsp; When the PowerShell session to Office 365 was left open during this process it would often be closed before we were ready to proceed with other portions.&nbsp; It was also determined that when processing long arrays (for example, adding all the distribution group membership), the session may time out.&nbsp; To overcome this, we routinely reset the session to Office 365 after portions of the script that took more time to process data.<p align="justify"><br><p align="justify"><em>Q:&nbsp; Can the script be run in bulk?</em><p align="justify">A:&nbsp; It is possible to feed the script a list of proxy addresses for distribution groups to migrate by calling the script multiple times.&nbsp; The process through would repeat in terms of domain controller replication, Azure AD Connect synchronization, etc.&nbsp; The original design of the script approached this from the perspective of servicing one-off requests for migration and not necessarily bulk migrations or conversions.<p align="justify"><br><p align="justify"><em>Q:&nbsp; Is the script efficient?</em><p align="justify">A:&nbsp; Efficiency is always relative…is it more efficient then trying to do all of this by hand and manage all the attributes? Certainly. The script must rely on several processes that do not necessarily have any guaranteed timelines.&nbsp; For example, we can’t predict how long a delta sync or forward sync will take.&nbsp; Thus, it’s not possible to give you a 100% accurate estimate of how long it takes to migrate a distribution group.&nbsp; There is also a great deal of logging that occurs during the script which adds some overhead, but given the nature and importance of distribution groups, having the additional information is important.<p align="justify"><br><p align="justify"><em>Q:&nbsp; What is the largest distribution group size that was tested?</em><p align="justify">A:&nbsp; The script was validated using a distribution group with 10,000 members and had a minimum of 10 members in each of the multi-valued attributes.<p align="justify"><br><p align="justify"><em>Q:&nbsp; How long did it take to migrate a group with 10,000 members?</em><p align="justify">A:&nbsp; A little more than 3 hours:<p align="justify"><font face="Courier New">Days&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0<br>Hours&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 3<br>Minutes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 6<br>Seconds&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 57<br>Milliseconds&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 768<br>Ticks&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 112177687252<br>TotalDays&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0.129835286171296<br>TotalHours&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 3.11604686811111<br>TotalMinutes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 186.962812086667<br>TotalSeconds&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 11217.7687252<br>TotalMilliseconds : 11217768.7252</font></p><p align="justify"><br></p><p align="justify"><em>Q:&nbsp; What happens to mail flow during the migration process?</em><p align="justify">A:&nbsp; It depends.&nbsp; The distribution group is maintained on-premises during this entire process.&nbsp; If messages enter the on-premises environment first and are addressed to the distribution group, you can expect that expansion will occur and message delivery will happen. The group in Office 365 is in flux during the entire migration process.&nbsp; If the group is missing and a message is received, it may NDR.&nbsp; If the group has been created but member addition is in-progress, then only some of the members may receive it.&nbsp; I recommend that you provide warnings to distribution group owners that mail flow will be affected during the transition.<p align="justify"><br><p align="justify"><em>Q:&nbsp; If the distribution group is a mail-enabled security group, and that group has been assigned permissions to Office 365 workloads, what happens during the conversion?</em><p align="justify">A:&nbsp; Permissions would be lost.&nbsp; The script only works because the group is deleted – and this would be processed by other workloads as a group deletion.<p align="justify"><br><p align="justify"><em>Q:&nbsp; Do I have to keep the on-premises distribution group post-migration?</em><p align="justify">A:&nbsp; It depends.&nbsp; If messages are processed through the on-premises environment, there needs to be a corresponding mail-enabled object.&nbsp; We are looking into automating the conversion of the group to a mail contact in a future version of the script to allow for mail flow to continue.<p align="justify"><br><p align="justify"><em>Q:&nbsp; Dynamic distribution groups are not replicated by Azure Active Directory Connect.&nbsp; How does the script handle dynamic distribution groups?</em><p align="justify">A:&nbsp; Administrators must manually create dynamic distribution groups in Office 365.&nbsp; The script intentionally does not treat dynamic distribution groups differently then a normal recipient.&nbsp; In this case we detect a member and record the primary SMTP address.&nbsp; When we run the recipient test against Office 365 by primary SMTP address – the recipient is returned and the script can proceed.&nbsp; If the recipient is not found the script will fail.<p align="justify"><br><p align="justify"><font size="4"><font style="font-weight: bold">Sample Invocations</font></font></p><font size="4"><p align="justify"><br></p></font><p align="justify"><em>===============================================================================</em><p align="justify"><em>Attempting to convert the distribution group Migrate without ignoring invalid managers or invalid members.&nbsp; The group to be converted IS NOT located in Office 365.&nbsp; An error is generated and the script stops.</em></p><em><p align="justify"><br></p></em><p align="justify"><font face="Courier New">PS C:\Scripts&gt; .\ConvertDL.ps1 -dlToConvert Migrate -ignoreInvalidDLMember:$FALSE -ignoreInvalidManagedByMember:$FALSE</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><br><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp; Directory: C:\Scripts</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><br><font face="Courier New">
Mode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LastWriteTime&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Length Name<br>
----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ------ ----<br>
-a----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9/18/2018&nbsp;&nbsp; 7:17 PM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 DLConversion.log<br>
***************************************************************************************************<br>
Started processing at [09/18/2018 19:17:22].<br>
***************************************************************************************************</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Running script version [1.0].</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">***************************************************************************************************</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function imports the on premises secured credentials file....<br>
The on premises credentials file was imported successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function imports the Office 365 secured credentials file....<br>
The Office 365 credentials file was imported successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function creates the powershell session to on premises Exchange....<br>
The powershell session to on premises Exchange was created successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function creates the powershell session to Office 365....<br>
The powershell session to Office 365 was created successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function creates the powershell session to AAD Connect....<br>
The powershell session to AAD Connect was created successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function imports the powershell session to on premises Exchange....<br>
WARNING: The names of some imported commands from the module 'tmp_y0ib5tyw.pmz' include unapproved verbs that might make them less discoverable. To find the commands with unapproved verbs, run the Import-Module command again with the Verbose parameter. For a list of approved verbs, type Get-Verb.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : tmp_y0ib5tyw.pmz<br>
Path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_y0ib5tyw.pmz\tmp_y0ib5tyw.pmz.psm1<br>
Description&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Implicit remoting for </font><font face="Courier New">https://webmail.domain.com/powershell</font><br><font face="Courier New">
Guid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1dfe9d4c-8ca2-4de2-aa8c-8e0281af907c<br>
Version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1.0<br>
ModuleBase&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_y0ib5tyw.pmz<br>
ModuleType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Script<br>
PrivateData&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {ImplicitRemoting}<br>
AccessMode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : ReadWrite<br>
ExportedAliases&nbsp;&nbsp; : {}<br>
ExportedCmdlets&nbsp;&nbsp; : {}<br>
ExportedFunctions : {[Add-ADPermission, Add-ADPermission], [Add-AvailabilityAddressSpace,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add-AvailabilityAddressSpace], [Add-ContentFilterPhrase, Add-ContentFilterPhrase],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Add-DatabaseAvailabilityGroupServer, Add-DatabaseAvailabilityGroupServer]...}<br>
ExportedVariables : {}<br>
NestedModules&nbsp;&nbsp;&nbsp;&nbsp; : {}</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">The powershell session to on premises Exchange was imported successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function imports the powershell session to Office 365....<br>
WARNING: The names of some imported commands from the module 'tmp_rt1gncnz.op4' include unapproved verbs that might make them less discoverable. To find the commands with unapproved verbs, run the Import-Module command again with the Verbose parameter. For a list of approved verbs, type Get-Verb.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : tmp_rt1gncnz.op4<br>
Path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_rt1gncnz.op4\tmp_rt1gncnz.op4.psm1<br>
Description&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Implicit remoting for </font><a href="https://outlook.office365.com/powershell-liveID/"><font face="Courier New">https://outlook.office365.com/powershell-liveID/</font></a><br><font face="Courier New">
Guid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : f829f0b4-a669-4e18-a789-4afa9e4e9bd0<br>
Version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1.0<br>
ModuleBase&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_rt1gncnz.op4<br>
ModuleType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Script<br>
PrivateData&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {ImplicitRemoting}<br>
AccessMode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : ReadWrite<br>
ExportedAliases&nbsp;&nbsp; : {}<br>
ExportedCmdlets&nbsp;&nbsp; : {}<br>
ExportedFunctions : {[Add-o365AvailabilityAddressSpace, Add-o365AvailabilityAddressSpace],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Add-o365DistributionGroupMember, Add-o365DistributionGroupMember],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Add-o365MailboxFolderPermission, Add-o365MailboxFolderPermission], [Add-o365MailboxLocation,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add-o365MailboxLocation]...}<br>
ExportedVariables : {}<br>
NestedModules&nbsp;&nbsp;&nbsp;&nbsp; : {}</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">The powershell session to Office 365 was imported successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function collects the on premises distribution list configuration....<br>
The on premises distribution list information was collected successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function collects the Office 365 distribution list configuration....<br></font><strong><font color="#ff0000" face="Courier New">
The operation couldn't be performed because object 'Migrate' couldn't be found on <br>
'CO1PR06A002DC02.NAMPR06A002.prod.outlook.com'.<br>&nbsp;&nbsp;&nbsp;&nbsp; + CategoryInfo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : NotSpecified: (:) [Get-DistributionGroup], ManagementObjectNotFoundException<br>&nbsp;&nbsp;&nbsp;&nbsp; + FullyQualifiedErrorId : [Server=MWHPR06MB2446,RequestId=bef7d47e-8d2d-4c75-a6d4-40264dee7723,TimeStamp=9/18/2018 <br>
7:17:47 PM] [FailureCategory=Cmdlet-ManagementObjectNotFoundException] <br>
F71693B4,Microsoft.Exchange.Management.RecipientTasks.GetDistributionGroup<br>&nbsp;&nbsp;&nbsp;&nbsp; + PSComputerName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : outlook.office365.com<br>
The operation couldn't be performed because object 'Migrate' couldn't be found on<br>
'CO1PR06A002DC02.NAMPR06A002.prod.outlook.com'.<br>&nbsp;&nbsp;&nbsp;&nbsp; + CategoryInfo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : NotSpecified: (:) [Get-DistributionGroup], ManagementObjectNotFoundException<br>&nbsp;&nbsp;&nbsp;&nbsp; + FullyQualifiedErrorId : [Server=MWHPR06MB2446,RequestId=bef7d47e-8d2d-4c75-a6d4-40264dee7723,TimeStamp=9/18/2018<br>&nbsp;&nbsp;&nbsp;&nbsp; 7:17:47 PM] [FailureCategory=Cmdlet-ManagementObjectNotFoundException] F71693B4,Microsoft.Exchange.Management.Rec<br>&nbsp;&nbsp; ipientTasks.GetDistributionGroup<br>&nbsp;&nbsp;&nbsp;&nbsp; + PSComputerName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : outlook.office365.com</font></strong></p><p align="justify"><strong><font color="#ff0000" face="Courier New">
<br></font></strong></p><p align="justify"><font face="Courier New"><strong><font color="#ff0000">ERROR: The Office 365 distribution list information could not be collected - exiting.<br>
ERROR: The operation couldn't be performed because object 'Migrate' couldn't be found on 'CO1PR06A002DC02.NAMPR06A002.prod.outlook.com'.</font></strong><br>
This function cleans up all powershell sessions....<br>
All powershell sessions have been cleaned up successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><br><font face="Courier New">
***************************************************************************************************<br>
Finished processing at [09/18/2018 19:17:47].<br>
***************************************************************************************************</font></p><em><p align="justify"><br></p></em><p align="justify"><em>===============================================================================</em></p><em><p align="justify"><br></p></em><p align="justify"><em>===============================================================================</em><p align="justify"><em>Attempting to convert the distribution group Migrate without ignoring invalid managers or invalid members.&nbsp; The group contains another distribution or security group that is not mail enabled.&nbsp; An error is generated and the script stops.</em></p><em><p align="justify"><br></p></em><p align="justify"><font face="Courier New">PS C:\Scripts&gt; .\ConvertDL.ps1 -dlToConvert Migrate -ignoreInvalidDLMember:$FALSE -ignoreInvalidManagedByMember:$FALSE</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><br><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp; Directory: C:\Scripts</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><br><font face="Courier New">
Mode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LastWriteTime&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Length Name<br>
----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ------ ----<br>
-a----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9/19/2018&nbsp;&nbsp; 2:11 PM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 DLConversion.log<br>
***************************************************************************************************<br>
Started processing at [09/19/2018 14:11:07].<br>
***************************************************************************************************</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Running script version [1.0].</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">***************************************************************************************************</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function imports the on premises secured credentials file....<br>
The on premises credentials file was imported successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function imports the Office 365 secured credentials file....<br>
The Office 365 credentials file was imported successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function creates the powershell session to on premises Exchange....<br>
The powershell session to on premises Exchange was created successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function creates the powershell session to Office 365....<br>
The powershell session to Office 365 was created successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function creates the powershell session to AAD Connect....<br>
The powershell session to AAD Connect was created successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function imports the powershell session to on premises Exchange....<br>
WARNING: The names of some imported commands from the module 'tmp_rmsylwqo.1zq' include unapproved verbs that might<br>
make them less discoverable. To find the commands with unapproved verbs, run the Import-Module command again with the<br>
Verbose parameter. For a list of approved verbs, type Get-Verb.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : tmp_rmsylwqo.1zq<br>
Path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_rmsylwqo.1zq\tmp_rmsylwqo.1zq.psm1<br>
Description&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Implicit remoting for </font><font face="Courier New">https://webmail.domain.com/powershell</font><br><font face="Courier New">
Guid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : bb38fffd-b692-41c6-bb7f-ac49fe3a006b<br>
Version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1.0<br>
ModuleBase&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_rmsylwqo.1zq<br>
ModuleType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Script<br>
PrivateData&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {ImplicitRemoting}<br>
AccessMode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : ReadWrite<br>
ExportedAliases&nbsp;&nbsp; : {}<br>
ExportedCmdlets&nbsp;&nbsp; : {}<br>
ExportedFunctions : {[Add-ADPermission, Add-ADPermission], [Add-AvailabilityAddressSpace,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add-AvailabilityAddressSpace], [Add-ContentFilterPhrase, Add-ContentFilterPhrase],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Add-DatabaseAvailabilityGroupServer, Add-DatabaseAvailabilityGroupServer]...}<br>
ExportedVariables : {}<br>
NestedModules&nbsp;&nbsp;&nbsp;&nbsp; : {}</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">The powershell session to on premises Exchange was imported successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function imports the powershell session to Office 365....<br>
WARNING: The names of some imported commands from the module 'tmp_4korcvyz.ikr' include unapproved verbs that might<br>
make them less discoverable. To find the commands with unapproved verbs, run the Import-Module command again with the<br>
Verbose parameter. For a list of approved verbs, type Get-Verb.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : tmp_4korcvyz.ikr<br>
Path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_4korcvyz.ikr\tmp_4korcvyz.ikr.psm1<br>
Description&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Implicit remoting for </font><a href="https://outlook.office365.com/powershell-liveID/"><font face="Courier New">https://outlook.office365.com/powershell-liveID/</font></a><br><font face="Courier New">
Guid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1a019be1-7a24-410f-b38e-37dbcc282021<br>
Version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1.0<br>
ModuleBase&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_4korcvyz.ikr<br>
ModuleType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Script<br>
PrivateData&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {ImplicitRemoting}<br>
AccessMode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : ReadWrite<br>
ExportedAliases&nbsp;&nbsp; : {}<br>
ExportedCmdlets&nbsp;&nbsp; : {}<br>
ExportedFunctions : {[Add-o365AvailabilityAddressSpace, Add-o365AvailabilityAddressSpace],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Add-o365DistributionGroupMember, Add-o365DistributionGroupMember],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Add-o365MailboxFolderPermission, Add-o365MailboxFolderPermission], [Add-o365MailboxLocation,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add-o365MailboxLocation]...}<br>
ExportedVariables : {}<br>
NestedModules&nbsp;&nbsp;&nbsp;&nbsp; : {}</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">The powershell session to Office 365 was imported successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function collects the on premises distribution list configuration....<br>
The on premises distribution list information was collected successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function collects the Office 365 distribution list configuration....<br>
The Office 365 distribution list information was collected successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function validates a cloud DLs saftey to migrate....<br>
The DL is safe to proeced for conversion - source of authority is on-premises.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function writes the on prmeises distribution list configuration to XML....<br>
The on premises distribution list information was written to XML successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function writes the Office 365 distribution list configuration to XML....<br>
The Office 365 distribution list information was written to XML successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function collections the on premises DL membership....<br>
The DL membership was collected successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function writes the on prmeises distribution list membership configuration to XML....<br>
The on premises distribution list membership information was written to XML successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function removes the Office 365 powershell sessions....<br>
All powershell sessions have been cleaned up successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Begin processing a DL membership array.<br>
This function builds an array of DL members or multivalued attributes....<br><strong><font color="#ff0000">
ERROR: Domain Users<br>
ERROR: A non-mail enabled or Office 365 object was found in the group.<br>
ERROR: Script invoked without skipping invalid DL Member.<br>
ERROR: The object must be removed or mail enabled.<br>
ERROR: EXITING.</font></strong><br>
This function cleans up all powershell sessions....<br>
All powershell sessions have been cleaned up successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><br><font face="Courier New">
***************************************************************************************************<br>
Finished processing at [09/19/2018 14:11:55].<br>
***************************************************************************************************</font></p><em><p align="justify"><br></p></em><p align="justify"><em>===============================================================================</em></p><em><p align="justify"><br></p></em><p align="justify"><em>===============================================================================</em><p align="justify"><em>Attempting to convert the distribution group Migrate without ignoring invalid managers or invalid members.&nbsp; The group contains another mail enabled distribution group that has not been migrated to Office 365.&nbsp; The script automatically stops as all sub groups need to be migrated prior to top level groups.&nbsp; The script was also run with –ignoreInvalidDLMembers TRUE – all non-mail enabled members or members not represented in Office 365 ar automatically ignored.</em></p><em><p align="justify"><br></p></em><p align="justify"><font face="Courier New">PS C:\Scripts&gt; .\ConvertDL.ps1 -dlToConvert Migrate <font color="#0000ff"><strong>-ignoreInvalidDLMember:$TRUE</strong></font> -ignoreInvalidManagedByMember:$FALSE</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><br><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp; Directory: C:\Scripts</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><br><font face="Courier New">
Mode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LastWriteTime&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Length Name<br>
----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ------ ----<br>
-a----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9/19/2018&nbsp;&nbsp; 2:22 PM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 DLConversion.log<br>
***************************************************************************************************<br>
Started processing at [09/19/2018 14:22:24].<br>
***************************************************************************************************</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Running script version [1.0].</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">***************************************************************************************************</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function imports the on premises secured credentials file....<br>
The on premises credentials file was imported successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function imports the Office 365 secured credentials file....<br>
The Office 365 credentials file was imported successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function creates the powershell session to on premises Exchange....<br>
The powershell session to on premises Exchange was created successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function creates the powershell session to Office 365....<br>
The powershell session to Office 365 was created successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function creates the powershell session to AAD Connect....<br>
The powershell session to AAD Connect was created successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function imports the powershell session to on premises Exchange....<br>
WARNING: The names of some imported commands from the module 'tmp_b11x0ew3.20l' include unapproved verbs that might<br>
make them less discoverable. To find the commands with unapproved verbs, run the Import-Module command again with the<br>
Verbose parameter. For a list of approved verbs, type Get-Verb.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : tmp_b11x0ew3.20l<br>
Path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_b11x0ew3.20l\tmp_b11x0ew3.20l.psm1<br>
Description&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Implicit remoting for </font><font face="Courier New">https://webmail.domain.com/powershell</font><br><font face="Courier New">
Guid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 3c49dbae-b2af-428e-9be4-94ffc63126a4<br>
Version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1.0<br>
ModuleBase&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_b11x0ew3.20l<br>
ModuleType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Script<br>
PrivateData&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {ImplicitRemoting}<br>
AccessMode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : ReadWrite<br>
ExportedAliases&nbsp;&nbsp; : {}<br>
ExportedCmdlets&nbsp;&nbsp; : {}<br>
ExportedFunctions : {[Add-ADPermission, Add-ADPermission], [Add-AvailabilityAddressSpace,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add-AvailabilityAddressSpace], [Add-ContentFilterPhrase, Add-ContentFilterPhrase],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Add-DatabaseAvailabilityGroupServer, Add-DatabaseAvailabilityGroupServer]...}<br>
ExportedVariables : {}<br>
NestedModules&nbsp;&nbsp;&nbsp;&nbsp; : {}</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">The powershell session to on premises Exchange was imported successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function imports the powershell session to Office 365....<br>
WARNING: The names of some imported commands from the module 'tmp_ti245wqn.qju' include unapproved verbs that might<br>
make them less discoverable. To find the commands with unapproved verbs, run the Import-Module command again with the<br>
Verbose parameter. For a list of approved verbs, type Get-Verb.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : tmp_ti245wqn.qju<br>
Path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_ti245wqn.qju\tmp_ti245wqn.qju.psm1<br>
Description&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Implicit remoting for </font><a href="https://outlook.office365.com/powershell-liveID/"><font face="Courier New">https://outlook.office365.com/powershell-liveID/</font></a><br><font face="Courier New">
Guid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 4c2cf1a7-0042-4595-9025-98728851b5ed<br>
Version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1.0<br>
ModuleBase&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_ti245wqn.qju<br>
ModuleType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Script<br>
PrivateData&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {ImplicitRemoting}<br>
AccessMode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : ReadWrite<br>
ExportedAliases&nbsp;&nbsp; : {}<br>
ExportedCmdlets&nbsp;&nbsp; : {}<br>
ExportedFunctions : {[Add-o365AvailabilityAddressSpace, Add-o365AvailabilityAddressSpace],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Add-o365DistributionGroupMember, Add-o365DistributionGroupMember],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Add-o365MailboxFolderPermission, Add-o365MailboxFolderPermission], [Add-o365MailboxLocation,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add-o365MailboxLocation]...}<br>
ExportedVariables : {}<br>
NestedModules&nbsp;&nbsp;&nbsp;&nbsp; : {}</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">The powershell session to Office 365 was imported successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function collects the on premises distribution list configuration....<br>
The on premises distribution list information was collected successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function collects the Office 365 distribution list configuration....<br>
The Office 365 distribution list information was collected successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function validates a cloud DLs saftey to migrate....<br>
The DL is safe to proeced for conversion - source of authority is on-premises.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function writes the on prmeises distribution list configuration to XML....<br>
The on premises distribution list information was written to XML successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function writes the Office 365 distribution list configuration to XML....<br>
The Office 365 distribution list information was written to XML successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function collections the on premises DL membership....<br>
The DL membership was collected successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function writes the on prmeises distribution list membership configuration to XML....<br>
The on premises distribution list membership information was written to XML successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function removes the Office 365 powershell sessions....<br>
All powershell sessions have been cleaned up successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Begin processing a DL membership array.<br>
This function builds an array of DL members or multivalued attributes....<br>
Processing mail enabled DL member:<br>
Journal Mailbox<br>
Processing mail enabled DL member:<br>
Brian Murphy<br>
Processing mail enabled DL member:<br>
Timothy McMichael<br>
Processing mail enabled DL member:<br>
Migrate1<br>
Processing mail enabled DL member:<br>
Migrate2<br>
Processing non-mailenabled DL member:<br>
Team Manager<br>
Processing mail enabled DL member:<br>
Dynamic<br><strong><font color="#0000ff">
The following object was intentionally skipped - object type not replicated to Exchange Online<br>
Test Contact</font></strong><br>
Processing mail enabled DL member:<br>
NotReplicated<br>
The following SMTP address was added to the array:<br>
journal@domain.org<br>
The following SMTP address was added to the array:<br>
brian@domain.com<br>
The following SMTP address was added to the array:<br>
tmcmichael@domain.org<br>
The following SMTP address was added to the array:<br>
Migrate1@domain.org<br>
The following SMTP address was added to the array:<br>
Migrate2@domain.org<br>
The following SMTP address was added to the array:<br>
teammanager@domain.org<br>
The following SMTP address was added to the array:<br>
Dynamic@domain.org<br>
The following SMTP address was added to the array:<br>
notreplicate@domain.org</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">The array was built successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function resets the Office 365 powershell sessions....<br>
This function removes the Office 365 powershell sessions....<br>
All powershell sessions have been cleaned up successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function creates the powershell session to Office 365....<br>
The powershell session to Office 365 was created successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function imports the powershell session to Office 365....<br>
WARNING: The names of some imported commands from the module 'tmp_2cmzyxkm.gbx' include unapproved verbs that might<br>
make them less discoverable. To find the commands with unapproved verbs, run the Import-Module command again with the<br>
Verbose parameter. For a list of approved verbs, type Get-Verb.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : tmp_2cmzyxkm.gbx<br>
Path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_2cmzyxkm.gbx\tmp_2cmzyxkm.gbx.psm1<br>
Description&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Implicit remoting for </font><a href="https://outlook.office365.com/powershell-liveID/"><font face="Courier New">https://outlook.office365.com/powershell-liveID/</font></a><br><font face="Courier New">
Guid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 455ba332-1b14-49d2-891d-1701e6fdea84<br>
Version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1.0<br>
ModuleBase&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_2cmzyxkm.gbx<br>
ModuleType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Script<br>
PrivateData&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {ImplicitRemoting}<br>
AccessMode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : ReadWrite<br>
ExportedAliases&nbsp;&nbsp; : {}<br>
ExportedCmdlets&nbsp;&nbsp; : {}<br>
ExportedFunctions : {[Add-o365AvailabilityAddressSpace, Add-o365AvailabilityAddressSpace],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Add-o365DistributionGroupMember, Add-o365DistributionGroupMember],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Add-o365MailboxFolderPermission, Add-o365MailboxFolderPermission], [Add-o365MailboxLocation,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add-o365MailboxLocation]...}<br>
ExportedVariables : {}<br>
NestedModules&nbsp;&nbsp;&nbsp;&nbsp; : {}</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">The powershell session to Office 365 was imported successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">All Office 365 powershell sessions have been refreshed.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function validates that all objects in the passed array exist in Office 365....<br>
Testing user in Office 365...<br>
journal@domain.org<br>
The recipients were found in Office 365.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function validates that all objects in the passed array exist in Office 365....<br>
Testing user in Office 365...<br>
brian@domain.com<br>
The recipients were found in Office 365.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function validates that all objects in the passed array exist in Office 365....<br>
Testing user in Office 365...<br>
tmcmichael@domain.org<br>
The recipients were found in Office 365.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function validates that all objects in the passed array exist in Office 365....<br>
Testing user in Office 365...<br>
Migrate1@domain.org<br>
The recipients were found in Office 365.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function tests to see if any sub groups or groups assigned permissions have been migrated....<br>
Now testing group...<br>
Migrate1@domain.org<br>
False<br>
The recipients were found in Office 365.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function validates that all objects in the passed array exist in Office 365....<br>
Testing user in Office 365...<br>
Migrate2@domain.org<br>
The recipients were found in Office 365.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function tests to see if any sub groups or groups assigned permissions have been migrated....<br>
Now testing group...<br>
Migrate2@domain.org<br>
True<br><strong><font color="#ff0000">
ERROR: A distribution list was found as a sub-member or on a multi-valued attribute.<br>
ERROR: The distribution list has not been migrated to Office 365 (DirSync Flag is TRUE)<br>
ERROR: All sub lists or lists with permissions must be migrated before proceeding.<br>
This function cleans up all powershell sessions....<br>
All powershell sessions have been cleaned up successfully.</font></strong></font></p><p align="justify"><br></p><p align="justify"><br><font face="Courier New">
***************************************************************************************************<br>
Finished processing at [09/19/2018 14:23:08].<br>
***************************************************************************************************</font></p><em><p align="justify"><br></p></em><p align="justify"><em>===============================================================================</em></p><em><p align="justify"><br></p></em><p align="justify"><em>===============================================================================</em><p align="justify"><em>Attempting to convert the distribution group Migrate without ignoring invalid managers or invalid members.&nbsp; The group contains a mailbox recipient that is not represented in Office 365.&nbsp; Although the ignoreInvalidDLMember is set to $TRUE – since the object should be a valid object present in Office 365 the script stops.&nbsp; (In this case the user is in an OU that is not synchronized to Office 365).</em></p><em><p align="justify"><br></p></em><p align="justify"><font face="Courier New">PS C:\Scripts&gt; .\ConvertDL.ps1 -dlToConvert Migrate <strong><font color="#0000ff">-ignoreInvalidDLMember:$TRUE</font></strong> -ignoreInvalidManagedByMember:$FALSE</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><br><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp; Directory: C:\Scripts</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><br><font face="Courier New">
Mode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LastWriteTime&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Length Name<br>
----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ------ ----<br>
-a----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9/19/2018&nbsp;&nbsp; 2:27 PM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 DLConversion.log<br>
***************************************************************************************************<br>
Started processing at [09/19/2018 14:27:17].<br>
***************************************************************************************************</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Running script version [1.0].</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">***************************************************************************************************</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function imports the on premises secured credentials file....<br>
The on premises credentials file was imported successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function imports the Office 365 secured credentials file....<br>
The Office 365 credentials file was imported successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function creates the powershell session to on premises Exchange....<br>
The powershell session to on premises Exchange was created successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function creates the powershell session to Office 365....<br>
The powershell session to Office 365 was created successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function creates the powershell session to AAD Connect....<br>
The powershell session to AAD Connect was created successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function imports the powershell session to on premises Exchange....<br>
WARNING: The names of some imported commands from the module 'tmp_tvpecjxl.5ga' include unapproved verbs that might<br>
make them less discoverable. To find the commands with unapproved verbs, run the Import-Module command again with the<br>
Verbose parameter. For a list of approved verbs, type Get-Verb.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : tmp_tvpecjxl.5ga<br>
Path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_tvpecjxl.5ga\tmp_tvpecjxl.5ga.psm1<br>
Description&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Implicit remoting for </font><a href="https://webmail.domain.com/powershell"><font face="Courier New">https://webmail.domain.com/powershell</font></a><br><font face="Courier New">
Guid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0985f143-cf95-4102-87d9-030408dd4bc8<br>
Version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1.0<br>
ModuleBase&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_tvpecjxl.5ga<br>
ModuleType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Script<br>
PrivateData&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {ImplicitRemoting}<br>
AccessMode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : ReadWrite<br>
ExportedAliases&nbsp;&nbsp; : {}<br>
ExportedCmdlets&nbsp;&nbsp; : {}<br>
ExportedFunctions : {[Add-ADPermission, Add-ADPermission], [Add-AvailabilityAddressSpace,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add-AvailabilityAddressSpace], [Add-ContentFilterPhrase, Add-ContentFilterPhrase],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Add-DatabaseAvailabilityGroupServer, Add-DatabaseAvailabilityGroupServer]...}<br>
ExportedVariables : {}<br>
NestedModules&nbsp;&nbsp;&nbsp;&nbsp; : {}</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">The powershell session to on premises Exchange was imported successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function imports the powershell session to Office 365....<br>
WARNING: The names of some imported commands from the module 'tmp_i4ivhhbw.2tu' include unapproved verbs that might<br>
make them less discoverable. To find the commands with unapproved verbs, run the Import-Module command again with the<br>
Verbose parameter. For a list of approved verbs, type Get-Verb.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : tmp_i4ivhhbw.2tu<br>
Path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_i4ivhhbw.2tu\tmp_i4ivhhbw.2tu.psm1<br>
Description&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Implicit remoting for </font><a href="https://outlook.office365.com/powershell-liveID/"><font face="Courier New">https://outlook.office365.com/powershell-liveID/</font></a><br><font face="Courier New">
Guid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 86d813da-91e6-4e12-a369-577d696f60f4<br>
Version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1.0<br>
ModuleBase&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_i4ivhhbw.2tu<br>
ModuleType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Script<br>
PrivateData&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {ImplicitRemoting}<br>
AccessMode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : ReadWrite<br>
ExportedAliases&nbsp;&nbsp; : {}<br>
ExportedCmdlets&nbsp;&nbsp; : {}<br>
ExportedFunctions : {[Add-o365AvailabilityAddressSpace, Add-o365AvailabilityAddressSpace],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Add-o365DistributionGroupMember, Add-o365DistributionGroupMember],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Add-o365MailboxFolderPermission, Add-o365MailboxFolderPermission], [Add-o365MailboxLocation,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add-o365MailboxLocation]...}<br>
ExportedVariables : {}<br>
NestedModules&nbsp;&nbsp;&nbsp;&nbsp; : {}</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">The powershell session to Office 365 was imported successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function collects the on premises distribution list configuration....<br>
The on premises distribution list information was collected successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function collects the Office 365 distribution list configuration....<br>
The Office 365 distribution list information was collected successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function validates a cloud DLs saftey to migrate....<br>
The DL is safe to proeced for conversion - source of authority is on-premises.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function writes the on prmeises distribution list configuration to XML....<br>
The on premises distribution list information was written to XML successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function writes the Office 365 distribution list configuration to XML....<br>
The Office 365 distribution list information was written to XML successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function collections the on premises DL membership....<br>
The DL membership was collected successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function writes the on prmeises distribution list membership configuration to XML....<br>
The on premises distribution list membership information was written to XML successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function removes the Office 365 powershell sessions....<br>
All powershell sessions have been cleaned up successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Begin processing a DL membership array.<br>
This function builds an array of DL members or multivalued attributes....<br>
Processing mail enabled DL member:<br>
Journal Mailbox<br>
Processing mail enabled DL member:<br>
Brian Murphy<br>
Processing mail enabled DL member:<br>
Timothy McMichael<br>
Processing mail enabled DL member:<br>
Migrate1<br>
Processing non-mailenabled DL member:<br>
Team Manager<br>
Processing mail enabled DL member:<br>
Dynamic<br>
The following object was intentionally skipped - object type not replicated to Exchange Online<br>
Test Contact<br>
Processing mail enabled DL member:<br>
NotReplicated<br>
The following SMTP address was added to the array:<br>
journal@domain.org<br>
The following SMTP address was added to the array:<br>
brian@domain.com<br>
The following SMTP address was added to the array:<br>
tmcmichael@domain.org<br>
The following SMTP address was added to the array:<br>
Migrate1@domain.org<br>
The following SMTP address was added to the array:<br>
teammanager@domain.org<br>
The following SMTP address was added to the array:<br>
Dynamic@domain.org<br>
The following SMTP address was added to the array:<br>
notreplicate@domain.org</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">The array was built successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function resets the Office 365 powershell sessions....<br>
This function removes the Office 365 powershell sessions....<br>
All powershell sessions have been cleaned up successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function creates the powershell session to Office 365....<br>
The powershell session to Office 365 was created successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function imports the powershell session to Office 365....<br>
WARNING: The names of some imported commands from the module 'tmp_rysbip4g.faj' include unapproved verbs that might<br>
make them less discoverable. To find the commands with unapproved verbs, run the Import-Module command again with the<br>
Verbose parameter. For a list of approved verbs, type Get-Verb.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : tmp_rysbip4g.faj<br>
Path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_rysbip4g.faj\tmp_rysbip4g.faj.psm1<br>
Description&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Implicit remoting for </font><a href="https://outlook.office365.com/powershell-liveID/"><font face="Courier New">https://outlook.office365.com/powershell-liveID/</font></a><br><font face="Courier New">
Guid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 95f11f7e-d775-4d52-8cb5-b4ba67dd7e35<br>
Version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1.0<br>
ModuleBase&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_rysbip4g.faj<br>
ModuleType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Script<br>
PrivateData&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {ImplicitRemoting}<br>
AccessMode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : ReadWrite<br>
ExportedAliases&nbsp;&nbsp; : {}<br>
ExportedCmdlets&nbsp;&nbsp; : {}<br>
ExportedFunctions : {[Add-o365AvailabilityAddressSpace, Add-o365AvailabilityAddressSpace],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Add-o365DistributionGroupMember, Add-o365DistributionGroupMember],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Add-o365MailboxFolderPermission, Add-o365MailboxFolderPermission], [Add-o365MailboxLocation,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add-o365MailboxLocation]...}<br>
ExportedVariables : {}<br>
NestedModules&nbsp;&nbsp;&nbsp;&nbsp; : {}</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">The powershell session to Office 365 was imported successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">All Office 365 powershell sessions have been refreshed.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function validates that all objects in the passed array exist in Office 365....<br>
Testing user in Office 365...<br>
journal@domain.org<br>
The recipients were found in Office 365.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function validates that all objects in the passed array exist in Office 365....<br>
Testing user in Office 365...<br>
brian@domain.com<br>
The recipients were found in Office 365.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function validates that all objects in the passed array exist in Office 365....<br>
Testing user in Office 365...<br>
tmcmichael@domain.org<br>
The recipients were found in Office 365.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function validates that all objects in the passed array exist in Office 365....<br>
Testing user in Office 365...<br>
Migrate1@domain.org<br>
The recipients were found in Office 365.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function tests to see if any sub groups or groups assigned permissions have been migrated....<br>
Now testing group...<br>
Migrate1@domain.org<br>
False<br>
The recipients were found in Office 365.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function validates that all objects in the passed array exist in Office 365....<br>
Testing user in Office 365...<br>
teammanager@domain.org<br>
The recipients were found in Office 365.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function validates that all objects in the passed array exist in Office 365....<br>
Testing user in Office 365...<br>
Dynamic@domain.org<br>
The recipients were found in Office 365.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function validates that all objects in the passed array exist in Office 365....<br><strong><font color="#ff0000">
Testing user in Office 365...<br>
notreplicate@domain.org</font></strong><br><strong><font color="#ff0000">
The operation couldn't be performed because object 'notreplicate@domain.org' couldn't be found on<br>
'CO1PR06A002DC02.NAMPR06A002.prod.outlook.com'.<br>&nbsp;&nbsp;&nbsp;&nbsp; + CategoryInfo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : NotSpecified: (:) [Get-Recipient], ManagementObjectNotFoundException<br>&nbsp;&nbsp;&nbsp;&nbsp; + FullyQualifiedErrorId : [Server=MWHPR06MB2446,RequestId=f6a99890-192d-4630-b244-337d6c706c97,TimeStamp=9/19/2018<br>&nbsp;&nbsp;&nbsp;&nbsp; 2:28:03 PM] [FailureCategory=Cmdlet-ManagementObjectNotFoundException] 5A65645E,Microsoft.Exchange.Management.Rec<br>&nbsp;&nbsp; ipientTasks.GetRecipient<br>&nbsp;&nbsp;&nbsp;&nbsp; + PSComputerName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : outlook.office365.com</font></strong></font></p><p align="justify"><font color="#ff0000" face="Courier New"><strong>
<br></strong></font></p><p align="justify"><font face="Courier New"><strong><font color="#ff0000">ERROR: The recipients were not found in Office 365 - exiting.<br>
ERROR: The operation couldn't be performed because object 'notreplicate@domain.org' couldn't be found on 'CO1PR06A002DC02.NAMPR06A002.prod.outlook.com'.</font></strong><br>
This function cleans up all powershell sessions....<br>
All powershell sessions have been cleaned up successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><br><font face="Courier New">
***************************************************************************************************<br>
Finished processing at [09/19/2018 14:28:04].<br>
***************************************************************************************************</font></p><em><p align="justify"><br></p></em><p align="justify"><em>===============================================================================</em></p><em><p align="justify"><br></p></em><p align="justify"><em>===============================================================================</em><p align="justify"><em>Attempting to convert the distribution group Migrate without ignoring invalid managers or invalid members.&nbsp; The managed by attribute was set through Active Directory Users and Computers and a non-mail enabled object was selected.&nbsp; IgnoreInvalidManagedByMember is set to $FALSE – therefore the script ends because managed by cannot be established.&nbsp; The managedBy recipient would need to be removed or ignoreInvalidManagedByMember set to $TRUE.</em></p><em><p align="justify"><br></p></em><p align="justify"><font face="Courier New">PS C:\Scripts&gt; .\ConvertDL.ps1 -dlToConvert Migrate <strong><font color="#0000ff">-ignoreInvalidDLMember:$TRUE</font></strong> -ignoreInvalidManagedByMember:$FALSE</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><br><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp; Directory: C:\Scripts</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><br><font face="Courier New">
Mode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LastWriteTime&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Length Name<br>
----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ------ ----<br>
-a----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9/19/2018&nbsp;&nbsp; 2:35 PM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 DLConversion.log<br>
***************************************************************************************************<br>
Started processing at [09/19/2018 14:35:02].<br>
***************************************************************************************************</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Running script version [1.0].</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">***************************************************************************************************</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function imports the on premises secured credentials file....<br>
The on premises credentials file was imported successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function imports the Office 365 secured credentials file....<br>
The Office 365 credentials file was imported successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function creates the powershell session to on premises Exchange....<br>
The powershell session to on premises Exchange was created successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function creates the powershell session to Office 365....<br>
The powershell session to Office 365 was created successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function creates the powershell session to AAD Connect....<br>
The powershell session to AAD Connect was created successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function imports the powershell session to on premises Exchange....<br>
WARNING: The names of some imported commands from the module 'tmp_u2zod0xm.0jy' include unapproved verbs that might<br>
make them less discoverable. To find the commands with unapproved verbs, run the Import-Module command again with the<br>
Verbose parameter. For a list of approved verbs, type Get-Verb.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : tmp_u2zod0xm.0jy<br>
Path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_u2zod0xm.0jy\tmp_u2zod0xm.0jy.psm1<br>
Description&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Implicit remoting for </font><a href="https://webmail.domain.com/powershell"><font face="Courier New">https://webmail.domain.com/powershell</font></a><br><font face="Courier New">
Guid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 2a209690-a2fd-4d0e-89e9-e52df5c5573e<br>
Version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1.0<br>
ModuleBase&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_u2zod0xm.0jy<br>
ModuleType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Script<br>
PrivateData&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {ImplicitRemoting}<br>
AccessMode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : ReadWrite<br>
ExportedAliases&nbsp;&nbsp; : {}<br>
ExportedCmdlets&nbsp;&nbsp; : {}<br>
ExportedFunctions : {[Add-ADPermission, Add-ADPermission], [Add-AvailabilityAddressSpace,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add-AvailabilityAddressSpace], [Add-ContentFilterPhrase, Add-ContentFilterPhrase],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Add-DatabaseAvailabilityGroupServer, Add-DatabaseAvailabilityGroupServer]...}<br>
ExportedVariables : {}<br>
NestedModules&nbsp;&nbsp;&nbsp;&nbsp; : {}</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">The powershell session to on premises Exchange was imported successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function imports the powershell session to Office 365....<br>
WARNING: The names of some imported commands from the module 'tmp_i53fb2xz.uuu' include unapproved verbs that might<br>
make them less discoverable. To find the commands with unapproved verbs, run the Import-Module command again with the<br>
Verbose parameter. For a list of approved verbs, type Get-Verb.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : tmp_i53fb2xz.uuu<br>
Path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_i53fb2xz.uuu\tmp_i53fb2xz.uuu.psm1<br>
Description&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Implicit remoting for </font><a href="https://outlook.office365.com/powershell-liveID/"><font face="Courier New">https://outlook.office365.com/powershell-liveID/</font></a><br><font face="Courier New">
Guid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 20a82db7-7a4b-4034-95bc-6934f15f4c7b<br>
Version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1.0<br>
ModuleBase&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_i53fb2xz.uuu<br>
ModuleType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Script<br>
PrivateData&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {ImplicitRemoting}<br>
AccessMode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : ReadWrite<br>
ExportedAliases&nbsp;&nbsp; : {}<br>
ExportedCmdlets&nbsp;&nbsp; : {}<br>
ExportedFunctions : {[Add-o365AvailabilityAddressSpace, Add-o365AvailabilityAddressSpace],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Add-o365DistributionGroupMember, Add-o365DistributionGroupMember],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Add-o365MailboxFolderPermission, Add-o365MailboxFolderPermission], [Add-o365MailboxLocation,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add-o365MailboxLocation]...}<br>
ExportedVariables : {}<br>
NestedModules&nbsp;&nbsp;&nbsp;&nbsp; : {}</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">The powershell session to Office 365 was imported successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function collects the on premises distribution list configuration....<br>
The on premises distribution list information was collected successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function collects the Office 365 distribution list configuration....<br>
The Office 365 distribution list information was collected successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function validates a cloud DLs saftey to migrate....<br>
The DL is safe to proeced for conversion - source of authority is on-premises.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function writes the on prmeises distribution list configuration to XML....<br>
The on premises distribution list information was written to XML successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function writes the Office 365 distribution list configuration to XML....<br>
The Office 365 distribution list information was written to XML successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function collections the on premises DL membership....<br>
The DL membership was collected successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function writes the on prmeises distribution list membership configuration to XML....<br>
The on premises distribution list membership information was written to XML successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function removes the Office 365 powershell sessions....<br>
All powershell sessions have been cleaned up successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Begin processing a DL membership array.<br>
This function builds an array of DL members or multivalued attributes....<br>
Processing mail enabled DL member:<br>
Journal Mailbox<br>
Processing mail enabled DL member:<br>
Brian Murphy<br>
Processing mail enabled DL member:<br>
Timothy McMichael<br>
Processing mail enabled DL member:<br>
Migrate1<br>
Processing non-mailenabled DL member:<br>
Team Manager<br>
Processing mail enabled DL member:<br>
Dynamic<br>
The following object was intentionally skipped - object type not replicated to Exchange Online<br>
Test Contact<br>
The following SMTP address was added to the array:<br>
journal@domain.org<br>
The following SMTP address was added to the array:<br>
brian@domain.com<br>
The following SMTP address was added to the array:<br>
tmcmichael@domain.org<br>
The following SMTP address was added to the array:<br>
Migrate1@domain.org<br>
The following SMTP address was added to the array:<br>
teammanager@domain.org<br>
The following SMTP address was added to the array:<br>
Dynamic@domain.org</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">The array was built successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function resets the Office 365 powershell sessions....<br>
This function removes the Office 365 powershell sessions....<br>
All powershell sessions have been cleaned up successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function creates the powershell session to Office 365....<br>
The powershell session to Office 365 was created successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function imports the powershell session to Office 365....<br>
WARNING: The names of some imported commands from the module 'tmp_l1gyiiem.qhr' include unapproved verbs that might<br>
make them less discoverable. To find the commands with unapproved verbs, run the Import-Module command again with the<br>
Verbose parameter. For a list of approved verbs, type Get-Verb.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : tmp_l1gyiiem.qhr<br>
Path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_l1gyiiem.qhr\tmp_l1gyiiem.qhr.psm1<br>
Description&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Implicit remoting for </font><a href="https://outlook.office365.com/powershell-liveID/"><font face="Courier New">https://outlook.office365.com/powershell-liveID/</font></a><br><font face="Courier New">
Guid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : ffbd7762-080a-48fa-88c0-d7cf5089d656<br>
Version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1.0<br>
ModuleBase&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_l1gyiiem.qhr<br>
ModuleType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Script<br>
PrivateData&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {ImplicitRemoting}<br>
AccessMode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : ReadWrite<br>
ExportedAliases&nbsp;&nbsp; : {}<br>
ExportedCmdlets&nbsp;&nbsp; : {}<br>
ExportedFunctions : {[Add-o365AvailabilityAddressSpace, Add-o365AvailabilityAddressSpace],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Add-o365DistributionGroupMember, Add-o365DistributionGroupMember],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Add-o365MailboxFolderPermission, Add-o365MailboxFolderPermission], [Add-o365MailboxLocation,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add-o365MailboxLocation]...}<br>
ExportedVariables : {}<br>
NestedModules&nbsp;&nbsp;&nbsp;&nbsp; : {}</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">The powershell session to Office 365 was imported successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">All Office 365 powershell sessions have been refreshed.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function validates that all objects in the passed array exist in Office 365....<br>
Testing user in Office 365...<br>
journal@domain.org<br>
The recipients were found in Office 365.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function validates that all objects in the passed array exist in Office 365....<br>
Testing user in Office 365...<br>
brian@domain.com<br>
The recipients were found in Office 365.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function validates that all objects in the passed array exist in Office 365....<br>
Testing user in Office 365...<br>
tmcmichael@domain.org<br>
The recipients were found in Office 365.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function validates that all objects in the passed array exist in Office 365....<br>
Testing user in Office 365...<br>
Migrate1@domain.org<br>
The recipients were found in Office 365.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function tests to see if any sub groups or groups assigned permissions have been migrated....<br>
Now testing group...<br>
Migrate1@domain.org<br>
False<br>
The recipients were found in Office 365.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function validates that all objects in the passed array exist in Office 365....<br>
Testing user in Office 365...<br>
teammanager@domain.org<br>
The recipients were found in Office 365.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function validates that all objects in the passed array exist in Office 365....<br>
Testing user in Office 365...<br>
Dynamic@domain.org<br>
The recipients were found in Office 365.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New"><strong><font color="#ff0000">Begin processing a ManagedBy array.<br>
This function builds an array of DL members or multivalued attributes....<br>
ERROR: domain.local/Users/Test Manager<br>
ERROR: A non-mail enabled or Office 365 object was found in ManagedBy.<br>
ERROR: Script invoked without skipping invalid DL Member.<br>
ERROR: The object must be removed or mail enabled.<br>
ERROR: EXITING.</font></strong><br>
This function cleans up all powershell sessions....<br>
All powershell sessions have been cleaned up successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><br><font face="Courier New">
***************************************************************************************************<br>
Finished processing at [09/19/2018 14:35:45].<br>
***************************************************************************************************</font></p><em><p align="justify"><br></p></em><p align="justify"><em>===============================================================================</em></p><em><p align="justify"><br></p></em><p align="justify"><em>===============================================================================</em><p align="justify"><em>Attempting to convert the distribution group Migrate without ignoring invalid managers or invalid members.&nbsp; The invoke includes both ignore values – allowing us to skip </em></p><em><p align="justify"><br></p></em><p align="justify"><font face="Courier New">PS C:\Scripts&gt; .\ConvertDL.ps1 -dlToConvert Migrate <strong><font color="#0000ff">-ignoreInvalidDLMember:$TRUE -ignoreInvalidManagedByMember:$TRUE</font></strong></font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><br><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp; Directory: C:\Scripts</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><br><font face="Courier New">
Mode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LastWriteTime&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Length Name<br>
----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ------ ----<br>
-a----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9/19/2018&nbsp;&nbsp; 2:54 PM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 DLConversion.log<br>
***************************************************************************************************<br>
Started processing at [09/19/2018 14:54:59].<br>
***************************************************************************************************</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Running script version [1.0].</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">***************************************************************************************************</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function imports the on premises secured credentials file....<br>
The on premises credentials file was imported successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function imports the Office 365 secured credentials file....<br>
The Office 365 credentials file was imported successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function creates the powershell session to on premises Exchange....<br>
The powershell session to on premises Exchange was created successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function creates the powershell session to Office 365....<br>
The powershell session to Office 365 was created successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function creates the powershell session to AAD Connect....<br>
The powershell session to AAD Connect was created successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function imports the powershell session to on premises Exchange....<br>
WARNING: The names of some imported commands from the module 'tmp_nkc0cq2u.nri' include unapproved verbs that might make them less<br>
discoverable. To find the commands with unapproved verbs, run the Import-Module command again with the Verbose parameter. For a list of<br>
approved verbs, type Get-Verb.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : tmp_nkc0cq2u.nri<br>
Path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_nkc0cq2u.nri\tmp_nkc0cq2u.nri.psm1<br>
Description&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Implicit remoting for </font><font face="Courier New">https://webmail.domain.com/powershell</font><br><font face="Courier New">
Guid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 63c5f70a-44fa-47ed-95ef-749afa5a5d44<br>
Version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1.0<br>
ModuleBase&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_nkc0cq2u.nri<br>
ModuleType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Script<br>
PrivateData&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {ImplicitRemoting}<br>
AccessMode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : ReadWrite<br>
ExportedAliases&nbsp;&nbsp; : {}<br>
ExportedCmdlets&nbsp;&nbsp; : {}<br>
ExportedFunctions : {[Add-ADPermission, Add-ADPermission], [Add-AvailabilityAddressSpace, Add-AvailabilityAddressSpace],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Add-ContentFilterPhrase, Add-ContentFilterPhrase], [Add-DatabaseAvailabilityGroupServer,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add-DatabaseAvailabilityGroupServer]...}<br>
ExportedVariables : {}<br>
NestedModules&nbsp;&nbsp;&nbsp;&nbsp; : {}</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">The powershell session to on premises Exchange was imported successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function imports the powershell session to Office 365....<br>
WARNING: The names of some imported commands from the module 'tmp_qxckji5q.2cy' include unapproved verbs that might make them less<br>
discoverable. To find the commands with unapproved verbs, run the Import-Module command again with the Verbose parameter. For a list of<br>
approved verbs, type Get-Verb.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : tmp_qxckji5q.2cy<br>
Path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_qxckji5q.2cy\tmp_qxckji5q.2cy.psm1<br>
Description&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Implicit remoting for </font><a href="https://outlook.office365.com/powershell-liveID/"><font face="Courier New">https://outlook.office365.com/powershell-liveID/</font></a><br><font face="Courier New">
Guid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 4428cefd-6fa1-4ed9-9e49-baae4c962b8d<br>
Version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1.0<br>
ModuleBase&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_qxckji5q.2cy<br>
ModuleType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Script<br>
PrivateData&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {ImplicitRemoting}<br>
AccessMode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : ReadWrite<br>
ExportedAliases&nbsp;&nbsp; : {}<br>
ExportedCmdlets&nbsp;&nbsp; : {}<br>
ExportedFunctions : {[Add-o365AvailabilityAddressSpace, Add-o365AvailabilityAddressSpace], [Add-o365DistributionGroupMember,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add-o365DistributionGroupMember], [Add-o365MailboxFolderPermission, Add-o365MailboxFolderPermission],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Add-o365MailboxLocation, Add-o365MailboxLocation]...}<br>
ExportedVariables : {}<br>
NestedModules&nbsp;&nbsp;&nbsp;&nbsp; : {}</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">The powershell session to Office 365 was imported successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function collects the on premises distribution list configuration....<br>
The on premises distribution list information was collected successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function collects the Office 365 distribution list configuration....<br>
The Office 365 distribution list information was collected successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function validates a cloud DLs saftey to migrate....<br>
The DL is safe to proeced for conversion - source of authority is on-premises.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function writes the on prmeises distribution list configuration to XML....<br>
The on premises distribution list information was written to XML successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function writes the Office 365 distribution list configuration to XML....<br>
The Office 365 distribution list information was written to XML successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function collections the on premises DL membership....<br>
The DL membership was collected successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function writes the on prmeises distribution list membership configuration to XML....<br>
The on premises distribution list membership information was written to XML successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function removes the Office 365 powershell sessions....<br>
All powershell sessions have been cleaned up successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Begin processing a DL membership array.<br>
This function builds an array of DL members or multivalued attributes....<br>
Processing mail enabled DL member:<br>
Journal Mailbox<br>
Processing mail enabled DL member:<br>
Brian Murphy<br>
Processing mail enabled DL member:<br>
Timothy McMichael<br>
Processing mail enabled DL member:<br>
Migrate1<br>
Processing non-mailenabled DL member:<br>
Team Manager<br>
Processing mail enabled DL member:<br>
Dynamic<br><strong><font color="#0000ff">
The following object was intentionally skipped - object type not replicated to Exchange Online<br>
Test Contact</font></strong><br>
The following SMTP address was added to the array:<br>
journal@domain.org<br>
The following SMTP address was added to the array:<br>
brian@domain.com<br>
The following SMTP address was added to the array:<br>
tmcmichael@domain.org<br>
The following SMTP address was added to the array:<br>
Migrate1@domain.org<br>
The following SMTP address was added to the array:<br>
teammanager@domain.org<br>
The following SMTP address was added to the array:<br>
Dynamic@domain.org</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">The array was built successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function resets the Office 365 powershell sessions....<br>
This function removes the Office 365 powershell sessions....<br>
All powershell sessions have been cleaned up successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function creates the powershell session to Office 365....<br>
The powershell session to Office 365 was created successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function imports the powershell session to Office 365....<br>
WARNING: The names of some imported commands from the module 'tmp_1qvzwqrs.bux' include unapproved verbs that might make them less<br>
discoverable. To find the commands with unapproved verbs, run the Import-Module command again with the Verbose parameter. For a list of<br>
approved verbs, type Get-Verb.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : tmp_1qvzwqrs.bux<br>
Path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_1qvzwqrs.bux\tmp_1qvzwqrs.bux.psm1<br>
Description&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Implicit remoting for </font><a href="https://outlook.office365.com/powershell-liveID/"><font face="Courier New">https://outlook.office365.com/powershell-liveID/</font></a><br><font face="Courier New">
Guid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 87c6283a-a172-48b8-b31c-d5b966941fd5<br>
Version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1.0<br>
ModuleBase&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_1qvzwqrs.bux<br>
ModuleType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Script<br>
PrivateData&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {ImplicitRemoting}<br>
AccessMode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : ReadWrite<br>
ExportedAliases&nbsp;&nbsp; : {}<br>
ExportedCmdlets&nbsp;&nbsp; : {}<br>
ExportedFunctions : {[Add-o365AvailabilityAddressSpace, Add-o365AvailabilityAddressSpace], [Add-o365DistributionGroupMember,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add-o365DistributionGroupMember], [Add-o365MailboxFolderPermission, Add-o365MailboxFolderPermission],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Add-o365MailboxLocation, Add-o365MailboxLocation]...}<br>
ExportedVariables : {}<br>
NestedModules&nbsp;&nbsp;&nbsp;&nbsp; : {}</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">The powershell session to Office 365 was imported successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">All Office 365 powershell sessions have been refreshed.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function validates that all objects in the passed array exist in Office 365....<br>
Testing user in Office 365...<br>
journal@domain.org<br>
The recipients were found in Office 365.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function validates that all objects in the passed array exist in Office 365....<br>
Testing user in Office 365...<br>
brian@domain.com<br>
The recipients were found in Office 365.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function validates that all objects in the passed array exist in Office 365....<br>
Testing user in Office 365...<br>
tmcmichael@domain.org<br>
The recipients were found in Office 365.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function validates that all objects in the passed array exist in Office 365....<br>
Testing user in Office 365...<br>
Migrate1@domain.org<br>
The recipients were found in Office 365.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function tests to see if any sub groups or groups assigned permissions have been migrated....<br>
Now testing group...<br>
Migrate1@domain.org<br>
False<br>
The recipients were found in Office 365.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function validates that all objects in the passed array exist in Office 365....<br>
Testing user in Office 365...<br>
teammanager@domain.org<br>
The recipients were found in Office 365.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function validates that all objects in the passed array exist in Office 365....<br>
Testing user in Office 365...<br>
Dynamic@domain.org<br>
The recipients were found in Office 365.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Begin processing a ManagedBy array.<br>
This function builds an array of DL members or multivalued attributes....<br><font color="#0000ff"><strong>
The following object was intentionally skipped - object type not replicated to Exchange Online<br>
domain.local/Users/Test Manager</strong></font><br>
Processing Managed By member:<br>
The following SMTP address was added to the array:<br>
bmoran@domain.org</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">The array was built successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function resets the Office 365 powershell sessions....<br>
This function removes the Office 365 powershell sessions....<br>
All powershell sessions have been cleaned up successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function creates the powershell session to Office 365....<br>
The powershell session to Office 365 was created successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function imports the powershell session to Office 365....<br>
WARNING: The names of some imported commands from the module 'tmp_swg5mjit.e3j' include unapproved verbs that might make them less<br>
discoverable. To find the commands with unapproved verbs, run the Import-Module command again with the Verbose parameter. For a list of<br>
approved verbs, type Get-Verb.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : tmp_swg5mjit.e3j<br>
Path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_swg5mjit.e3j\tmp_swg5mjit.e3j.psm1<br>
Description&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Implicit remoting for </font><a href="https://outlook.office365.com/powershell-liveID/"><font face="Courier New">https://outlook.office365.com/powershell-liveID/</font></a><br><font face="Courier New">
Guid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : e769a4d9-fe17-4170-8634-ae2cecc1654c<br>
Version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1.0<br>
ModuleBase&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_swg5mjit.e3j<br>
ModuleType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Script<br>
PrivateData&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {ImplicitRemoting}<br>
AccessMode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : ReadWrite<br>
ExportedAliases&nbsp;&nbsp; : {}<br>
ExportedCmdlets&nbsp;&nbsp; : {}<br>
ExportedFunctions : {[Add-o365AvailabilityAddressSpace, Add-o365AvailabilityAddressSpace], [Add-o365DistributionGroupMember,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add-o365DistributionGroupMember], [Add-o365MailboxFolderPermission, Add-o365MailboxFolderPermission],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Add-o365MailboxLocation, Add-o365MailboxLocation]...}<br>
ExportedVariables : {}<br>
NestedModules&nbsp;&nbsp;&nbsp;&nbsp; : {}</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">The powershell session to Office 365 was imported successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">All Office 365 powershell sessions have been refreshed.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function validates that all objects in the passed array exist in Office 365....<br>
Testing user in Office 365...<br>
bmoran@domain.org<br>
The recipients were found in Office 365.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Begin processing a ModeratedBy array.<br>
This function builds an array of DL members or multivalued attributes....<br>
Processing ModeratedBy, GrantSendOnBehalfTo, AcceptMessagesOnlyFromSendersorMembers, RejectMessagesFromSendersOrMembers, or BypassModerationFromSendersOrMembers member:<br>
The following SMTP address was added to the array:<br>
tmcmichael@domain.org</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">The array was built successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function resets the Office 365 powershell sessions....<br>
This function removes the Office 365 powershell sessions....<br>
All powershell sessions have been cleaned up successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function creates the powershell session to Office 365....<br>
The powershell session to Office 365 was created successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function imports the powershell session to Office 365....<br>
WARNING: The names of some imported commands from the module 'tmp_qt1dzaih.egn' include unapproved verbs that might make them less<br>
discoverable. To find the commands with unapproved verbs, run the Import-Module command again with the Verbose parameter. For a list of<br>
approved verbs, type Get-Verb.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : tmp_qt1dzaih.egn<br>
Path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_qt1dzaih.egn\tmp_qt1dzaih.egn.psm1<br>
Description&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Implicit remoting for </font><a href="https://outlook.office365.com/powershell-liveID/"><font face="Courier New">https://outlook.office365.com/powershell-liveID/</font></a><br><font face="Courier New">
Guid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 086dd663-c6d8-45b9-9836-7745e03dd255<br>
Version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1.0<br>
ModuleBase&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_qt1dzaih.egn<br>
ModuleType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Script<br>
PrivateData&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {ImplicitRemoting}<br>
AccessMode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : ReadWrite<br>
ExportedAliases&nbsp;&nbsp; : {}<br>
ExportedCmdlets&nbsp;&nbsp; : {}<br>
ExportedFunctions : {[Add-o365AvailabilityAddressSpace, Add-o365AvailabilityAddressSpace], [Add-o365DistributionGroupMember,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add-o365DistributionGroupMember], [Add-o365MailboxFolderPermission, Add-o365MailboxFolderPermission],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Add-o365MailboxLocation, Add-o365MailboxLocation]...}<br>
ExportedVariables : {}<br>
NestedModules&nbsp;&nbsp;&nbsp;&nbsp; : {}</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">The powershell session to Office 365 was imported successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">All Office 365 powershell sessions have been refreshed.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function validates that all objects in the passed array exist in Office 365....<br>
Testing user in Office 365...<br>
tmcmichael@domain.org<br>
The recipients were found in Office 365.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Begin processing a GrantSendOnBehalfTo array<br>
This function builds an array of DL members or multivalued attributes....<br>
Processing ModeratedBy, GrantSendOnBehalfTo, AcceptMessagesOnlyFromSendersorMembers, RejectMessagesFromSendersOrMembers, or BypassModerationFromSendersOrMembers member:<br>
The following SMTP address was added to the array:<br>
tmcmichael@domain.org</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">The array was built successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function resets the Office 365 powershell sessions....<br>
This function removes the Office 365 powershell sessions....<br>
All powershell sessions have been cleaned up successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function creates the powershell session to Office 365....<br>
The powershell session to Office 365 was created successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function imports the powershell session to Office 365....<br>
WARNING: The names of some imported commands from the module 'tmp_asuxfjkc.4lz' include unapproved verbs that might make them less<br>
discoverable. To find the commands with unapproved verbs, run the Import-Module command again with the Verbose parameter. For a list of<br>
approved verbs, type Get-Verb.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : tmp_asuxfjkc.4lz<br>
Path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_asuxfjkc.4lz\tmp_asuxfjkc.4lz.psm1<br>
Description&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Implicit remoting for </font><a href="https://outlook.office365.com/powershell-liveID/"><font face="Courier New">https://outlook.office365.com/powershell-liveID/</font></a><br><font face="Courier New">
Guid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 53da7cd1-71c7-4510-aec5-d495c8c08987<br>
Version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1.0<br>
ModuleBase&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_asuxfjkc.4lz<br>
ModuleType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Script<br>
PrivateData&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {ImplicitRemoting}<br>
AccessMode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : ReadWrite<br>
ExportedAliases&nbsp;&nbsp; : {}<br>
ExportedCmdlets&nbsp;&nbsp; : {}<br>
ExportedFunctions : {[Add-o365AvailabilityAddressSpace, Add-o365AvailabilityAddressSpace], [Add-o365DistributionGroupMember,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add-o365DistributionGroupMember], [Add-o365MailboxFolderPermission, Add-o365MailboxFolderPermission],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Add-o365MailboxLocation, Add-o365MailboxLocation]...}<br>
ExportedVariables : {}<br>
NestedModules&nbsp;&nbsp;&nbsp;&nbsp; : {}</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">The powershell session to Office 365 was imported successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">All Office 365 powershell sessions have been refreshed.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function validates that all objects in the passed array exist in Office 365....<br>
Testing user in Office 365...<br>
tmcmichael@domain.org<br>
The recipients were found in Office 365.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Begin processing a AcceptMessagesOnlyFromSendersOrMembers array<br>
This function builds an array of DL members or multivalued attributes....<br>
Processing ModeratedBy, GrantSendOnBehalfTo, AcceptMessagesOnlyFromSendersorMembers, RejectMessagesFromSendersOrMembers, or BypassModerationFromSendersOrMembers member:<br>
Processing ModeratedBy, GrantSendOnBehalfTo, AcceptMessagesOnlyFromSendersorMembers, RejectMessagesFromSendersOrMembers, or BypassModerationFromSendersOrMembers member:<br>
The following SMTP address was added to the array:<br>
bmoran@domain.org<br>
The following SMTP address was added to the array:<br>
Migrate1@domain.org</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">The array was built successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function resets the Office 365 powershell sessions....<br>
This function removes the Office 365 powershell sessions....<br>
All powershell sessions have been cleaned up successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function creates the powershell session to Office 365....<br>
The powershell session to Office 365 was created successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function imports the powershell session to Office 365....<br>
WARNING: The names of some imported commands from the module 'tmp_v3xtlz25.hej' include unapproved verbs that might make them less<br>
discoverable. To find the commands with unapproved verbs, run the Import-Module command again with the Verbose parameter. For a list of<br>
approved verbs, type Get-Verb.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : tmp_v3xtlz25.hej<br>
Path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_v3xtlz25.hej\tmp_v3xtlz25.hej.psm1<br>
Description&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Implicit remoting for </font><a href="https://outlook.office365.com/powershell-liveID/"><font face="Courier New">https://outlook.office365.com/powershell-liveID/</font></a><br><font face="Courier New">
Guid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 019f80be-f9d7-4082-bf5b-955c059d170d<br>
Version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1.0<br>
ModuleBase&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_v3xtlz25.hej<br>
ModuleType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Script<br>
PrivateData&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {ImplicitRemoting}<br>
AccessMode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : ReadWrite<br>
ExportedAliases&nbsp;&nbsp; : {}<br>
ExportedCmdlets&nbsp;&nbsp; : {}<br>
ExportedFunctions : {[Add-o365AvailabilityAddressSpace, Add-o365AvailabilityAddressSpace], [Add-o365DistributionGroupMember,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add-o365DistributionGroupMember], [Add-o365MailboxFolderPermission, Add-o365MailboxFolderPermission],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Add-o365MailboxLocation, Add-o365MailboxLocation]...}<br>
ExportedVariables : {}<br>
NestedModules&nbsp;&nbsp;&nbsp;&nbsp; : {}</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">The powershell session to Office 365 was imported successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">All Office 365 powershell sessions have been refreshed.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function validates that all objects in the passed array exist in Office 365....<br>
Testing user in Office 365...<br>
bmoran@domain.org<br>
The recipients were found in Office 365.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function validates that all objects in the passed array exist in Office 365....<br>
Testing user in Office 365...<br>
Migrate1@domain.org<br>
The recipients were found in Office 365.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function tests to see if any sub groups or groups assigned permissions have been migrated....<br>
Now testing group...<br>
Migrate1@domain.org<br>
False<br>
The recipients were found in Office 365.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Begin processing RejectMessagesFromSendersOrMembers array<br>
This function builds an array of DL members or multivalued attributes....<br>
Processing ModeratedBy, GrantSendOnBehalfTo, AcceptMessagesOnlyFromSendersorMembers, RejectMessagesFromSendersOrMembers, or BypassModerationFromSendersOrMembers member:<br>
The following SMTP address was added to the array:<br>
Migrate2@domain.org</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">The array was built successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function resets the Office 365 powershell sessions....<br>
This function removes the Office 365 powershell sessions....<br>
All powershell sessions have been cleaned up successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function creates the powershell session to Office 365....<br>
The powershell session to Office 365 was created successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function imports the powershell session to Office 365....<br>
WARNING: The names of some imported commands from the module 'tmp_zmxben01.bs4' include unapproved verbs that might make them less<br>
discoverable. To find the commands with unapproved verbs, run the Import-Module command again with the Verbose parameter. For a list of<br>
approved verbs, type Get-Verb.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : tmp_zmxben01.bs4<br>
Path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_zmxben01.bs4\tmp_zmxben01.bs4.psm1<br>
Description&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Implicit remoting for </font><a href="https://outlook.office365.com/powershell-liveID/"><font face="Courier New">https://outlook.office365.com/powershell-liveID/</font></a><br><font face="Courier New">
Guid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : f13bceb8-a02e-4242-aef7-b63f0adb27d6<br>
Version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1.0<br>
ModuleBase&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_zmxben01.bs4<br>
ModuleType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Script<br>
PrivateData&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {ImplicitRemoting}<br>
AccessMode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : ReadWrite<br>
ExportedAliases&nbsp;&nbsp; : {}<br>
ExportedCmdlets&nbsp;&nbsp; : {}<br>
ExportedFunctions : {[Add-o365AvailabilityAddressSpace, Add-o365AvailabilityAddressSpace], [Add-o365DistributionGroupMember,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add-o365DistributionGroupMember], [Add-o365MailboxFolderPermission, Add-o365MailboxFolderPermission],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Add-o365MailboxLocation, Add-o365MailboxLocation]...}<br>
ExportedVariables : {}<br>
NestedModules&nbsp;&nbsp;&nbsp;&nbsp; : {}</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">The powershell session to Office 365 was imported successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">All Office 365 powershell sessions have been refreshed.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function validates that all objects in the passed array exist in Office 365....<br>
Testing user in Office 365...<br>
Migrate2@domain.org<br>
The recipients were found in Office 365.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function tests to see if any sub groups or groups assigned permissions have been migrated....<br>
Now testing group...<br>
Migrate2@domain.org<br>
False<br>
The recipients were found in Office 365.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Begin processing BypassModerationFromSendersOrMembers array<br>
This function builds an array of DL members or multivalued attributes....<br>
Processing ModeratedBy, GrantSendOnBehalfTo, AcceptMessagesOnlyFromSendersorMembers, RejectMessagesFromSendersOrMembers, or BypassModerationFromSendersOrMembers member:<br>
The following SMTP address was added to the array:<br>
Migrate1@domain.org</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">The array was built successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function resets the Office 365 powershell sessions....<br>
This function removes the Office 365 powershell sessions....<br>
All powershell sessions have been cleaned up successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function creates the powershell session to Office 365....<br>
The powershell session to Office 365 was created successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function imports the powershell session to Office 365....<br>
WARNING: The names of some imported commands from the module 'tmp_kqtp23ls.xwx' include unapproved verbs that might make them less<br>
discoverable. To find the commands with unapproved verbs, run the Import-Module command again with the Verbose parameter. For a list of<br>
approved verbs, type Get-Verb.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : tmp_kqtp23ls.xwx<br>
Path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_kqtp23ls.xwx\tmp_kqtp23ls.xwx.psm1<br>
Description&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Implicit remoting for </font><a href="https://outlook.office365.com/powershell-liveID/"><font face="Courier New">https://outlook.office365.com/powershell-liveID/</font></a><br><font face="Courier New">
Guid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 31e5aaad-348d-4513-bc4c-01e4cdfb5bc9<br>
Version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1.0<br>
ModuleBase&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_kqtp23ls.xwx<br>
ModuleType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Script<br>
PrivateData&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {ImplicitRemoting}<br>
AccessMode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : ReadWrite<br>
ExportedAliases&nbsp;&nbsp; : {}<br>
ExportedCmdlets&nbsp;&nbsp; : {}<br>
ExportedFunctions : {[Add-o365AvailabilityAddressSpace, Add-o365AvailabilityAddressSpace], [Add-o365DistributionGroupMember,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add-o365DistributionGroupMember], [Add-o365MailboxFolderPermission, Add-o365MailboxFolderPermission],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Add-o365MailboxLocation, Add-o365MailboxLocation]...}<br>
ExportedVariables : {}<br>
NestedModules&nbsp;&nbsp;&nbsp;&nbsp; : {}</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">The powershell session to Office 365 was imported successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">All Office 365 powershell sessions have been refreshed.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function validates that all objects in the passed array exist in Office 365....<br>
Testing user in Office 365...<br>
Migrate1@domain.org<br>
The recipients were found in Office 365.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function tests to see if any sub groups or groups assigned permissions have been migrated....<br>
Now testing group...<br>
Migrate1@domain.org<br>
False<br>
The recipients were found in Office 365.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function moves group to the non-sync OU<br>
The group has been moved successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Gets active directory domain controllers...<br>
Succesfully obtained domain controllers.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Gets active directory domain...<br>
Succesfully obtained domain.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Replicates the specified domain controller...<br>
Syncing partition: DC=domain,DC=local<br>
CALLBACK MESSAGE: SyncAll Finished.<br>
SyncAll terminated with no errors.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Successfully replicated the domain controller.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Replicates the specified domain controller...<br>
Syncing partition: DC=domain,DC=local<br>
CALLBACK MESSAGE: SyncAll Finished.<br>
SyncAll terminated with no errors.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Successfully replicated the domain controller.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Replicates the specified domain controller...<br>
Syncing partition: DC=domain,DC=local<br>
CALLBACK MESSAGE: SyncAll Finished.<br>
SyncAll terminated with no errors.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Successfully replicated the domain controller.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Invoking AADConnect Delta Sync Remotely<br>
This function triggers the ad connect process to sync changes...</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">PSComputerName : azure-adconnect.domain.local<br>
RunspaceId&nbsp;&nbsp;&nbsp;&nbsp; : 764c99c8-6e48-415a-b319-9847cce42922<br>
Result&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Success</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">The AD Connect instance has been successfully initiated.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function resets the Office 365 powershell sessions....<br>
This function removes the Office 365 powershell sessions....<br>
All powershell sessions have been cleaned up successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function creates the powershell session to Office 365....<br>
The powershell session to Office 365 was created successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function imports the powershell session to Office 365....<br>
WARNING: The names of some imported commands from the module 'tmp_ffoelvjn.lws' include unapproved verbs that might make them less<br>
discoverable. To find the commands with unapproved verbs, run the Import-Module command again with the Verbose parameter. For a list of<br>
approved verbs, type Get-Verb.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : tmp_ffoelvjn.lws<br>
Path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_ffoelvjn.lws\tmp_ffoelvjn.lws.psm1<br>
Description&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Implicit remoting for </font><a href="https://outlook.office365.com/powershell-liveID/"><font face="Courier New">https://outlook.office365.com/powershell-liveID/</font></a><br><font face="Courier New">
Guid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 001ce520-4538-4f59-a5d4-710d8097b338<br>
Version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1.0<br>
ModuleBase&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_ffoelvjn.lws<br>
ModuleType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Script<br>
PrivateData&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {ImplicitRemoting}<br>
AccessMode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : ReadWrite<br>
ExportedAliases&nbsp;&nbsp; : {}<br>
ExportedCmdlets&nbsp;&nbsp; : {}<br>
ExportedFunctions : {[Add-o365AvailabilityAddressSpace, Add-o365AvailabilityAddressSpace], [Add-o365DistributionGroupMember,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add-o365DistributionGroupMember], [Add-o365MailboxFolderPermission, Add-o365MailboxFolderPermission],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Add-o365MailboxLocation, Add-o365MailboxLocation]...}<br>
ExportedVariables : {}<br>
NestedModules&nbsp;&nbsp;&nbsp;&nbsp; : {}</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">The powershell session to Office 365 was imported successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">All Office 365 powershell sessions have been refreshed.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Wating for original DL deletion from Office 365<br>
Wating for original DL deletion from Office 365<br>
Wating for original DL deletion from Office 365<br>
The operation couldn't be performed because object 'Migrate@domain.org' couldn't be found on<br>
'CO1PR06A002DC03.NAMPR06A002.prod.outlook.com'.<br>&nbsp;&nbsp;&nbsp;&nbsp; + CategoryInfo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : NotSpecified: (:) [Get-Recipient], ManagementObjectNotFoundException<br>&nbsp;&nbsp;&nbsp;&nbsp; + FullyQualifiedErrorId : [Server=DM6PR06MB4026,RequestId=1f8fe3eb-6b61-4564-be56-c8af5d303a3a,TimeStamp=9/19/2018 3:00:02 PM] [Fail<br>&nbsp;&nbsp;&nbsp; ureCategory=Cmdlet-ManagementObjectNotFoundException] 24B7AD96,Microsoft.Exchange.Management.RecipientTasks.GetRecipient<br>&nbsp;&nbsp;&nbsp;&nbsp; + PSComputerName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : outlook.office365.com</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function resets the Office 365 powershell sessions....<br>
This function removes the Office 365 powershell sessions....<br>
All powershell sessions have been cleaned up successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function creates the powershell session to Office 365....<br>
The powershell session to Office 365 was created successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function imports the powershell session to Office 365....<br>
WARNING: The names of some imported commands from the module 'tmp_3hao5uao.he4' include unapproved verbs that might make them less<br>
discoverable. To find the commands with unapproved verbs, run the Import-Module command again with the Verbose parameter. For a list of<br>
approved verbs, type Get-Verb.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : tmp_3hao5uao.he4<br>
Path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_3hao5uao.he4\tmp_3hao5uao.he4.psm1<br>
Description&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Implicit remoting for </font><a href="https://outlook.office365.com/powershell-liveID/"><font face="Courier New">https://outlook.office365.com/powershell-liveID/</font></a><br><font face="Courier New">
Guid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : f93cff62-1cce-4d83-bce9-991c54b5127e<br>
Version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1.0<br>
ModuleBase&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_3hao5uao.he4<br>
ModuleType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Script<br>
PrivateData&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {ImplicitRemoting}<br>
AccessMode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : ReadWrite<br>
ExportedAliases&nbsp;&nbsp; : {}<br>
ExportedCmdlets&nbsp;&nbsp; : {}<br>
ExportedFunctions : {[Add-o365AvailabilityAddressSpace, Add-o365AvailabilityAddressSpace], [Add-o365DistributionGroupMember,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add-o365DistributionGroupMember], [Add-o365MailboxFolderPermission, Add-o365MailboxFolderPermission],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Add-o365MailboxLocation, Add-o365MailboxLocation]...}<br>
ExportedVariables : {}<br>
NestedModules&nbsp;&nbsp;&nbsp;&nbsp; : {}</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">The powershell session to Office 365 was imported successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">All Office 365 powershell sessions have been refreshed.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function creates the cloud DL with the minimum settings...<br>
Universal<br>
New! Office 365 Groups are the next generation of distribution lists.<br>
Groups give teams shared tools for collaborating using email, files, a calendar, and more.<br>
You can start right away using the New-UnifiedGroup cmdlet.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">RunspaceId&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 8ca722dd-6bea-470d-9fc9-36dc4c73148c<br>
GroupType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Universal<br>
SamAccountName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Migrate574691357943970<br>
BypassNestedModerationEnabled&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : False<br>
IsDirSynced&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : False<br>
ManagedBy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {domainAdmin}<br>
MemberJoinRestriction&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Closed<br>
MemberDepartRestriction&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Open<br>
MigrationToUnifiedGroupInProgress&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : False<br>
ExpansionServer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<br>
ReportToManagerEnabled&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : False<br>
ReportToOriginatorEnabled&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : True<br>
SendOofMessageToOriginatorEnabled&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : False<br>
AcceptMessagesOnlyFrom&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {}<br>
AcceptMessagesOnlyFromDLMembers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {}<br>
AcceptMessagesOnlyFromSendersOrMembers : {}<br>
AddressListMembership&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {\Default Global Address List, \All Recipients(VLV), \Groups(VLV), \All Groups(VLV)...}<br>
AdministrativeUnits&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {}<br>
Alias&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Migrate<br>
ArbitrationMailbox&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}<br>
BypassModerationFromSendersOrMembers&nbsp;&nbsp; : {}<br>
OrganizationalUnit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : nampr06a002.prod.outlook.com/Microsoft Exchange Hosted<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Organizations/domainSquad.onmicrosoft.com<br>
CustomAttribute1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<br>
CustomAttribute10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<br>
CustomAttribute11&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<br>
CustomAttribute12&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<br>
CustomAttribute13&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<br>
CustomAttribute14&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<br>
CustomAttribute15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<br>
CustomAttribute2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<br>
CustomAttribute3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<br>
CustomAttribute4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<br>
CustomAttribute5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<br>
CustomAttribute6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<br>
CustomAttribute7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<br>
CustomAttribute8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<br>
CustomAttribute9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<br>
ExtensionCustomAttribute1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {}<br>
ExtensionCustomAttribute2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {}<br>
ExtensionCustomAttribute3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {}<br>
ExtensionCustomAttribute4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {}<br>
ExtensionCustomAttribute5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {}<br>
DisplayName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Migrate<br>
EmailAddresses&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {SMTP:Migrate@domain.org}<br>
GrantSendOnBehalfTo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {}<br>
ExternalDirectoryObjectId&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : d10bc5bd-01dc-4708-a98a-a9c2294149d6<br>
HiddenFromAddressListsEnabled&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : False<br>
LastExchangeChangedTime&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<br>
LegacyExchangeDN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : /o=ExchangeLabs/ou=Exchange Administrative Group<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (FYDIBOHF23SPDLT)/cn=Recipients/cn=002d4cd657784b01bccf8b85e5c35519-Migrate<br>
MaxSendSize&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Unlimited<br>
MaxReceiveSize&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Unlimited<br>
ModeratedBy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {}<br>
ModerationEnabled&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : False<br>
PoliciesIncluded&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {}<br>
PoliciesExcluded&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {{26491cfc-9e50-4857-861b-0cb8df22b5d7}}<br>
EmailAddressPolicyEnabled&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : False<br>
PrimarySmtpAddress&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Migrate@domain.org<br>
RecipientType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : MailUniversalDistributionGroup<br>
RecipientTypeDetails&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : MailUniversalDistributionGroup<br>
RejectMessagesFrom&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {}<br>
RejectMessagesFromDLMembers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {}<br>
RejectMessagesFromSendersOrMembers&nbsp;&nbsp;&nbsp;&nbsp; : {}<br>
RequireSenderAuthenticationEnabled&nbsp;&nbsp;&nbsp;&nbsp; : True<br>
SimpleDisplayName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<br>
SendModerationNotifications&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Always<br>
UMDtmfMap&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {emailAddress:6447283, lastNameFirstName:6447283, firstNameLastName:6447283}<br>
WindowsEmailAddress&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Migrate@domain.org<br>
MailTip&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :<br>
MailTipTranslations&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {}<br>
Identity&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Migrate<br>
Id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Migrate<br>
IsValid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : True<br>
ExchangeVersion&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0.10 (14.0.100.0)<br>
Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Migrate<br>
DistinguishedName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : CN=Migrate,OU=domainSquad.onmicrosoft.com,OU=Microsoft Exchange Hosted<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Organizations,DC=NAMPR06A002,DC=prod,DC=outlook,DC=com<br>
ObjectCategory&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : NAMPR06A002.prod.outlook.com/Configuration/Schema/Group<br>
ObjectClass&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {top, group}<br>
WhenChanged&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 9/19/2018 3:00:16 PM<br>
WhenCreated&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 9/19/2018 3:00:16 PM<br>
WhenChangedUTC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 9/19/2018 3:00:16 PM<br>
WhenCreatedUTC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 9/19/2018 3:00:16 PM<br>
OrganizationId&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : NAMPR06A002.prod.outlook.com/Microsoft Exchange Hosted<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Organizations/domainSquad.onmicrosoft.com - NAMPR06A002.prod.outlook.com/ConfigurationUn<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; its/domainSquad.onmicrosoft.com/Configuration<br>
Guid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : b735426e-9551-4441-a710-803946ea176c<br>
OriginatingServer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : CO1PR06A002DC02.NAMPR06A002.prod.outlook.com<br>
ObjectState&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Unchanged</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Distribution list created successfully in Exchange Online / Office 365.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function updates the cloud DL settings to match on premise...<br>
This does not update the multivalued attributes...<br>
Distribution group properties updated successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Processing DL Membership member to Office 365...<br>
journal@domain.org<br>
This function sets the multi-valued attributes<br>
DLMembership<br>
The mutilvalued attribute was updated successfully.<br>
DLMembership</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Processing DL Membership member to Office 365...<br>
brian@domain.com<br>
This function sets the multi-valued attributes<br>
DLMembership<br>
The mutilvalued attribute was updated successfully.<br>
DLMembership</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Processing DL Membership member to Office 365...<br>
tmcmichael@domain.org<br>
This function sets the multi-valued attributes<br>
DLMembership<br>
The mutilvalued attribute was updated successfully.<br>
DLMembership</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Processing DL Membership member to Office 365...<br>
Migrate1@domain.org<br>
This function sets the multi-valued attributes<br>
DLMembership<br>
The mutilvalued attribute was updated successfully.<br>
DLMembership</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Processing DL Membership member to Office 365...<br>
teammanager@domain.org<br>
This function sets the multi-valued attributes<br>
DLMembership<br>
The mutilvalued attribute was updated successfully.<br>
DLMembership</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Processing DL Membership member to Office 365...<br>
Dynamic@domain.org<br>
This function sets the multi-valued attributes<br>
DLMembership<br>
The mutilvalued attribute was updated successfully.<br>
DLMembership</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Processing Bypass Managed By member to Office 365...<br>
bmoran@domain.org<br>
This function sets the multi-valued attributes<br>
ManagedBy<br>
The mutilvalued attribute was updated successfully.<br>
ManagedBy</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Processing Moderated By member to Office 365...<br>
tmcmichael@domain.org<br>
This function sets the multi-valued attributes<br>
ModeratedBy<br>
The mutilvalued attribute was updated successfully.<br>
ModeratedBy</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Processing Grant Send On Behalf To Array member to Office 365...<br>
tmcmichael@domain.org<br>
This function sets the multi-valued attributes<br>
GrantSendOnBehalfTo<br>
The mutilvalued attribute was updated successfully.<br>
GrantSendOnBehalfTo</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Processing Accept Messages Only From Senders Or Members member to Office 365...<br>
bmoran@domain.org<br>
This function sets the multi-valued attributes<br>
AcceptMessagesOnlyFromSendersOrMembers<br>
The mutilvalued attribute was updated successfully.<br>
AcceptMessagesOnlyFromSendersOrMembers</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Processing Accept Messages Only From Senders Or Members member to Office 365...<br>
Migrate1@domain.org<br>
This function sets the multi-valued attributes<br>
AcceptMessagesOnlyFromSendersOrMembers<br>
The mutilvalued attribute was updated successfully.<br>
AcceptMessagesOnlyFromSendersOrMembers</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Processing Reject Messages From Senders Or Members member to Office 365...<br>
Migrate2@domain.org<br>
This function sets the multi-valued attributes<br>
RejectMessagesFromSendersOrMembers<br>
The mutilvalued attribute was updated successfully.<br>
RejectMessagesFromSendersOrMembers</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Processing Bypass Moderation From Senders Or Members member to Office 365...<br>
Migrate1@domain.org<br>
This function sets the multi-valued attributes<br>
BypassModerationFromSendersOrMembers<br>
The mutilvalued attribute was updated successfully.<br>
BypassModerationFromSendersOrMembers</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function resets the Office 365 powershell sessions....<br>
This function removes the Office 365 powershell sessions....<br>
All powershell sessions have been cleaned up successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function creates the powershell session to Office 365....<br>
The powershell session to Office 365 was created successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function imports the powershell session to Office 365....<br>
WARNING: The names of some imported commands from the module 'tmp_w0eyp2oc.n3o' include unapproved verbs that might make them less<br>
discoverable. To find the commands with unapproved verbs, run the Import-Module command again with the Verbose parameter. For a list of<br>
approved verbs, type Get-Verb.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : tmp_w0eyp2oc.n3o<br>
Path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_w0eyp2oc.n3o\tmp_w0eyp2oc.n3o.psm1<br>
Description&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Implicit remoting for </font><a href="https://outlook.office365.com/powershell-liveID/"><font face="Courier New">https://outlook.office365.com/powershell-liveID/</font></a><br><font face="Courier New">
Guid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1d8d7722-910f-43e6-ad74-8a8bb4e0a2e8<br>
Version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1.0<br>
ModuleBase&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : C:\Users\admin.domain\AppData\Local\Temp\tmp_w0eyp2oc.n3o<br>
ModuleType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Script<br>
PrivateData&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {ImplicitRemoting}<br>
AccessMode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : ReadWrite<br>
ExportedAliases&nbsp;&nbsp; : {}<br>
ExportedCmdlets&nbsp;&nbsp; : {}<br>
ExportedFunctions : {[Add-o365AvailabilityAddressSpace, Add-o365AvailabilityAddressSpace], [Add-o365DistributionGroupMember,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add-o365DistributionGroupMember], [Add-o365MailboxFolderPermission, Add-o365MailboxFolderPermission],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Add-o365MailboxLocation, Add-o365MailboxLocation]...}<br>
ExportedVariables : {}<br>
NestedModules&nbsp;&nbsp;&nbsp;&nbsp; : {}</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">The powershell session to Office 365 was imported successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">All Office 365 powershell sessions have been refreshed.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function collects the new office 365 distribution list configuration....<br>
The on premises distribution list information was collected successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function collects the new office 365 distribution list member configuration....<br>
The on premises distribution list information was collected successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function writes the new Office 365 distribution list configuration to XML....<br>
The on premises distribution list information was written to XML successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function writes the new Office 365 distribution list membership configuration to XML....<br>
The on premises distribution list information was written to XML successfully.</font></p><p align="justify"><font face="Courier New">
<br></font></p><p align="justify"><font face="Courier New">This function cleans up all powershell sessions....<br>
All powershell sessions have been cleaned up successfully.</font></p><em><p align="justify"><br></p></em><p align="justify"><em>===============================================================================</em></p><p align="justify"><em></em></p><p align="justify"><em></em></p><p align="justify"><em></em></p><em><p align="justify"><br></p></em><em><p align="justify"></p></em>]]></content:encoded>
    </item>
    <item>
      <title>Office 365: Stale Information in the Offline Address Book and Individual Contact Cards</title>
      <link>https://docs.microsoft.com/archive/blogs/timmcmic/office-365-stale-information-in-the-offline-address-book-and-individual-contact-cards</link>
      <pubDate>Mon, 10 Sep 2018 18:30:17 GMT</pubDate>
      <dc:creator><![CDATA[TIMMCMIC]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/timmcmic/?p=3695</guid>
      <description><![CDATA[In Office 365 an Exchange related object can be replicated from the on premises Active Directory to...]]></description>
      <content:encoded><![CDATA[<p>In Office 365 an Exchange related object can be replicated from the on premises Active Directory to Azure Active Directory and then forward synchronized into the Exchange Online Active Directory.&nbsp; In most cases the objects synchronized into the Exchange Online Active Directory represent mail enabled objects.&nbsp; User accounts are unique in that they are replicated into Exchange Online regardless of their mail enabled status.&nbsp; The user accounts residing in the Exchange Online Active Directory can be seen with the get-user command.</p><p><br></p><p>Let us take a look at an example.&nbsp; An on premises a remote mailbox object is created –&gt; Direct Report. When running get-user against the on-premises account a MAILUSER is returned.&nbsp; This is expected for a remote mailbox.</p><p><br></p><p><font face="Courier New">[PS] C:\&gt;Get-User DirectReport</font></p><font face="Courier New">
</font><p><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RecipientType<br>
----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -------------<br>
Direct Report MailUser</font></p><p><br></p><p>An on premises account is created –&gt; Team Manager.&nbsp; Team Manager is not a mail enabled object.&nbsp; When running get-user against the on-premises account a USER object is returned.&nbsp; This is expected for a user object that is not mail enabled.</p><p><br></p><p><font face="Courier New">[PS] C:\&gt;Get-User TeamManager</font></p><font face="Courier New">
</font><p><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RecipientType<br>
----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -------------<br>
Team Manager User</font></p><p><br></p><p>In this particular instance DIRECTREPORT has been assigned the MANAGER TEAM MANAGER.</p><p><br></p><p><font face="Courier New">[PS] C:\&gt;Get-User DirectReport | fl name,manager</font></p><font face="Courier New">
</font><p><br><font face="Courier New">
Name&nbsp;&nbsp;&nbsp; : Direct Report<br>
Manager : domain.local/Users/Team Manager</font></p><p><br></p><p>Using get-user in Office 365 for the remote mailbox we can see that it is listed as a USERMAILBOX.&nbsp; This is expected for a remote mailbox object.</p><p><br></p><p><font face="Courier New">PS C:\&gt; Get-User DIRECTREPORT</font></p><font face="Courier New">
</font><p><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RecipientType<br>
----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -------------<br>
Direct Report UserMailbox</font></p><p><br></p><p>The TEAMMANAGER account remains as a USER object in Exchange Online.</p><p><br></p><p><font face="Courier New">PS C:\&gt; get-user "Team Manager"</font></p><font face="Courier New">
</font><p><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RecipientType<br>
----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -------------<br>
Team Manager User</font></p><p><br></p><p>As previously highlighted the objects represented in Exchange Online Active Directory also have a representation in Azure Active Directory.&nbsp; The link between the objects can be seen on the user objects ExternalDirectoryObjectID.&nbsp; </p><p><br></p><p><font face="Courier New">PS C:\&gt; Get-User "Team Manager" | fl externalDirectoryObjectID</font></p><font face="Courier New">
</font><p><br><font face="Courier New">
ExternalDirectoryObjectId : b3343293-8837-492b-88e6-08c4c4ec5099</font></p><p><br></p><p>Using the external directory object ID the get-MSOLUser command can be utilized to find a corresponding object.&nbsp; </p><p><br></p><p><font face="Courier New">PS C:\&gt; Get-MsolUser -ObjectId b3343293-8837-492b-88e6-08c4c4ec5099</font></p><font face="Courier New">
</font><p><font face="Courier New">UserPrincipalName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DisplayName&nbsp; isLicensed<br>
-----------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -----------&nbsp; ----------<br>
teammanager@domain.org&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Team Manager False</font></p><p><br></p><p>The end conclusion is that a valid user object in Exchange Online Active Directory is also represented by a valid object in Azure Active Directory (and potentially on-premises Active Directory if sourced on premises).</p><p><br></p><p>The Offline Address Book and individual contact cards displaying information like manager and direct reports.&nbsp; These types of settings are not limited to recipients – but also include user objects as in this scenario.&nbsp; Pulling the contact card for a manager shows the direct reports and pulling a direct report shows the manager.&nbsp; This information is based from the user settings exposed through get-user.</p><p><br></p><p>I recently worked on an escalation where some users individual contact cards were not correct.&nbsp; Some users were showing direct reports that no longer existed in the company and the same with manager attributes.&nbsp; How did we determine the users were not available? </p><p><br></p><p>To begin the investigation we started by narrowing down where the direct report could be seen within the clients.&nbsp;&nbsp;&nbsp; In this case a manager was reporting that a direct report that left the company was still showing on the users contact card.&nbsp; The direct report – Bill James (bjames@domain.com) was confirmed be on the contact card in Outlook Web Access, Outlook Online Mode, and Outlook Cached Mode.&nbsp; What this tells us is that this is not an issue with the build of the Offline Address Book – as online mode clients always display information directly from the directory.</p><p><br></p><p>Azure AD Connect is utilized in the environment to synchronize objects from the on premises Active Directory to Azure Active Directory.&nbsp; Since the source of objects was on premises we verified that the account could not be found.&nbsp; </p><p><br></p><p><font face="Courier New">[PS] C:\&gt;get-user bjames@domain.com<br>
The operation couldn't be performed because object 'bjames@domain.com' couldn't be found on 'Azure-Dc.fmrs.local'.<br>&nbsp;&nbsp;&nbsp;&nbsp; + CategoryInfo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : NotSpecified: (:) [Get-User], ManagementObjectNotFoundException<br>&nbsp;&nbsp;&nbsp;&nbsp; + FullyQualifiedErrorId : [Server=AZURE-MBX,RequestId=25a34a91-9c7f-46df-a40e-399809d5e318,TimeStamp=9/10/2018 3:4<br>&nbsp;&nbsp;&nbsp; 4:58 PM] [FailureCategory=Cmdlet-ManagementObjectNotFoundException] 6BDE9D0,Microsoft.Exchange.Management.Recipien<br>&nbsp;&nbsp; tTasks.GetUser<br>&nbsp;&nbsp;&nbsp;&nbsp; + PSComputerName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : azure-mbx.domain.local</font></p><p><br></p><p>This output validated that the object was not found in the on-premises Active Directory.</p><p><br></p><p>The next phase of the investigation was to determine if the object resided in Azure Active Directory.&nbsp; Is it possible that a delete from on-premises was not processed into the directory that is the source of information for other workloads.</p><p><br></p><p><font face="Courier New">PS C:\&gt; Get-MsolUser -SearchString bjames<br>
PS C:\&gt;</font></p><p><br></p><p>In this particular instance nothing was returned.&nbsp; For good measure we also looked at deleted objects.</p><p><br></p><p><font face="Courier New">PS C:\&gt; Get-MsolUser -SearchString bjames -ReturnDeletedUsers<br>
PS C:\&gt;</font></p><p><br></p><p>This confims that the user account is not present in Azure Active Directory.</p><p><br></p><p>The last step of the investigation is to review the Exchange Online Active Directory.&nbsp; </p><p><br></p><p><font face="Courier New">PS C:\&gt; get-user "Bill James"</font></p><font face="Courier New"></font><p><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RecipientType<br> ----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -------------<br>Bill James&nbsp;&nbsp; User</font></p><p><font face="Courier New"><br></font></p><p>In this particular instance a user object is found in Exchange Online.&nbsp; When reviewing the recipient type we can see that the recipient is of class USER.&nbsp; If the recipient does not exist on premises and does not exist in Azure Active Directory then why does it exist in Exchange Online Active Directory.&nbsp; Does the object have an external directory object ID?&nbsp; </p><p><br></p><p><font face="Courier New">PS C:\&gt; Get-User "Bill James" | fl externalDirectoryObjectID</font></p><font face="Courier New"></font><p><br><font face="Courier New">ExternalDirectoryObjectId : b1583093-3345-324a-7ae6-09b45e6a1b33</font></p><p><p><font face="Courier New"><br></font></p><p>In this example the user does have an external directory object ID.&nbsp; This means we should be able to locate the object in Azure Active Directory.</p><p><br></p><p><font face="Courier New">PS C:\&gt; Get-MsolUser -ObjectId b1583093-3345-324a-7ae6-09b45e6a1b33<br>
Get-MsolUser : User Not Found.&nbsp; User: b1583093-3345-324a-7ae6-09b45e6a1b33.<br>
At line:1 char:1<br>
+ Get-MsolUser -ObjectId b1583093-3345-324a-7ae6-09b45e6a1b33<br>
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>&nbsp;&nbsp;&nbsp;&nbsp; + CategoryInfo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : OperationStopped: (:) [Get-MsolUser], MicrosoftOnlineException<br>&nbsp;&nbsp;&nbsp;&nbsp; + FullyQualifiedErrorId : Microsoft.Online.Administration.Automation.UserNotFoundException,Microsoft.Online.Admini<br>&nbsp;&nbsp;&nbsp; stration.Automation.GetUser</font></p><p><br></p><p>The user object still cannot be found in Azure Active Directory.</p><p><br></p><p><strong><font color="#ff0000" size="4">In this particular example the Exchange Online Active Directory account was orphaned.&nbsp; The account was removed from Azure Active Directory but the account still exists in the Exchange Online Active Directory which results in the associated contact card displays.</font></strong></p><p><br></p><p>How does one resolve this particular issue.&nbsp; To resolve this issue a support case needs to be opened with Office 365 support.&nbsp; There can be several reasons that an account is orphaned that does not pertain to missing a deletion notification – and support can work with customers to identify these causes or escalate to our product engineering groups.</p><p><br></p><p>If you’re interested in identifying potentially orphaned accounts in bulk – we can utilize the following procedure.</p><p><br></p><ul><li>Gather all objects of TYPE user and export the userprincipalName and externalDirectoryObjectID (if not NULL).</li><ul><li><font face="Courier New">$users=invoke-command {Get-User -ResultSize unlimited | where {$_.externalDirectoryObjectID -ne $NULL} | select-object userPrincipalName,ExternalDirectoryObjectID}</font></li><li><font face="Courier New">$users | export-CSV –path c:\Temp\UsersWithExternalDirectoryObjectID.csv</font></li></ul><li>Scan all user objects for errors locating an external directory object ID in Azure Active Directory.</li><ul><li><font face="Courier New">$users | % { $error.clear() ; get-msolUser –objectID $_.externalDirectoryObjectID ; if ( $error –ne $NULL ) { $row = new-object psobject ; $row | add-member –memberType NoteProperty –value $_.externalDirectoryObjectID –name “Name”&nbsp; $data += $row }}</font></li><li><font face="Courier New">$data | export-csv –path c:\temp\PotentiallyOrphanedUsers.csv</font></li></ul><li>Scan all objects not found in Azure Active Directory to determine deleted status.&nbsp; If deleted user is not orphaned.&nbsp; If not found user if orphaned.</li><ul><li><font face="Courier New">$users | import-csv c:\temp\PotentiallyOrphanedUsers.csv.</font></li><li><font face="Courier New">$users | % { $error.clear() ; get-msolUser –objectID $_.externalDirectoryObjectID –returnDeletedUsers; if ( $error –ne $NULL ) { $row = new-object psobject ; $row | add-member –memberType NoteProperty –value $_.externalDirectoryObjectID –name “Name”&nbsp; $data += $row }}</font></li><li><font face="Courier New">$data | export-csv –path c:\temp\OrphanedUsers.csv</font></li></ul></ul><p><br></p><p>This data can be provided to Office 365 support to assist in reconciliation and remediation.</p>]]></content:encoded>
    </item>
    <item>
      <title>Office 365: A different approach to handling Office 365 group mail flow…</title>
      <link>https://docs.microsoft.com/archive/blogs/timmcmic/office-365-a-different-approach-to-handling-office-365-group-mail-flow</link>
      <pubDate>Wed, 22 Aug 2018 16:32:19 GMT</pubDate>
      <dc:creator><![CDATA[TIMMCMIC]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/timmcmic/?p=3685</guid>
      <description><![CDATA[In Exchange Online an Office 365 Group ( Unified Group / Modern Group ) allows for a new level of...]]></description>
      <content:encoded><![CDATA[<p align="justify">In Exchange Online an Office 365 Group ( Unified Group / Modern Group ) allows for a new level of team collaboration.&nbsp; Office 365 Groups are created directly in Exchange Online and Azure Active Directory.&nbsp; This makes them cloud only objects.&nbsp; The membership and attributes of these objects are maintained directly in Office 365.</p><p align="justify"><br></p><p align="justify">There are legitimate scenarios where on premises applications must be able to send email to the Office 365 groups.&nbsp; By default an Office 365 Group does not write back to on premises Active Directory and therefore is not a valid recipient for Exchange on-premises.&nbsp; To compensate for this Azure Active Directory Connect has a group writeback feature.&nbsp; The group writeback feature allows Office 365 groups to be represented in the on-premises Active Directory.&nbsp; The group membership cannot be managed using the on-premises Active Directory – any changes are overwritten by Azure Active Directory Connect.&nbsp; </p><p align="justify"><br></p><p align="justify">When a group is written back to the on-premises active directory they are not mail enabled by default.&nbsp; Administrators must execute the update-recipient command in order to have the objects represented in the on-premises global address list and for full transport functionality.&nbsp; In some cases this can be an interesting task.&nbsp; There is another option to establish mail flow and have the object appear in the on-premises global address list.</p><p align="justify"><br></p><p align="justify"><strong><font size="5">Utilizing a mail contact…</font></strong></p><p align="justify"><br></p><p align="justify">The process starts by provisioning the Office 365 Group in either Exchange Online or in Azure Active Directory.&nbsp; When the group is provisioned the mail enabled attributes are created – of particular interest to us are the email addresses stamped on the group. </p><p align="justify"><br></p><p align="justify">The group must be updated with an email address that includes domain.mail.onmicrosoft.com.</p><p align="justify"><br></p><p align="justify"><font face="Courier New">PS C:\&gt; Set-UnifiedGroup Officers -emailaddresses:@{add=officers@domain.mail.onmicrosoft.com}</font></p><p align="justify"><br></p><p align="justify">With the new email address present we can gather the attributes that we will use in future commands into a variable.</p><p align="justify"><br></p><p><font face="Courier New">PS C:\&gt; $group=Get-UnifiedGroup -Identity Officers</font></p><p><br><font face="Courier New">
</font></p><p><font face="Courier New">PS C:\&gt; $group.EmailAddresses<br>
smtp:officers@fortmillrescuesquad.mail.onmicrosoft.com<br>
SMTP:Officers@fortmillems.org<br>
smtp:Officers@fortmillrescue.com<br>
SPO:SPO_8bd244fb-60f3-4710-a1ef-40bc7ef584ff@SPO_eefdeca8-5850-4ca5-a160-0716f2d8496e<br>
smtp:Officers@FortMillRescueSquad.onmicrosoft.com</font></p><p><br><font face="Courier New">
PS C:\&gt; $group.DisplayName<br>
Officers</font></p><p><br></p><p><font face="Courier New">PS C:\&gt; $group.name<br>
Officers_7ccca570b9</font></p><p><br></p><p><font face="Courier New">PS C:\&gt; $group.alias<br>
Officers</font></p><p><br></p><p>As with most mail enabled objects in Office 365 this group has a primary email address at the vanity domain @domain.org and a secondary email address at the tenant domain @domain.mail.onmicrosoft.com.&nbsp; I have also noted the other attributes that we will utilize later.&nbsp; </p><p><br></p><p>The next step is to locate or create an Organizational Unit in the on-premises Active Directory to store the on-premises objects we will associated with these groups.&nbsp; An important configuration step here is that the OU must <strong><font color="#ff0000">NOT</font></strong> be included in objects that are replicated by Azure Active Directory Connect to Azure Active Directory.&nbsp; This is performed through the Azure Active Directory Connect configuration wizard.&nbsp; </p><p><br></p><p><a href="https://msdnshared.blob.core.windows.net/media/2018/08/image51.png"><img width="244" height="173" title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/08/image_thumb46.png" border="0"></a></p><p><br></p><p>The last step of the process is to provision mail enabled contacts within the non-sync OU.&nbsp; The mail enabled contacts will:</p><p><br></p><ul><li>Have a primary email address matching the primary email address of the mail enabled group in Office 365.</li><li>Have an external email address matching the tenant specific email address.</li><li>Any number of secondary addresses as necessary.</li><li>Note – the primary and secondary email addresses may be defined automatically by the on-premises recipient policies and match the Office 365 Group depending on the configuration of the on-premises recipient policies.</li></ul><p><br></p><p>In this example I will utilize powershell to create the mail enabled contact and the values previously gathered above.</p><p><br></p><p><font face="Courier New">[PS] C:\&gt;New-MailContact -DisplayName "Officers" -Name "Officers_7ccca570b9" -ExternalEmailAddress "officers@domain.mail.onmicrosoft.com" -Alias "Officers" -PrimarySmtpAddress "officers@domain.org" -OrganizationalUnit "domain.local/TopLevelOU/Contacts/Office365-NoSync"</font></p><font face="Courier New">
</font><p><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Alias&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RecipientType<br>
----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -------------<br>
Officers_7ccca570b9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Officers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MailContact</font></p><p><br></p><p>The contact creation can be verified with get-mailcontact and reviewing the individual attributes set.</p><p><br></p><p>[<font face="Courier New">PS] C:\&gt;$contact=get-mailContact Officers_7ccca570b9</font></p><p><font face="Courier New"><br></font></p><p><font face="Courier New">[PS] C:\&gt;$contact.displayName<br>
Officers</font></p><p><br><font face="Courier New">
[PS] C:\&gt;$contact.name<br>
Officers_7ccca570b9</font></p><p><br><font face="Courier New">
</font></p><p><font face="Courier New">[PS] C:\&gt;$contact.ExternalEmailAddress</font></p><font face="Courier New">
</font><p><br><font face="Courier New">
SmtpAddress&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : officers@domain.mail.onmicrosoft.com<br>
AddressString&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : officers@domain.mail.onmicrosoft.com<br>
ProxyAddressString : SMTP:officers@domain.mail.onmicrosoft.com<br>
Prefix&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : SMTP<br>
IsPrimaryAddress&nbsp;&nbsp; : True<br>
PrefixString&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : SMTP</font></p><p><font face="Courier New"><br></font></p><font face="Courier New">
</font><p><br></p><font face="Courier New">
</font><p><font face="Courier New">[PS] C:\&gt;$contact.Alias<br>
Officers</font></p><p><br><font face="Courier New">
[PS] C:\&gt;$contact.PrimarySmtpAddress</font></p><font face="Courier New">
</font><p><br><font face="Courier New">
Length&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 25<br>
Local&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : officers<br>
Domain&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : domain.org<br>
Address&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : officers@domain.org<br>
IsUTF8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : False<br>
IsValidAddress : True</font></p><font face="Courier New">
</font><p><br></p><font face="Courier New">
</font><p><font face="Courier New">[PS] C:\&gt;$contact.OrganizationalUnit<br>
domain.local/TopLevelOU/Groups/Office365-NoSync</font></p><p><br></p><p>The mail contact will appear in the on premises global address list.</p><p><br></p><p><a href="https://msdnshared.blob.core.windows.net/media/2018/08/image52.png"><img width="244" height="116" title="image" style="margin: 0px" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/08/image_thumb47.png" border="0"></a></p><p><br></p><p>When the contact is selected as a mail target the email will be received at address@domain.org and will forward to address@domain.onmicrosoft.com.&nbsp; Here is an example from the on-premises message tracking logs.</p><p><br></p><p><font face="Courier New">[PS] C:\&gt;Get-MessageTrackingLog -MessageId c652db0a537848d4bf43c6d435bbb79e@domain.org</font></p><font face="Courier New">
</font><p><font face="Courier New">Timestamp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EventId&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sender&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Recipients&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageSubject<br>
---------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ----------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --------------<br>
8/21/2018 8:23:03 PM&nbsp;&nbsp; HAREDIRECTFAIL&nbsp;&nbsp; SMTP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Administrator@OOOO... {officers@OOOOOOOO... Test New Contact<br>
8/21/2018 8:23:03 PM&nbsp;&nbsp; RECEIVE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SMTP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Administrator@OOOO... {officers@OOOOOOOO... Test New Contact<br>
8/21/2018 8:23:17 PM&nbsp;&nbsp; RESOLVE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ROUTING&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Administrator@OOOO... {officers@OOOOOOOO... Test New Contact<br>
8/21/2018 8:23:22 PM&nbsp;&nbsp; AGENTINFO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AGENT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Administrator@OOOO... {officers@OOOOOOOO... Test New Contact<br>
8/21/2018 8:23:25 PM&nbsp;&nbsp; TRANSFER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ROUTING&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Administrator@OOOO... {officers@OOOOOOOO... Test New Contact<br>
8/21/2018 8:23:29 PM&nbsp;&nbsp; SENDEXTERNAL&nbsp;&nbsp;&nbsp;&nbsp; SMTP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Administrator@OOOO... {officers@OOOOOOOO... Test New Contact<br>
8/21/2018 8:22:58 PM&nbsp;&nbsp; RECEIVE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STOREDRIVER&nbsp;&nbsp; Administrator@OOOO... {officers@OOOOOOOO... Test New Contact<br>
8/21/2018 8:23:06 PM&nbsp;&nbsp; SUBMIT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STOREDRIVER&nbsp;&nbsp; Administrator@OOOO... {officers@OOOOOOOO... Test New Contact</font></p><p><font face="Courier New"><br></font></p><p><br></p><p>The Exchange Online message tracking logs show the inbound transmission to Office 365.</p><p><br></p><p><font face="Courier New">PS C:\&gt; Get-MessageTrace -RecipientAddress officers@domain.mail.onmicrosoft.com</font></p><font face="Courier New">
</font><p><font face="Courier New">Received&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sender Address&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Recipient Address&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Subject<br>
--------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -----------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -------<br>
8/21/2018 8:23:28 PM Administrator@domain.org&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; officers@domain.mail.onmicrosoft.com&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Test New Contact</font></p><p><font face="Courier New"><br></font></p><p>When the full message headers are pulled from the message delivered to the group we can additionally validate that the authentication source is internal.&nbsp; The messages are trusted.</p><p><br></p><p><font face="Courier New">26<br></font><a href="https://go.microsoft.com/?linkid=9837867"><font face="Courier New">X-MS-Exchange-Organization-AuthAs</font></a><br><font face="Courier New">Internal</font><p><br><p>When using this process the contact on-premises shows as a mail enabled contact.&nbsp; It will not show as a distribution group – which may impact some peoples abilities to locate within the global address list – for example someone who selects all lists in the address book drop down.&nbsp; If you prefer – you could utilize a distribution list with a single member to achieve the same results.&nbsp; <p><br><p><strong><font size="5">Utilizing a distribution group…</font></strong><p><br><p>The same pre-requisites must be followed.&nbsp; We need to add the additional email address to the unified group, capture the values for the group, and have a prepared organizational unit not synchronized.&nbsp; The process only deviates in how we create the relationship between the on-premises groups and the Office 365 Groups.<p><br><p>The steps of this process include provisioning a distribution group and a mail enabled contacts within the non-sync OU. </p><p><br></p><p>The distribution list will:</p><p><br></p><ul><li>Have a primary email address matching the primary email address of the mail enabled group in Office 365.</li><li>Contain a mail enable contact with an external email address matching the domain.mail.onmicrosoft.com address of the Office 365 Group.</li><li>Any number of secondary addresses as necessary.</li><li>Note – the primary and secondary email addresses may be defined automatically by the on-premises recipient policies and match the Office 365 Group depending on the configuration of the on-premises recipient policies.</li></ul><p><br></p><p>The mail enabled contact will:</p><p><br></p><ul><li>Have an external email address matching the domain.mail.onmicrosoft.com address of the Office 365 Group.</li><li>Be a recipient hidden from the global address list.</li></ul><p><br></p><p>In this example I will utilize powershell to create the mail enabled group and the values previously gathered above.</p><p><br></p><p><font face="Courier New">[PS] C:\&gt;New-DistributionGroup -DisplayName "Officers" -Name "Officers_7cca570b9" -Alias "Officers" -PrimarySmtpAddress
"officers@domain.org" -OrganizationalUnit "domain.local/TopLevelOU/Groups/Office365-NoSync"</font></p><font face="Courier New">
</font><p><br><font face="Courier New">
Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DisplayName GroupType PrimarySmtpAddress<br>
----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ----------- --------- ------------------<br>
Officers_7cca570b9 Officers&nbsp;&nbsp;&nbsp; Universal </font><font face="Courier New">officers@domain.org</font></p><p><br></p><p>Using powershell the mail enabled contact will be created.&nbsp; To avoid any attribute collisions “–contact” was added to the end of each parameter.</p><p><br></p><p><font face="Courier New">[PS] C:\&gt;New-MailContact -DisplayName "Officers-Contact" -Name "Officers_7ccca570b9-Contact" -ExternalEmailAddress "officers@domain.mail.onmicrosoft.com" -Alias "Officers-Contact" -PrimarySmtpAddress "officers-contact@domain.org" –OrganizatisonalUnit "domain.local/TopLevelOU/Contacts/Office365-NoSync"</font></p><font face="Courier New">
</font><p><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Alias&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RecipientType<br>
----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -------------<br>
Officers_7ccca570b9-Conta Officers-Contact&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MailContact<br>
ct</font></p><p><br></p><p>The mail contact can then be hidden from the address list preventing users from locating it rather than the group created.</p><p><br></p><p><font face="Courier New">[PS] C:\&gt;Set-MailContact Officers_7cca570b9-contact -HiddenFromAddressListsEnabled:$TRUE</font></p><p><br></p><p>With the mail contact provisioned it can be added to the distribution group as a member.&nbsp; </p><p><br></p><p><font face="Courier New">[PS] C:\&gt;Add-DistributionGroupMember -Identity Officers_7cca570b9 -Member Officers_7cca570b9-contact</font></p><p><font face="Courier New"><br>
[PS] C:\&gt;Get-DistributionGroupMember -Identity Officers_7cca570b9</font></p><font face="Courier New">
</font><p><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RecipientType<br>
----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -------------<br>
Officers_7cca570b9-contact MailContact</font></p><p><br></p><p>Here is an example of the message tracking log on-premises.&nbsp; The distribution list expansion and redirect to the external recipient can be reviewed.</p><p><br></p><p><font face="Courier New">[PS] C:\&gt;Get-MessageTrackingLog -MessageId "4d19cf9cae67475cb4b41e011f28031d@domain.org"</font></p><font face="Courier New">
</font><p><font face="Courier New">Timestamp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EventId&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sender&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Recipients&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageSubject<br>
---------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ----------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --------------<br>
8/22/2018 2:08:05 PM&nbsp;&nbsp; HAREDIRECTFAIL&nbsp;&nbsp; SMTP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Administrator@OOOO... {officers@OOOOOOOO... Distribution Grou...<br>
8/22/2018 2:08:05 PM&nbsp;&nbsp; RECEIVE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SMTP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Administrator@OOOO... {officers@OOOOOOOO... Distribution Grou...<br>
8/22/2018 2:08:05 PM&nbsp;&nbsp; EXPAND&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ROUTING&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Administrator@OOOO... {officers-contact@... Distribution Grou...<br>
8/22/2018 2:08:05 PM&nbsp;&nbsp; RESOLVE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ROUTING&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Administrator@OOOO... {officers@OOOOOOOO... Distribution Grou...<br>
8/22/2018 2:08:06 PM&nbsp;&nbsp; AGENTINFO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AGENT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Administrator@OOOO... {officers@OOOOOOOO... Distribution Grou...<br>
8/22/2018 2:08:06 PM&nbsp;&nbsp; TRANSFER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ROUTING&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Administrator@OOOO... {officers@OOOOOOOO... Distribution Grou...<br>
8/22/2018 2:08:06 PM&nbsp;&nbsp; DROP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ROUTING&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Administrator@OOOO... {officers@OOOOOOOO... Distribution Grou...<br>
8/22/2018 2:08:06 PM&nbsp;&nbsp; TRANSFER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ROUTING&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Administrator@OOOO... {officers@OOOOOOOO... Distribution Grou...<br>
8/22/2018 2:08:07 PM&nbsp;&nbsp; SENDEXTERNAL&nbsp;&nbsp;&nbsp;&nbsp; SMTP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Administrator@OOOO... {officers@OOOOOOOO... Distribution Grou...<br>
8/22/2018 2:08:05 PM&nbsp;&nbsp; RECEIVE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STOREDRIVER&nbsp;&nbsp; Administrator@OOOO... {officers@OOOOOOOO... Distribution Grou...<br>
8/22/2018 2:08:05 PM&nbsp;&nbsp; SUBMIT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STOREDRIVER&nbsp;&nbsp; Administrator@OOOO... {officers@OOOOOOOO... Distribution Grou...</font></p><p><br></p><p>A message trace in Office 365 confirms receipt of the message to the Office 365 Group.</p><p><br></p><p><font face="Courier New">PS C:\&gt; Get-MessageTrace -RecipientAddress officers@fortmillrescuesquad.mail.onmicrosoft.com</font></p><font face="Courier New">
</font><p><font face="Courier New">Received&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sender Address&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Recipient Address&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Subject<br>
--------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -----------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -------<br>
8/22/2018 2:08:06 PM Administrator@domain.org&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; officers@domain.mail.onmicrosoft.com&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Distribution Gr...</font></p><p><font face="Courier New"><br></font></p><p>When the full message headers are pulled from the message delivered to the group we can additionally validate that the authentication source is internal.&nbsp; The messages are trusted.</p><p><br></p><p><font face="Courier New">26<br></font><a href="https://go.microsoft.com/?linkid=9837867"><font face="Courier New">X-MS-Exchange-Organization-AuthAs</font></a><br><font face="Courier New">Internal</font></p><p><br></p><p>Utilizing this method the on premises object appears as a mail enabled distribution group with a single member.&nbsp; It will appear in the global address list as a group object and you can apply many of the same group properties – such as moderation and authentication – should it be required.</p><p><br></p><p><strong><font size="5">Senders and authentication…</font></strong><p><br></p><p>The steps provided above yield email that arrives in Office 365 Groups as internal.&nbsp; This considers the message to be trusted and authenticated.&nbsp; In the testing performed above an on-premises mailbox was utilized as the source of the messages.&nbsp; In many cases administrators are considering this plan or group writeback to allow the on premises organization to receive internet email as the primary MX and route to the Office 365 Groups &lt;or&gt; to allow internal applications to relay to Office 365 Groups.</p><p><br></p><p>When messages do not originate in the context of an authenticated user the connector status is utilized to determine the security of a message.&nbsp; When the MX record points to an on premises server – it should be directed to a connector that has anonymous rights only.&nbsp; This connector will not elevate messages received to an internal status.&nbsp; In this test I utilized telnet to send an email through a connector where only the anonymous rights are present.&nbsp; The header shows an authentication status of Anonymous.</p><p><br></p><p>24<br><a href="https://go.microsoft.com/?linkid=9837867">X-MS-Exchange-Organization-AuthAs</a><br>Anonymous<p><br></p><p>When trusted internal applications require the ability to send securely to Office 365 Groups a connector can be leveraged that utilizes the externally secured permissions.&nbsp; I have written a document here that some may find helpful.&nbsp; <a title="https://blogs.technet.microsoft.com/timmcmic/2018/04/22/office-365-trusting-application-emails-sent-through-internal-relay/" href="https://blogs.technet.microsoft.com/timmcmic/2018/04/22/office-365-trusting-application-emails-sent-through-internal-relay/">https://blogs.technet.microsoft.com/timmcmic/2018/04/22/office-365-trusting-application-emails-sent-through-internal-relay/</a>&nbsp; In this test I utilized an MFP to send an email through a connector where the externally secured rights were applied and restrictions were in placed based on source IP address.&nbsp; The header shows an authentication status of Internal.</p><p><br></p><p>25<br><a href="https://go.microsoft.com/?linkid=9837867">X-MS-Exchange-Organization-AuthAs</a><br>Internal<p><br><p>This information can be useful in understanding how rights are applied to distribution groups and the security of inbound mail flow.]]></content:encoded>
    </item>
    <item>
      <title>Office 365: Unable to modify group membership in the Office 365 portal…</title>
      <link>https://docs.microsoft.com/archive/blogs/timmcmic/office-365-unable-to-modify-group-membership-in-the-office-365-portal</link>
      <pubDate>Tue, 21 Aug 2018 13:59:57 GMT</pubDate>
      <dc:creator><![CDATA[TIMMCMIC]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/timmcmic/?p=3635</guid>
      <description><![CDATA[In Office 365 cloud only groups can have their membership managed through the Office 365 portal or...]]></description>
      <content:encoded><![CDATA[<p align="justify">In Office 365 cloud only groups can have their membership managed through the Office 365 portal or through the Azure Active Directory powershell commands.&nbsp; As with on premises Active Directory multiple group types can be created and managed.&nbsp; You can also create direct user membership in groups as well as nested group membership.&nbsp; I recently had an interesting experience with a customer attempting to manage nested group membership.</p><p align="justify"><br></p><p align="justify">There is a top level group in our example called TopLevelGroup.&nbsp; The group contained two members – an individual user account and another nested group.</p><p align="justify"><br></p><p><font face="Courier New">PS C:\&gt; Get-MsolGroupMember -GroupObjectId a988084b-8642-4406-b25d-8687b8c509e7</font></p><font face="Courier New">
</font><p><font face="Courier New">GroupMemberType EmailAddress&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DisplayName<br>
--------------- ------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -----------<br>
User&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tmcmichael@domain.com&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Timothy McMichael<br>
Group&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SubGroup0</font></p><p><br></p><p><a href="https://msdnshared.blob.core.windows.net/media/2018/08/image45.png"><img width="244" height="130" title="image" style="margin: 0px" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/08/image_thumb42.png" border="0"></a></p><p><br></p><p>The group membership is consistent in both powershell and the portal.</p><p><br></p><p>There is a sub group in our example called SubGroup0.&nbsp; The groups contains a single member – an individual user account.</p><p><br></p><p><font face="Courier New">PS C:\&gt; Get-MsolGroupMember -GroupObjectId 8966d905-c966-4d2e-89ea-a151f1534252</font></p><font face="Courier New">
</font><p><font face="Courier New">GroupMemberType EmailAddress&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DisplayName<br>
--------------- ------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -----------<br>
User&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tmcmichael@domain.com&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Timothy McMichael</font></p><p><br></p><p><a href="https://msdnshared.blob.core.windows.net/media/2018/08/image46.png"><img width="244" height="127" title="image" style="margin: 0px" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/08/image_thumb43.png" border="0"></a></p><p><br></p><p>The group membership is consistent in both powershell and the portal.</p><p><br></p><p>Through the course of administration the individual user account was accidentally removed from the top level group.&nbsp; </p><p><br></p><p><font face="Courier New">PS C:\&gt; Get-MsolGroupMember -GroupObjectId a988084b-8642-4406-b25d-8687b8c509e7</font></p><font face="Courier New">
</font><p><font face="Courier New">GroupMemberType EmailAddress DisplayName<br>
--------------- ------------ -----------<br>
Group&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SubGroup0</font></p><p><br></p><p>When the accidental deletion was discovered the administrator attempted to add the user back to the top level group.&nbsp; To perform this operation the administrator selected the group within the portal – selected the edit members option – and the add members operation button.&nbsp; This presented the administrator with the list of users to add to the group.&nbsp; Using the search operation the user was located.&nbsp; When the user was found it was noted that the user already had a checkbox next to them and the save button was greyed out.&nbsp; The user could not be added through the portal interface.</p><p><br></p><p><a href="https://msdnshared.blob.core.windows.net/media/2018/08/image47.png"><img width="244" height="127" title="image" style="margin: 0px" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/08/image_thumb44.png" border="0"></a></p><p><br></p><p>You can also attempt to modify the groups that an individual is a member of through the individual user properties.&nbsp; The user is located under active users and is selected for properties.&nbsp; Under Group Membership select the edit option then the add memberships button.&nbsp; This brings up the group search option.&nbsp; When searching for the group the same behavior is noted.&nbsp; The group already has the checkbox selected as if the user is a member.&nbsp; </p><p><br></p><p><a href="https://msdnshared.blob.core.windows.net/media/2018/08/image48.png"><img width="244" height="125" title="image" style="margin: 0px" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/08/image_thumb45.png" border="0"></a></p><p><br></p><p>Why is this occurring?&nbsp; The portal is actually displaying the group membership based on expanding all subgroup members.&nbsp; In this case the individual user account continues to be a member of the subgroup.&nbsp; Since it is a member of the subgroup the portal expands it as a member of the top level group.&nbsp; If this is the case – how do I get the user to be a direct member of the top level group if that is the desire?&nbsp; In order to perform this operation powershell must be utilized.&nbsp; Here is an example…</p><p><br></p><p>Get the object ID of the individual user.</p><p><br></p><p><font face="Courier New">PS C:\&gt; get-msoluser -UserPrincipalName tmcmichael@domain.com | select-object objectID</font></p><font face="Courier New">
</font><p><font face="Courier New">ObjectId<br>
--------<br>
61425db0-7812-49dd-b6aa-1a732bdec569</font></p><font face="Courier New">
</font><p><br></p><p>Get the object ID of the top level group.</p><p><br><font face="Courier New">
PS C:\&gt; Get-MsolGroup -SearchString TopLevelGroup | select-object objectID</font></p><font face="Courier New">
</font><p><font face="Courier New">ObjectId<br>
--------<br>
a988084b-8642-4406-b25d-8687b8c509e7</font></p><font face="Courier New">
</font><p><br></p><p>Add the user to the top level group.</p><p><br><font face="Courier New">
PS C:\&gt; Add-MsolGroupMember -GroupObjectId a988084b-8642-4406-b25d-8687b8c509e7 -GroupMemberType User -GroupMemberObjectId 61425db0-7812-49dd-b6aa-1a732bdec569</font></p><p><br></p><p>Validate the group membership is correct.<font face="Courier New"><p><br></p></font></p><p><font face="Courier New">PS C:\&gt; Get-MsolGroupMember -GroupObjectId a988084b-8642-4406-b25d-8687b8c509e7</font></p><font face="Courier New">
</font><p><font face="Courier New">GroupMemberType EmailAddress&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DisplayName<br>
--------------- ------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -----------<br>
User&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tmcmichael@domain.com&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Timothy McMichael<br>
Group&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SubGroup0</font></p><p><br></p><p>Using these steps the user can be restored back as a member to the top level group.</p>]]></content:encoded>
    </item>
    <item>
      <title>Office 365: Correcting users who have had a mailbox in the cloud and on-premises…</title>
      <link>https://docs.microsoft.com/archive/blogs/timmcmic/office-365-correcting-users-who-have-had-a-mailbox-in-the-cloud-and-on-premises</link>
      <pubDate>Sun, 15 Jul 2018 18:15:55 GMT</pubDate>
      <dc:creator><![CDATA[TIMMCMIC]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/timmcmic/?p=3525</guid>
      <description><![CDATA[In some previous blog posts I have outlined conditions where users may have inadvertently had a...]]></description>
      <content:encoded><![CDATA[<p>In some previous blog posts I have outlined conditions where users may have inadvertently had a mailbox both on premises and in the cloud at the same time.&nbsp; The following links outline these scenarios and how to attempt to proactively identity users that may fall in this condition.</p><p><br></p><p><a href="https://blogs.technet.microsoft.com/timmcmic/2018/04/10/office-365-detecting-and-preventing-duplicate-mailboxes-between-on-premises-and-exchange-online/">https://blogs.technet.microsoft.com/timmcmic/2018/04/10/office-365-detecting-and-preventing-duplicate-mailboxes-between-on-premises-and-exchange-online/</a><p><a href="https://blogs.technet.microsoft.com/timmcmic/2017/09/10/office-365-users-have-both-a-cloud-and-on-premises-mailbox/">https://blogs.technet.microsoft.com/timmcmic/2017/09/10/office-365-users-have-both-a-cloud-and-on-premises-mailbox/</a><p><a href="https://blogs.technet.microsoft.com/timmcmic/2018/04/09/office-365-licensing-mail-users-results-in-mailbox-objects/">https://blogs.technet.microsoft.com/timmcmic/2018/04/09/office-365-licensing-mail-users-results-in-mailbox-objects/</a><p><br><p>With an understanding of the scenarios that lead to this and how to proactively identity users administrators can quickly identify the conditions that lead to this occurring and work to prevent it for other accounts moving forward.&nbsp; How do we handle an account though that has encountered this condition?<p><br><p>There are two methods to handle accounts that have had mailboxes both on premises and in the cloud.&nbsp; I will outline the options below for administrators to consider – as each has benefits and drawbacks.<p><br><p><strong><font size="5">OPTION #0:&nbsp; Delete the existing Azure Active Directory Account</font></strong><p><br><p>The Exchange Online mailbox object is linked to an Azure Active Directory account.&nbsp; When the azure active directory account is removed and subsequently purged from the recycle bin the Exchange Online mailbox is placed in a soft deleted state.&nbsp; During the next Azure Active Directory Connect synchronization cycle the user will be resynchronized to Azure Active Directory as new and will carry forward the Exchange attribute from on premises.&nbsp; This should result in a mail user created in Exchange Online and not a mailbox object.&nbsp; The mailbox object can now be migrated from on premises and the associated soft deleted mailbox merged into the original to retain data.<p><br><p>There are several benefits to this approach:<p><br><ul><li>Deleting and purging an account from Azure Active Directory is generally a simple process.</li><li>The mailbox can be immediately migrated from on-premises once the mail user object is provisioned.</li><li>Exchange Online supports the administrator merging mailbox contents.&nbsp; The soft deleted mailbox belonging to the user can be merged into the migrated mailbox allowing for no messages to be lost.</li></ul><p><br></p><p>There are several potential drawbacks to this approach:</p><p><br></p><ul><li>This is a complete Azure Active Directory account reset.</li><li>All permissions granted to this account within the service – for example Sharepoint site ownership / OneDrive / and any other services will be lost.</li><li>Any membership in cloud only distribution lists – for example Office 365 groups – will be lost.</li><li>There may be a brief interruption in mail flow to this account while the deletion and recreation of the Exchange Online object occurs.</li></ul><p><br></p><p>In Exchange Online we can verify the presence of a mailbox that matches an on premises account.</p><p><br></p><p>Exchange Online:</p><p><br></p><p><font face="Courier New">PS C:\&gt; Get-Mailbox testduplicate</font></p><font face="Courier New">
</font><p><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Alias&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Database&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ProhibitSendQuota&nbsp;&nbsp;&nbsp; ExternalDirectoryObjectId<br>
----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -----------------&nbsp;&nbsp;&nbsp; -------------------------<br>
testduplicate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; testduplicate&nbsp;&nbsp; NAMPR06DG282-db128&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 49.5 GB (53,150,2... e3eaf6c1-f012-42e9-a54...</font></p><p><br></p><p>On-Premises Exchange:</p><p><br></p><p><font face="Courier New">[PS] C:\&gt;Get-Mailbox testduplicate</font></p><font face="Courier New">
</font><p><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Alias&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ServerName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ProhibitSendQuota<br>
----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ----------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -----------------<br>
Test Duplicate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; testduplicate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; azure-mbx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Unlimited</font></p><p><br></p><p>In the portal we can verify that the account is synchronized from the on-premises active directory.</p><p><br></p><p><a href="https://msdnshared.blob.core.windows.net/media/2018/07/image78.png"><img width="244" height="12" title="image" style="margin: 0px" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/07/image_thumb73.png" border="0"></a></p><p><br></p><p>The synchronized user has now been verified to have both a mailbox in the cloud and on-premises.</p><p><br></p><p>To begin the recovery the administrator should capture the Exchange Online mailbox information – specifically the Exchange GUID of the mailbox.&nbsp; This GUID will be utilized in the recovery of the soft deleted mailbox.</p><p><br></p><p><font face="Courier New">PS C:\&gt; Get-Mailbox testduplicate | select-object ExchangeGUID</font></p><font face="Courier New">
</font><p><font face="Courier New">ExchangeGuid<br>
------------<br>
fa38094d-cbfd-46b7-82f6-8a3022e39a66</font></p><p><br></p><p>Using Azure Active Directory powershell the account can be removed and purged from the recycle bin.</p><p><br></p><p><font face="Courier New">PS C:\&gt; Remove-MsolUser -UserPrincipalName testduplicate@domain.com -Force<br>
PS C:\&gt; Remove-MsolUser -UserPrincipalName testduplicate@domain.com -Force –RemoveFromRecycleBin</font></p><p><br></p><p>The deletion can be verified using powershell.&nbsp; The user cannot be found in either the active users list or the recycle bin – this indicates a successful deletion.</p><p><br></p><p><font face="Courier New">PS C:\&gt; Get-MsolUser -UserPrincipalName testduplicate@domain.com<br>
Get-MsolUser : User Not Found.&nbsp; User: <a><font color="#000000">testduplicate@domain.com</font></a>.<br>
At line:1 char:1<br>
+ Get-MsolUser -UserPrincipalName testduplicate@domain.com<br>
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>&nbsp;&nbsp;&nbsp;&nbsp; + CategoryInfo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : OperationStopped: (:) [Get-MsolUser], MicrosoftOnlineException<br>&nbsp;&nbsp;&nbsp;&nbsp; + FullyQualifiedErrorId : Microsoft.Online.Administration.Automation.UserNotFoundException,Microsoft.Online.Administration.Automation.GetUser</font></p><font face="Courier New">
</font><p><font face="Courier New">PS C:\&gt; Get-MsolUser -UserPrincipalName <a><font color="#000000">testduplicate@domain.com</font></a><font color="#000000"> -ReturnDeletedUsers<br>
Get-MsolUser : User Not Found.&nbsp; User: </font><a><font color="#000000">testduplicate@domain.com</font></a><font color="#000000">.<br>
At line:1 char:1<br>
+ Get-MsolUser -UserPrincipalName testduplicate@domain.com -Return ...<br>
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>&nbsp;&nbsp;&nbsp;&nbsp; + CategoryInfo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : OperationStopped: (:) [Get-MsolUser], MicrosoftOnlineException<br>&nbsp;&nbsp;&nbsp;&nbsp; + FullyQualifiedErrorId : Microsoft.Online.Administration.Automation.UserNotFoundException,Microsoft.Online.Administration.Automation.GetUser</font></font></p><p><br></p><p>In Exchange Online we can confirm that the mailbox object is no longer present.</p><p><br></p><p><font face="Courier New">PS C:\&gt; Get-Mailbox testduplicate<br>
The operation couldn't be performed because object 'testduplicate' couldn't be found on<br>
'CO1PR06A002DC02.NAMPR06A002.prod.outlook.com'.<br>&nbsp;&nbsp;&nbsp;&nbsp; + CategoryInfo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : NotSpecified: (:) [Get-Mailbox], ManagementObjectNotFoundException<br>&nbsp;&nbsp;&nbsp;&nbsp; + FullyQualifiedErrorId : [Server=DM6PR06MB4026,RequestId=76d78567-e257-4608-a175-2dc3cd8658c2,TimeStamp=7/15/2018<br>&nbsp;&nbsp;&nbsp;&nbsp; 3:51:45 PM] [FailureCategory=Cmdlet-ManagementObjectNotFoundException] 260B3828,Microsoft.Exchange.Management.Rec<br>&nbsp;&nbsp; ipientTasks.GetMailbox<br>&nbsp;&nbsp;&nbsp;&nbsp; + PSComputerName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : ps.outlook.com</font></p><p><br></p><p>The duplicate online mailbox should now be in a soft deleted state.</p><p><br></p><p><font face="Courier New">PS C:\&gt; Get-Mailbox testduplicate -SoftDeletedMailbox</font></p><font face="Courier New">
</font><p><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Alias&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Database&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ProhibitSendQuota&nbsp;&nbsp;&nbsp; ExternalDirectoryObjectId<br>
----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -----------------&nbsp;&nbsp;&nbsp; -------------------------<br>
Test Duplicate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; testduplicate&nbsp;&nbsp; NAMPR06DG282-db128&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 49.5 GB (53,150,2...</font></p><p><br></p><p>At this time the online portion of the accounts have been cleaned up.&nbsp; Azure Active Directory Connect synchronization can be performed and the object should be reprovisioned from the on-premises directory.</p><p><br></p><p><font face="Courier New">PS C:\&gt; Get-MsolUser -UserPrincipalName testduplicate@domain.com</font></p><font face="Courier New">
</font><p><font face="Courier New">UserPrincipalName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DisplayName&nbsp;&nbsp;&nbsp; isLicensed<br>
-----------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -----------&nbsp;&nbsp;&nbsp; ----------<br>
testduplicate@domain.com&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Test Duplicate False</font></p><p><br></p><p>The object should now be successfully provisioned as a mail user within Exchange Online.&nbsp; This is the expected recipient type for an on premises mailbox.</p><p><br></p><p><font face="Courier New">PS C:\&gt; Get-MailUser testduplicate</font></p><font face="Courier New">
</font><p><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RecipientType<br>
----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -------------<br>
Test Duplicate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MailUser</font></p><p><br></p><p>At this time the on-premises mailbox can be migrated to Office 365.&nbsp; This is an optional step – but would be required in order to perform the merge of any data contained within the service at this time.</p><p><br></p><p><a href="https://msdnshared.blob.core.windows.net/media/2018/07/image79.png"><img width="244" height="189" title="image" style="margin: 0px" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/07/image_thumb74.png" border="0"></a></p><p><br></p><p>When the migration has completed successfully the object will become a mailbox object within Exchange Online.</p><p><br></p><p><font face="Courier New">PS C:\&gt; Get-Mailbox testduplicate</font></p><font face="Courier New">
</font><p><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Alias&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Database&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ProhibitSendQuota&nbsp;&nbsp;&nbsp; ExternalDirectoryObjectId<br>
----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -----------------&nbsp;&nbsp;&nbsp; -------------------------<br>
Test Duplicate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; testduplicate&nbsp;&nbsp; NAMPR06DG143-db051&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 99 GB (106,300,44... 7ba2fffc-e3ce-4d65-b350-d0a3763e5ffa</font></p><p><br></p><p>To complete our recovery the mailbox restoration can be processed.&nbsp; To begin we need the Exchange GUID of the migrated mailbox.</p><p><br></p><p><font face="Courier New">PS C:\&gt; Get-Mailbox testduplicate | Select-Object exchangeGUID</font></p><font face="Courier New">
</font><p><font face="Courier New">ExchangeGuid<br>
------------<br>
e683f1ee-4c85-4b99-b4bc-7511572a361d</font></p><p><br></p><p>The Exchange GUID for the soft deleted mailbox was previously recorded.&nbsp; Using this information we can begin the merge process.</p><p><br></p><p><font face="Courier New">New-MailboxRestoreRequest -SourceMailbox fa38094d-cbfd-46b7-82f6-8a3022e39a66 -TargetMailbox e683f1ee-4c85-4b99-b4bc-7511572a361d –AllowLegacyDNMismatch</font></p><p><br></p><p><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TargetMailbox Status<br>
----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ------------- ------<br>
MailboxRestore testduplicate <strong><font color="#ff0000">Queued</font></strong></font></p><p><br></p><p>The merge can be monitored with get-mailboxRestoreRequest.&nbsp; </p><p><br></p><p><font face="Courier New">PS C:\Users\timmcmic&gt; Get-MailboxRestoreRequest</font></p><font face="Courier New">
</font><p><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TargetMailbox Status<br>
----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ------------- ------<br>
MailboxRestore testduplicate <strong><font color="#ff0000">InProgress</font></strong></font></p><p><br></p><p><font face="Courier New">PS C:\Users\timmcmic&gt; Get-MailboxRestoreRequest</font></p><font face="Courier New"></font><p><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TargetMailbox Status<br> ----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ------------- ------<br>MailboxRestore testduplicate <strong><font color="#ff0000">Completed</font></strong></font></p><p><br></p><p>At this time this option has completed.</p><p><br></p><p><br><p><strong><font size="5">OPTION #1:&nbsp; Remove the Exchange Online License</font></strong></p><p><br></p><p>The Exchange Online mailbox object is linked to an Azure Active Directory account.&nbsp; When the Exchange Online license is removed from the object the associated mailbox will be made unavailable.&nbsp; This should result in a mail user created in Exchange Online and not a mailbox object.&nbsp; The mailbox object can now be migrated from on premises and the associated soft deleted mailbox merged into the original to retain data.</p><p><br></p><p>There are several benefits to this approach:<p><br><ul><li>The existing Azure Active Directory account is preserved.</li><li>All permissions assigned to the object are preserved across Sharepoint and OneDrive etc.&nbsp; (This assumes ONLY the Exchange Online license is removed…)</li></ul><p><br></p><p>There are several potential drawbacks to this approach:</p><p><br></p><ul><li>The Exchange Online mailbox is not recoverable.&nbsp; Any data contained will be lost.</li><li>There may be a brief interruption in mail flow to this account while the deletion and recreation of the Exchange Online object occurs.</li></ul><p><br></p><p>To begin the mailbox can be confirmed in Exchange Online and On-Premises.</p><p><br></p><p>Exchange Online:</p><p><br></p><p><font face="Courier New">PS C:\&gt; Get-Mailbox testlicense</font></p><font face="Courier New">
</font><p><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Alias&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Database&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ProhibitSendQuota&nbsp;&nbsp;&nbsp; ExternalDirectoryObjectId<br>
----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -----------------&nbsp;&nbsp;&nbsp; -------------------------<br>
TestLicense&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TestLicense&nbsp;&nbsp;&nbsp;&nbsp; NAMPR06DG103-db019&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 49.5 GB (53,150,2... c686dfd9-aa4a-4b54-8680-cc0d4c9b0a62</font></p><p><br></p><p>On-Premise Exchange:</p><p><br></p><p><font face="Courier New">[PS] C:\&gt;Get-Mailbox testlicense</font></p><font face="Courier New">
</font><p><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Alias&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ServerName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ProhibitSendQuota<br>
----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ----------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -----------------<br>
Test License&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; testlicense&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; azure-mbx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Unlimited</font></p><p><br></p><p>In the portal we can confirm that the account is synchronized from the on-premises Active Directory.</p><p><br></p><p><a href="https://msdnshared.blob.core.windows.net/media/2018/07/image80.png"><img width="244" height="12" title="image" style="margin: 0px" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/07/image_thumb75.png" border="0"></a></p><p><br></p><p>The synchronized user has now been verified to have both a mailbox in the cloud and on-premises.</p><p><br></p><p>The Exchange Online license can now be removed through the portal.</p><p><br></p><p><a href="https://msdnshared.blob.core.windows.net/media/2018/07/image81.png"><img width="178" height="244" title="image" style="margin: 0px" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/07/image_thumb76.png" border="0"></a></p><p><br></p><p>When the license removal has synchronized into Exchange Online the mailbox will be converted to a mail user.</p><p><br></p><p><font face="Courier New">PS C:\&gt; Get-MailUser testLicense</font></p><font face="Courier New">
</font><p><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RecipientType<br>
----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -------------<br>
Test License&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MailUser</font></p><p><br></p><p>When the conversion to a mail user has occurred the mailbox can be migrated from on premises.&nbsp; If the license is re-assigned the object will convert back to a mailbox.&nbsp; Assigning an Exchange Online license should be withheld until the mailbox is migrated (or the previous recipient type is changed – reference the previously attached blogs) allowing it to be safe to apply a license.</p><p><br></p><p><br><strong><font size="5">OPTION #3:&nbsp; The user has no license but has an error with correlation ID in Azure Active Directory</font></strong></p><p><br></p><p>I recently worked with a customer where we were looking at pursuing Option #2 as documented in this article.&nbsp; With Option #2 our plan was to remove licenses, migrate the mailboxes, and forgo any ability to recover data that might be contained within the Office 365 mailbox.&nbsp; </p><p><br></p><p>When reviewing the properties of the user in the Office 365 Portal (Azure Active Directory) the user had no Exchange license currently assigned.&nbsp; When reviewing the object within Exchange Online the mailbox object existed as a User Mailbox type.</p><p><br></p><p><font face="Courier New">PS C:\&gt; Get-Mailbox testlicense</font></p><font face="Courier New"></font><p><font face="Courier New">Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Alias&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Database&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ProhibitSendQuota&nbsp;&nbsp;&nbsp; ExternalDirectoryObjectId<br> ----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -----------------&nbsp;&nbsp;&nbsp; -------------------------<br>TestLicense&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TestLicense&nbsp;&nbsp;&nbsp;&nbsp; NAMPR06DG103-db019&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 49.5 GB (53,150,2... c686dfd9-aa4a-4b54-8680-cc0d4c9b0a62</font></p><p><font face="Courier New"><br></font></p><p>One issue that we noted in the properties of the user account within the Office 365 portal was an error condition and a correlation ID.</p><p><br></p><p><a href="https://msdnshared.blob.core.windows.net/media/2018/08/image14.png"><img width="244" height="28" title="image" style="margin: 0px" alt="image" src="https://msdnshared.blob.core.windows.net/media/2018/08/image_thumb12.png" border="0"></a></p><p><br></p><p>In addition executing <font face="Courier New">get-msolUser –userPrincipalName testLicense@domain.com</font> shows the errors field populated and validation status error.</p><p><br></p><p><font face="Courier New">Errors&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {Microsoft.Online.Administration.ValidationError, Microsoft.Online.Administration.ValidationError}</font></p><p><font face="Courier New">ValidationStatus&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Error</font><br>
</p><p><font face="Courier New"><br></font></p><p>The presence of a correlation ID and error indicates that there are synchronization and object validation issues between Exchange Online and Azure Active Directory.&nbsp; Due to the fact that there are multiple reasons this could occur – especially for accounts that are in this state – my recommendation is we fail back to Option #1 for the recovery of these types of accounts.</p>]]></content:encoded>
    </item>
    <item>
      <title>Office 365: Exchange Migrations and the data migrated information…</title>
      <link>https://docs.microsoft.com/archive/blogs/timmcmic/office-365-exchange-migrations-and-the-data-migrated-information</link>
      <pubDate>Tue, 03 Jul 2018 16:27:27 GMT</pubDate>
      <dc:creator><![CDATA[TIMMCMIC]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/timmcmic/?p=3435</guid>
      <description><![CDATA[In Office 365 migration batches are the preferred method of establishing mailbox migrations to...]]></description>
      <content:encoded><![CDATA[<p>In Office 365 migration batches are the preferred method of establishing mailbox migrations to Office 365.&nbsp; When a migration batch is established the users included in the batch are represented as migration users within the service.&nbsp; </p><p><br></p><p>Within the context of each migration user is where we track the migration process.&nbsp; One of the data points contained within the migration process is the DATA MIGRATED tab.&nbsp; When enumerating the users within a migration batch, and selecting a migration user, this information is visible within the portal.</p><p><br></p><p><font face="Courier New">USER@domain.com</font><p><font face="Courier New">Status: Synced</font><p><font face="Courier New">USER@domain.com Skipped item details</font><p><font face="Courier New"><strong><font color="#ff0000">Data migrated: 1.4 GB ‎(1,503,707,494 bytes)‎</font></strong><br>Migration rate: 0 B ‎(0 bytes)‎<br>Error:<br>Report: USER@domain.com Download the report for this user</font><p><font face="Courier New">Last successful sync date: 7/2/2018 6:12:47 PM</font><p><font face="Courier New">Status:</font><p><font face="Courier New">Queued duration: 00:00:09.5015268<br>In-progress duration: 6.04:36:17.0329441<br>Synced duration: 36.10:02:28.6166962<br>Stalled duration: 02:12:43.4040899</font><p><br><p>One of the common questions and comments that I receive is that the DATA MIGRATED field may often reflect sizes that are slightly more to drastically more than the mailbox being migrated.&nbsp; This on occasion leads to confusion about the migration process and the data that was migrated.&nbsp; Here’s an example.<p><br><p>I recently migrated a mailbox from an on premises Exchange 2010 installation.&nbsp; With Exchange 2010 being the source we can already expect that the data migrated to the service to be more than the reported mailbox size due to the inconsistencies in the methods Exchange 2010 reports mailbox sizes.&nbsp; At the time that the mailbox migration completed the following was reported within the migration portal.<p><br><p><font face="Courier New">user@domain.com</font><p><font face="Courier New">Status: Completed</font><p><font face="Courier New">user@domain.com </font><a href="https://outlook.office365.com/ecp/Migration/ViewMigrationBatchUserDetails.aspx?reqId=1530633420464&amp;isNarrow=t&amp;id=8fe2623f-ccd7-4e50-8000-41b8e089e372#"><font face="Courier New">Skipped item details</font></a><p><font face="Courier New"><strong><font color="#ff0000">Data migrated: 2.485 GB ‎(2,668,722,884 bytes)‎</font></strong><br>Migration rate: 0 B ‎(0 bytes)‎<br>Error:<br>Report: user@domain.com </font><a href="https://outlook.office365.com/ecp/Migration/ViewMigrationBatchUserDetails.aspx?reqId=1530633420464&amp;isNarrow=t&amp;id=8fe2623f-ccd7-4e50-8000-41b8e089e372#"><font face="Courier New">Download the report for this user</font></a><p><font face="Courier New">Last successful sync date: 7/3/2018 3:14:56 PM</font><p><font face="Courier New">Status:</font><p><font face="Courier New">Queued duration: 00:00:08.5213717<br>In-progress duration: 01:01:30.1987283<br>Synced duration: 00:00:00<br>Stalled duration: 01:21:09.3851867</font><p><br><p>In this example the data migrated field shows 2.485 GB migrated.&nbsp; If we review the migration statistics associated with the mailbox we can get an idea of the reported mailbox size to be migrated.&nbsp; <p><br><p><font face="Courier New">PS C:\&gt; Get-MigrationUserStatistics user@domain.com -IncludeReport | Export-Clixml -Path c:\temp\migration.xml</font></p><font face="Courier New">
</font><p><font face="Courier New">PS C:\&gt; $stats=Import-Clixml -Path C:\temp\migration.xml</font></p><font face="Courier New">
</font><p><font face="Courier New">PS C:\&gt; $stats.EstimatedTotalTransferSize<br><strong><font color="#ff0000">
1.501 GB (1,612,092,317 bytes)</font></strong></font></p><p><br></p><p>In this particular instance the estimated mailbox transfer size was 1.5 GB.&nbsp; If we look at the data migrated verses the estimated data transfer size the difference is almost 1 GB difference.&nbsp; Even accounting for reporting inconsistencies from Exchange 2010 mailbox size estimates 1 GB is a significant difference.&nbsp; Why has this happened?</p><p><br></p><p>The data migrated field is a summary counter of all data transmissions between Office 365 and the on premises Exchange environment.&nbsp; It is NOT a reflection of the data migrated verses the estimated mailbox size.&nbsp; In this particular instance the mailbox move process was interrupted several times.&nbsp; The interruptions may be the result of throttling, connection problems, or other migration interruptions.&nbsp; </p><p><br></p><p><font face="Courier New"><strong><font color="#ff0000">7/3/2018 2:22:35 PM [CO2PR07MB2711] The job has been paused temporarily due to unfavorable server health, with request throttling state: 'StalledDueToTarget_DiskLatency'. It will automatically resume after '7/3/2018 2:23:35 PM'.</font></strong><br>
7/3/2018 2:28:38 PM [CO2PR07MB2711] The Microsoft Exchange Mailbox Replication service 'CO2PR07MB2711.namprd07.prod.outlook.com' (15.20.930.16 ServerCaps:FFFFFF, ProxyCaps:0FFFC7FD6DFDBF5FFFFFCB07FFFF, MailboxCaps:, legacyCaps:FFFFFF) is examining the request.<br>
7/3/2018 2:28:38 PM [CO2PR07MB2711] Content from the Shard mailbox (Mailbox Guid: 6021ac05-d3f5-4bf4-ad03-f749aa02a1e4, Database: 545e461d-55da-4037-9c3e-d57a539e5e43) will be merged into the target mailbox.<br>
7/3/2018 2:28:38 PM [CO2PR07MB2711] Connected to target mailbox 'live.domain.com\f28fad8a-546d-4965-8bcd-94806d53967d (Primary)', database 'NAMPR07DG170-db053', Mailbox server 'CO2PR07MB2711.namprd07.prod.outlook.com' Version 15.20 (Build 930.0).<br>
7/3/2018 2:28:45 PM [CO2PR07MB2711] Connected to source mailbox 'live.domain.com\f28fad8a-546d-4965-8bcd-94806d53967d (Primary)', database 'DAG-Administration', Mailbox server 'MICHAEL.domain.com' Version 14.3 (Build 382.0), proxy server 'PROXY.domain.com' 15.1.1531.3 ServerCaps:, ProxyCaps:, MailboxCaps:, legacyCaps:0FFD6FFFBF5FFFFFCB07FFFF.<br><strong><font color="#0000ff">
7/3/2018 2:28:47 PM [CO2PR07MB2711] Request processing continued, stage LoadingMessages.</font></strong><br>
7/3/2018 2:28:47 PM [CO2PR07MB2711] Stage: LoadingMessages. Percent complete: 20.<br>
7/3/2018 2:41:04 PM [CO2PR07MB2711] Stage: CopyingMessages. Percent complete: 85.<br>
7/3/2018 2:41:04 PM [CO2PR07MB2711] Copy progress: 17097/21426 messages, 1.299 GB (1,394,743,256 bytes)/1.501 GB (1,611,958,891 bytes), 30/67 folders completed.<br><strong><font color="#ff0000">
7/3/2018 2:41:04 PM [CO2PR07MB2711] The job has been paused temporarily due to unfavorable server health, with request throttling state: 'StalledDueToTarget_DiskLatency'. It will automatically resume after '7/3/2018 2:42:04 PM'.</font></strong><br>
7/3/2018 2:49:49 PM [CO2PR07MB2711] The Microsoft Exchange Mailbox Replication service 'CO2PR07MB2711.namprd07.prod.outlook.com' (15.20.930.16 ServerCaps:FFFFFF, ProxyCaps:0FFFC7FD6DFDBF5FFFFFCB07FFFF, MailboxCaps:, legacyCaps:FFFFFF) is examining the request.<br>
7/3/2018 2:49:55 PM [CO2PR07MB2711] Content from the Shard mailbox (Mailbox Guid: 6021ac05-d3f5-4bf4-ad03-f749aa02a1e4, Database: 545e461d-55da-4037-9c3e-d57a539e5e43) will be merged into the target mailbox.<br>
7/3/2018 2:49:55 PM [CO2PR07MB2711] Connected to target mailbox 'live.domain.com\f28fad8a-546d-4965-8bcd-94806d53967d (Primary)', database 'NAMPR07DG170-db053', Mailbox server 'CO2PR07MB2711.namprd07.prod.outlook.com' Version 15.20 (Build 930.0).<br>
7/3/2018 2:50:02 PM [CO2PR07MB2711] Connected to source mailbox 'live.domain.com\f28fad8a-546d-4965-8bcd-94806d53967d (Primary)', database 'DAG-Administration', Mailbox server 'MICHAEL.domain.com' Version 14.3 (Build 382.0), proxy server 'PROXY.domain.com' 15.1.1531.3 ServerCaps:, ProxyCaps:, MailboxCaps:, legacyCaps:0FFD6FFFBF5FFFFFCB07FFFF.<br><strong><font color="#0000ff">
7/3/2018 2:50:04 PM [CO2PR07MB2711] Request processing continued, stage LoadingMessages.</font></strong><br>
7/3/2018 2:50:04 PM [CO2PR07MB2711] Stage: LoadingMessages. Percent complete: 20.<br>
7/3/2018 3:00:05 PM [CO2PR07MB2711] Stage: CopyingMessages. Percent complete: 89.</font></p><p><br></p><p>In this example the move request was stalled several times.&nbsp; Each time after the stall the migration request is picked back up – and message loading occurs.&nbsp; This would be an example of additional data added to the transfer set that was not mailbox level items that would have been accounted for in the mailbox size.&nbsp; </p><p><br></p><p>If I was curious about the status of the migration and understanding the full migration status – how can I ensure the data was moved.&nbsp; When a move enters the finalization phase the source mailbox and target mailbox are locked.&nbsp; We have a mailbox folder verification process that is executed.&nbsp; The mailbox folder verification process iterates through each folder in the source mailbox and compares it to the target mailbox.&nbsp; Item counts and sizes are compared in real time.&nbsp; If there are any discrepancies identified the move will be placed into a failed state.&nbsp; The mailbox verification is logged into the migration log file and can be viewed by the administrator.</p><p><br></p><p><font face="Courier New">PS C:\&gt; Get-MigrationUserStatistics user@domain.com -IncludeReport | Export-Clixml -Path c:\temp\migration.xml</font></p><font face="Courier New">
</font><p><font face="Courier New">PS C:\&gt; $stats=Import-Clixml -Path C:\temp\migration.xml</font></p><font face="Courier New">
</font><p><font face="Courier New">PS C:\&gt; $stats.Report.MailboxVerification</font></p><p><font face="Courier New">Source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 10188 [1.152 GB (1,237,342,091 bytes)]<br>
SourceFAI&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 27 [1.203 MB (1,261,537 bytes)]<br>
Target&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 10188 [1.464 GB (1,571,440,111 bytes)]<br>
TargetFAI&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 27 [1.227 MB (1,286,579 bytes)]<br>
Corrupt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0 [0 B (0 bytes)]<br>
Large&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0 [0 B (0 bytes)]<br>
Skipped&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0 [0 B (0 bytes)]<br>
FolderSourcePath&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : /Top of Information Store/Inbox<br>
FolderTargetPath&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : /Top of Information Store/Inbox<br>
FolderSourceID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {0, 0, 0, 0...}<br>
FolderTargetID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {0, 0, 0, 0...}<br>
ParentSourceID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {0, 0, 0, 0...}<br>
ParentTargetID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {0, 0, 0, 0...}<br>
WKFType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Inbox<br>
WKFTypeInt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 10<br>
FolderIsMissing&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : False<br>
FolderIsMisplaced&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : False<br>
MismatchedFlagsCount&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0<br>
MissingItemsInTargetBucket&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0 [0 B (0 bytes)]<br>
MismatchedFlagsSample&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {}<br>
DuplicatedItemsInTargetBucket&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0 [0 B (0 bytes)]<br>
MissingInSourceExtraItemsInTargetBucket&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0 [0 B (0 bytes)]<br>
MismatchedSyncFolderIdExtraItemsInTargetBucket : 0 [0 B (0 bytes)]<br>
NonMRSSyncedExtraItemsInTargetBucket&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0 [0 B (0 bytes)]<br>
FolderExclusionExtraItemsInTargetBucket&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0 [0 B (0 bytes)]<br>
MailboxGuid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : f28fad8a-546d-4965-8bcd-94806d53967d<br>
UnknownElements&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : <br>
UnknownAttributes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : <br>
XmlSchemaType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : </font></p><p><font face="Courier New"><br></font></p><p><font face="Courier New"><br></font></p><p><font face="Courier New">Source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 5129 [247.9 MB (259,986,587 bytes)]<br>
SourceFAI&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 3 [5.91 KB (6,052 bytes)]<br>
Target&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 5129 [500 MB (524,288,275 bytes)]<br>
TargetFAI&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 3 [8.085 KB (8,279 bytes)]<br>
Corrupt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0 [0 B (0 bytes)]<br>
Large&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0 [0 B (0 bytes)]<br>
Skipped&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0 [0 B (0 bytes)]<br>
FolderSourcePath&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : /Top of Information Store/Deleted Items<br>
FolderTargetPath&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : /Top of Information Store/Deleted Items<br>
FolderSourceID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {0, 0, 0, 0...}<br>
FolderTargetID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {0, 0, 0, 0...}<br>
ParentSourceID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {0, 0, 0, 0...}<br>
ParentTargetID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {0, 0, 0, 0...}<br>
WKFType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : DeletedItems<br>
WKFTypeInt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 14<br>
FolderIsMissing&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : False<br>
FolderIsMisplaced&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : False<br>
MismatchedFlagsCount&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0<br>
MissingItemsInTargetBucket&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0 [0 B (0 bytes)]<br>
MismatchedFlagsSample&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : {}<br>
DuplicatedItemsInTargetBucket&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0 [0 B (0 bytes)]<br>
MissingInSourceExtraItemsInTargetBucket&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0 [0 B (0 bytes)]<br>
MismatchedSyncFolderIdExtraItemsInTargetBucket : 0 [0 B (0 bytes)]<br>
NonMRSSyncedExtraItemsInTargetBucket&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0 [0 B (0 bytes)]<br>
FolderExclusionExtraItemsInTargetBucket&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0 [0 B (0 bytes)]<br>
MailboxGuid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : f28fad8a-546d-4965-8bcd-94806d53967d<br>
UnknownElements&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : <br>
UnknownAttributes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : <br>
XmlSchemaType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :</font> </p><p><br></p><p>In summary – the DATA MIGRATED field cannot be used as a measure of migration success or failure.&nbsp; Only in cases where the move is started and almost immediately finalized with no errors, stalls, or interruptions will the value be near or close to the mailbox size being migrated.</p>]]></content:encoded>
    </item>
  </channel>
</rss>