<?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>Jeremy Knight</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/jeremyknight/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/jeremyknight/feed.xml</link>
    <description>Office 365 - Exchange Online</description>
    <lastBuildDate>Tue, 16 Apr 2019 06:10:35 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Exchange Online Fiddler Extension 1.0.63</title>
      <link>https://docs.microsoft.com/archive/blogs/jeremyknight/exchange-online-fiddler-extension-1-0-63</link>
      <pubDate>Fri, 14 Dec 2018 22:48:43 GMT</pubDate>
      <dc:creator><![CDATA[JeKnight]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/jeremyknight/?p=675</guid>
      <description><![CDATA[Following some reports of performance issues we have released this version changing how the...]]></description>
      <content:encoded><![CDATA[Following some reports of performance issues we have released this version changing how the extension reacts to a 'live trace' or Load Saz archive scenario.

The release notes:

Enhancements to the extension to tackle performance issues when running the extension and capturing sessions in a 'live trace' scenario.

In this release when doing the above the following happens:
<ul>
 	<li>Sessions are colourised per session rule set.</li>
 	<li>Only the Host IP column is enabled, since this is build from an already existing session flag.</li>
 	<li>High cost compute logic does not run.</li>
 	<li>Inspector tabs do not build controls, instead they show instructions to save the Fiddler trace as a SAZ archive, close Fiddler and reopen for full extension functionality.</li>
</ul>
To get the extension full functionality simply open a SAZ file previously captured. This will light up all custom columns, all session logic and the inspector tabs with all controls for troubleshooting.]]></content:encoded>
    </item>
    <item>
      <title>Exchange Online Fiddler Extension 1.0.60</title>
      <link>https://docs.microsoft.com/archive/blogs/jeremyknight/exchange-online-fiddler-extension-1-0-60</link>
      <pubDate>Fri, 07 Dec 2018 20:28:37 GMT</pubDate>
      <dc:creator><![CDATA[JeKnight]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/jeremyknight/?p=625</guid>
      <description><![CDATA[The Exchange Online Fiddler Extension (EXO Fiddler Extension) version 1.0.60 is now available for...]]></description>
      <content:encoded><![CDATA[The Exchange Online Fiddler Extension (EXO Fiddler Extension) version 1.0.60 is now available for download: <a href="https://github.com/jprknight/EXOFiddlerExtension/releases">https://github.com/jprknight/EXOFiddlerExtension/releases</a>

This version adds significant functionality in the authentication space.
<ul>
 	<li>An authentication column has been added giving key information on which sessions contain authentication headers / data.</li>
 	<li>An 'Office365 Auth' inspector tab has been added showing more detailed information on authentication.</li>
 	<li>SAML response parser in the 'Office365 Auth' tab. See the SAML responses, see the signing certificate.</li>
</ul>
Screenshots showing what this release brings.

New Authentication column:

<a href="https://msdnshared.blob.core.windows.net/media/2018/12/Authentication-column.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2018/12/Authentication-column.jpg" alt="" width="146" height="861" class="alignnone size-full wp-image-635" /></a>

'Office365 Auth' inspector tab, generally you will see this view apart from...

<a href="https://msdnshared.blob.core.windows.net/media/2018/12/Office365AuthInspectorTab.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2018/12/Office365AuthInspectorTab.jpg" alt="" width="587" height="346" class="alignnone size-full wp-image-645" /></a>

...when you highlight a SAML request/response session. Then you will see the below where you can confirm SAML token issuer, responses which include the UserPrincipalName and ImmutableID, and open the signing certificate.

<a href="https://msdnshared.blob.core.windows.net/media/2018/12/SAMLResponseParser.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2018/12/SAMLResponseParser.jpg" alt="" width="596" height="472" class="alignnone size-full wp-image-655" /></a>]]></content:encoded>
    </item>
    <item>
      <title>Exchange Online Fiddler Extension 1.0.50</title>
      <link>https://docs.microsoft.com/archive/blogs/jeremyknight/exchange-online-fiddler-extension-1-0-50</link>
      <pubDate>Wed, 21 Nov 2018 07:46:36 GMT</pubDate>
      <dc:creator><![CDATA[JeKnight]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/jeremyknight/?p=475</guid>
      <description><![CDATA[Following on from my earlier...]]></description>
      <content:encoded><![CDATA[Following on from my earlier post <a target="_blank" href="https://blogs.technet.microsoft.com/jeremyknight/2018/10/01/introducing-the-exchange-online-fiddler-extension/" rel="noopener">https://blogs.technet.microsoft.com/jeremyknight/2018/10/01/introducing-the-exchange-online-fiddler-extension/</a> we have now made significant improvements to the extension and have just made version 1.0.50 available.

Improvements in this new version include:
<ul>
 	<li><span>Performance troubleshooting enhancements to the inspector tab. -- See how long the Exchange Online server took to respond to requests.</span></li>
 	<li>Updates to the rule set, new scenarios for highlighting / providing information on scenarios we have seen in support cases.</li>
 	<li>Expanded out the menu to include more options, making it easier to use.</li>
 	<li><span>Added X-HostIP column. Easier to see local vs. internet IP responding server / device.</span></li>
 	<li><span>Title of the 'Exchange Online' menu will now show if an update is available.</span></li>
 	<li><span>Minimal telemetry data collected for usage statistics.</span></li>
</ul>
The update is available now at: <a target="_blank" href="https://github.com/jprknight/EXOFiddlerExtension/releases" rel="noopener">https://github.com/jprknight/EXOFiddlerExtension/releases</a>.

For any questions see: <a target="_blank" href="https://github.com/jprknight/EXOFiddlerExtension/wiki" rel="noopener">https://github.com/jprknight/EXOFiddlerExtension/wiki</a>.

For any issues see: <a target="_blank" href="https://github.com/jprknight/EXOFiddlerExtension/issues" rel="noopener">https://github.com/jprknight/EXOFiddlerExtension/issues</a>.

Happy troubleshooting!]]></content:encoded>
    </item>
    <item>
      <title>Introducing the Exchange Online Fiddler Extension</title>
      <link>https://docs.microsoft.com/archive/blogs/jeremyknight/introducing-the-exchange-online-fiddler-extension</link>
      <pubDate>Mon, 01 Oct 2018 22:34:08 GMT</pubDate>
      <dc:creator><![CDATA[JeKnight]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/jeremyknight/?p=335</guid>
      <description><![CDATA[Working in support we deal with a lot of organisations which are migrating from Exchange On-Premise...]]></description>
      <content:encoded><![CDATA[Working in support we deal with a lot of organisations which are migrating from Exchange On-Premise to Exchange Online. We spent plenty of time troubleshooting if Outlook has difficulties connecting to cloud mailboxes or on other related issues. We continually use tools such as <a target="_blank" href="https://diagnostics.office.com/#/" rel="noopener">The Support and Recovery Assistant (SARA)</a>, particularly useful to detect client based issues is the <a target="_blank" href="https://support.microsoft.com/en-us/help/4098558/how-to-scan-outlook-by-using-the-sara-tool" rel="noopener">Collect Information about my Outlook configuration</a> option in SARA, Outlook ETL files (can only be viewed by Microsoft support), and Fiddler traces to see the conversation between the Outlook client and the server - Exchange Online / Office 365 / Authentication or Federation provider.

This post is about the Exchange Online Fiddler Extension which enhances the Fiddler UI to make troubleshooting Outlook connectivity with Exchange Online easier and more efficient.

If you already know what this is then you are probably just looking for the download link: <a target="_blank" href="https://github.com/jprknight/EXOFiddlerExtension/releases" rel="noopener">https://github.com/jprknight/EXOFiddlerExtension/releases</a>.

Or the wiki page: <a target="_blank" href="https://github.com/jprknight/EXOFiddlerExtension/wiki" rel="noopener">https://github.com/jprknight/EXOFiddlerExtension/wiki</a>

Or for questions, issues or suggestions: <a target="_blank" href="https://github.com/jprknight/EXOFiddlerExtension/issues" rel="noopener">https://github.com/jprknight/EXOFiddlerExtension/issues</a>

<!--more-->
<h2>What does the extension do?</h2>
<ul>
 	<li>Colourise sessions.
<ul>
 	<li><em>Sessions are coloured according to their relevance to a known condition or failure.</em></li>
 	<li><em>Think traffic light colours with some additions.</em></li>
 	<li><em>See</em> <a target="_blank" href="https://github.com/jprknight/EXOFiddlerExtension/wiki/Extension-Colour-Code-Explanation" rel="noopener">https://github.com/jprknight/EXOFiddlerExtension/wiki/Extension-Colour-Code-Explanation</a> <em>for more details.</em></li>
</ul>
</li>
 	<li>Additional columns added to UI.
<ul>
 	<li>Elapsed time -- <em>Shown when loading a SAZ file if enabled.</em></li>
 	<li>Response server -- <em>The type of web server which responded to the request.</em></li>
 	<li>Exchange Type -- <em>This is a field populated from logic checks based on request and response values. This will contain the client used, type of connection, or process if not related to Exchange or Outlook.</em></li>
 	<li>X-HostIP -- <em>This is the IP address of the responding host. It can be very useful to know if the responding server is on the LAN vs. the internet.</em></li>
</ul>
</li>
 	<li>Inspector tab added to the UI.
<ul>
 	<li><em>The extension adds an Exchange Online tab to the response inspector list. </em></li>
 	<li><em>This tab brings together useful information for troubleshooting issues.</em></li>
 	<li><em>Expect to see information from the sessions along with logic based comments in the response comments box.</em></li>
</ul>
</li>
 	<li>Application Logging.
<ul>
 	<li><em>Logs the logic checks the extension finds on sessions into the Fiddler application log for viewing.</em></li>
 	<li>Go to the logging tab to see all the events recorded on all sessions.</li>
</ul>
</li>
 	<li>Update Checking.
<ul>
 	<li><em>The extension checks for available updates, so you don't get left behind running an old version. </em></li>
 	<li><em>From v1.0.50 the Exchange Online menu will update it's title to give you a visual cue an update is available. -- See the menu screenshot at the bottom of this post.</em></li>
</ul>
</li>
 	<li>Menu added to the UI to control the extension.
<ul>
 	<li>Extension Enabled -- <em>Running the extension with all options turned on involves a performance cost. You can turn off the extension if not currently using it. This will stop all session logic processing, the expensive compute cost of running the extension.</em></li>
 	<li>Columns enable/disable.</li>
 	<li>Application Logging Enabled -- <em>Enable/disable switch for the application logging.</em></li>
 	<li>Extension Wiki -- Link out to the project Wiki.</li>
 	<li>Report Issues -- Link out to the project issues page.</li>
 	<li>Check for updates -- Extension checks against updates.
<strong>Note</strong>: <span style="color: #0000ff">Set the options you want on the menu and restart Fiddler for changes to take effect.</span></li>
</ul>
</li>
</ul>
<h2>What kind of scenarios can the extension help me troubleshoot?</h2>
<ul>
 	<li>Authentication:
<ul>
 	<li>ADFS or third-party federation provider is unreachable or unavailable. No authentication tokens generated for users as they request them means no access to Office 365 resources.</li>
 	<li>Outlook throwing unexpected authentication prompts.</li>
</ul>
</li>
 	<li>Autodiscover:
<ul>
 	<li>Autodiscover not responding or responding with incorrect information.</li>
 	<li>An Autodiscover response from a non-Exchange server.</li>
</ul>
</li>
 	<li>Network Connectivity:
<ul>
 	<li>Web proxy or other device blocking Outlook traffic from reaching the internet and Office 365 / Exchange Online.</li>
 	<li>Outlook cannot connect to an Exchange Online mailbox.</li>
 	<li>Outlook cannot communicate with an Exchange server - either On-Premise or in Exchange Online.</li>
</ul>
</li>
 	<li>Performance troubleshooting:
<ul>
 	<li>Check the length of time sessions take to complete.</li>
 	<li>Check the length of time the Exchange Online server took to service the request 'Server Think Time'.</li>
 	<li>Check the length of time it took to send the response back to Fiddler and for Fiddler to relay the response back to the client app (Outlook).</li>
</ul>
</li>
 	<li>Others:
<ul>
 	<li>OWA cannot connect to an Exchange Online mailbox.</li>
 	<li>Outlook or OWA cannot perform a specific function with the mailbox.</li>
 	<li>Exchange Free/Busy and other EWS calls.</li>
</ul>
</li>
</ul>
<h2>What does it look like?</h2>
<h3>Colourisation of sessions and additional columns</h3>
Prior to installing and enabling the extension all sessions would be shown in white. The extension is using logic to detect the severity of session responses and highlight what we need to focus on for troubleshooting.

See the <a target="_blank" href="https://github.com/jprknight/EXOFiddlerExtension/wiki/Extension-Colour-Code-Explanation" rel="noopener">Extension Colour Code Explanation</a> wiki page for more details on what these colours mean.

In this lab sample a squid proxy has been installed which is set to block all traffic for outlook.office365.com. Client computers in the environment are set to route all internet traffic through the proxy server. The result is Outlook cannot connect to the Exchange Online mailbox and HTTP 403 responses are seen from the web proxy server on the disallowed traffic.

Notice the addition of the Elapsed Time, Response Server, Exchange Type, and X-HostIP columns.

<strong>Update (10/15/2018):</strong> Exchange Type is now louder about any specific scenario found, shown in the screenshots below. Look for anything in Exchange Type in capital letters enclosed in exclamation marks. For example: <span style="color: #0000ff">!FEDERATION! <span style="color: #000000">or</span> !WEB PROXY BLOCK!</span>

Highlight on HTTP 403, sessions are being blocked by a web proxy server.

<a href="https://msdnshared.blob.core.windows.net/media/2018/10/HTTP403SessionsInternetSafe.png"><img src="https://msdnshared.blob.core.windows.net/media/2018/10/HTTP403SessionsInternetSafe.png" alt="" width="1280" height="1051" class="alignnone size-full wp-image-585" /></a>

This HTTP 503 Service Unavailable was simulated in a lab by taking the 'Active Directory Federation Services' service offline on the Web Application Proxy server.

<a href="https://msdnshared.blob.core.windows.net/media/2018/10/HTTP503SessionsInternetSafe1.png"><img src="https://msdnshared.blob.core.windows.net/media/2018/10/HTTP503SessionsInternetSafe1.png" alt="" width="1296" height="1044" class="alignnone size-full wp-image-615" /></a>
<h3>Inspector Tab</h3>
HTTP 200's: Not all 200 OK server responses are actually OK. Some contain an error, failure or exception response. Unless a specific scenario is detected for HTTP 200 OK responses the extension is splitting each word in the response body and looking for 'error', 'failed', or 'exception'. If found the session will be highlighted with red text on a black background in the session list, the Exchange Type will show !FAILURE LURKING!
<h4>A HTTP 200 OK server response which is actually OK.</h4>
In this however, the HTTP 200 is an Autodiscover response from Exchange On-Premise server with a redirect address (you may know this as the target address or remote routing address). The response is exactly what we want in this scenario so this session is coloured green in the session list.

<a href="https://msdnshared.blob.core.windows.net/media/2018/10/HTTP200RedirectAddress.png"><img src="https://msdnshared.blob.core.windows.net/media/2018/10/HTTP200RedirectAddress.png" alt="" width="587" height="827" class="alignnone size-full wp-image-535" /></a>
<h4>HTTP 403 Forbidden</h4>
This HTTP 403 Forbidden accompanies the session colourisation scenario above. This is one of the HTTP 403 responses from that trace. The tell in this scenario is the response server is <strong>squid/3.5.27</strong>, which is configured to block Outlook's traffic for outlook.office365.com. This session is highlighted as red in the session list. This could just as easily be another brand of web proxy server showing up in the same scenario, squid just happens to be an easy way to reproduce this behaviour in a lab environment.

<a href="https://msdnshared.blob.core.windows.net/media/2018/10/HTTP403WebProxyAccessDenied.png"><img src="https://msdnshared.blob.core.windows.net/media/2018/10/HTTP403WebProxyAccessDenied.png" alt="" width="592" height="825" class="alignnone size-full wp-image-605" /></a>
<h4>HTTP 503 Service Unavailable</h4>
This HTTP 503 Service Unavailable was simulated in a lab by taking the 'Active Directory Federation Services' service offline on the Web Application Proxy server. This means when the Outlook client hits the realm page for basic authentication (shown below), Exchange Online takes over and attempts to authenticate on behalf of the user to the federation service, it is offline and cannot service the authentication request. At this point Outlook most likely prompts for credentials which cannot be satisfied, and cannot connect to the Exchange Online mailbox.

<a href="https://msdnshared.blob.core.windows.net/media/2018/10/HTTP503FederatedSTSUnavailable.png"><img src="https://msdnshared.blob.core.windows.net/media/2018/10/HTTP503FederatedSTSUnavailable.png" alt="" width="593" height="828" class="alignnone size-full wp-image-565" /></a>
<h3>Menu to control the extension</h3>
From v1.0.50 of the extension the menu will now give you a visual cue if there is an update available. Use the 'Check for update' menu option or visit <a target="_blank" href="https://github.com/jprknight/EXOFiddlerExtension/releases" rel="noopener">https://github.com/jprknight/EXOFiddlerExtension/releases</a> to download the update.

<a href="https://msdnshared.blob.core.windows.net/media/2018/10/Menu1.0.50.png"><img src="https://msdnshared.blob.core.windows.net/media/2018/10/Menu1.0.50.png" alt="" width="513" height="220" class="alignnone size-full wp-image-595" /></a>

Here's hoping this extension helps you troubleshoot an Outlook or Exchange issue. Further information can be found here: <a target="_blank" href="https://github.com/jprknight/EXOFiddlerExtension/wiki" rel="noopener">https://github.com/jprknight/EXOFiddlerExtension/wiki</a>

Any queries, issues or questions can be posted here: <a target="_blank" href="https://github.com/jprknight/EXOFiddlerExtension/issues" rel="noopener">https://github.com/jprknight/EXOFiddlerExtension/issues</a>.

Happy troubleshooting!]]></content:encoded>
    </item>
    <item>
      <title>Troubleshooting Users: Script to pull all user data</title>
      <link>https://docs.microsoft.com/archive/blogs/jeremyknight/troubleshooting-users-script-to-pull-all-user-data</link>
      <pubDate>Thu, 05 Jul 2018 22:53:16 GMT</pubDate>
      <dc:creator><![CDATA[JeKnight]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/jeremyknight/?p=275</guid>
      <description><![CDATA[I have worked a number of support cases where this script has been useful for pulling just about any...]]></description>
      <content:encoded><![CDATA[<span>I have worked a number of support cases where this script has been useful for pulling just about any data available from a user object. Ideally you will want to run this from a PowerShell window connected to both Microsoft Online and Exchange Online PowerShell modules.</span>

<span>This script prompts for the User Principal Name of the account to run against, it then works to run a series of Get- cmdlets. Everything is written out to a file for review.</span>

See <a href="https://gallery.technet.microsoft.com/Troubleshooting-a-user-88f65f15">https://gallery.technet.microsoft.com/Troubleshooting-a-user-88f65f15</a> for a description and to download the script.]]></content:encoded>
    </item>
    <item>
      <title>Troubleshooting Retention: Script to pull user policy and tags</title>
      <link>https://docs.microsoft.com/archive/blogs/jeremyknight/troubleshooting-retention-script-to-pull-user-policy-and-tags</link>
      <pubDate>Thu, 05 Jul 2018 22:51:35 GMT</pubDate>
      <dc:creator><![CDATA[JeKnight]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/jeremyknight/?p=265</guid>
      <description><![CDATA[I have worked a number of support cases where this script has been useful for pulling the retention...]]></description>
      <content:encoded><![CDATA[I have worked a number of support cases where this script has been useful for pulling the retention policy, tags and all associated information to determine how the retention policies have been configured for a given user by their Office 365 administrator.

See <a href="https://gallery.technet.microsoft.com/Troubleshooting-Retention-1eeb55af?redir=0">https://gallery.technet.microsoft.com/Troubleshooting-Retention-1eeb55af?redir=0</a> for the script description and to download.]]></content:encoded>
    </item>
    <item>
      <title>Fiddler capturing and decrypting traffic on a different network</title>
      <link>https://docs.microsoft.com/archive/blogs/jeremyknight/fiddler-capturing-and-decrypting-traffic-on-a-different-network</link>
      <pubDate>Fri, 11 May 2018 19:24:06 GMT</pubDate>
      <dc:creator><![CDATA[JeKnight]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/jeremyknight/?p=165</guid>
      <description><![CDATA[Having recently worked through a number of Exchange ActiveSync support cases it was necessary to...]]></description>
      <content:encoded><![CDATA[Having recently worked through a number of Exchange ActiveSync support cases it was necessary to setup a Fiddler proxy on a different network than the mobile device I was testing with. In my working scenario I setup a Windows client hosted as an Azure hosted virtual machine with Fiddler installed on an internet accessible IP address. I want to be able to capture and decrypt HTTPS traffic for troubleshooting purposes from any device - iOS, Android, Windows, Mac, or Linux.

What I really wanted to achieve here is for client devices to be able to get to the 'Fiddler Echo Service' landing page to be able to download the Fiddler certificate from my Fiddler proxy server, which is used for HTTPS traffic decryption. I want devices to be able to do this easily whether or not the device is already configured to send traffic through my Fiddler proxy server or not. There is some additional configuration in Fiddler beyond what I was able to find documented, so I wanted to make note of it here. Partly so this is discoverable for anyone, partly so that when I forget the steps I have somewhere to go look it up again.
<h3>Prerequisites</h3>
<ol>
 	<li>You need a Windows client machine with a public IP address. <em>I want to capture from different machines on different networks.</em></li>
 	<li>Install Fiddler.</li>
 	<li>Add an inbound firewall rule for client devices to connect to port the Fidder proxy is running on. For example, in my case I added an inbound firewall rule to allow 9988.</li>
 	<li>Make sure both 'Capture HTTPS CONNECTs' and 'Decrypt HTTPS traffic' are selected in Fiddler under the Tools menu, Options, HTTPS tab.</li>
 	<li>Set your Fiddler listening port to match your inbound firewall rule. Go to the Connections tab, change the port Fiddler listens on to something less standard than 8080 or 8888, then check the 'Allow remote computers to connect' option.</li>
</ol>
<a href="https://msdnshared.blob.core.windows.net/media/2018/05/FiddlerHTTPS1.png"><img src="https://msdnshared.blob.core.windows.net/media/2018/05/FiddlerHTTPS1.png" alt="" width="558" height="234" class="alignnone size-full wp-image-215" /></a>

<a href="https://msdnshared.blob.core.windows.net/media/2018/05/FiddlerConnections.png"><img src="https://msdnshared.blob.core.windows.net/media/2018/05/FiddlerConnections.png" alt="" width="559" height="370" class="alignnone size-full wp-image-195" /></a>
<h3>The Fiddler secret sauce</h3>
<span style="color: #3366ff"><em>This part had my mind running in circles for a couple of days. Eventually I spoke to my colleague <a href="https://blogs.technet.microsoft.com/jasonsla/">Jason</a> for some guidance. He's a big fan of Fiddler, even he does not think this method has been documented before now.</em></span>
<ol>
 	<li>Per the above you should by now have Fiddler capturing and decrypting traffic on the local computer.</li>
 	<li>However to make sure Fiddler is capturing traffic, open a web browser and go to google.com on the computer you have Fiddler running on, you should see the traffic captured in the tool. You should also see 'Capturing' in the bottom left hand corner of the tool.</li>
 	<li>Clear all sessions to make the next steps easier.</li>
 	<li>On your Fiddler computer open a web browser and go to https://localhost:9988 or what ever port number you set in step 5 above.</li>
 	<li>We are expecting to see the 'Fiddler Echo Service' web page. <em>If you do not, check the prerequisites section or post comments below.</em></li>
 	<li>Download the FiddlerRoot certificate, save it, it does not matter where. <em>We are not going to use the saved file, we are in fact going to use the Fiddler certificate, captured by Fiddler to serve up to client devices.</em></li>
 	<li>Stop capturing. <em>Notice we do not enable this again, we do not need to capture any more local traffic.</em></li>
 	<li>Back in fiddler select all frames on the left hand side, then CTRL click the two frames shown below in Fig 1 to deselect those frames. Everything else is just noise, including the favicon. Remove the selected sessions.</li>
 	<li>We want to only see the two frames shown below in Fig 1.</li>
 	<li>You now want to click on the AutoResponder tab shown below in Fig 1.</li>
 	<li>Drag and drop the two frames from the left panel to the right panel.</li>
 	<li>This creates two rules for the AutoResponder.</li>
 	<li>Ensure you check both 'Enable rules' and 'Unmatched requests passthrough'.</li>
 	<li>Look towards the bottom of the rule list and you will see rule editor.</li>
 	<li>Your rules will currently say '<strong>EXACT:https://localhost:9988/</strong>' for example.</li>
 	<li>You need to edit these so they resemble the rules in Fig 1 below. In my example the rules are changed to '<strong>:9988/</strong>' and '<strong>:9988/FiddlerRoot.cer</strong>'. <em>Without those quotation marks!</em></li>
 	<li>Make sure to click Save on the bottom right as you edit each rule.</li>
 	<li>Optional/Additional: On my remote client machine (actually another Windows computer) with or without proxy settings setup to direct web traffic to my Fiddler proxy, I can now load the Fiddler Echo Service page. However I found I could not download the certificate. This was fixed by 'Promoting' the FiddlerRoot.cer rule above the :9988/ rule. Right click on the Fiddler.cer rule and click Promote.</li>
 	<li>Update: I reran through this whole doc on a new VM to validate the instructions and I needed to do this a second time around as well.</li>
</ol>
Fig. 1

<a href="https://msdnshared.blob.core.windows.net/media/2018/05/AutoResponderConfig.png"><img src="https://msdnshared.blob.core.windows.net/media/2018/05/AutoResponderConfig.png" alt="" width="829" height="260" class="alignnone size-full wp-image-175" /></a>
<h3>End state notes</h3>
<ol>
 	<li>I have a Fiddler Echo Service page which loads for any client on the internet, regardless of whether the machine / device is sending web traffic to the Fiddler proxy already or not.</li>
 	<li>Clients need to download the certificate from this service page, install it and trust it, so the Fiddler proxy can decrypt the traffic without web services throwing certificate warnings.</li>
 	<li>I can have mobile devices (iOS/Android), Windows or any other device for that matter route traffic through this proxy, so the requests/responses can be captured and reviewed for troubleshooting.</li>
 	<li>Typically this setup is going to be used for in-house repro's of customer issues. This is not a web proxy for any kind of production use.</li>
 	<li>Why did we remove the EXACT:https://localhost from the rules? <em>We need to allow any host using whatever host name they like to connect to the service. The rule with localhost would only allow the computer running Fiddler to connect.</em></li>
 	<li><strong>A note on security</strong>: Should you leave Fiddler running on your internet connected Windows VM? No you should not. We only want this service online when we need it to troubleshoot. Simply make sure the Fiddler application is closed. Run a <strong>netstat -ano | find "9988"</strong> to validate the port is no longer listening if you like. Better still if you are running this in Azure like me, shut the VM down and save some pennies. Job done.</li>
</ol>
&nbsp;

&nbsp;

&nbsp;]]></content:encoded>
    </item>
    <item>
      <title>Office 365 Dynamic Distribution Groups Filtered by On-Premise Organization Unit (OU).</title>
      <link>https://docs.microsoft.com/archive/blogs/jeremyknight/office-365-dynamic-distribution-groups-filtered-by-on-premise-organization-unit-ou</link>
      <pubDate>Thu, 22 Jun 2017 20:03:44 GMT</pubDate>
      <dc:creator><![CDATA[JeKnight]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/jeremyknight/?p=36</guid>
      <description><![CDATA[I have been asked a number of times if it is possible to create Dynamic Distribution Groups in...]]></description>
      <content:encoded><![CDATA[I have been asked a number of times if it is possible to create Dynamic Distribution Groups in Office 365 filtered by the On-Premise Organization Unit (OU). I recently discovered a method to achieve this with some collaboration with a couple of colleagues.

Essentially we need to create an inbound synchronization rule in AADConnect to send the Distinguished Name from On-Premise Active Directory up to Office 365 as custom attributes.

<strong>First and foremost, update your AADConnect version!</strong> See <a href="https://docs.microsoft.com/en-us/azure/active-directory/connect/active-directory-aadconnect-version-history">https://docs.microsoft.com/en-us/azure/active-directory/connect/active-directory-aadconnect-version-history</a>.

<strong>August 2018 update</strong>

<!--more-->
<h2>Steps to create the rule</h2>
From the AADConnect server click start, and type <em>sync </em>you should see the 'Synchronization Rules Editor'. We will use this tool to create the rules.

Click add new rule, complete the first page as below. Pay close attention to these settings, Link Type for example defaults to Provision which is incorrect this in scenario.

<a href="https://msdnshared.blob.core.windows.net/media/2017/06/Description.png"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/Description.png" alt="" width="932" height="410" class="alignnone size-full wp-image-105" /></a>

&nbsp;

Scoping filters left blank.

<a href="https://msdnshared.blob.core.windows.net/media/2017/06/Scoping-filter2.png"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/Scoping-filter2.png" alt="" width="934" height="218" class="alignnone size-full wp-image-125" /></a>

Join rules also left blank.

<a href="https://msdnshared.blob.core.windows.net/media/2017/06/join-rules2.png"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/join-rules2.png" alt="" width="931" height="195" class="alignnone size-full wp-image-115" /></a>

The real work happens under Transformations.

In the first expression I am synchronising the full Distinguished Name from On-Premise AD to extensionAttribute10. This is customAttribute10 in Exchange Online.
<p style="padding-left: 30px">CStr([dn])</p>
In the second expression I am synchronising the 2nd component in the Distinguished Name from On-Premise to extensionAttribute11. <span>This is customAttribute11 in Exchange Online.</span>
<p style="padding-left: 30px">DNComponent(CRef([dn]),2)</p>
Need something else maybe? Use <a href="https://docs.microsoft.com/en-us/azure/active-directory/connect/active-directory-aadconnectsync-functions-reference">https://docs.microsoft.com/en-us/azure/active-directory/connect/active-directory-aadconnectsync-functions-reference</a>.

There is no need to do both, I am just showing the possibilities. Perhaps you only need the the second expression example to create your DDG.

<a href="https://msdnshared.blob.core.windows.net/media/2017/06/Transformations3.png"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/Transformations3.png" alt="" width="935" height="309" class="alignnone size-full wp-image-86" /></a>
<h2>My observations after making these changes</h2>
After changes to the rules, the new values are not seen in the custom attributes until:
<ol>
 	<li>A value on the individual object is updated and a delta sync runs or</li>
 	<li>An initial sync is run.</li>
</ol>
So make sure to run a full sync after creating a rule. Start-ADSyncSyncCycle -PolicyType initial

Once an initial sync is run after the rule creation, delta syncs send updates to the OU path just fine.

Results on a sample Exchange Online object:

<a href="https://msdnshared.blob.core.windows.net/media/2017/06/Results.png"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/Results.png" alt="" width="650" height="88" class="alignnone size-full wp-image-95" /></a>

I am now ready to setup a Dynamic Distribution group based off of CustomAttribute11 with a value of 'nintendo'. I put the full OU in CustomAttribute10 in case there is a use case out there where this is needed.

<a href="https://msdnshared.blob.core.windows.net/media/2017/06/GroupMembership.png"><img src="https://msdnshared.blob.core.windows.net/media/2017/06/GroupMembership.png" alt="" width="519" height="362" class="alignnone wp-image-136" /></a>

I tested all this by creating a Dynamic Distribution Group with an additional rule of customAttribute11 as 'nintendo', note my deliberate omission of the capitalisation just for the sake of testing if this is important, it is not. Sent an email to the SMTP address of the DDG and confirmed mail delivery to the individuals in the DDG. Perfect!

<span></span><strong>August 2018 Update</strong>

Since first writing this blog article a little over a year ago I have completely rebuilt my lab environment and did not set this configuration back up. I now have a lab with over 75,000 sync'ed objects so have good basis to test this again.

I ran through the steps as originally documented with no issues. As I previously noted only objects which have attributes updated post changes will have the On-Premise OU attributes updated / sync'ed to the cloud on the next delta sync. I tested this out by updating several address type fields on a single account and running a delta sync. Only the object I updated out of ~77,000 objects updated in the delta sync. From this test I can confirm the necessity to run an initial sync so all sync'ed objects get the On-Premise OU sync'ed to custom attributes in the cloud. You then have a consistent data set in the cloud to create Dynamic Distribution Groups from.

Running an initial sync after these changes on slightly over 75,000 objects took just under 4 hours to complete in my lab environment.]]></content:encoded>
    </item>
    <item>
      <title>Exchange Online Cross Tenant Calendar Free/Busy Availability Information</title>
      <link>https://docs.microsoft.com/archive/blogs/jeremyknight/exchange-online-cross-tenant-calendar-freebusy-availability-information</link>
      <pubDate>Sat, 27 Feb 2016 00:06:17 GMT</pubDate>
      <dc:creator><![CDATA[JeKnight]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/jeremyknight/?p=23</guid>
      <description><![CDATA[I was recently asked how to enable cross tenant calendar lookup, for arranging meetings, where two...]]></description>
      <content:encoded><![CDATA[I was recently asked how to enable cross tenant calendar lookup, for arranging meetings, where two organizations are running their email services in Exchange Online. This happened to be something I had not thought about before, however in a company merger situation this would be an invaluable tool. Fortunately within Exchange Online the building blocks are already in place, we just need to light up the correct features and configuration.

<span style="text-decoration: underline">The following steps below need to run in each tenant, as each tenant creates a one-way Organization Relationship to the other tenant.</span>

Step 1: First we will enable organization customization, lighting up the features.
<pre>Enable-OrganizationCustomization</pre>
Step 2: <span style="line-height: 1.5">We then need to create an Organization Relationship, lighting up the configuration. </span>

<span style="line-height: 1.5">Since both organizations in my scenario are in Exchange Online it is important to note the use of the .onmicrosoft.com in the -DomainName parameter. You will see the result in the TargetAutoDiscoverEpr attribute once the Organization Relationship is created; it should look like this:</span>
<pre>TargetAutodiscoverEpr : https://autodiscover-s.outlook.com/autodiscover/autodiscover.svc/WSSecurity</pre>
Anyway back to creating that Organization Relationship. Let's say you are running the below Powershell command in tenant A, your -DomainName parameter will point to tenantB.onmicrosoft.com, similiarly you will probably want the name to be more in line with your organizational names.
<pre>Get-FederationInformation -DomainName contoso.onmicrosoft.com | New-OrganizationRelationship -Name "Organization Relationship with contoso.com" -FreeBusyAccessEnabled $true -FreeBusyAccessLevel AvailabilityOnly</pre>
Notice the AvailabilityOnly on that last command? Check out <a title="LimitedDetails   Free/busy access with time, subject, and location" href="https://technet.microsoft.com/en-us/library/ee332357(v=exchg.160).aspx" target="_blank">https://technet.microsoft.com/en-us/library/ee332357(v=exchg.160).aspx</a>. If you want your users to see more information, you could choose to use -LimitedDetails so your users can see 'Free/busy access with time, subject, and location'.

Step 3: Now our Organization Relationship is in place, we should check a couple of things, which will prevent us from tripping up as we test the configuration with Outlook and OWA.

Run the below (and copy the result to notepad to refer to as you go through the rest of these steps):
<pre>Get-OrganizationRelationship "Organization Relationship with contoso.com" | FL</pre>
In this scenario both organizations are in the cloud, so confirm the TargetAutodiscoverEpr is set as below:
<pre>TargetAutodiscoverEpr : https://autodiscover-s.outlook.com/autodiscover/autodiscover.svc/WSSecurity</pre>
Potentially it can look like the below (pointing to an On-Premise Exchange environment):
<pre>TargetAutodiscoverEpr : https://autodiscover.contoso.com/autodiscover/autodiscover.svc/WSSecurity</pre>
If it is, you must have used -DomainName contoso.com instead of -DomainName -contoso.onmicrosoft.com when you ran the command to create the Organization Relationship. You can simply run the below command to remove the Organization Relationship, and start again from step 2.
<pre>Get-OrganizationRelationship "Organization Relationship with contoso.com" | Remove-OrganizationRelationship</pre>
Getting back on track, when we created the Organization Relationship, we used the -DomainName contoso.onmicrosoft.com we need to add the vanity domain into the configuration, so as Free / Busy requests come in the tenant knows which Organization Relationship to use. To do this we run:
<pre>Get-OrganizationRelationship "Organization Relationship with contoso.com" | Set-OrganizationRelationship -DomainNames contoso.mail.onmicrosoft.com, contoso.onmicrosoft.com, <strong>contoso.com
</strong></pre>
Note in the example above we are adding contoso.com, the vanity domain name to the Organization Relationship.

Step 4: Testing.

At this point we are done, we may just have to wait for Azure Active Directory replication.

We can now test the functionality in Outlook and OWA clients and see what results we get. With everything we have done above users can check cross tenant availability information using email addresses, you will need to create mail contacts in order for users to be able to search and select the other tenants contacts from the address book; Though this is another topic for another day.

&nbsp;]]></content:encoded>
    </item>
    <item>
      <title>Hybrid Configuration Wizard - DataStrings.InvalidSmtpDomainName(domain) error connecting to On-Premise Exchange</title>
      <link>https://docs.microsoft.com/archive/blogs/jeremyknight/hybrid-configuration-wizard-datastrings-invalidsmtpdomainname-error-connecting-to-on-premise-exchange</link>
      <pubDate>Mon, 08 Feb 2016 21:02:18 GMT</pubDate>
      <dc:creator><![CDATA[JeKnight]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/jeremyknight/?p=21</guid>
      <description><![CDATA[I recently ran into an issue with a customer who was running the new Hybrid Configuration Wizard...]]></description>
      <content:encoded><![CDATA[I recently ran into an issue with a customer who was running the new Hybrid Configuration Wizard (https://aka.ms/taphcw), where the tool was unable to connect to the Exchange On-Premise environment, with the error DataStrings.InvalidSmtpDomainName(domain).

The underlining cause was configuration data remaining from a decommissioned Exchange server, within the Exchange configuration in Active Directory. Once this configuration was removed the Hybrid Configuration Wizard ran and completed successfully.

This issue resulted in the support article <a title="https://support.microsoft.com/en-us/kb/3132123" href="https://support.microsoft.com/en-us/kb/3132123" target="_blank">https://support.microsoft.com/en-us/kb/3132123</a> so any future occurrences of this issue can be quickly resolved. The article contains the in-depth steps needed to remove the configuration for the (decommissioned) On-Premise Exchange server.]]></content:encoded>
    </item>
  </channel>
</rss>