<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>PointBridge Exchange Server Blogs</title><link>http://blogs.pointbridge.com/_layouts/FeedBlogs.aspx?xsl=Blogs&amp;web=/Categories&amp;page=ace78249-d4d8-4285-9ca5-ddaf666f21d4&amp;wp=d26d95f6-b1dd-4711-9699-6b7cd70e6a57</link><description></description><ttl>60</ttl><item><id>34</id><title>Migrating 5000 mailboxes to BPOS over a weekend and still have pilots - an option to consider</title><body>&lt;div class=ExternalClass05677EE6892E49B78C3DD90008624E65&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:12pt"&gt;&lt;strong&gt;Background
&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:12pt"&gt;Let me explain what this means first and set some criteria for a statement like this. In the majority of cases this would involve moving little to no data which is usually the recommended approach for such a large cutover (a.k.a. flash cutover). Coexistence between on-premise mail systems and BPOS can be problematic and confusing for users as well as administrators. Shortening or eliminating this coexistence period is usually a pretty high priority goal for any mail migration project. We try to urge most customers to go with &amp;quot;green field&amp;quot; or minimal data such as calendars and contacts and maybe a few days' worth of email. While this might not seem like a lot of data it can still take several hours or days to move this data over given the number of seats involved and depending on the migration tools you're using. 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:12pt"&gt;Normally migrating this many users over a weekend doesn't just involve simple mail migration. There are also related requirements that need to be in place like: 
&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Deploying the SSO and Outlook clients 
&lt;/li&gt;&lt;li&gt;Possible (re-)training for users and admins 
&lt;/li&gt;&lt;li&gt;BlackBerry devices need to be re-provisioned in BPOS, Windows Mobile/ActiveSync devices need to be updated to point to BPOS 
&lt;/li&gt;&lt;li&gt;Application integration testing and re-tooling to work with current workflows including email 
&lt;/li&gt;&lt;li&gt;Running a pilot or two 
&lt;/li&gt;&lt;li&gt;Testing all the above and more 
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:12pt"&gt;There's also that dreaded post-migration support call barrage you just know is coming even though you've communicated How-To and FAQ docs and trained your staff so they're a lean, mean supporting team. Even will all of these challenges it still can be accomplished with a lot of proper planning and testing. 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:12pt"&gt;Back to the question at hand: How can you flash cutover 5000 users over a weekend, especially if you want to do a pilot or two ahead of time (without rolling them back)? You might also ask, what is the big problem here? Let's say you have registered your BPOS SMTP domains as external relay. This means that email sent from other activated BPOS users will be attempted to deliver locally to a BPOS mailbox first, then to your on-premise mail system via the MX records. The problem begins once you activate a BPOS user and you don't migrate them, meaning, they aren't treating it as their primary mailbox and mail is not forwarding to their BPOS mailbox. Once this activation occurs, mail flow back to the on-premise mailbox is broken, simply because there is already a valid local mailbox ready to receive messages. You end up with dual mailboxes for some folks with mail sent from other BPOS users ending up in the BPOS mailbox and mail sent from the on-premise system in their local mailbox. Unless the user is set up to connect to both mailboxes, they might never know they are missing mail. 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:12pt"&gt;&lt;strong&gt;The Strategy
&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:12pt"&gt;Ok, I understand the problem. How do I fix it and still do pilots and a flash cutover? 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:12pt"&gt;Well, you simply set up mail forwarding in BPOS to forward mail back to the on-premise mailbox. Normally for on-premise to on-premise migrations the administrators can take care of all of this usually with whatever migration tool they're using or even a script. With BPOS, at least for now, you need to work with the BPOS support team to accomplish the same task. As of this writing, there are no BPOS PowerShell cmdlets available to set forwarding, although it's quite possible they will be available in the next major release of BPOS (a.k.a. Wave 14). Normally in Exchange we would use the targetAddress field to control where mail gets routed. For BPOS we establish forwarding through use of contacts. 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:12pt"&gt;Here's how it works at a high level: 
&lt;/span&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;You establish your directory sync between AD and BPOS. 
&lt;/li&gt;&lt;li&gt;You create a matching contact in AD/Exchange for each user participating in the flash cutover and pilot 
&lt;/li&gt;&lt;li&gt;You sync these contacts to BPOS 
&lt;/li&gt;&lt;li&gt;You mass activate the BPOS accounts 
&lt;/li&gt;&lt;li&gt;You submit a request to BPOS support that you need to establish email forwarding for the list of mailboxes and contacts you'll provide them in CSV format. You only need to include the mailbox's SMTP address and the contact's SMTP address in the file. They will run a script that will establish the forwarding. Be sure to request whether or not the mail sent to the mailbox will be stored and forwarded or just forwarded. 
&lt;/li&gt;&lt;li&gt;After you receive confirmation that the forwarding is in place, you'll want to hide these contacts in your local AD by setting the msExchHideFromAddressLists attribute to TRUE or you can use a utility like AD Modify to perform a bulk operation and set this value. 
&lt;/li&gt;&lt;li&gt;Run another dirsync and the contacts will be hidden in BPOS. The key here is you want BPOS users to send mail directly to the mailbox and not the contact. 
&lt;/li&gt;&lt;li&gt;Test forwarding from BPOS to the on-premise mailbox. If you're satisfied with the results, you're ready to proceed with pre-staging data and piloting. 
&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:12pt"&gt;Here's what the mail flow looks like during this period: 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="/Blogs/enger_erik/Lists/Photos/080410_2008_Migrating501.jpg" alt=""&gt;&lt;span style="font-family:Times New Roman;font-size:12pt"&gt;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:12pt"&gt;&lt;strong&gt;What You Need
&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:12pt"&gt;For this option you'll need the following: 
&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Local SMTP domain – one that your on-premise mail system can receive mail as (i.e. MX record points to on-premise mail system) and is also NOT registered in BPOS. 
&lt;/li&gt;&lt;li&gt;BPOS directory sync tool 
&lt;/li&gt;&lt;li&gt;AD with schema extensions for Exchange 200x 
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:12pt"&gt;Ok. Now fast forward to the flash cutover weekend. Aside from migrating any last remaining data you'll need to break the forwarding on the BPOS accounts. Gladly, this part is under your control. Simply delete the local contacts in AD and run a directory sync with BPOS which removes the contacts along with the forwarding. Now, if required as part of your migration strategy, set forwarding on the local mailbox to forward mail to the cloud mailboxes. This is usually accomplished through the migration toolset. Yes, we're reversing the flow here. Since you now have a new primary mailbox hosted by BPOS you'll want to make sure new mail that ends up in the old mail system gets forwarded to the BPOS mailbox. 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:12pt"&gt;&lt;strong&gt;In Summary
&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:12pt"&gt;Benefits/drawbacks of this solution: 
&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Benefit – you can mass activate all your users and still have coexistence and run pilots. 
&lt;/li&gt;&lt;li&gt;Benefit – you can pre-stage data well in advance of the cutover weekend allowing you more time if more data is needed. 
&lt;/li&gt;&lt;li&gt;Drawback – pre-staging data can be problematic in that usually data is migrated as a snapshot of what the on-premise mailbox looks like at the time you migrated that particular user. Any subsequent changes might not end up in the same folder or status the user has it in when they get cutover. You might end up with a lot of calls about this so proper and frequent communication with the users is necessary. &lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</body><description>&lt;div class=ExternalClass05677EE6892E49B78C3DD90008624E65&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:12pt"&gt;&lt;strong&gt;Background
&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:12pt"&gt;Let me explain what this means first and set some criteria for a statement like this. In the majority of cases this would involve moving little to no data which is usually the recommended approach for such a large cutover (a.k.a. flash cutover). Coexistence between on-premise mail systems and BPOS can be problematic and confusing for users as well as administrators. Shortening or eliminating this coexistence period is usually a pretty high priority goal for any mail migration project. We try to urge most customers to go with &amp;quot;green field&amp;quot; or minimal data such as calendars and contacts and maybe a few days' worth of email. While this might not seem like a lot of data it can still take several hours or days to move this data over given the number of seats involved and depending on the migration tools you're using. 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:12pt"&gt;Normally migrating this many users over a weekend doesn't just involve simple mail migration. There are also related requirements that need to be in place like: 
&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Deploying the SSO and Outlook clients 
&lt;/li&gt;&lt;li&gt;Possible (re-)training for users and admins 
&lt;/li&gt;&lt;li&gt;BlackBerry devices need to be re-provisioned in BPOS, Windows Mobile/ActiveSync devices need to be updated to point to BPOS 
&lt;/li&gt;&lt;li&gt;Application integration testing and re-tooling to work with current workflows including email 
&lt;/li&gt;&lt;li&gt;Running a pilot or two 
&lt;/li&gt;&lt;li&gt;Testing all the above and more 
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:12pt"&gt;There's also that dreaded post-migration support call barrage you just know is coming even though you've communicated How-To and FAQ docs and trained your staff so they're a lean, mean supporting team. Even will all of these challenges it still can be accomplished with a lot of proper planning and testing. 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:12pt"&gt;Back to the question at hand: How can you flash cutover 5000 users over a weekend, especially if you want to do a pilot or two ahead of time (without rolling them back)? You might also ask, what is the big problem here? Let's say you have registered your BPOS SMTP domains as external relay. This means that email sent from other activated BPOS users will be attempted to deliver locally to a BPOS mailbox first, then to your on-premise mail system via the MX records. The problem begins once you activate a BPOS user and you don't migrate them, meaning, they aren't treating it as their primary mailbox and mail is not forwarding to their BPOS mailbox. Once this activation occurs, mail flow back to the on-premise mailbox is broken, simply because there is already a valid local mailbox ready to receive messages. You end up with dual mailboxes for some folks with mail sent from other BPOS users ending up in the BPOS mailbox and mail sent from the on-premise system in their local mailbox. Unless the user is set up to connect to both mailboxes, they might never know they are missing mail. 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:12pt"&gt;&lt;strong&gt;The Strategy
&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:12pt"&gt;Ok, I understand the problem. How do I fix it and still do pilots and a flash cutover? 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:12pt"&gt;Well, you simply set up mail forwarding in BPOS to forward mail back to the on-premise mailbox. Normally for on-premise to on-premise migrations the administrators can take care of all of this usually with whatever migration tool they're using or even a script. With BPOS, at least for now, you need to work with the BPOS support team to accomplish the same task. As of this writing, there are no BPOS PowerShell cmdlets available to set forwarding, although it's quite possible they will be available in the next major release of BPOS (a.k.a. Wave 14). Normally in Exchange we would use the targetAddress field to control where mail gets routed. For BPOS we establish forwarding through use of contacts. 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:12pt"&gt;Here's how it works at a high level: 
&lt;/span&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;You establish your directory sync between AD and BPOS. 
&lt;/li&gt;&lt;li&gt;You create a matching contact in AD/Exchange for each user participating in the flash cutover and pilot 
&lt;/li&gt;&lt;li&gt;You sync these contacts to BPOS 
&lt;/li&gt;&lt;li&gt;You mass activate the BPOS accounts 
&lt;/li&gt;&lt;li&gt;You submit a request to BPOS support that you need to establish email forwarding for the list of mailboxes and contacts you'll provide them in CSV format. You only need to include the mailbox's SMTP address and the contact's SMTP address in the file. They will run a script that will establish the forwarding. Be sure to request whether or not the mail sent to the mailbox will be stored and forwarded or just forwarded. 
&lt;/li&gt;&lt;li&gt;After you receive confirmation that the forwarding is in place, you'll want to hide these contacts in your local AD by setting the msExchHideFromAddressLists attribute to TRUE or you can use a utility like AD Modify to perform a bulk operation and set this value. 
&lt;/li&gt;&lt;li&gt;Run another dirsync and the contacts will be hidden in BPOS. The key here is you want BPOS users to send mail directly to the mailbox and not the contact. 
&lt;/li&gt;&lt;li&gt;Test forwarding from BPOS to the on-premise mailbox. If you're satisfied with the results, you're ready to proceed with pre-staging data and piloting. 
&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:12pt"&gt;Here's what the mail flow looks like during this period: 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="/Blogs/enger_erik/Lists/Photos/080410_2008_Migrating501.jpg" alt=""&gt;&lt;span style="font-family:Times New Roman;font-size:12pt"&gt;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:12pt"&gt;&lt;strong&gt;What You Need
&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:12pt"&gt;For this option you'll need the following: 
&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Local SMTP domain – one that your on-premise mail system can receive mail as (i.e. MX record points to on-premise mail system) and is also NOT registered in BPOS. 
&lt;/li&gt;&lt;li&gt;BPOS directory sync tool 
&lt;/li&gt;&lt;li&gt;AD with schema extensions for Exchange 200x 
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:12pt"&gt;Ok. Now fast forward to the flash cutover weekend. Aside from migrating any last remaining data you'll need to break the forwarding on the BPOS accounts. Gladly, this part is under your control. Simply delete the local contacts in AD and run a directory sync with BPOS which removes the contacts along with the forwarding. Now, if required as part of your migration strategy, set forwarding on the local mailbox to forward mail to the cloud mailboxes. This is usually accomplished through the migration toolset. Yes, we're reversing the flow here. Since you now have a new primary mailbox hosted by BPOS you'll want to make sure new mail that ends up in the old mail system gets forwarded to the BPOS mailbox. 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:12pt"&gt;&lt;strong&gt;In Summary
&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;font-size:12pt"&gt;Benefits/drawbacks of this solution: 
&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Benefit – you can mass activate all your users and still have coexistence and run pilots. 
&lt;/li&gt;&lt;li&gt;Benefit – you can pre-stage data well in advance of the cutover weekend allowing you more time if more data is needed. 
&lt;/li&gt;&lt;li&gt;Drawback – pre-staging data can be problematic in that usually data is migrated as a snapshot of what the on-premise mailbox looks like at the time you migrated that particular user. Any subsequent changes might not end up in the same folder or status the user has it in when they get cutover. You might end up with a lot of calls about this so proper and frequent communication with the users is necessary. &lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description><author>Erik Enger</author><link>http://blogs.pointbridge.com/Blogs/enger_erik/Pages/Post.aspx?_ID=34</link><description /><pubDate>2010-08-04 15:10:00</pubDate></item><item><id>77</id><title>Using ISA 2006 / TMG to Publish Exchange 2007 and 2010</title><body>&lt;div class=ExternalClass0ABD1731F33C4847874AFE5D07CFFF6B&gt;&lt;p&gt;We've recently assisted a number of clients in Exchange 2007 &lt;span style="font-family:Wingdings"&gt;à&lt;/span&gt; 2010 upgrades. In each case, they've been using ISA or TMG to publish external Exchange services. For the most part, it's been easy to find information on the subject: the &lt;a href="http://msexchangeteam.com/archive/2009/12/17/453625.aspx"&gt;MS Exchange team&lt;/a&gt; has a really nice write up on the ISA configurations for 2010 upgrade; &lt;a href="http://www.msexchange.org/tutorials/Outlook-Anywhere-2007-ISA-Server-2006.html"&gt;ISAserver.org&lt;/a&gt; has a good write-up in general on ISA and Exchange; &lt;a href="http://www.shudnow.net/2009/08/05/publishing-exchange-2007-autodisover-in-isa-2006-part-2/"&gt;Elan Shudnow&lt;/a&gt; has a post or two on the subject; and there's always &lt;a href="http://technet.microsoft.com/en-us/library/bb331965.aspx"&gt;technet&lt;/a&gt;. All the info is helpful, however my issue was that there are 1,000,000 ways to configure these services with ISA and Exchange: Basic? NTLM? Prompts? Web listeners? Pre-Authentication? So many different routes has led to some confusion in setup.
&lt;/p&gt;&lt;p&gt;Practically speaking, it turned out that most customers really wanted a simple setup:
&lt;/p&gt;&lt;ol&gt;&lt;li&gt;a single name (&lt;strong&gt;mail.company.com&lt;/strong&gt;)
&lt;/li&gt;&lt;li&gt;Never prompted users for credentials in Outlook. Ever!
&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;If this is sounds like you (or your customers), then I've got a condensed guide to make life easy. Below assumes that you have all users coming through ISA/TMG and going to the CAS 2010 servers. This also assumes that you have Exchange 2007 and 2010 mailboxes co-existing.
&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Use a single name for Exchange 2010: &lt;strong&gt;mail.company.com&lt;/strong&gt;
		&lt;/li&gt;&lt;li&gt;Use a single name for Exchange 2007: &lt;strong&gt;legacymail.company.com&lt;/strong&gt;
		&lt;/li&gt;&lt;li&gt;&lt;a href="http://msexchangeteam.com/archive/2009/11/20/453272.aspx"&gt;Set up URL redirection for 2007 users&lt;/a&gt;. This article is really important as it outlines exactly how to transition from CAS 2007 to 2010.
&lt;/li&gt;&lt;li&gt;&lt;div&gt;Use &lt;strong&gt;&lt;em&gt;only one web listener&lt;/em&gt;&lt;/strong&gt; with Forms Based Authentication turned on.
&lt;/div&gt;&lt;p&gt;&lt;img src="/Blogs/mcgillen_matt/Lists/Photos/062510_1907_UsingISA2001.png" alt=""&gt;
			&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;div&gt;Make sure that in the &amp;quot;advanced&amp;quot; box, you uncheck &amp;quot;all users must authenticate&amp;quot; and that you put in your AD domain for Basic Authentication
&lt;/div&gt;&lt;p&gt;&lt;img src="/Blogs/mcgillen_matt/Lists/Photos/062510_1907_UsingISA2002.png" alt=""&gt;
					&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;&lt;span style="background-color:yellow"&gt;Ensure you have &amp;quot;single sign-on&amp;quot; enabled on your web listener. &lt;strong&gt;&lt;em&gt;This is required especially for OW 2007 and 2010 co-existence&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;em&gt;. See below for details on why this is&lt;/em&gt;&lt;/strong&gt;.  
&lt;/div&gt;&lt;p&gt;&lt;img src="/Blogs/mcgillen_matt/Lists/Photos/062510_1907_UsingISA2003.png" alt=""&gt;
					&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Use separate web publishing rules, all bound to your one listener, for each service:
&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div&gt;Outlook Anywhere 2010
&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div&gt;Authentication delegation: &amp;quot;no delegation, but client may access directly&amp;quot;
&lt;/div&gt;&lt;p&gt;&lt;img src="/Blogs/mcgillen_matt/Lists/Photos/062510_1907_UsingISA2004.png" alt=""&gt;
							&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;&lt;span style="background-color:yellow"&gt;Users: &amp;quot;All users&amp;quot; - &lt;strong&gt;&lt;em&gt;note: do not use &amp;quot;all authenticated users&amp;quot;; this will cause Outlook Anywhere clients to never connect to Exchange.&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;em&gt; See below for details.&lt;/em&gt;&lt;/strong&gt;
							&lt;/div&gt;&lt;p&gt;&lt;img src="/Blogs/mcgillen_matt/Lists/Photos/062510_1907_UsingISA2005.png" alt=""&gt;
							&lt;/p&gt;&lt;/li&gt;&lt;li&gt;Destination: Exchange 2010 CAS (or CAS farm)
&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Outlook Web Access  2010
&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div&gt;Authentication delegation: Basic
&lt;/div&gt;&lt;p&gt;&lt;img src="/Blogs/mcgillen_matt/Lists/Photos/062510_1907_UsingISA2006.png" alt=""&gt;
							&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Users: &amp;quot;all authenticated users&amp;quot;
&lt;/div&gt;&lt;p&gt;&lt;img src="/Blogs/mcgillen_matt/Lists/Photos/062510_1907_UsingISA2007.png" alt=""&gt;
							&lt;/p&gt;&lt;/li&gt;&lt;li&gt;Destination: Exchange 2010 CAS (or CAS farm)
&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Active Sync 2010
&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div&gt;Authentication delegation: Basic
&lt;/div&gt;&lt;p&gt;&lt;img src="/Blogs/mcgillen_matt/Lists/Photos/062510_1907_UsingISA2008.png" alt=""&gt;
							&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Users: &amp;quot;all authenticated users&amp;quot;
&lt;/div&gt;&lt;p&gt;&lt;img src="/Blogs/mcgillen_matt/Lists/Photos/062510_1907_UsingISA2009.png" alt=""&gt;
							&lt;/p&gt;&lt;/li&gt;&lt;li&gt;Destination: Exchange 2010 CAS (or CAS farm)
&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Outlook Anywhere 2007
&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Authentication delegation: &amp;quot;no delegation, but client may access directly&amp;quot;
&lt;/li&gt;&lt;li&gt;Users: &amp;quot;All users&amp;quot; - note: do not use &amp;quot;all authenticated users&amp;quot;; this will cause Outlook Anywhere clients to never connect to Exchange.
&lt;/li&gt;&lt;li&gt;Destination: Exchange 2007 CAS (or CAS farm)
&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Outlook Web Access  2007
&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Authentication delegation: Basic
&lt;/li&gt;&lt;li&gt;Users: &amp;quot;all authenticated users&amp;quot;
&lt;/li&gt;&lt;li&gt;Destination: Exchange 2007 CAS (or CAS farm)
&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Active Sync 2007
&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Authentication delegation: Basic
&lt;/li&gt;&lt;li&gt;Users: &amp;quot;all authenticated users&amp;quot;
&lt;/li&gt;&lt;li&gt;Destination: Exchange 2007 CAS (or CAS farm)
&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Exchange server 2010 authentication:
&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Outlook Anywhere: NTLM only
&lt;/li&gt;&lt;li&gt;Outlook Web Access: NTLM/Basic (no forms-based authentication)
&lt;/li&gt;&lt;li&gt;Active Sync: Basic
&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Exchange server 2007 authentication:
&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Outlook Anywhere: NTLM only
&lt;/li&gt;&lt;li&gt;Outlook Web Access: NTLM/Basic (no forms-based authentication)
&lt;/li&gt;&lt;li&gt;Active Sync: NTLM only 
&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Outlook 2007 / 2010 Authentication
&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Set to NTLM
&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;span style="font-size:12pt"&gt;&lt;strong&gt;&lt;em&gt;Q: Why should I only use one web listener / enable SSO?
&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;The main reason why you should use one web listener for all 2007 and 2010 rules is due to single-sign on in OWA. 
&lt;/p&gt;&lt;p&gt;When you have an Exchange 2010 user coming through ISA and being connected to an Exchange 2010 CAS server for OWA, ISA will use forms-based authentication to authenticate the user &amp;amp; pass the user right on to the 2010 CAS. That's all great.
&lt;/p&gt;&lt;p&gt;But when a user whose mailbox is still on Exchange 2007 connects to &lt;strong&gt;mail.company.com&lt;/strong&gt; for OWA, ISA will handle the request, pass the request on to Exchange 2010 CAS. Exchange 2010 CAS will realize that the user is an Exchange 2007 user and it will send a client-side redirect to the user's browser for &amp;quot;&lt;strong&gt;legacymail.company.com&lt;/strong&gt;&amp;quot;, which is also being published by ISA. (assuming you've set this up properly). When the client's browser gets the redirect, you don't want the user to connect to legacymail.company.com and get prompted AGAIN.
&lt;/p&gt;&lt;p&gt;You can do this – but it requires using a single web listener for both OWA publishing rules. The reason is that ISA doesn't support Single Sign-on (SSO) across multiple web listeners. So if you have the &lt;strong&gt;mail.company.com&lt;/strong&gt; rule bound to the same listener as &lt;strong&gt;legacymail.company.com&lt;/strong&gt; listener – the user will not get prompted when Exchange redirects him/her to the legacymail OWA page.
&lt;/p&gt;&lt;p&gt;If you're using separate listeners, the redirection to legacymail will cause the user to get re-prompted.
&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt"&gt;&lt;strong&gt;&lt;em&gt;Q: Why do I need to set the Outlook Anywhere rule to use &amp;quot;All Users&amp;quot;
&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Your main web listener is set to use Forms Based Authentication. This is what you'll need to make OWA work. But as you can imagine, Outlook Anywhere and Active Sync are not going to work with FBA. That's ok- if a client tries to connect to an FBA-enabled listener and it's unable to handle the form, ISA will fall back to Basic authentication.
&lt;/p&gt;&lt;p&gt;Active Sync is cool with this; you've already entered your user name and password into your Active Sync device. This is good enough to get you through ISA.
&lt;/p&gt;&lt;p&gt;Outlook Anywhere, however, is not cool with this. Since you've set your Outlook Anywhere authentication method to NTLM (step 7 above) it's not going to authenticate to a web listener that's looking for Basic. If you change Outlook Anywhere to use Basic authentication, this will work… but your end users will be prompted for username and password. Which you probably don't want.
&lt;/p&gt;&lt;p&gt;So how best to fix it? Just set your Outlook Anywhere web publishing rule to allow &amp;quot;all users&amp;quot;. So even though ISA is falling back to Basic authentication on the web listener, your rule is now saying: &amp;quot;I don't care if they're authenticated or not, just send them through&amp;quot;. This allows anyone from the outside to at least make it through ISA without having ISA authenticate you. And since you've set the Outlook Anywhere rule to &amp;quot;no delegation, but allow client to authenticate directly&amp;quot; the Outlook client will just pass right through ISA and authenticate directly to the CAS server. The Outlook client is set to NTLM and now it's hitting the CAS server directly – so it's important to have the CAS server's authentication for Outlook Anywhere set to NTLM (step 5a above).
&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt"&gt;&lt;strong&gt;&lt;em&gt;Q: Is it a bad idea to bypass ISA pre-authentication for Outlook Anywhere?
&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;I personally don't think it's a big deal. &lt;a href="http://www.shudnow.net/2009/08/05/publishing-exchange-2007-autodisover-in-isa-2006-part-2/"&gt;Elan Shudnow's post&lt;/a&gt; has more to say about that, however.
&lt;/p&gt;&lt;p&gt;If you are totally opposed to this concept, then you're going to need to live with either:
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;A separate name for Outlook Anywhere (&lt;strong&gt;outlook.company.com&lt;/strong&gt;) with its own cert and web listener. OR
&lt;/li&gt;&lt;li&gt;Use Basic authentication and force your users to be prompted for username and password.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</body><description>&lt;div class=ExternalClass0ABD1731F33C4847874AFE5D07CFFF6B&gt;&lt;p&gt;We've recently assisted a number of clients in Exchange 2007 &lt;span style="font-family:Wingdings"&gt;à&lt;/span&gt; 2010 upgrades. In each case, they've been using ISA or TMG to publish external Exchange services. For the most part, it's been easy to find information on the subject: the &lt;a href="http://msexchangeteam.com/archive/2009/12/17/453625.aspx"&gt;MS Exchange team&lt;/a&gt; has a really nice write up on the ISA configurations for 2010 upgrade; &lt;a href="http://www.msexchange.org/tutorials/Outlook-Anywhere-2007-ISA-Server-2006.html"&gt;ISAserver.org&lt;/a&gt; has a good write-up in general on ISA and Exchange; &lt;a href="http://www.shudnow.net/2009/08/05/publishing-exchange-2007-autodisover-in-isa-2006-part-2/"&gt;Elan Shudnow&lt;/a&gt; has a post or two on the subject; and there's always &lt;a href="http://technet.microsoft.com/en-us/library/bb331965.aspx"&gt;technet&lt;/a&gt;. All the info is helpful, however my issue was that there are 1,000,000 ways to configure these services with ISA and Exchange: Basic? NTLM? Prompts? Web listeners? Pre-Authentication? So many different routes has led to some confusion in setup.
&lt;/p&gt;&lt;p&gt;Practically speaking, it turned out that most customers really wanted a simple setup:
&lt;/p&gt;&lt;ol&gt;&lt;li&gt;a single name (&lt;strong&gt;mail.company.com&lt;/strong&gt;)
&lt;/li&gt;&lt;li&gt;Never prompted users for credentials in Outlook. Ever!
&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;If this is sounds like you (or your customers), then I've got a condensed guide to make life easy. Below assumes that you have all users coming through ISA/TMG and going to the CAS 2010 servers. This also assumes that you have Exchange 2007 and 2010 mailboxes co-existing.
&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Use a single name for Exchange 2010: &lt;strong&gt;mail.company.com&lt;/strong&gt;
		&lt;/li&gt;&lt;li&gt;Use a single name for Exchange 2007: &lt;strong&gt;legacymail.company.com&lt;/strong&gt;
		&lt;/li&gt;&lt;li&gt;&lt;a href="http://msexchangeteam.com/archive/2009/11/20/453272.aspx"&gt;Set up URL redirection for 2007 users&lt;/a&gt;. This article is really important as it outlines exactly how to transition from CAS 2007 to 2010.
&lt;/li&gt;&lt;li&gt;&lt;div&gt;Use &lt;strong&gt;&lt;em&gt;only one web listener&lt;/em&gt;&lt;/strong&gt; with Forms Based Authentication turned on.
&lt;/div&gt;&lt;p&gt;&lt;img src="/Blogs/mcgillen_matt/Lists/Photos/062510_1907_UsingISA2001.png" alt=""&gt;
			&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;div&gt;Make sure that in the &amp;quot;advanced&amp;quot; box, you uncheck &amp;quot;all users must authenticate&amp;quot; and that you put in your AD domain for Basic Authentication
&lt;/div&gt;&lt;p&gt;&lt;img src="/Blogs/mcgillen_matt/Lists/Photos/062510_1907_UsingISA2002.png" alt=""&gt;
					&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;&lt;span style="background-color:yellow"&gt;Ensure you have &amp;quot;single sign-on&amp;quot; enabled on your web listener. &lt;strong&gt;&lt;em&gt;This is required especially for OW 2007 and 2010 co-existence&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;em&gt;. See below for details on why this is&lt;/em&gt;&lt;/strong&gt;.  
&lt;/div&gt;&lt;p&gt;&lt;img src="/Blogs/mcgillen_matt/Lists/Photos/062510_1907_UsingISA2003.png" alt=""&gt;
					&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Use separate web publishing rules, all bound to your one listener, for each service:
&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div&gt;Outlook Anywhere 2010
&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div&gt;Authentication delegation: &amp;quot;no delegation, but client may access directly&amp;quot;
&lt;/div&gt;&lt;p&gt;&lt;img src="/Blogs/mcgillen_matt/Lists/Photos/062510_1907_UsingISA2004.png" alt=""&gt;
							&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;&lt;span style="background-color:yellow"&gt;Users: &amp;quot;All users&amp;quot; - &lt;strong&gt;&lt;em&gt;note: do not use &amp;quot;all authenticated users&amp;quot;; this will cause Outlook Anywhere clients to never connect to Exchange.&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;em&gt; See below for details.&lt;/em&gt;&lt;/strong&gt;
							&lt;/div&gt;&lt;p&gt;&lt;img src="/Blogs/mcgillen_matt/Lists/Photos/062510_1907_UsingISA2005.png" alt=""&gt;
							&lt;/p&gt;&lt;/li&gt;&lt;li&gt;Destination: Exchange 2010 CAS (or CAS farm)
&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Outlook Web Access  2010
&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div&gt;Authentication delegation: Basic
&lt;/div&gt;&lt;p&gt;&lt;img src="/Blogs/mcgillen_matt/Lists/Photos/062510_1907_UsingISA2006.png" alt=""&gt;
							&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Users: &amp;quot;all authenticated users&amp;quot;
&lt;/div&gt;&lt;p&gt;&lt;img src="/Blogs/mcgillen_matt/Lists/Photos/062510_1907_UsingISA2007.png" alt=""&gt;
							&lt;/p&gt;&lt;/li&gt;&lt;li&gt;Destination: Exchange 2010 CAS (or CAS farm)
&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Active Sync 2010
&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div&gt;Authentication delegation: Basic
&lt;/div&gt;&lt;p&gt;&lt;img src="/Blogs/mcgillen_matt/Lists/Photos/062510_1907_UsingISA2008.png" alt=""&gt;
							&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Users: &amp;quot;all authenticated users&amp;quot;
&lt;/div&gt;&lt;p&gt;&lt;img src="/Blogs/mcgillen_matt/Lists/Photos/062510_1907_UsingISA2009.png" alt=""&gt;
							&lt;/p&gt;&lt;/li&gt;&lt;li&gt;Destination: Exchange 2010 CAS (or CAS farm)
&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Outlook Anywhere 2007
&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Authentication delegation: &amp;quot;no delegation, but client may access directly&amp;quot;
&lt;/li&gt;&lt;li&gt;Users: &amp;quot;All users&amp;quot; - note: do not use &amp;quot;all authenticated users&amp;quot;; this will cause Outlook Anywhere clients to never connect to Exchange.
&lt;/li&gt;&lt;li&gt;Destination: Exchange 2007 CAS (or CAS farm)
&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Outlook Web Access  2007
&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Authentication delegation: Basic
&lt;/li&gt;&lt;li&gt;Users: &amp;quot;all authenticated users&amp;quot;
&lt;/li&gt;&lt;li&gt;Destination: Exchange 2007 CAS (or CAS farm)
&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Active Sync 2007
&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Authentication delegation: Basic
&lt;/li&gt;&lt;li&gt;Users: &amp;quot;all authenticated users&amp;quot;
&lt;/li&gt;&lt;li&gt;Destination: Exchange 2007 CAS (or CAS farm)
&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Exchange server 2010 authentication:
&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Outlook Anywhere: NTLM only
&lt;/li&gt;&lt;li&gt;Outlook Web Access: NTLM/Basic (no forms-based authentication)
&lt;/li&gt;&lt;li&gt;Active Sync: Basic
&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Exchange server 2007 authentication:
&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Outlook Anywhere: NTLM only
&lt;/li&gt;&lt;li&gt;Outlook Web Access: NTLM/Basic (no forms-based authentication)
&lt;/li&gt;&lt;li&gt;Active Sync: NTLM only 
&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Outlook 2007 / 2010 Authentication
&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Set to NTLM
&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;span style="font-size:12pt"&gt;&lt;strong&gt;&lt;em&gt;Q: Why should I only use one web listener / enable SSO?
&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;The main reason why you should use one web listener for all 2007 and 2010 rules is due to single-sign on in OWA. 
&lt;/p&gt;&lt;p&gt;When you have an Exchange 2010 user coming through ISA and being connected to an Exchange 2010 CAS server for OWA, ISA will use forms-based authentication to authenticate the user &amp;amp; pass the user right on to the 2010 CAS. That's all great.
&lt;/p&gt;&lt;p&gt;But when a user whose mailbox is still on Exchange 2007 connects to &lt;strong&gt;mail.company.com&lt;/strong&gt; for OWA, ISA will handle the request, pass the request on to Exchange 2010 CAS. Exchange 2010 CAS will realize that the user is an Exchange 2007 user and it will send a client-side redirect to the user's browser for &amp;quot;&lt;strong&gt;legacymail.company.com&lt;/strong&gt;&amp;quot;, which is also being published by ISA. (assuming you've set this up properly). When the client's browser gets the redirect, you don't want the user to connect to legacymail.company.com and get prompted AGAIN.
&lt;/p&gt;&lt;p&gt;You can do this – but it requires using a single web listener for both OWA publishing rules. The reason is that ISA doesn't support Single Sign-on (SSO) across multiple web listeners. So if you have the &lt;strong&gt;mail.company.com&lt;/strong&gt; rule bound to the same listener as &lt;strong&gt;legacymail.company.com&lt;/strong&gt; listener – the user will not get prompted when Exchange redirects him/her to the legacymail OWA page.
&lt;/p&gt;&lt;p&gt;If you're using separate listeners, the redirection to legacymail will cause the user to get re-prompted.
&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt"&gt;&lt;strong&gt;&lt;em&gt;Q: Why do I need to set the Outlook Anywhere rule to use &amp;quot;All Users&amp;quot;
&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Your main web listener is set to use Forms Based Authentication. This is what you'll need to make OWA work. But as you can imagine, Outlook Anywhere and Active Sync are not going to work with FBA. That's ok- if a client tries to connect to an FBA-enabled listener and it's unable to handle the form, ISA will fall back to Basic authentication.
&lt;/p&gt;&lt;p&gt;Active Sync is cool with this; you've already entered your user name and password into your Active Sync device. This is good enough to get you through ISA.
&lt;/p&gt;&lt;p&gt;Outlook Anywhere, however, is not cool with this. Since you've set your Outlook Anywhere authentication method to NTLM (step 7 above) it's not going to authenticate to a web listener that's looking for Basic. If you change Outlook Anywhere to use Basic authentication, this will work… but your end users will be prompted for username and password. Which you probably don't want.
&lt;/p&gt;&lt;p&gt;So how best to fix it? Just set your Outlook Anywhere web publishing rule to allow &amp;quot;all users&amp;quot;. So even though ISA is falling back to Basic authentication on the web listener, your rule is now saying: &amp;quot;I don't care if they're authenticated or not, just send them through&amp;quot;. This allows anyone from the outside to at least make it through ISA without having ISA authenticate you. And since you've set the Outlook Anywhere rule to &amp;quot;no delegation, but allow client to authenticate directly&amp;quot; the Outlook client will just pass right through ISA and authenticate directly to the CAS server. The Outlook client is set to NTLM and now it's hitting the CAS server directly – so it's important to have the CAS server's authentication for Outlook Anywhere set to NTLM (step 5a above).
&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt"&gt;&lt;strong&gt;&lt;em&gt;Q: Is it a bad idea to bypass ISA pre-authentication for Outlook Anywhere?
&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;I personally don't think it's a big deal. &lt;a href="http://www.shudnow.net/2009/08/05/publishing-exchange-2007-autodisover-in-isa-2006-part-2/"&gt;Elan Shudnow's post&lt;/a&gt; has more to say about that, however.
&lt;/p&gt;&lt;p&gt;If you are totally opposed to this concept, then you're going to need to live with either:
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;A separate name for Outlook Anywhere (&lt;strong&gt;outlook.company.com&lt;/strong&gt;) with its own cert and web listener. OR
&lt;/li&gt;&lt;li&gt;Use Basic authentication and force your users to be prompted for username and password.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description><author>Matthew McGillen</author><link>http://blogs.pointbridge.com/Blogs/mcgillen_matt/Pages/Post.aspx?_ID=77</link><description /><pubDate>2010-06-25 14:08:22</pubDate></item><item><id>88</id><title>Outlook Profile Configuration without the MSOL Client</title><body>&lt;div class=ExternalClassFDEE5C56E56C4D91A67FD0B602CB02B3&gt;&lt;div class=ExternalClass3538E1C76C284875B5C00F22EAA0C5F5&gt; &lt;p&gt;There are a few scenarios where you may want to use Outlook to access an Exchange Online mailbox but cannot use the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=5C2CA866-4107-4AE5-98D5-76BF1B18FF87&amp;amp;displaylang=en"&gt;Microsoft Online Services Sign-In&lt;/a&gt; client.  This could be due to installation or operating requirements of the client (some OS versions are unsupported) or maybe users don’t have the required permissions to install software but can at least modify Outlook profiles.&lt;/p&gt; &lt;p&gt;Take note that this is a completely unsupported approach and might not even work on some platforms.  The intent is for accessing the mailbox in temporary situations and not for long-term deployment solutions.  Not using the sign-in client can impact more than just single-sign-in user experience.  It is a ‘best practice’ approach to deploy the client to end-users on supported platforms.&lt;/p&gt; &lt;p&gt;Additionally it was &lt;a href="http://social.technet.microsoft.com/Forums/en-US/onlineservicesexchange/thread/94a1ccf4-4ccc-4a2e-953b-eecc871601e3"&gt;pointed out&lt;/a&gt; by a Microsoft Support Engineer that not using the Services Sign-In client prevents certificate downloads from BPOS which is required to support AutoDiscover.  Thus Outlook clients will not be able to download the Offline Address Book or see any Free/Busy and Out of Office information.&lt;/p&gt; &lt;p&gt;The instructions in this article are simply a reverse-engineered look at what it is required to configure an Outlook profile to work with a mailbox hosted on Exchange Online/BPOS.  This approach was tested using Outlook 2003, 2007, and 2010 against a mailbox hosted in the North American datacenters.  I assume the same process would also work for other regions of the world with the correct &lt;a href="http://www.microsoft.com/online/help/en-us/bpos/index.html?page=html/c0a1a4b9-111f-4bd4-8fab-8147344cd278.htm"&gt;URLs&lt;/a&gt; (&lt;em&gt;red002&lt;/em&gt; for EMEA and &lt;em&gt;red003&lt;/em&gt; for APAC).&lt;/p&gt; &lt;p&gt;The two main issues that can prevent administrators from successfully configuring profiles are related to (a) the order in which the profile is configured and (b) the confusing nature of the Exchange mailbox server names.  But using the correct approach to the first issue takes care of the second.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;font color="#3f72ae"&gt;Create New Outlook Profile&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Start by creating a new Outlook profile using the &lt;strong&gt;Mail &lt;/strong&gt;control panel applet.  (In Windows 7 this can be found by searching for ‘mail’ in the Control Panel window.)&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Open the &lt;font color="#739643"&gt;Mail&lt;/font&gt; (or &amp;quot;’Mail 32-bit’) Control Panel applet.  &lt;li&gt;Click &lt;font color="#739643"&gt;&lt;u&gt;S&lt;/u&gt;how Profiles…&lt;/font&gt;  &lt;li&gt;Click Add…  &lt;li&gt;Enter a unique, descriptive name for the new profile (e.g. &lt;a href="mailto:jeff@contoso.com"&gt;jeff@contoso.com&lt;/a&gt;)  &lt;li&gt;Depending on the version of Outlook used select the available choice to create a new profile:  &lt;ol&gt; &lt;li&gt;Outlook 2003: &lt;font color="#739643"&gt;Add a new e-mail account&lt;/font&gt;  &lt;li&gt;Outlook 2007/2010: &lt;font color="#739643"&gt;Manually configure server settings or additional server types&lt;/font&gt;&lt;/li&gt;&lt;/ol&gt; &lt;li&gt;Select &lt;font color="#739643"&gt;Microsoft Exchange&lt;/font&gt; (Server).&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Now the first important step has been reached, as a valid server name will need to be supplied, but the odd thing is that internal, non-resolvable FQDNs are used by for the Exchange Online mailbox servers.  If you have ever looked at a profile configured automatically by the sign-in client you would have noticed that the server names were typically in a &lt;em&gt;REDxxx.local&lt;/em&gt; domain.  So clearly a normal connection cannot be made to that server over the Internet as .local is not a publically supported DNS suffix.  But Outlook Anywhere (aka RPC over HTTP) can be configured for the initial connection to the mailbox.  This approach also works for all on-premise Exchange clients as well when trying to configure a profile to use Outlook Anywhere when Autodiscover is either not configured or supported.&lt;/p&gt; &lt;p&gt;There is a long list of possible Exchange mailbox server names that may change at any point as since this is an unsupported process Microsoft could modify them at any point during server upgrades/replacements.  The name used in this example the may not work so I would recommend looking at the profile setting of another mailbox (or even the same mailbox) which was configured properly through the normal client procedure.  If that mailbox server name resolves but is not the server which actually hosts this specific mailbox account the profile will still work as Exchange will redirect Outlook to the correct mailbox server in the organization.  This can be verified by seeing that the server name changes to a different value after the profile is initially setup.&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Enter &lt;strong&gt;VA3DIAXVS101.RED001.local&lt;/strong&gt; in the &lt;font color="#739643"&gt;Microsoft Exchange server&lt;/font&gt; field.  Verify that &lt;font color="#739643"&gt;Use Cached Exchange Mode&lt;/font&gt; is selected.  &lt;li&gt;Enter the username of the desired mailbox, e.g. &lt;a href="mailto:jeff@contoso.com"&gt;jeff@contoso.com&lt;/a&gt; or &lt;a href="mailto:jeff@contoso.microsoftonline.com"&gt;jeff@contoso.microsoftonline.com&lt;/a&gt;, whichever format is the configured username of the online account.  &lt;li&gt;Click &lt;font color="#739643"&gt;&lt;u&gt;M&lt;/u&gt;ore Settings…&lt;/font&gt;  &lt;li&gt;An error message will appear stating &lt;em&gt;“The action cannot be completed.  The connection to Microsoft Exchange in unavailable.  Outlook must be online or connected to complete this action.”  &lt;/em&gt;Click &lt;font color="#739643"&gt;OK&lt;/font&gt;.  &lt;li&gt;Another settings window labeled &lt;em&gt;Microsoft Exchange&lt;/em&gt; will appear. Click &lt;font color="#739643"&gt;OK&lt;/font&gt; again.&lt;/li&gt;&lt;/ol&gt; &lt;ul&gt; &lt;li&gt;Note: If you attempt to use the &lt;em&gt;Check Name &lt;/em&gt;button in the previous window the process will always fail as the .local server name is not yet resolvable. Ignore that button.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;At this point the profile settings window should be displayed as seen in the image below, allowing the remainder of the configuration to be completed manually.  This allows for the RPC over HTTP settings to be configured so that the once unresolvable &lt;em&gt;.local &lt;/em&gt;server name will now be valid.&lt;/p&gt; &lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/88/image_6_0B228837.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=image border=0 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/88/image_thumb_2_0B228837.png" width=332 height=304&gt;&lt;/a&gt; &lt;/p&gt; &lt;p align=left&gt;&lt;em&gt;&lt;strong&gt;&lt;font color="#3f72ae"&gt;Configure Profile Settings&lt;/font&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt; &lt;p align=left&gt;Enter and confirm the following settings across the various properties tabs.  All steps beginning with ‘Verify’ or ‘Confirm’ indicate that the default value is the desired setting.  Steps labeled as ‘Select’ or ‘Enable’ indicate a change in the default profile setting.&lt;/p&gt; &lt;p align=left&gt;&lt;u&gt;General Tab&lt;/u&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;div align=left&gt;Enter a descriptive account name (e.g. Exchange Online).&lt;/div&gt; &lt;li&gt; &lt;div align=left&gt;Select &lt;font color="#739643"&gt;&lt;em&gt;Automatically detect connection state.&lt;/em&gt;&lt;/font&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p align=left&gt;&lt;u&gt;Advanced Tab&lt;/u&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Verify that &lt;em&gt;&lt;font color="#739643"&gt;Used Cached Exchange Mode&lt;/font&gt; &lt;/em&gt;and &lt;em&gt;&lt;font color="#739643"&gt;Download shared folders&lt;/font&gt; &lt;/em&gt;are enabled.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;u&gt;Security Tab&lt;/u&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Verify that &lt;em&gt;&lt;font color="#739643"&gt;Encrypt data between Microsoft Office Outlook and Microsoft Exchange&lt;/font&gt; &lt;/em&gt;is enabled.  &lt;li&gt;Verify that &lt;font color="#739643"&gt;&lt;em&gt;Negotiate authentication&lt;/em&gt;&lt;/font&gt; is the selected &lt;em&gt;Logon network security&lt;/em&gt; setting.&lt;/li&gt;&lt;/ul&gt; &lt;p align=center&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=image border=0 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/88/image_thumb_10_0B228837.png" width=248 height=204&gt; &lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=image border=0 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/88/image_thumb_8_0B228837.png" width=239 height=204&gt; &lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/88/image_24_0B228837.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=image border=0 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/88/image_thumb_11_0B228837.png" width=243 height=204&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;u&gt;Connection Tab&lt;/u&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Enable &lt;font color="#739643"&gt;&lt;em&gt;Connect to Microsoft Exchange using HTTP.&lt;/em&gt;&lt;/font&gt;  &lt;li&gt;Click &lt;em&gt;&lt;font color="#739643"&gt;&lt;u&gt;E&lt;/u&gt;xchange Proxy Settings…&lt;/font&gt;&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;u&gt;Exchange Proxy Settings&lt;/u&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;In the &lt;em&gt;&lt;font color="#739643"&gt;Use this URL to connect to my proxy server for Exchange&lt;/font&gt;&lt;/em&gt; field, enter &lt;strong&gt;red001.mail.microsoftonline.com&lt;/strong&gt; for mailboxes stored in North America datacenters.  Substitute &lt;em&gt;red002 &lt;/em&gt;or &lt;em&gt;red003 &lt;/em&gt;for other regions.  &lt;li&gt;Enable the &lt;em&gt;&lt;font color="#739643"&gt;Only connect…&lt;/font&gt;&lt;/em&gt; or &lt;em&gt;&lt;font color="#739643"&gt;Mutually authenticate… &lt;/font&gt;&lt;/em&gt;setting (depending on the version of Outlook).  &lt;li&gt;Enter the proxy server value of &lt;strong&gt;msstd:*.mail.microsoftonline.com&lt;/strong&gt; in the field below.  &lt;li&gt;Enable the setting &lt;em&gt;&lt;font color="#739643"&gt;On fast networks connect using HTTP first, then connect using TCP/IP.&lt;/font&gt;&lt;/em&gt;  &lt;li&gt;Verify the setting is enabled for &lt;em&gt;&lt;font color="#739643"&gt;On fast networks connect using HTTP first, then connect using TCP/IP.&lt;/font&gt;&lt;/em&gt;  &lt;li&gt;Verify that &lt;em&gt;&lt;font color="#739643"&gt;NTLM Authentication&lt;/font&gt;&lt;/em&gt; is the selected &lt;em&gt;Proxy authentication setting&lt;/em&gt;.&lt;/li&gt;&lt;/ul&gt; &lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/88/image_28_763105C3.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=image border=0 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/88/image_thumb_13_763105C3.png" width=285 height=304&gt;&lt;/a&gt;     &lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/88/image_30_763105C3.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=image border=0 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/88/image_thumb_14_763105C3.png" width=383 height=304&gt;&lt;/a&gt; &lt;/p&gt; &lt;p align=left&gt;Once completed with the steps above click &lt;em&gt;&lt;font color="#739643"&gt;OK &lt;/font&gt;&lt;/em&gt;to close and save the profile window, returning back to the original account creation wizard.&lt;/p&gt; &lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/88/image_36_763105C3.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=image border=0 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/88/image_thumb_17_763105C3.png" width=504 height=206&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Click the &lt;em&gt;&lt;font color="#739643"&gt;Chec&lt;u&gt;k&lt;/u&gt; Name&lt;/font&gt; &lt;/em&gt;button next to the User Name field and an authentication prompt should appear.  Enter the password for the online account.&lt;/p&gt; &lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/88/image_32_763105C3.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=image border=0 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/88/image_thumb_15_763105C3.png" width=254 height=165&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;After a few seconds the Microsoft Exchange settings page on the wizard should have updated the information by updating the correct home mailbox server name as well as converting the username to the Display Name value.  The underlined text format in both fields indicates a successful connection to the online mailbox, and thus the profile configuration is complete.&lt;/p&gt; &lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/88/image_38_763105C3.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=image border=0 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/88/image_thumb_18_763105C3.png" width=504 height=206&gt;&lt;/a&gt; &lt;/p&gt; &lt;p align=left&gt;Click &lt;em&gt;&lt;font color="#739643"&gt;Next&lt;/font&gt; &lt;/em&gt;and &lt;em&gt;&lt;font color="#739643"&gt;Finish &lt;/font&gt;&lt;/em&gt;to complete the wizard.&lt;/p&gt; &lt;p align=left&gt;Back at the original &lt;em&gt;Mail&lt;/em&gt; applet window make sure that the &lt;em&gt;&lt;font color="#739643"&gt;Prompt for a profile to be used&lt;/font&gt;&lt;/em&gt; setting is enabled if there are now multiple Outlook Profiles configured on the same Windows user profile.&lt;/p&gt; &lt;p align=center&gt;   &lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/88/image_48_763105C3.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=image border=0 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/88/image_thumb_23_763105C3.png" width=304 height=228&gt;&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;</body><description>&lt;div class=ExternalClassFDEE5C56E56C4D91A67FD0B602CB02B3&gt;&lt;div class=ExternalClass3538E1C76C284875B5C00F22EAA0C5F5&gt; &lt;p&gt;There are a few scenarios where you may want to use Outlook to access an Exchange Online mailbox but cannot use the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=5C2CA866-4107-4AE5-98D5-76BF1B18FF87&amp;amp;displaylang=en"&gt;Microsoft Online Services Sign-In&lt;/a&gt; client.  This could be due to installation or operating requirements of the client (some OS versions are unsupported) or maybe users don’t have the required permissions to install software but can at least modify Outlook profiles.&lt;/p&gt; &lt;p&gt;Take note that this is a completely unsupported approach and might not even work on some platforms.  The intent is for accessing the mailbox in temporary situations and not for long-term deployment solutions.  Not using the sign-in client can impact more than just single-sign-in user experience.  It is a ‘best practice’ approach to deploy the client to end-users on supported platforms.&lt;/p&gt; &lt;p&gt;Additionally it was &lt;a href="http://social.technet.microsoft.com/Forums/en-US/onlineservicesexchange/thread/94a1ccf4-4ccc-4a2e-953b-eecc871601e3"&gt;pointed out&lt;/a&gt; by a Microsoft Support Engineer that not using the Services Sign-In client prevents certificate downloads from BPOS which is required to support AutoDiscover.  Thus Outlook clients will not be able to download the Offline Address Book or see any Free/Busy and Out of Office information.&lt;/p&gt; &lt;p&gt;The instructions in this article are simply a reverse-engineered look at what it is required to configure an Outlook profile to work with a mailbox hosted on Exchange Online/BPOS.  This approach was tested using Outlook 2003, 2007, and 2010 against a mailbox hosted in the North American datacenters.  I assume the same process would also work for other regions of the world with the correct &lt;a href="http://www.microsoft.com/online/help/en-us/bpos/index.html?page=html/c0a1a4b9-111f-4bd4-8fab-8147344cd278.htm"&gt;URLs&lt;/a&gt; (&lt;em&gt;red002&lt;/em&gt; for EMEA and &lt;em&gt;red003&lt;/em&gt; for APAC).&lt;/p&gt; &lt;p&gt;The two main issues that can prevent administrators from successfully configuring profiles are related to (a) the order in which the profile is configured and (b) the confusing nature of the Exchange mailbox server names.  But using the correct approach to the first issue takes care of the second.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;font color="#3f72ae"&gt;Create New Outlook Profile&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Start by creating a new Outlook profile using the &lt;strong&gt;Mail &lt;/strong&gt;control panel applet.  (In Windows 7 this can be found by searching for ‘mail’ in the Control Panel window.)&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Open the &lt;font color="#739643"&gt;Mail&lt;/font&gt; (or &amp;quot;’Mail 32-bit’) Control Panel applet.  &lt;li&gt;Click &lt;font color="#739643"&gt;&lt;u&gt;S&lt;/u&gt;how Profiles…&lt;/font&gt;  &lt;li&gt;Click Add…  &lt;li&gt;Enter a unique, descriptive name for the new profile (e.g. &lt;a href="mailto:jeff@contoso.com"&gt;jeff@contoso.com&lt;/a&gt;)  &lt;li&gt;Depending on the version of Outlook used select the available choice to create a new profile:  &lt;ol&gt; &lt;li&gt;Outlook 2003: &lt;font color="#739643"&gt;Add a new e-mail account&lt;/font&gt;  &lt;li&gt;Outlook 2007/2010: &lt;font color="#739643"&gt;Manually configure server settings or additional server types&lt;/font&gt;&lt;/li&gt;&lt;/ol&gt; &lt;li&gt;Select &lt;font color="#739643"&gt;Microsoft Exchange&lt;/font&gt; (Server).&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Now the first important step has been reached, as a valid server name will need to be supplied, but the odd thing is that internal, non-resolvable FQDNs are used by for the Exchange Online mailbox servers.  If you have ever looked at a profile configured automatically by the sign-in client you would have noticed that the server names were typically in a &lt;em&gt;REDxxx.local&lt;/em&gt; domain.  So clearly a normal connection cannot be made to that server over the Internet as .local is not a publically supported DNS suffix.  But Outlook Anywhere (aka RPC over HTTP) can be configured for the initial connection to the mailbox.  This approach also works for all on-premise Exchange clients as well when trying to configure a profile to use Outlook Anywhere when Autodiscover is either not configured or supported.&lt;/p&gt; &lt;p&gt;There is a long list of possible Exchange mailbox server names that may change at any point as since this is an unsupported process Microsoft could modify them at any point during server upgrades/replacements.  The name used in this example the may not work so I would recommend looking at the profile setting of another mailbox (or even the same mailbox) which was configured properly through the normal client procedure.  If that mailbox server name resolves but is not the server which actually hosts this specific mailbox account the profile will still work as Exchange will redirect Outlook to the correct mailbox server in the organization.  This can be verified by seeing that the server name changes to a different value after the profile is initially setup.&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Enter &lt;strong&gt;VA3DIAXVS101.RED001.local&lt;/strong&gt; in the &lt;font color="#739643"&gt;Microsoft Exchange server&lt;/font&gt; field.  Verify that &lt;font color="#739643"&gt;Use Cached Exchange Mode&lt;/font&gt; is selected.  &lt;li&gt;Enter the username of the desired mailbox, e.g. &lt;a href="mailto:jeff@contoso.com"&gt;jeff@contoso.com&lt;/a&gt; or &lt;a href="mailto:jeff@contoso.microsoftonline.com"&gt;jeff@contoso.microsoftonline.com&lt;/a&gt;, whichever format is the configured username of the online account.  &lt;li&gt;Click &lt;font color="#739643"&gt;&lt;u&gt;M&lt;/u&gt;ore Settings…&lt;/font&gt;  &lt;li&gt;An error message will appear stating &lt;em&gt;“The action cannot be completed.  The connection to Microsoft Exchange in unavailable.  Outlook must be online or connected to complete this action.”  &lt;/em&gt;Click &lt;font color="#739643"&gt;OK&lt;/font&gt;.  &lt;li&gt;Another settings window labeled &lt;em&gt;Microsoft Exchange&lt;/em&gt; will appear. Click &lt;font color="#739643"&gt;OK&lt;/font&gt; again.&lt;/li&gt;&lt;/ol&gt; &lt;ul&gt; &lt;li&gt;Note: If you attempt to use the &lt;em&gt;Check Name &lt;/em&gt;button in the previous window the process will always fail as the .local server name is not yet resolvable. Ignore that button.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;At this point the profile settings window should be displayed as seen in the image below, allowing the remainder of the configuration to be completed manually.  This allows for the RPC over HTTP settings to be configured so that the once unresolvable &lt;em&gt;.local &lt;/em&gt;server name will now be valid.&lt;/p&gt; &lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/88/image_6_0B228837.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=image border=0 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/88/image_thumb_2_0B228837.png" width=332 height=304&gt;&lt;/a&gt; &lt;/p&gt; &lt;p align=left&gt;&lt;em&gt;&lt;strong&gt;&lt;font color="#3f72ae"&gt;Configure Profile Settings&lt;/font&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt; &lt;p align=left&gt;Enter and confirm the following settings across the various properties tabs.  All steps beginning with ‘Verify’ or ‘Confirm’ indicate that the default value is the desired setting.  Steps labeled as ‘Select’ or ‘Enable’ indicate a change in the default profile setting.&lt;/p&gt; &lt;p align=left&gt;&lt;u&gt;General Tab&lt;/u&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;div align=left&gt;Enter a descriptive account name (e.g. Exchange Online).&lt;/div&gt; &lt;li&gt; &lt;div align=left&gt;Select &lt;font color="#739643"&gt;&lt;em&gt;Automatically detect connection state.&lt;/em&gt;&lt;/font&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p align=left&gt;&lt;u&gt;Advanced Tab&lt;/u&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Verify that &lt;em&gt;&lt;font color="#739643"&gt;Used Cached Exchange Mode&lt;/font&gt; &lt;/em&gt;and &lt;em&gt;&lt;font color="#739643"&gt;Download shared folders&lt;/font&gt; &lt;/em&gt;are enabled.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;u&gt;Security Tab&lt;/u&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Verify that &lt;em&gt;&lt;font color="#739643"&gt;Encrypt data between Microsoft Office Outlook and Microsoft Exchange&lt;/font&gt; &lt;/em&gt;is enabled.  &lt;li&gt;Verify that &lt;font color="#739643"&gt;&lt;em&gt;Negotiate authentication&lt;/em&gt;&lt;/font&gt; is the selected &lt;em&gt;Logon network security&lt;/em&gt; setting.&lt;/li&gt;&lt;/ul&gt; &lt;p align=center&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=image border=0 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/88/image_thumb_10_0B228837.png" width=248 height=204&gt; &lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=image border=0 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/88/image_thumb_8_0B228837.png" width=239 height=204&gt; &lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/88/image_24_0B228837.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=image border=0 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/88/image_thumb_11_0B228837.png" width=243 height=204&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;u&gt;Connection Tab&lt;/u&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Enable &lt;font color="#739643"&gt;&lt;em&gt;Connect to Microsoft Exchange using HTTP.&lt;/em&gt;&lt;/font&gt;  &lt;li&gt;Click &lt;em&gt;&lt;font color="#739643"&gt;&lt;u&gt;E&lt;/u&gt;xchange Proxy Settings…&lt;/font&gt;&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;u&gt;Exchange Proxy Settings&lt;/u&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;In the &lt;em&gt;&lt;font color="#739643"&gt;Use this URL to connect to my proxy server for Exchange&lt;/font&gt;&lt;/em&gt; field, enter &lt;strong&gt;red001.mail.microsoftonline.com&lt;/strong&gt; for mailboxes stored in North America datacenters.  Substitute &lt;em&gt;red002 &lt;/em&gt;or &lt;em&gt;red003 &lt;/em&gt;for other regions.  &lt;li&gt;Enable the &lt;em&gt;&lt;font color="#739643"&gt;Only connect…&lt;/font&gt;&lt;/em&gt; or &lt;em&gt;&lt;font color="#739643"&gt;Mutually authenticate… &lt;/font&gt;&lt;/em&gt;setting (depending on the version of Outlook).  &lt;li&gt;Enter the proxy server value of &lt;strong&gt;msstd:*.mail.microsoftonline.com&lt;/strong&gt; in the field below.  &lt;li&gt;Enable the setting &lt;em&gt;&lt;font color="#739643"&gt;On fast networks connect using HTTP first, then connect using TCP/IP.&lt;/font&gt;&lt;/em&gt;  &lt;li&gt;Verify the setting is enabled for &lt;em&gt;&lt;font color="#739643"&gt;On fast networks connect using HTTP first, then connect using TCP/IP.&lt;/font&gt;&lt;/em&gt;  &lt;li&gt;Verify that &lt;em&gt;&lt;font color="#739643"&gt;NTLM Authentication&lt;/font&gt;&lt;/em&gt; is the selected &lt;em&gt;Proxy authentication setting&lt;/em&gt;.&lt;/li&gt;&lt;/ul&gt; &lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/88/image_28_763105C3.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=image border=0 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/88/image_thumb_13_763105C3.png" width=285 height=304&gt;&lt;/a&gt;     &lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/88/image_30_763105C3.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=image border=0 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/88/image_thumb_14_763105C3.png" width=383 height=304&gt;&lt;/a&gt; &lt;/p&gt; &lt;p align=left&gt;Once completed with the steps above click &lt;em&gt;&lt;font color="#739643"&gt;OK &lt;/font&gt;&lt;/em&gt;to close and save the profile window, returning back to the original account creation wizard.&lt;/p&gt; &lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/88/image_36_763105C3.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=image border=0 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/88/image_thumb_17_763105C3.png" width=504 height=206&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Click the &lt;em&gt;&lt;font color="#739643"&gt;Chec&lt;u&gt;k&lt;/u&gt; Name&lt;/font&gt; &lt;/em&gt;button next to the User Name field and an authentication prompt should appear.  Enter the password for the online account.&lt;/p&gt; &lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/88/image_32_763105C3.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=image border=0 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/88/image_thumb_15_763105C3.png" width=254 height=165&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;After a few seconds the Microsoft Exchange settings page on the wizard should have updated the information by updating the correct home mailbox server name as well as converting the username to the Display Name value.  The underlined text format in both fields indicates a successful connection to the online mailbox, and thus the profile configuration is complete.&lt;/p&gt; &lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/88/image_38_763105C3.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=image border=0 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/88/image_thumb_18_763105C3.png" width=504 height=206&gt;&lt;/a&gt; &lt;/p&gt; &lt;p align=left&gt;Click &lt;em&gt;&lt;font color="#739643"&gt;Next&lt;/font&gt; &lt;/em&gt;and &lt;em&gt;&lt;font color="#739643"&gt;Finish &lt;/font&gt;&lt;/em&gt;to complete the wizard.&lt;/p&gt; &lt;p align=left&gt;Back at the original &lt;em&gt;Mail&lt;/em&gt; applet window make sure that the &lt;em&gt;&lt;font color="#739643"&gt;Prompt for a profile to be used&lt;/font&gt;&lt;/em&gt; setting is enabled if there are now multiple Outlook Profiles configured on the same Windows user profile.&lt;/p&gt; &lt;p align=center&gt;   &lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/88/image_48_763105C3.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=image border=0 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/88/image_thumb_23_763105C3.png" width=304 height=228&gt;&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;</description><author>Jeff Schertz</author><link>http://blogs.pointbridge.com/Blogs/schertz_jeff/Pages/Post.aspx?_ID=88</link><description /><pubDate>2010-02-07 11:10:00</pubDate></item><item><id>83</id><title>Exchange 2010 Voice Mail with the iPhone</title><body>&lt;div class=ExternalClass17AEBAD95D574B20A5CC316F784A9D1C&gt;&lt;blockquote&gt;&lt;/blockquote&gt; &lt;p&gt;Although the new &lt;a href="http://msexchangeteam.com/archive/2009/06/29/451695.aspx"&gt;Voice Mail Preview&lt;/a&gt; feature in Exchange 2010 has (rightfully) grabbed most of the spotlight in terms of neat new features in the product, there is another change in 2010 that is equally as important to anyone who is using an iPhone with Exchange ActiveSync.&lt;/p&gt; &lt;p&gt;Previously when my corporate mailbox was on an Exchange 2007 mailbox server I was not able to hear Unified Messaging Voice Mail messages directly on my phone, not at least without dialing into Outlook Voice Access to retrieve the message.  In Exchange 2007 the embedded audio file was displayed on the iPhone as an attached .WMA file, which is an audio codec the device cannot natively handle.  This is one of the major disadvantages to no longer using a Windows Mobile device: a depreciated mobile messaging experience with Exchange Server.&lt;/p&gt; &lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/83/image_4_76D22DCB.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=image border=0 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/83/image_thumb_1_76D22DCB.png" width=204 height=304&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;But once we moved my mailbox over to an Exchange 2010 server and upgraded the Unified Messaging Server then the first voice mail message I received showed two important changes.  First, I already know about the Voice Mail Preview feature which performs speech-to-text conversion on the message, and I was happy to know that I could then at least read the preview on my iPhone.  But what I didn’t expect is that the audio file itself would now be playable on my phone.  I could immediately tell from the Quicktime icon that the attached file was now in a format the phone could natively understand.&lt;/p&gt; &lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/83/image_8_76D22DCB.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=image border=0 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/83/image_thumb_3_76D22DCB.png" width=204 height=304&gt;&lt;/a&gt;       &lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/83/image_10_76D22DCB.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=image border=0 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/83/image_thumb_4_76D22DCB.png" width=204 height=304&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;The Exchange Server 2010 &lt;a href="http://technet.microsoft.com/en-us/library/aa996342.aspx"&gt;documentation&lt;/a&gt; states the new default codec for message created by a UM Dial Plan is MP3.  Among the other supported codecs WMA is still a configurable option, but by moving to the MP3 format as the default then a more compatible range of devices and systems are supported.&lt;/p&gt;&lt;/div&gt;</body><description>&lt;div class=ExternalClass17AEBAD95D574B20A5CC316F784A9D1C&gt;&lt;blockquote&gt;&lt;/blockquote&gt; &lt;p&gt;Although the new &lt;a href="http://msexchangeteam.com/archive/2009/06/29/451695.aspx"&gt;Voice Mail Preview&lt;/a&gt; feature in Exchange 2010 has (rightfully) grabbed most of the spotlight in terms of neat new features in the product, there is another change in 2010 that is equally as important to anyone who is using an iPhone with Exchange ActiveSync.&lt;/p&gt; &lt;p&gt;Previously when my corporate mailbox was on an Exchange 2007 mailbox server I was not able to hear Unified Messaging Voice Mail messages directly on my phone, not at least without dialing into Outlook Voice Access to retrieve the message.  In Exchange 2007 the embedded audio file was displayed on the iPhone as an attached .WMA file, which is an audio codec the device cannot natively handle.  This is one of the major disadvantages to no longer using a Windows Mobile device: a depreciated mobile messaging experience with Exchange Server.&lt;/p&gt; &lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/83/image_4_76D22DCB.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=image border=0 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/83/image_thumb_1_76D22DCB.png" width=204 height=304&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;But once we moved my mailbox over to an Exchange 2010 server and upgraded the Unified Messaging Server then the first voice mail message I received showed two important changes.  First, I already know about the Voice Mail Preview feature which performs speech-to-text conversion on the message, and I was happy to know that I could then at least read the preview on my iPhone.  But what I didn’t expect is that the audio file itself would now be playable on my phone.  I could immediately tell from the Quicktime icon that the attached file was now in a format the phone could natively understand.&lt;/p&gt; &lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/83/image_8_76D22DCB.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=image border=0 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/83/image_thumb_3_76D22DCB.png" width=204 height=304&gt;&lt;/a&gt;       &lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/83/image_10_76D22DCB.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=image border=0 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/83/image_thumb_4_76D22DCB.png" width=204 height=304&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;The Exchange Server 2010 &lt;a href="http://technet.microsoft.com/en-us/library/aa996342.aspx"&gt;documentation&lt;/a&gt; states the new default codec for message created by a UM Dial Plan is MP3.  Among the other supported codecs WMA is still a configurable option, but by moving to the MP3 format as the default then a more compatible range of devices and systems are supported.&lt;/p&gt;&lt;/div&gt;</description><author>Jeff Schertz</author><link>http://blogs.pointbridge.com/Blogs/schertz_jeff/Pages/Post.aspx?_ID=83</link><description /><pubDate>2010-01-05 16:26:04</pubDate></item><item><id>33</id><title>Exchange 2010 Play-on-Phone</title><body>&lt;div class=ExternalClass67314952A74B4CB8B4B9B07C79C3638F&gt;&lt;p&gt;This is just a quick heads up on the Play-on-Phone feature in Exchange 2010. I was testing several of the new UM features in my lab and one that had me scratching my head was Play-on-Phone which allows a UM user to play messages at their internal extension or any number they choose, providing the dialing rules and policies are in place to allow that. This is a useful feature for connections that might not provide audio functions, such as a kiosk or corporate desktop. This is also useful when privacy is needed. Users can simply click on the button and dial their internal or external extension and have the messages played over the phone.&lt;/p&gt; &lt;p&gt;In Exchange 2007 OWA, for example, you would normally see the Play-on-Phone button located at the top of the preview pane and would simply click on this button to initiate dialing a number. Well, in Exchange 2010 things have changed slightly. Aside from the virtual UnifiedMessaging directory being deprecated in 2010 in lieu of the EWS virtual directory, the Play-on-Phone feature only seems to be available when you open the message instead of just previewing it. I confirmed this with another professional who also saw this behavior in their lab. This seems to only affect OWA clients. The fat Outlook client still displays the Play-on-Phone in the preview window.&lt;/p&gt; &lt;p&gt;In the OWA preview pane there is no more Play-on-Phone button available.&lt;/p&gt; &lt;p&gt;&lt;a href="/Blogs/enger_erik/Lists/Posts/Attachments/33/UMVoicemail1_2_2694EAAB.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=UM-Voicemail1 border=0 alt=UM-Voicemail1 src="/Blogs/enger_erik/Lists/Posts/Attachments/33/UMVoicemail1_thumb_2694EAAB.png" width=521 height=491&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Opening the message in OWA reveals the Play-on-Phone button.&lt;/p&gt; &lt;p&gt;&lt;a href="/Blogs/enger_erik/Lists/Posts/Attachments/33/UMVoicemail2_2_2694EAAB.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=UM-Voicemail2 border=0 alt=UM-Voicemail2 src="/Blogs/enger_erik/Lists/Posts/Attachments/33/UMVoicemail2_thumb_2694EAAB.png" width=667 height=537&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;I don’t know how many people may be used to this particular feature but I thought it might be useful to know that administrators and support staff may need to update their instructions and notify users of this cosmetic change for OWA users. I’m not quite sure why MS decided to make this change but perhaps this was by popular demand as do some of their feature enhancements that make their way into final release of the product.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;There are quite a few great new features in Exchange 2010 UM like call answering rules, rights management for voicemail messages and voicemail message preview. One note about voicemail preview is that if the voice connection isn’t clear or Exchange doesn’t quite understand the words spoken in the message, the preview text can be incorrect and potentially confusing or even embarrassing. My test message in the voicemail sample above was supposed to read, “Hi Ryan, it’s Erik. Give me a call.” Not a major problem considering this was a test but far from the message I left.&lt;/p&gt;&lt;/div&gt;</body><description>&lt;div class=ExternalClass67314952A74B4CB8B4B9B07C79C3638F&gt;&lt;p&gt;This is just a quick heads up on the Play-on-Phone feature in Exchange 2010. I was testing several of the new UM features in my lab and one that had me scratching my head was Play-on-Phone which allows a UM user to play messages at their internal extension or any number they choose, providing the dialing rules and policies are in place to allow that. This is a useful feature for connections that might not provide audio functions, such as a kiosk or corporate desktop. This is also useful when privacy is needed. Users can simply click on the button and dial their internal or external extension and have the messages played over the phone.&lt;/p&gt; &lt;p&gt;In Exchange 2007 OWA, for example, you would normally see the Play-on-Phone button located at the top of the preview pane and would simply click on this button to initiate dialing a number. Well, in Exchange 2010 things have changed slightly. Aside from the virtual UnifiedMessaging directory being deprecated in 2010 in lieu of the EWS virtual directory, the Play-on-Phone feature only seems to be available when you open the message instead of just previewing it. I confirmed this with another professional who also saw this behavior in their lab. This seems to only affect OWA clients. The fat Outlook client still displays the Play-on-Phone in the preview window.&lt;/p&gt; &lt;p&gt;In the OWA preview pane there is no more Play-on-Phone button available.&lt;/p&gt; &lt;p&gt;&lt;a href="/Blogs/enger_erik/Lists/Posts/Attachments/33/UMVoicemail1_2_2694EAAB.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=UM-Voicemail1 border=0 alt=UM-Voicemail1 src="/Blogs/enger_erik/Lists/Posts/Attachments/33/UMVoicemail1_thumb_2694EAAB.png" width=521 height=491&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Opening the message in OWA reveals the Play-on-Phone button.&lt;/p&gt; &lt;p&gt;&lt;a href="/Blogs/enger_erik/Lists/Posts/Attachments/33/UMVoicemail2_2_2694EAAB.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=UM-Voicemail2 border=0 alt=UM-Voicemail2 src="/Blogs/enger_erik/Lists/Posts/Attachments/33/UMVoicemail2_thumb_2694EAAB.png" width=667 height=537&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;I don’t know how many people may be used to this particular feature but I thought it might be useful to know that administrators and support staff may need to update their instructions and notify users of this cosmetic change for OWA users. I’m not quite sure why MS decided to make this change but perhaps this was by popular demand as do some of their feature enhancements that make their way into final release of the product.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;There are quite a few great new features in Exchange 2010 UM like call answering rules, rights management for voicemail messages and voicemail message preview. One note about voicemail preview is that if the voice connection isn’t clear or Exchange doesn’t quite understand the words spoken in the message, the preview text can be incorrect and potentially confusing or even embarrassing. My test message in the voicemail sample above was supposed to read, “Hi Ryan, it’s Erik. Give me a call.” Not a major problem considering this was a test but far from the message I left.&lt;/p&gt;&lt;/div&gt;</description><author>Erik Enger</author><link>http://blogs.pointbridge.com/Blogs/enger_erik/Pages/Post.aspx?_ID=33</link><description /><pubDate>2009-12-28 23:35:17</pubDate></item><item><id>32</id><title>Exchange 2010 Federation (well, half-way there for now)</title><body>&lt;div class=ExternalClassB2E1346DE9A046F78ED5604375C45B1B&gt;&lt;p&gt;Federation is certainly a welcome and interesting feature in Exchange 2010. Being able to share calendar information with other organizations will greatly improve collaboration efforts, especially with shops leveraging both on-premise and Exchange Online services for their information workers. There is a modest amount of information on this feature and how to set it up in the form of TechNet &lt;a href="http://technet.microsoft.com/en-us/library/dd335047.aspx" target="_blank"&gt;articles&lt;/a&gt;, &lt;a href="http://blogs.technet.com/ucedsg/archive/2009/10/28/exchange-2010-federation-part-i.aspx" target="_blank"&gt;blogs&lt;/a&gt; and even a &lt;a href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=en-US&amp;amp;EventID=1032416725&amp;amp;CountryCode=US" target="_blank"&gt;webcast&lt;/a&gt;. I read through the available material and webcast set out to try and demo this feature for this blog but ran into a roadblock.&lt;/p&gt; &lt;p&gt;The roadblock I’m referring to has to do with certificates. After reading through the TechNet article you’ll find a link to the &lt;a href="http://technet.microsoft.com/en-us/library/ee332350.aspx" target="_blank"&gt;CAs you can use for Federation&lt;/a&gt;.&lt;/p&gt; &lt;table border=1 cellspacing=0 cellpadding=2 width=776&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign=top width=329&gt;&lt;strong&gt;CA Certificate Friendly Name&lt;/strong&gt;&lt;/td&gt; &lt;td valign=top width=445&gt;&lt;strong&gt;Thumbprint&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=top width=329&gt;Comodo&lt;/td&gt; &lt;td valign=top width=445&gt;NA&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=top width=329&gt;Digicert Global Root CA&lt;/td&gt; &lt;td valign=top width=445&gt;083B:E056:9042:46B1:A175:6AC9:5991:C74A&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=top width=329&gt;Digicert High Assurance EV Root CA&lt;/td&gt; &lt;td valign=top width=445&gt;91 8d a5 e4 99 c1 5f 7c 62 75 b1 24 fe de 53 35 7c 34 bd 36&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=top width=329&gt;Entrust.net CA (2048)&lt;/td&gt; &lt;td valign=top width=445&gt;801D 62D0 7B44 9D5C 5C03 5C98 EA61 FA44 3C2A 58FE&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=top width=329&gt;Entrust Secure Server CA&lt;/td&gt; &lt;td valign=top width=445&gt;99A6 9BE6 1AFE 886B 4D2B 8200 7CB8 54FC 317E 1539&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=top width=329&gt;Go Daddy Secure Certification Authority&lt;/td&gt; &lt;td valign=top width=445&gt;‎7c46 56c3 061f 7f4c 0d67 b319 a855 f60e bc11 fc44&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;After going through the steps in the articles to get this set up I was hit with this error in the New Federation Trust wizard.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;“&lt;strong&gt;InvalidManagementCertificate: Certificate not valid for this operation&lt;/strong&gt;”&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;I was baffled by this one. Everything checked out with my certificate according to the information below. What was wrong?&lt;/p&gt; &lt;p&gt;&lt;strong&gt; Certificate Requirements for Federation &lt;/strong&gt; &lt;p&gt;To establish a federation trust, you must procure and install an X.509 certificate on the Exchange 2010 server used to create the trust. The certificate is used only to sign and encrypt delegation tokens. The certificate must meet the following requirements: &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Trusted certification authority&lt;/strong&gt;   The certificate must be signed by a trusted certification authority (CA). For a list of trusted CAs, see &lt;a href="http://technet.microsoft.com/en-us/library/ee332350.aspx"&gt;Trusted Root Certification Authorities for Federation Trusts&lt;/a&gt;. &lt;li&gt;&lt;strong&gt;Subject key identifier&lt;/strong&gt;   The certificate must have a subject key identifier field. Most X.509 certificates issued by commercial certification authorities have a subject key identifier. &lt;li&gt;&lt;strong&gt;CryptoAPI cryptographic service provider (CSP)&lt;/strong&gt;   The certificate must use a CryptoAPI CSP. Certificates that use Cryptography Next Generation (CNG) providers aren't supported for federation. If you use Exchange to create a certificate request, a CryptoAPI provider is used. For more information, see &lt;a href="http://msdn.microsoft.com/en-us/library/aa376210(VS.85).aspx"&gt;Cryptography&lt;/a&gt;. &lt;li&gt;&lt;strong&gt;RSA signature algorithm&lt;/strong&gt;   The certificate must use RSA as the signature algorithm. &lt;li&gt;&lt;strong&gt;Exportable private key&lt;/strong&gt;   The private key used to generate the certificate must be exportable. You can specify that the private key of a certificate be exportable when you create the certificate request using the New Certificate wizard in the EMC, or the &lt;a href="http://technet.microsoft.com/en-us/library/aa998327.aspx"&gt;New-ExchangeCertificate&lt;/a&gt; cmdlet in the Shell. &lt;li&gt;&lt;strong&gt;Current certificate&lt;/strong&gt;   The certificate must be current. You can't use an expired or revoked certificate to create a federation trust. &lt;li&gt;&lt;strong&gt;Enhanced key usage&lt;/strong&gt;   The certificate must include the enhanced key usage (EKU) type &lt;strong&gt;Client Authentication (1.3.6.1.5.5.7.3.2)&lt;/strong&gt;. This usage type is intended for the purpose of proving your identity to a remote computer. If you use Exchange tools to generate the certificate request, this usage type is included by default.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;I tried a couple other things thinking it was something wrong with my Exchange setup, firewall, etc. Finally I started searching for similar issues on blogs and forums. There was nothing so I decided to post on the Exchange 2010 forum hoping someone has seen this. I did get a rather quick response and after a couple of exchanges I was presented with this &lt;a href="http://msdn.microsoft.com/en-us/library/cc287610.aspx" target="_blank"&gt;list of CAs that can be used for federation posted on the MSDN site&lt;/a&gt;.&lt;/p&gt; &lt;table border=1 cellspacing=0 cellpadding=2 width=400&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign=top width=200&gt;&lt;strong&gt;CA Certificate Friendly Name&lt;/strong&gt;&lt;/td&gt; &lt;td valign=top width=200&gt;&lt;strong&gt;Issued To&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=top width=200&gt;Entrust&lt;/td&gt; &lt;td valign=top width=200&gt;Entrust.net Secure Server Certification Authority&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=top width=200&gt;Go Daddy&lt;/td&gt; &lt;td valign=top width=200&gt;Go Daddy Class 2 Certification Authority&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=top width=200&gt;Network Solutions&lt;/td&gt; &lt;td valign=top width=200&gt;Network Solutions Certification Authority&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=top width=200&gt;VeriSign&lt;/td&gt; &lt;td valign=top width=200&gt;Class 3 Public Primary Certification Authority&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=top width=200&gt;VeriSign&lt;/td&gt; &lt;td valign=top width=200&gt;VeriSign Trust Network &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=top width=200&gt;VeriSign&lt;/td&gt; &lt;td valign=top width=200&gt;VeriSign Class 3 Public Primary Certification Authority - G5&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;As you can see, quite different. I decided to take a chance and purchased one of the certs from a CA on the MSDN list. This worked! Although I had to go to the time and expense of getting another cert I was at least able to establish federation with the MFG (Microsoft Federation Gateway). This is frustrating to find out this was the problem all along due to some contradictory information posted by Microsoft. My hope, however, is that more CAs will be added to the working list so customers like me don’t have to purchase new ones just to prove a point.&lt;/p&gt; &lt;p&gt;So now, you’ve been warned! :-)&lt;/p&gt;&lt;/div&gt;</body><description>&lt;div class=ExternalClassB2E1346DE9A046F78ED5604375C45B1B&gt;&lt;p&gt;Federation is certainly a welcome and interesting feature in Exchange 2010. Being able to share calendar information with other organizations will greatly improve collaboration efforts, especially with shops leveraging both on-premise and Exchange Online services for their information workers. There is a modest amount of information on this feature and how to set it up in the form of TechNet &lt;a href="http://technet.microsoft.com/en-us/library/dd335047.aspx" target="_blank"&gt;articles&lt;/a&gt;, &lt;a href="http://blogs.technet.com/ucedsg/archive/2009/10/28/exchange-2010-federation-part-i.aspx" target="_blank"&gt;blogs&lt;/a&gt; and even a &lt;a href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=en-US&amp;amp;EventID=1032416725&amp;amp;CountryCode=US" target="_blank"&gt;webcast&lt;/a&gt;. I read through the available material and webcast set out to try and demo this feature for this blog but ran into a roadblock.&lt;/p&gt; &lt;p&gt;The roadblock I’m referring to has to do with certificates. After reading through the TechNet article you’ll find a link to the &lt;a href="http://technet.microsoft.com/en-us/library/ee332350.aspx" target="_blank"&gt;CAs you can use for Federation&lt;/a&gt;.&lt;/p&gt; &lt;table border=1 cellspacing=0 cellpadding=2 width=776&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign=top width=329&gt;&lt;strong&gt;CA Certificate Friendly Name&lt;/strong&gt;&lt;/td&gt; &lt;td valign=top width=445&gt;&lt;strong&gt;Thumbprint&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=top width=329&gt;Comodo&lt;/td&gt; &lt;td valign=top width=445&gt;NA&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=top width=329&gt;Digicert Global Root CA&lt;/td&gt; &lt;td valign=top width=445&gt;083B:E056:9042:46B1:A175:6AC9:5991:C74A&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=top width=329&gt;Digicert High Assurance EV Root CA&lt;/td&gt; &lt;td valign=top width=445&gt;91 8d a5 e4 99 c1 5f 7c 62 75 b1 24 fe de 53 35 7c 34 bd 36&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=top width=329&gt;Entrust.net CA (2048)&lt;/td&gt; &lt;td valign=top width=445&gt;801D 62D0 7B44 9D5C 5C03 5C98 EA61 FA44 3C2A 58FE&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=top width=329&gt;Entrust Secure Server CA&lt;/td&gt; &lt;td valign=top width=445&gt;99A6 9BE6 1AFE 886B 4D2B 8200 7CB8 54FC 317E 1539&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=top width=329&gt;Go Daddy Secure Certification Authority&lt;/td&gt; &lt;td valign=top width=445&gt;‎7c46 56c3 061f 7f4c 0d67 b319 a855 f60e bc11 fc44&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;After going through the steps in the articles to get this set up I was hit with this error in the New Federation Trust wizard.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;“&lt;strong&gt;InvalidManagementCertificate: Certificate not valid for this operation&lt;/strong&gt;”&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;I was baffled by this one. Everything checked out with my certificate according to the information below. What was wrong?&lt;/p&gt; &lt;p&gt;&lt;strong&gt; Certificate Requirements for Federation &lt;/strong&gt; &lt;p&gt;To establish a federation trust, you must procure and install an X.509 certificate on the Exchange 2010 server used to create the trust. The certificate is used only to sign and encrypt delegation tokens. The certificate must meet the following requirements: &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Trusted certification authority&lt;/strong&gt;   The certificate must be signed by a trusted certification authority (CA). For a list of trusted CAs, see &lt;a href="http://technet.microsoft.com/en-us/library/ee332350.aspx"&gt;Trusted Root Certification Authorities for Federation Trusts&lt;/a&gt;. &lt;li&gt;&lt;strong&gt;Subject key identifier&lt;/strong&gt;   The certificate must have a subject key identifier field. Most X.509 certificates issued by commercial certification authorities have a subject key identifier. &lt;li&gt;&lt;strong&gt;CryptoAPI cryptographic service provider (CSP)&lt;/strong&gt;   The certificate must use a CryptoAPI CSP. Certificates that use Cryptography Next Generation (CNG) providers aren't supported for federation. If you use Exchange to create a certificate request, a CryptoAPI provider is used. For more information, see &lt;a href="http://msdn.microsoft.com/en-us/library/aa376210(VS.85).aspx"&gt;Cryptography&lt;/a&gt;. &lt;li&gt;&lt;strong&gt;RSA signature algorithm&lt;/strong&gt;   The certificate must use RSA as the signature algorithm. &lt;li&gt;&lt;strong&gt;Exportable private key&lt;/strong&gt;   The private key used to generate the certificate must be exportable. You can specify that the private key of a certificate be exportable when you create the certificate request using the New Certificate wizard in the EMC, or the &lt;a href="http://technet.microsoft.com/en-us/library/aa998327.aspx"&gt;New-ExchangeCertificate&lt;/a&gt; cmdlet in the Shell. &lt;li&gt;&lt;strong&gt;Current certificate&lt;/strong&gt;   The certificate must be current. You can't use an expired or revoked certificate to create a federation trust. &lt;li&gt;&lt;strong&gt;Enhanced key usage&lt;/strong&gt;   The certificate must include the enhanced key usage (EKU) type &lt;strong&gt;Client Authentication (1.3.6.1.5.5.7.3.2)&lt;/strong&gt;. This usage type is intended for the purpose of proving your identity to a remote computer. If you use Exchange tools to generate the certificate request, this usage type is included by default.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;I tried a couple other things thinking it was something wrong with my Exchange setup, firewall, etc. Finally I started searching for similar issues on blogs and forums. There was nothing so I decided to post on the Exchange 2010 forum hoping someone has seen this. I did get a rather quick response and after a couple of exchanges I was presented with this &lt;a href="http://msdn.microsoft.com/en-us/library/cc287610.aspx" target="_blank"&gt;list of CAs that can be used for federation posted on the MSDN site&lt;/a&gt;.&lt;/p&gt; &lt;table border=1 cellspacing=0 cellpadding=2 width=400&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign=top width=200&gt;&lt;strong&gt;CA Certificate Friendly Name&lt;/strong&gt;&lt;/td&gt; &lt;td valign=top width=200&gt;&lt;strong&gt;Issued To&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=top width=200&gt;Entrust&lt;/td&gt; &lt;td valign=top width=200&gt;Entrust.net Secure Server Certification Authority&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=top width=200&gt;Go Daddy&lt;/td&gt; &lt;td valign=top width=200&gt;Go Daddy Class 2 Certification Authority&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=top width=200&gt;Network Solutions&lt;/td&gt; &lt;td valign=top width=200&gt;Network Solutions Certification Authority&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=top width=200&gt;VeriSign&lt;/td&gt; &lt;td valign=top width=200&gt;Class 3 Public Primary Certification Authority&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=top width=200&gt;VeriSign&lt;/td&gt; &lt;td valign=top width=200&gt;VeriSign Trust Network &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=top width=200&gt;VeriSign&lt;/td&gt; &lt;td valign=top width=200&gt;VeriSign Class 3 Public Primary Certification Authority - G5&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;As you can see, quite different. I decided to take a chance and purchased one of the certs from a CA on the MSDN list. This worked! Although I had to go to the time and expense of getting another cert I was at least able to establish federation with the MFG (Microsoft Federation Gateway). This is frustrating to find out this was the problem all along due to some contradictory information posted by Microsoft. My hope, however, is that more CAs will be added to the working list so customers like me don’t have to purchase new ones just to prove a point.&lt;/p&gt; &lt;p&gt;So now, you’ve been warned! :-)&lt;/p&gt;&lt;/div&gt;</description><author>Erik Enger</author><link>http://blogs.pointbridge.com/Blogs/enger_erik/Pages/Post.aspx?_ID=32</link><description /><pubDate>2009-12-17 10:11:48</pubDate></item><item><id>31</id><title>Exchange 2010 Multi-Mailbox Searching</title><body>&lt;div class=ExternalClass826A24B9F97F44B6ACD3C5AC7F259614&gt;
&lt;p&gt;One of the improved features in Exchange 2010 is multi-mailbox searching. While you could do this to a degree in Exchange 2007 it usually required too many rights to delegate it to a compliance officer and the searches had to be run from PowerShell so it was often problematic for the user to perform these searches on their own and too burdensome for the administrator to do it on behalf of the user. The normal Exchange search you’re used to doing is still available in case of other requirements like removing an email from everyone’s mailbox (i.e. virus, inappropriate content, etc). This blog focuses on the e-discovery aspect in Exchange 2010.&lt;/p&gt;
&lt;p&gt;In 2010 things are much improved when it comes to e-discovery. With Microsoft’s use of RBAC in 2010 you can delegate this control rather easily. Adding someone to the new Discovery Management group is all it takes to get started.&lt;/p&gt;
&lt;p&gt;&lt;a href="/Blogs/enger_erik/Lists/Posts/Attachments/31/DiscoverySearch1_2_4D71B293.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=DiscoverySearch1 border=0 alt=DiscoverySearch1 src="/Blogs/enger_erik/Lists/Posts/Attachments/31/DiscoverySearch1_thumb_4D71B293.png" width=827 height=620&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You also want to think about the target mailbox for these searches. Typically you’ll want to dedicate this type of activity to dedicated mailboxes and even databases if you’re a large company. A copy of each message matching your search criteria will end up in this mailbox even if it’s temporary so make sure you have enough resources available to store this data. For this example I’ll be using the default search mailbox that’s created when installing Exchange 2010. You’ll want to delegate control of this mailbox to the compliance officer so they will be able to open the mailbox and view the collected data.&lt;/p&gt;
&lt;p&gt;Accessing the multi-mailbox search by the delegated individual is done by opening OWA and clicking on the Options button in the upper right corner.&lt;/p&gt;
&lt;p&gt;&lt;a href="/Blogs/enger_erik/Lists/Posts/Attachments/31/DiscoverySearch2_2_4D71B293.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=DiscoverySearch2 border=0 alt=DiscoverySearch2 src="/Blogs/enger_erik/Lists/Posts/Attachments/31/DiscoverySearch2_thumb_4D71B293.png" width=361 height=166&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;This brings up the new Exchange Control Panel (ecp) in which you can perform a host of operations previously unavailable in 2007. For now we’ll focus on the e-discovery stuff. Once in the control panel, select the “My Organization” from the “Select what to manage” drop-down box.&lt;/p&gt;
&lt;p&gt;&lt;a href="/Blogs/enger_erik/Lists/Posts/Attachments/31/DiscoverySearch3_2_4D71B293.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=DiscoverySearch3 border=0 alt=DiscoverySearch3 src="/Blogs/enger_erik/Lists/Posts/Attachments/31/DiscoverySearch3_thumb_4D71B293.png" width=360 height=228&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;This brings up another set up tabs for managing users, groups and reporting. For now, select the Reporting tab and click New… to create a new search.&lt;/p&gt;
&lt;p&gt;&lt;a href="/Blogs/enger_erik/Lists/Posts/Attachments/31/DiscoverySearch4_2_4D71B293.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=DiscoverySearch4 border=0 alt=DiscoverySearch4 src="/Blogs/enger_erik/Lists/Posts/Attachments/31/DiscoverySearch4_thumb_4D71B293.png" width=570 height=261&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;This pops up another window allowing you to define your search criteria. At a minimum you’ll need to define your search name, mailbox scope and target mailbox. Actually you are going to want to narrow your search considerably to avoid unnecessarily long searches which might not give you what you want in addition to overburdening the system. For my test I entered some keywords to look for in the emails. I also turned on logging and the option to send you an email for additional information. Once you’re happy with the search, click on Save.&lt;/p&gt;
&lt;p&gt;&lt;a href="/Blogs/enger_erik/Lists/Posts/Attachments/31/DiscoverySearch6_2_4D71B293.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=DiscoverySearch6 border=0 alt=DiscoverySearch6 src="/Blogs/enger_erik/Lists/Posts/Attachments/31/DiscoverySearch6_thumb_4D71B293.png" width=376 height=963&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;The search immediately begins and you can see the progress in the search window.&lt;/p&gt;
&lt;p&gt;&lt;a href="/Blogs/enger_erik/Lists/Posts/Attachments/31/DiscoverySearch7_2_4D71B293.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=DiscoverySearch7 border=0 alt=DiscoverySearch7 src="/Blogs/enger_erik/Lists/Posts/Attachments/31/DiscoverySearch7_thumb_4D71B293.png" width=827 height=562&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;When your search has completed, you’ll receive an email similar to this one. Notice that the search partially succeeded. This is due to some of the mailboxes being on an Exchange 2007 database. If you click on the hyperlink in the message it will open the target discovery mailbox in an OWA window. You could also open the target mailbox in Outlook if that is preferred.&lt;/p&gt;
&lt;p&gt;&lt;a href="/Blogs/enger_erik/Lists/Posts/Attachments/31/DiscoverySearch9_2_4D71B293.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=DiscoverySearch9 border=0 alt=DiscoverySearch9 src="/Blogs/enger_erik/Lists/Posts/Attachments/31/DiscoverySearch9_thumb_4D71B293.png" width=827 height=563&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;From here you’ll be able to view the messages collected. Expand the folders to drill down and view the messages found in your search. You’ll be able to act on these messages to further filter, categorize and narrow down your search to end up with only the ones you want.&lt;/p&gt;
&lt;p&gt;&lt;a href="/Blogs/enger_erik/Lists/Posts/Attachments/31/image_2_4D71B293.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=image border=0 alt=image src="/Blogs/enger_erik/Lists/Posts/Attachments/31/image_thumb_38803020.png" width=827 height=306&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;When you’re finished with your search and want to remove it from your saved searches, please note that this will also remove the collected messages from the target discovery search mailbox. You will receive this warning if you attempt this.&lt;/p&gt;
&lt;p&gt;&lt;a href="/Blogs/enger_erik/Lists/Posts/Attachments/31/DiscoverySearch13_2_38803020.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=DiscoverySearch13 border=0 alt=DiscoverySearch13 src="/Blogs/enger_erik/Lists/Posts/Attachments/31/DiscoverySearch13_thumb_38803020.png" width=485 height=188&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;While the e-discovery search feature in Exchange 2010 may not be as robust as some third party products it is still a nice alternative to having nothing at all and it’s much better than it was in 2007.&lt;/p&gt;&lt;/div&gt;</body><description>&lt;div class=ExternalClass826A24B9F97F44B6ACD3C5AC7F259614&gt;
&lt;p&gt;One of the improved features in Exchange 2010 is multi-mailbox searching. While you could do this to a degree in Exchange 2007 it usually required too many rights to delegate it to a compliance officer and the searches had to be run from PowerShell so it was often problematic for the user to perform these searches on their own and too burdensome for the administrator to do it on behalf of the user. The normal Exchange search you’re used to doing is still available in case of other requirements like removing an email from everyone’s mailbox (i.e. virus, inappropriate content, etc). This blog focuses on the e-discovery aspect in Exchange 2010.&lt;/p&gt;
&lt;p&gt;In 2010 things are much improved when it comes to e-discovery. With Microsoft’s use of RBAC in 2010 you can delegate this control rather easily. Adding someone to the new Discovery Management group is all it takes to get started.&lt;/p&gt;
&lt;p&gt;&lt;a href="/Blogs/enger_erik/Lists/Posts/Attachments/31/DiscoverySearch1_2_4D71B293.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=DiscoverySearch1 border=0 alt=DiscoverySearch1 src="/Blogs/enger_erik/Lists/Posts/Attachments/31/DiscoverySearch1_thumb_4D71B293.png" width=827 height=620&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You also want to think about the target mailbox for these searches. Typically you’ll want to dedicate this type of activity to dedicated mailboxes and even databases if you’re a large company. A copy of each message matching your search criteria will end up in this mailbox even if it’s temporary so make sure you have enough resources available to store this data. For this example I’ll be using the default search mailbox that’s created when installing Exchange 2010. You’ll want to delegate control of this mailbox to the compliance officer so they will be able to open the mailbox and view the collected data.&lt;/p&gt;
&lt;p&gt;Accessing the multi-mailbox search by the delegated individual is done by opening OWA and clicking on the Options button in the upper right corner.&lt;/p&gt;
&lt;p&gt;&lt;a href="/Blogs/enger_erik/Lists/Posts/Attachments/31/DiscoverySearch2_2_4D71B293.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=DiscoverySearch2 border=0 alt=DiscoverySearch2 src="/Blogs/enger_erik/Lists/Posts/Attachments/31/DiscoverySearch2_thumb_4D71B293.png" width=361 height=166&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;This brings up the new Exchange Control Panel (ecp) in which you can perform a host of operations previously unavailable in 2007. For now we’ll focus on the e-discovery stuff. Once in the control panel, select the “My Organization” from the “Select what to manage” drop-down box.&lt;/p&gt;
&lt;p&gt;&lt;a href="/Blogs/enger_erik/Lists/Posts/Attachments/31/DiscoverySearch3_2_4D71B293.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=DiscoverySearch3 border=0 alt=DiscoverySearch3 src="/Blogs/enger_erik/Lists/Posts/Attachments/31/DiscoverySearch3_thumb_4D71B293.png" width=360 height=228&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;This brings up another set up tabs for managing users, groups and reporting. For now, select the Reporting tab and click New… to create a new search.&lt;/p&gt;
&lt;p&gt;&lt;a href="/Blogs/enger_erik/Lists/Posts/Attachments/31/DiscoverySearch4_2_4D71B293.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=DiscoverySearch4 border=0 alt=DiscoverySearch4 src="/Blogs/enger_erik/Lists/Posts/Attachments/31/DiscoverySearch4_thumb_4D71B293.png" width=570 height=261&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;This pops up another window allowing you to define your search criteria. At a minimum you’ll need to define your search name, mailbox scope and target mailbox. Actually you are going to want to narrow your search considerably to avoid unnecessarily long searches which might not give you what you want in addition to overburdening the system. For my test I entered some keywords to look for in the emails. I also turned on logging and the option to send you an email for additional information. Once you’re happy with the search, click on Save.&lt;/p&gt;
&lt;p&gt;&lt;a href="/Blogs/enger_erik/Lists/Posts/Attachments/31/DiscoverySearch6_2_4D71B293.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=DiscoverySearch6 border=0 alt=DiscoverySearch6 src="/Blogs/enger_erik/Lists/Posts/Attachments/31/DiscoverySearch6_thumb_4D71B293.png" width=376 height=963&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;The search immediately begins and you can see the progress in the search window.&lt;/p&gt;
&lt;p&gt;&lt;a href="/Blogs/enger_erik/Lists/Posts/Attachments/31/DiscoverySearch7_2_4D71B293.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=DiscoverySearch7 border=0 alt=DiscoverySearch7 src="/Blogs/enger_erik/Lists/Posts/Attachments/31/DiscoverySearch7_thumb_4D71B293.png" width=827 height=562&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;When your search has completed, you’ll receive an email similar to this one. Notice that the search partially succeeded. This is due to some of the mailboxes being on an Exchange 2007 database. If you click on the hyperlink in the message it will open the target discovery mailbox in an OWA window. You could also open the target mailbox in Outlook if that is preferred.&lt;/p&gt;
&lt;p&gt;&lt;a href="/Blogs/enger_erik/Lists/Posts/Attachments/31/DiscoverySearch9_2_4D71B293.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=DiscoverySearch9 border=0 alt=DiscoverySearch9 src="/Blogs/enger_erik/Lists/Posts/Attachments/31/DiscoverySearch9_thumb_4D71B293.png" width=827 height=563&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;From here you’ll be able to view the messages collected. Expand the folders to drill down and view the messages found in your search. You’ll be able to act on these messages to further filter, categorize and narrow down your search to end up with only the ones you want.&lt;/p&gt;
&lt;p&gt;&lt;a href="/Blogs/enger_erik/Lists/Posts/Attachments/31/image_2_4D71B293.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=image border=0 alt=image src="/Blogs/enger_erik/Lists/Posts/Attachments/31/image_thumb_38803020.png" width=827 height=306&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;When you’re finished with your search and want to remove it from your saved searches, please note that this will also remove the collected messages from the target discovery search mailbox. You will receive this warning if you attempt this.&lt;/p&gt;
&lt;p&gt;&lt;a href="/Blogs/enger_erik/Lists/Posts/Attachments/31/DiscoverySearch13_2_38803020.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px" title=DiscoverySearch13 border=0 alt=DiscoverySearch13 src="/Blogs/enger_erik/Lists/Posts/Attachments/31/DiscoverySearch13_thumb_38803020.png" width=485 height=188&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;While the e-discovery search feature in Exchange 2010 may not be as robust as some third party products it is still a nice alternative to having nothing at all and it’s much better than it was in 2007.&lt;/p&gt;&lt;/div&gt;</description><author>Erik Enger</author><link>http://blogs.pointbridge.com/Blogs/enger_erik/Pages/Post.aspx?_ID=31</link><description /><pubDate>2009-12-15 16:36:00</pubDate></item><item><id>30</id><title>Mass password resets in BPOS</title><body>&lt;div class=ExternalClassB92AACD9BDA84976BBCC2747CE26C1C3&gt;&lt;p&gt;Following on from mass BPOS account activations you can now perform mass password resets with the latest &lt;b&gt;Microsoft Online Services Migration Tools&lt;/b&gt;. The PowerShell script below will read in a list of BPOS accounts and reset the password. The two fields you need in the CSV file are the email address and desired password. See the &lt;a href="http://www.microsoft.com/resources/Technet/en-us/MSOnline/bpos/html/9b956f53-9c10-464b-942a-06a4fa9b04c2.htm"&gt;BPOS password requirements&lt;/a&gt; before establishing a new password. In the script below you can choose not to force the user to change the password you assign to them by changing the value of “&lt;b&gt;-ChangePasswordOnNextLogon:$true&lt;/b&gt;” to “&lt;b&gt;-ChangePasswordOnNextLogon:$false&lt;/b&gt;”.  &lt;p&gt;To run this you must have admin privileges in BPOS and you must have the MSOL Migration Tools installed locally. Save this text with a PowerShell extension (i.e. massPwdChg.ps1) and open a Migration Command Shell and run the command by typing “&lt;b&gt;.\massPwdChg.ps1&lt;/b&gt;”. Make sure the paths in the script exist or change them to suit your needs (i.e. “&lt;b&gt;C:\Migration&lt;/b&gt;” and “&lt;b&gt;C:\Migration\ScriptLogs&lt;/b&gt;”). The input file is assumed to be &lt;b&gt;massPwdChg.csv&lt;/b&gt;.  &lt;p&gt;Here’s a sample CSV file format:  &lt;p&gt;name,mail,passwd&lt;br&gt;”Test Account”,&lt;a href="mailto:Testaccount@contoso.com,P@ssw0rd"&gt;Testaccount@contoso.com,P@ssw0rd&lt;/a&gt;  &lt;p&gt;&lt;a href="mailto:Testaccount@hanover.com,P@ssw0rd"&gt;&lt;font color="#555555"&gt;&lt;/font&gt;&lt;/a&gt;  &lt;div id=codeSnippetWrapper&gt; &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px" id=codeSnippet&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;# &lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;# Microsoft PowerShell Source File -- Created with SAPIEN Technologies PrimalScript 2009&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;# &lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;# NAME: massPwdChg.ps1&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;# &lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;# AUTHOR: Erik Enger , PointBridge&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;# DATE  : 11/03/2009&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;# &lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;# COMMENT: Use this script to perform a mass password change of BPOS accounts&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;#&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;# Note: This script requires the Microsoft Exchange Transporter snapin&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;# Modify the default PowerShell profile to add the Quest Snap-In&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;#&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;#        c:\windows\system32\windowspowershell\v1.0\profile.ps1&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;#&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;#        add-pssnapin Microsoft.Exchange.Transporter&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;# ==============================================================================================&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;cls&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;# Get the login ID for the BPOS admin account&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;write-host &lt;span style="color:#006080"&gt;'Enter the username for the MS Exchange Online admin (i.e. admin@contoso.com): '&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;$bposlogin = Read-Host&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt; &lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;# Get the password for the BPOS admin account in a secure fashion (display * for password)&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;write-host &lt;span style="color:#006080"&gt;'Enter the password for the MS Exchange Online admin (i.e. admin@contoso.com): '&lt;/span&gt; -foregroundcolor yellow -BackgroundColor darkmagenta&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;$bpospwd = read-host -assecurestring&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;Write-Host&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt; &lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;# Form the BPOS encrypted credential information and store it in a variable to be passed to upcoming commands&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;$bposcred = new-object -typename System.Management.Automation.PSCredential -argumentlist $bposlogin, $bpospwd&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;Write-Host&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt; &lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;write-host &lt;span style="color:#006080"&gt;&amp;quot;`n`n`n&amp;quot;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt; &lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#006080"&gt;&amp;quot;************************************************************************************************&amp;quot;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt; &lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;import-csv c:\migration\massPwdChg.csv | &lt;span style="color:#0000ff"&gt;foreach&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt; &lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;## Start a Transcript&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;$file=&lt;span style="color:#006080"&gt;&amp;quot;C:\Migration\ScriptLogs\&amp;quot;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;$file+= $_.name +&amp;quot;&lt;/span&gt;-massPwdChg.log&lt;span style="color:#006080"&gt;&amp;quot;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&amp;quot;&lt;/span&gt;************************************************************************************************&lt;span style="color:#006080"&gt;&amp;quot;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;Start-Transcript -Path $file -NoClobber:$false&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;Write-Host &amp;quot;&lt;/span&gt;Resetting BPOS password &lt;span style="color:#0000ff"&gt;for&lt;/span&gt;:&lt;span style="color:#006080"&gt;&amp;quot; $_.name&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;Date&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&amp;quot;&lt;/span&gt;************************************************************************************************&lt;span style="color:#006080"&gt;&amp;quot;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;# Set the password and prompt for change on next logon&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;Set-MSOnlineUserPassword -Identity $_.mail -Password $_.passwd -ChangePasswordOnNextLogon:$true -Credential $bposcred -Verbose&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;## Stop the log&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;Date&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;Stop-Transcript&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&amp;quot;&lt;/span&gt;************************************************************************************************&amp;quot;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;Write-Host `n`n`n&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</body><description>&lt;div class=ExternalClassB92AACD9BDA84976BBCC2747CE26C1C3&gt;&lt;p&gt;Following on from mass BPOS account activations you can now perform mass password resets with the latest &lt;b&gt;Microsoft Online Services Migration Tools&lt;/b&gt;. The PowerShell script below will read in a list of BPOS accounts and reset the password. The two fields you need in the CSV file are the email address and desired password. See the &lt;a href="http://www.microsoft.com/resources/Technet/en-us/MSOnline/bpos/html/9b956f53-9c10-464b-942a-06a4fa9b04c2.htm"&gt;BPOS password requirements&lt;/a&gt; before establishing a new password. In the script below you can choose not to force the user to change the password you assign to them by changing the value of “&lt;b&gt;-ChangePasswordOnNextLogon:$true&lt;/b&gt;” to “&lt;b&gt;-ChangePasswordOnNextLogon:$false&lt;/b&gt;”.  &lt;p&gt;To run this you must have admin privileges in BPOS and you must have the MSOL Migration Tools installed locally. Save this text with a PowerShell extension (i.e. massPwdChg.ps1) and open a Migration Command Shell and run the command by typing “&lt;b&gt;.\massPwdChg.ps1&lt;/b&gt;”. Make sure the paths in the script exist or change them to suit your needs (i.e. “&lt;b&gt;C:\Migration&lt;/b&gt;” and “&lt;b&gt;C:\Migration\ScriptLogs&lt;/b&gt;”). The input file is assumed to be &lt;b&gt;massPwdChg.csv&lt;/b&gt;.  &lt;p&gt;Here’s a sample CSV file format:  &lt;p&gt;name,mail,passwd&lt;br&gt;”Test Account”,&lt;a href="mailto:Testaccount@contoso.com,P@ssw0rd"&gt;Testaccount@contoso.com,P@ssw0rd&lt;/a&gt;  &lt;p&gt;&lt;a href="mailto:Testaccount@hanover.com,P@ssw0rd"&gt;&lt;font color="#555555"&gt;&lt;/font&gt;&lt;/a&gt;  &lt;div id=codeSnippetWrapper&gt; &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px" id=codeSnippet&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;# &lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;# Microsoft PowerShell Source File -- Created with SAPIEN Technologies PrimalScript 2009&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;# &lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;# NAME: massPwdChg.ps1&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;# &lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;# AUTHOR: Erik Enger , PointBridge&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;# DATE  : 11/03/2009&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;# &lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;# COMMENT: Use this script to perform a mass password change of BPOS accounts&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;#&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;# Note: This script requires the Microsoft Exchange Transporter snapin&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;# Modify the default PowerShell profile to add the Quest Snap-In&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;#&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;#        c:\windows\system32\windowspowershell\v1.0\profile.ps1&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;#&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;#        add-pssnapin Microsoft.Exchange.Transporter&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;# ==============================================================================================&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;cls&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;# Get the login ID for the BPOS admin account&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;write-host &lt;span style="color:#006080"&gt;'Enter the username for the MS Exchange Online admin (i.e. admin@contoso.com): '&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;$bposlogin = Read-Host&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt; &lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;# Get the password for the BPOS admin account in a secure fashion (display * for password)&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;write-host &lt;span style="color:#006080"&gt;'Enter the password for the MS Exchange Online admin (i.e. admin@contoso.com): '&lt;/span&gt; -foregroundcolor yellow -BackgroundColor darkmagenta&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;$bpospwd = read-host -assecurestring&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;Write-Host&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt; &lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;# Form the BPOS encrypted credential information and store it in a variable to be passed to upcoming commands&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;$bposcred = new-object -typename System.Management.Automation.PSCredential -argumentlist $bposlogin, $bpospwd&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;Write-Host&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt; &lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;write-host &lt;span style="color:#006080"&gt;&amp;quot;`n`n`n&amp;quot;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt; &lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#006080"&gt;&amp;quot;************************************************************************************************&amp;quot;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt; &lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;import-csv c:\migration\massPwdChg.csv | &lt;span style="color:#0000ff"&gt;foreach&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt; &lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&lt;span style="color:#008000"&gt;## Start a Transcript&lt;/span&gt;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;$file=&lt;span style="color:#006080"&gt;&amp;quot;C:\Migration\ScriptLogs\&amp;quot;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;$file+= $_.name +&amp;quot;&lt;/span&gt;-massPwdChg.log&lt;span style="color:#006080"&gt;&amp;quot;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&amp;quot;&lt;/span&gt;************************************************************************************************&lt;span style="color:#006080"&gt;&amp;quot;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;Start-Transcript -Path $file -NoClobber:$false&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;Write-Host &amp;quot;&lt;/span&gt;Resetting BPOS password &lt;span style="color:#0000ff"&gt;for&lt;/span&gt;:&lt;span style="color:#006080"&gt;&amp;quot; $_.name&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;Date&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&amp;quot;&lt;/span&gt;************************************************************************************************&lt;span style="color:#006080"&gt;&amp;quot;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;# Set the password and prompt for change on next logon&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;Set-MSOnlineUserPassword -Identity $_.mail -Password $_.passwd -ChangePasswordOnNextLogon:$true -Credential $bposcred -Verbose&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;## Stop the log&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;Date&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;Stop-Transcript&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;&amp;quot;&lt;/span&gt;************************************************************************************************&amp;quot;&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;Write-Host `n`n`n&lt;/pre&gt;&lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px"&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description><author>Erik Enger</author><link>http://blogs.pointbridge.com/Blogs/enger_erik/Pages/Post.aspx?_ID=30</link><description /><pubDate>2009-11-21 09:26:36</pubDate></item><item><id>29</id><title>Mass account activations in BPOS</title><body>&lt;div class=ExternalClassCEE0B707D88A4E8180BEEBB47B7CE08B&gt;&lt;div class=ExternalClassEBA872B0C1E34976AE6B05D2F28BEE8D&gt; &lt;div&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;font size=3 face=Calibri&gt;Bulk account activations are now available with the latest &lt;b&gt;Microsoft Online Services Migration Tools&lt;/b&gt;. If you're like me performing this in the past was a pain since you had to activate the accounts through the web portal which allowed you to activate only a handful of accounts at a time and collecting the passwords for delivery to the users was excruciating &lt;span style="font-family:'Calibri','sans-serif';color:black;font-size:11pt"&gt;too&lt;/span&gt;. We now have a solution!&lt;/font&gt;&lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;font size=3 face=Calibri&gt;The PowerShell script below will read in a list of BPOS accounts and activate them in BPOS. The fields you need in the CSV file are the email address, desired password, location and mailbox size. See the &lt;/font&gt;&lt;a href="http://www.microsoft.com/resources/Technet/en-us/MSOnline/bpos/html/9b956f53-9c10-464b-942a-06a4fa9b04c2.htm"&gt;&lt;font size=3 face=Calibri&gt;BPOS password requirements&lt;/font&gt;&lt;/a&gt;&lt;font size=3&gt;&lt;font face=Calibri&gt; before establishing a password.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;font size=3&gt;&lt;font face=Calibri&gt;To run this you must have admin privileges in BPOS and you must have the MSOL Migration Tools installed locally. Save this text with a PowerShell extension (i.e. massActivate.ps1) and open a Migration Command Shell and run the command by typing “&lt;b&gt;.\massActivate.ps1&lt;/b&gt;”. Make sure the paths in the script exist or change them to suit your needs (i.e. “&lt;b&gt;C:\Migration&lt;/b&gt;” and “&lt;b&gt;C:\Migration\ScriptLogs&lt;/b&gt;”). The input file is assumed to be &lt;b&gt;massActivate.csv&lt;/b&gt;. Also, replace the parameter SubscriptionIDs with the value of your BPOS subscription. You can find this value by running this cmdlet:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;font size=2&gt;&lt;font style="background-color:#d9d9d9" face=Consolas&gt;&lt;font face=Verdana&gt;Get-MSOnlineSubscription&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;font size=3&gt;&lt;font face=Calibri&gt;&lt;/font&gt;&lt;/font&gt; &lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;font size=3 face=Calibri&gt;The script might take a while to complete, depending on the number of accounts you are activating so please be patient.&lt;/font&gt;&lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;font size=3&gt;&lt;font face=Calibri&gt;Here’s a sample CSV file format:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="margin:0in 0in 0pt" class=CodeSamples&gt;&lt;font size=2&gt;&lt;font style="background-color:#d9d9d9"&gt;&lt;font face=Consolas&gt;name,mail,passwd,location,mbxsize&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="margin:0in 0in 0pt" class=CodeSamples&gt;&lt;font size=2&gt;&lt;font style="background-color:#d9d9d9"&gt;&lt;font face=Consolas&gt;TestAccount,&lt;a href="mailto:Testaccount@contoso.com,P@ssw0rd,US,5368709120"&gt;Testaccount@contoso.com,P@ssw0rd,US,5368709120&lt;/a&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;font size=2&gt;&lt;font style="background-color:#d9d9d9"&gt;&lt;font face=Consolas&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt; &lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;# ==============================================================================================&lt;br&gt;# &lt;br&gt;# Microsoft PowerShell Source File -- Created with SAPIEN Technologies PrimalScript 2009&lt;br&gt;# &lt;br&gt;# NAME: massActivate.ps1&lt;br&gt;# &lt;br&gt;# AUTHOR: Erik Enger , PointBridge&lt;br&gt;# DATE  : 11/03/2009&lt;br&gt;# &lt;br&gt;# COMMENT: Use this script to mass activate BPOS accounts&lt;br&gt;#&lt;br&gt;# Note: This script requires the Microsoft Exchange Transporter snapin&lt;br&gt;# Modify the default PowerShell profile to add the Quest Snap-In&lt;br&gt;#&lt;br&gt;#  c:\windows\system32\windowspowershell\v1.0\profile.ps1&lt;br&gt;#&lt;br&gt;#  add-pssnapin Microsoft.Exchange.Transporter&lt;br&gt;# ==============================================================================================&lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;# Get the login ID for the BPOS admin account&lt;br&gt;write-host 'Enter the username for the MS Exchange Online admin (i.e. &lt;a href="mailto:admin@contoso.com"&gt;admin@contoso.com&lt;/a&gt;): '&lt;br&gt;$bposlogin = Read-Host&lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;# Get the password for the BPOS admin account in a secure fashion (display * for password)&lt;br&gt;cls&lt;br&gt;write-host 'Enter the password for the MS Exchange Online admin (&lt;a href="mailto:admin@contoso.com"&gt;admin@contoso.com&lt;/a&gt;): ' -foregroundcolor yellow -BackgroundColor darkmagenta&lt;br&gt;$bpospwd = read-host -assecurestring&lt;br&gt;Write-Host&lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;# Form the BPOS encrypted credential information and store it in a variable to be passed to upcoming commands&lt;br&gt;$bposcred = new-object -typename System.Management.Automation.PSCredential -argumentlist $bposlogin, $bpospwd&lt;br&gt;Write-Host&lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;write-host &amp;quot;`n`n`n&amp;quot;&lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;# Get number of available licenses&lt;br&gt;$totalseats=Get-MSOnlineSubscription -Credential $bposcred&lt;br&gt;$usedseats=Get-MSOnlineSubscription -Credential $bposcred&lt;br&gt;$freeseats=$totalseats.TotalSeats-$usedseats.UsedSeats&lt;br&gt;Write-Host &amp;quot;The number of availble seats in your BPOS subscription is: &amp;quot; $freeseats&lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;# Count number of accounts you're trying to activate in BPOS&lt;br&gt;$nCount=import-csv c:\migration\massActivate.csv&lt;br&gt;$licenseCount=$nCount.count&lt;br&gt;Write-Host &amp;quot;You are trying to activate &amp;quot; $licenseCount &amp;quot; new accounts.&amp;quot;&lt;br&gt;$nCount=&amp;quot;&amp;quot;&lt;br&gt;Write-Host `n`n&lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;if($licenseCount -gt $freeseats) {&lt;br&gt; Write-Host &amp;quot;You do not have enough free licenses to activate all of the objects in your input file. Please purchase additional licenses or remove objects from the activation list. This script will now exit.&amp;quot; -foregroundcolor red -BackgroundColor darkmagenta&lt;br&gt; exit&lt;br&gt;}&lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;# If there are enough free BPOS licenses, prompt the user to continue with activation process&lt;br&gt;# Create choices list&lt;br&gt;$yes = new-Object System.Management.Automation.Host.ChoiceDescription &amp;quot;&amp;amp;Yes&amp;quot;,&amp;quot;&amp;quot;&lt;br&gt;$no = new-Object System.Management.Automation.Host.ChoiceDescription &amp;quot;&amp;amp;No&amp;quot;,&amp;quot;&amp;quot;&lt;br&gt;$choices = [System.Management.Automation.Host.ChoiceDescription[]]($yes,$no)&lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;#Now to prompt the user and get a result&lt;br&gt;$caption = &amp;quot;Proceed with mass activation...&amp;quot;&lt;br&gt;$message = &amp;quot;Do you wish to proceed activating these new accounts?&amp;quot;&lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;$result = $host.ui.PromptForChoice($caption,$message,$choices,0)&lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;if($result -eq 0) {&lt;br&gt; Write-Host &amp;quot;You answered YES. Proceeding with mass activation. You will be notified when it's complete.&amp;quot;&lt;br&gt; &amp;quot;************************************************************************************************&amp;quot;&lt;br&gt; &lt;br&gt; import-csv c:\migration\massActivate.csv | foreach {&lt;br&gt; &lt;br&gt; ## Start a Transcript&lt;br&gt; $file=&amp;quot;C:\Migration\ScriptLogs\&amp;quot;&lt;br&gt; $file+= $_.name +&amp;quot;-massActivate.log&amp;quot;&lt;br&gt; &amp;quot;************************************************************************************************&amp;quot;&lt;br&gt; Start-Transcript -Path $file -NoClobber:$false&lt;br&gt; Write-Host &amp;quot;Starting a Migration for:&amp;quot; $_.name&lt;br&gt; Date&lt;br&gt; &amp;quot;************************************************************************************************&amp;quot;&lt;br&gt; Enable-MSOnlineUser -Identity $_.mail -Password $_.passwd -SubscriptionIDs &amp;quot;abcd1234-123a-456b-c789-d123ef0f12e3&amp;quot; -UserLocation $_.location -MailboxQuotaSize:$_.mbxsize -Credential $bposcred -Verbose&lt;br&gt; ## Stop the log&lt;br&gt; Date&lt;br&gt; Stop-Transcript&lt;br&gt; &amp;quot;************************************************************************************************&amp;quot;&lt;br&gt; write-host `n`n`n&lt;br&gt; }&lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;br&gt; # Get final number of available licenses&lt;br&gt; $totalseats=Get-MSOnlineSubscription -Credential $bposcred&lt;br&gt; $usedseats=Get-MSOnlineSubscription -Credential $bposcred&lt;br&gt; $freeseats=$totalseats.TotalSeats-$usedseats.UsedSeats&lt;br&gt; Write-Host &amp;quot;Now the number of available seats in your BPOS subscription is: &amp;quot; $freeseats&lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;}&lt;br&gt;if($result -eq 1) { &lt;br&gt; Write-Host &amp;quot;You answered NO. Exiting script now.&amp;quot;&lt;br&gt; exit&lt;br&gt;}&lt;br&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</body><description>&lt;div class=ExternalClassCEE0B707D88A4E8180BEEBB47B7CE08B&gt;&lt;div class=ExternalClassEBA872B0C1E34976AE6B05D2F28BEE8D&gt; &lt;div&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;font size=3 face=Calibri&gt;Bulk account activations are now available with the latest &lt;b&gt;Microsoft Online Services Migration Tools&lt;/b&gt;. If you're like me performing this in the past was a pain since you had to activate the accounts through the web portal which allowed you to activate only a handful of accounts at a time and collecting the passwords for delivery to the users was excruciating &lt;span style="font-family:'Calibri','sans-serif';color:black;font-size:11pt"&gt;too&lt;/span&gt;. We now have a solution!&lt;/font&gt;&lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;font size=3 face=Calibri&gt;The PowerShell script below will read in a list of BPOS accounts and activate them in BPOS. The fields you need in the CSV file are the email address, desired password, location and mailbox size. See the &lt;/font&gt;&lt;a href="http://www.microsoft.com/resources/Technet/en-us/MSOnline/bpos/html/9b956f53-9c10-464b-942a-06a4fa9b04c2.htm"&gt;&lt;font size=3 face=Calibri&gt;BPOS password requirements&lt;/font&gt;&lt;/a&gt;&lt;font size=3&gt;&lt;font face=Calibri&gt; before establishing a password.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;font size=3&gt;&lt;font face=Calibri&gt;To run this you must have admin privileges in BPOS and you must have the MSOL Migration Tools installed locally. Save this text with a PowerShell extension (i.e. massActivate.ps1) and open a Migration Command Shell and run the command by typing “&lt;b&gt;.\massActivate.ps1&lt;/b&gt;”. Make sure the paths in the script exist or change them to suit your needs (i.e. “&lt;b&gt;C:\Migration&lt;/b&gt;” and “&lt;b&gt;C:\Migration\ScriptLogs&lt;/b&gt;”). The input file is assumed to be &lt;b&gt;massActivate.csv&lt;/b&gt;. Also, replace the parameter SubscriptionIDs with the value of your BPOS subscription. You can find this value by running this cmdlet:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;font size=2&gt;&lt;font style="background-color:#d9d9d9" face=Consolas&gt;&lt;font face=Verdana&gt;Get-MSOnlineSubscription&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;font size=3&gt;&lt;font face=Calibri&gt;&lt;/font&gt;&lt;/font&gt; &lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;font size=3 face=Calibri&gt;The script might take a while to complete, depending on the number of accounts you are activating so please be patient.&lt;/font&gt;&lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;font size=3&gt;&lt;font face=Calibri&gt;Here’s a sample CSV file format:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="margin:0in 0in 0pt" class=CodeSamples&gt;&lt;font size=2&gt;&lt;font style="background-color:#d9d9d9"&gt;&lt;font face=Consolas&gt;name,mail,passwd,location,mbxsize&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="margin:0in 0in 0pt" class=CodeSamples&gt;&lt;font size=2&gt;&lt;font style="background-color:#d9d9d9"&gt;&lt;font face=Consolas&gt;TestAccount,&lt;a href="mailto:Testaccount@contoso.com,P@ssw0rd,US,5368709120"&gt;Testaccount@contoso.com,P@ssw0rd,US,5368709120&lt;/a&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;font size=2&gt;&lt;font style="background-color:#d9d9d9"&gt;&lt;font face=Consolas&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt; &lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;# ==============================================================================================&lt;br&gt;# &lt;br&gt;# Microsoft PowerShell Source File -- Created with SAPIEN Technologies PrimalScript 2009&lt;br&gt;# &lt;br&gt;# NAME: massActivate.ps1&lt;br&gt;# &lt;br&gt;# AUTHOR: Erik Enger , PointBridge&lt;br&gt;# DATE  : 11/03/2009&lt;br&gt;# &lt;br&gt;# COMMENT: Use this script to mass activate BPOS accounts&lt;br&gt;#&lt;br&gt;# Note: This script requires the Microsoft Exchange Transporter snapin&lt;br&gt;# Modify the default PowerShell profile to add the Quest Snap-In&lt;br&gt;#&lt;br&gt;#  c:\windows\system32\windowspowershell\v1.0\profile.ps1&lt;br&gt;#&lt;br&gt;#  add-pssnapin Microsoft.Exchange.Transporter&lt;br&gt;# ==============================================================================================&lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;# Get the login ID for the BPOS admin account&lt;br&gt;write-host 'Enter the username for the MS Exchange Online admin (i.e. &lt;a href="mailto:admin@contoso.com"&gt;admin@contoso.com&lt;/a&gt;): '&lt;br&gt;$bposlogin = Read-Host&lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;# Get the password for the BPOS admin account in a secure fashion (display * for password)&lt;br&gt;cls&lt;br&gt;write-host 'Enter the password for the MS Exchange Online admin (&lt;a href="mailto:admin@contoso.com"&gt;admin@contoso.com&lt;/a&gt;): ' -foregroundcolor yellow -BackgroundColor darkmagenta&lt;br&gt;$bpospwd = read-host -assecurestring&lt;br&gt;Write-Host&lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;# Form the BPOS encrypted credential information and store it in a variable to be passed to upcoming commands&lt;br&gt;$bposcred = new-object -typename System.Management.Automation.PSCredential -argumentlist $bposlogin, $bpospwd&lt;br&gt;Write-Host&lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;write-host &amp;quot;`n`n`n&amp;quot;&lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;# Get number of available licenses&lt;br&gt;$totalseats=Get-MSOnlineSubscription -Credential $bposcred&lt;br&gt;$usedseats=Get-MSOnlineSubscription -Credential $bposcred&lt;br&gt;$freeseats=$totalseats.TotalSeats-$usedseats.UsedSeats&lt;br&gt;Write-Host &amp;quot;The number of availble seats in your BPOS subscription is: &amp;quot; $freeseats&lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;# Count number of accounts you're trying to activate in BPOS&lt;br&gt;$nCount=import-csv c:\migration\massActivate.csv&lt;br&gt;$licenseCount=$nCount.count&lt;br&gt;Write-Host &amp;quot;You are trying to activate &amp;quot; $licenseCount &amp;quot; new accounts.&amp;quot;&lt;br&gt;$nCount=&amp;quot;&amp;quot;&lt;br&gt;Write-Host `n`n&lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;if($licenseCount -gt $freeseats) {&lt;br&gt; Write-Host &amp;quot;You do not have enough free licenses to activate all of the objects in your input file. Please purchase additional licenses or remove objects from the activation list. This script will now exit.&amp;quot; -foregroundcolor red -BackgroundColor darkmagenta&lt;br&gt; exit&lt;br&gt;}&lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;# If there are enough free BPOS licenses, prompt the user to continue with activation process&lt;br&gt;# Create choices list&lt;br&gt;$yes = new-Object System.Management.Automation.Host.ChoiceDescription &amp;quot;&amp;amp;Yes&amp;quot;,&amp;quot;&amp;quot;&lt;br&gt;$no = new-Object System.Management.Automation.Host.ChoiceDescription &amp;quot;&amp;amp;No&amp;quot;,&amp;quot;&amp;quot;&lt;br&gt;$choices = [System.Management.Automation.Host.ChoiceDescription[]]($yes,$no)&lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;#Now to prompt the user and get a result&lt;br&gt;$caption = &amp;quot;Proceed with mass activation...&amp;quot;&lt;br&gt;$message = &amp;quot;Do you wish to proceed activating these new accounts?&amp;quot;&lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;$result = $host.ui.PromptForChoice($caption,$message,$choices,0)&lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;if($result -eq 0) {&lt;br&gt; Write-Host &amp;quot;You answered YES. Proceeding with mass activation. You will be notified when it's complete.&amp;quot;&lt;br&gt; &amp;quot;************************************************************************************************&amp;quot;&lt;br&gt; &lt;br&gt; import-csv c:\migration\massActivate.csv | foreach {&lt;br&gt; &lt;br&gt; ## Start a Transcript&lt;br&gt; $file=&amp;quot;C:\Migration\ScriptLogs\&amp;quot;&lt;br&gt; $file+= $_.name +&amp;quot;-massActivate.log&amp;quot;&lt;br&gt; &amp;quot;************************************************************************************************&amp;quot;&lt;br&gt; Start-Transcript -Path $file -NoClobber:$false&lt;br&gt; Write-Host &amp;quot;Starting a Migration for:&amp;quot; $_.name&lt;br&gt; Date&lt;br&gt; &amp;quot;************************************************************************************************&amp;quot;&lt;br&gt; Enable-MSOnlineUser -Identity $_.mail -Password $_.passwd -SubscriptionIDs &amp;quot;abcd1234-123a-456b-c789-d123ef0f12e3&amp;quot; -UserLocation $_.location -MailboxQuotaSize:$_.mbxsize -Credential $bposcred -Verbose&lt;br&gt; ## Stop the log&lt;br&gt; Date&lt;br&gt; Stop-Transcript&lt;br&gt; &amp;quot;************************************************************************************************&amp;quot;&lt;br&gt; write-host `n`n`n&lt;br&gt; }&lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;br&gt; # Get final number of available licenses&lt;br&gt; $totalseats=Get-MSOnlineSubscription -Credential $bposcred&lt;br&gt; $usedseats=Get-MSOnlineSubscription -Credential $bposcred&lt;br&gt; $freeseats=$totalseats.TotalSeats-$usedseats.UsedSeats&lt;br&gt; Write-Host &amp;quot;Now the number of available seats in your BPOS subscription is: &amp;quot; $freeseats&lt;/p&gt; &lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;}&lt;br&gt;if($result -eq 1) { &lt;br&gt; Write-Host &amp;quot;You answered NO. Exiting script now.&amp;quot;&lt;br&gt; exit&lt;br&gt;}&lt;br&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description><author>Erik Enger</author><link>http://blogs.pointbridge.com/Blogs/enger_erik/Pages/Post.aspx?_ID=29</link><description /><pubDate>2009-11-18 12:39:00</pubDate></item><item><id>26</id><title>Five Reasons to use ISA 2006 to Publish Your Web Applications</title><body>&lt;div class=ExternalClass7AA8FCF6C3E149A684B0933689E1FE19&gt;&lt;p&gt;I work with ISA 2006 on a on and off basis.  Its one of those products we don't necessarily focus on, but we often run into cases where customers need additional security and authentication functionality beyond that which can be (easily) provided in their applications.  More often than not, we find that ISA 2006 turns out to be a great solution to meet these kinds of needs.&lt;/p&gt; &lt;p&gt;That being said, I’ve come to learn in my conversations with customers that there is a general lack of knowledge of the capabilities and benefits ISA 2006 provides, so I thought it would be useful to briefly articulate why one should consider using ISA 2006 to publish any application that requires external access.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;1. Authenticated and Authorized Traffic Only.&lt;/strong&gt;  ISA 2006 can authenticate web traffic &lt;em&gt;before&lt;/em&gt; sending anything to published servers.  Additionally, authenticated connections can be associated to different groups, which in turn can be applied to ISA rules to dictate what the authenticated user can and cannot do.  Again, this is applied before traffic even hits the application.  Ensuring that only authenticated and authorized traffic even gets to your application in the first place adds a great deal of additional security and helps reduce the amount of authentication work your web servers are performing.  In ISA 2006, this is typically (but not necessarily) implemented using a logon form, which can be customized (branded) to meet a certain look and feel.  If desired, the logon form can even be enhanced to allow for “forgot password” or “new user sign-up” functionality.  By the way, after successfully authenticating, the users’ browser gets a cookie, which is used to link the user’s identity to the session.  This cookie can be configured to be either persistent or have a certain lifetime.  &lt;/p&gt; &lt;p&gt;&lt;strong&gt;2. Single Sign-On (SSO)&lt;/strong&gt;.  Many people don’t realize it, but ISA 2006 is a great tool for SSO.  In many cases, solutions based on SharePoint consist of multiple, distributed applications and web services like SQL Server Reporting Services, each requiring some kind of authentication.  Often, this is presented to the browser using an IFrame or something similar.  More often than not, this results in external users being prompted to authenticate repeatedly.  Not good.  Fortunately, ISA 2006 provides Single Sign On (SSO) functionality to ensure users only need authenticate once using the aforementioned logon form.  Subsequent authentication requests from published applications are handled by ISA on behalf of the user via a process known as Delegated Authentication.  From the published servers’ perspective, it appears the user is connected to the internal LAN.  Oh, by the way. You say your application requires Kerberos?  No problem.  ISA 2006 &lt;a href="http://technet.microsoft.com/en-us/library/bb794858.aspx"&gt;fully supports Kerberos constrained delegation&lt;/a&gt;.  We recently set up SSO for a customer using ISA to publish a portal consisting of both SharePoint and a 3rd party dashboard application (single portal – multiple servers) and it worked great.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;3. Link Translation.&lt;/strong&gt;  This will be a short, but important one.  ISA 2006 has built-in support for SharePoint Alternate Access Mapping (AAM) and many more capabilities to provide customized link translation.  Last year, I blogged about &lt;a href="/Blogs/nielsen_travis/Pages/Post.aspx?_ID=16"&gt;some of these capabilities&lt;/a&gt;.  This functionality offers application designers a high amount of control over what end users see in their browsers and offers more opportunities for custom branding.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;4. Its a Darn Good Application Layer Firewall.&lt;/strong&gt;  In the past, there’s been a fair amount of bias against ISA out there in the networking community, partially (I suspect) due to Microsoft’s past track record with security.  However, I’ve been noticing this trend has diminished greatly.  The truth is that ISA 2006, when properly configured, is a very high quality application layer firewall.  In fact, if you look ISA 2006 up on &lt;a href="http://secunia.com/advisories/"&gt;Secunia&lt;/a&gt;, you’ll find a grand total of &lt;a href="http://secunia.com/advisories/product/12468/?task=advisories_2009"&gt;ONE&lt;/a&gt; (1) advisories for ISA 2006. Both vulnerabilities were disclosed in 2009 and patches were available at the same time as the announcement.  Compare that with &lt;a href="http://secunia.com/advisories/product/6102/?task=advisories_2009"&gt;Cisco PIX 7.x&lt;/a&gt; and &lt;a href="http://secunia.com/advisories/product/16164/?task=advisories_2009"&gt;Cisco PIX 8.x&lt;/a&gt;.  Now, I’m not foolish enough to claim ISA 2006 is “more secure” than other products like PIX / ASA.  My point is that ISA 2006 is proven to be a trustworthy component of an overall security infrastructure.  And because its an &lt;em&gt;application layer&lt;/em&gt; firewall, it provides unique functionality to protect Microsoft products like SharePoint and Exchange server from potential application-specific vulnerabilities.  This is critical when you consider that recent studies show that around 70% of attacks today are targeting &lt;em&gt;applications&lt;/em&gt;, not operating systems.  For example, on its own SharePoint can’t defend itself against things like &lt;a href="http://www.secureworks.com/research/threats/ddos/"&gt;HTTP Distributed Denial of Service attacks&lt;/a&gt;.  And that’s just one example.  By inspecting HTTP (and even HTTPS) traffic, ISA 2006 ensures HTTP connections are legitimate, correctly formed, and fit within safe parameters.  This translates to higher availability and better performance for your end-users.  Of course, &lt;a href="http://technet.microsoft.com/en-us/library/bb794735.aspx"&gt;a full listing of the security features included with ISA 2006&lt;/a&gt; is available on TechNet.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;5. High Availability (and Scalability).&lt;/strong&gt;  I don’t think many folks out there realize that ISA 2006 can be installed and configured in a load balanced array.  We’ve done this a couple of times and have always found it to work quite well.  If you don’t have a hardware load balancing solution available or don’t want to mess with that stuff, its actually fairly straightforward to set up two or three servers and distribute traffic between them.  This way, a failure (or scheduled downtime) on one ISA server won’t impact the availability of your published web servers to end-users.  This load balancing capability thus provides high availability, better performance, and scalability.  Additionally, a load-balanced ISA array can in turn publish internal web servers in a round-robin fashion.  And connections can be configured to be “sticky” to support those highly dynamic, interactive web based apps we all know and love.  All this allows you to accomplish more with less.&lt;/p&gt; &lt;p&gt;So there are my top five reasons. I can already think of a few more…..cost and ease-of-use come to mind.  Anyhow, a few quick Google (ahem) &lt;a href="http://www.live.com/"&gt;Microsoft Live&lt;/a&gt; searches will reveal a very passionate and dynamic community out there for this product.  If you’re developing any sort of custom web application, particularly one based on the Microsoft collaboration platform,I highly recommend you check it out.  And as always let me know if you have any questions.&lt;/p&gt;&lt;/div&gt;</body><description>&lt;div class=ExternalClass7AA8FCF6C3E149A684B0933689E1FE19&gt;&lt;p&gt;I work with ISA 2006 on a on and off basis.  Its one of those products we don't necessarily focus on, but we often run into cases where customers need additional security and authentication functionality beyond that which can be (easily) provided in their applications.  More often than not, we find that ISA 2006 turns out to be a great solution to meet these kinds of needs.&lt;/p&gt; &lt;p&gt;That being said, I’ve come to learn in my conversations with customers that there is a general lack of knowledge of the capabilities and benefits ISA 2006 provides, so I thought it would be useful to briefly articulate why one should consider using ISA 2006 to publish any application that requires external access.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;1. Authenticated and Authorized Traffic Only.&lt;/strong&gt;  ISA 2006 can authenticate web traffic &lt;em&gt;before&lt;/em&gt; sending anything to published servers.  Additionally, authenticated connections can be associated to different groups, which in turn can be applied to ISA rules to dictate what the authenticated user can and cannot do.  Again, this is applied before traffic even hits the application.  Ensuring that only authenticated and authorized traffic even gets to your application in the first place adds a great deal of additional security and helps reduce the amount of authentication work your web servers are performing.  In ISA 2006, this is typically (but not necessarily) implemented using a logon form, which can be customized (branded) to meet a certain look and feel.  If desired, the logon form can even be enhanced to allow for “forgot password” or “new user sign-up” functionality.  By the way, after successfully authenticating, the users’ browser gets a cookie, which is used to link the user’s identity to the session.  This cookie can be configured to be either persistent or have a certain lifetime.  &lt;/p&gt; &lt;p&gt;&lt;strong&gt;2. Single Sign-On (SSO)&lt;/strong&gt;.  Many people don’t realize it, but ISA 2006 is a great tool for SSO.  In many cases, solutions based on SharePoint consist of multiple, distributed applications and web services like SQL Server Reporting Services, each requiring some kind of authentication.  Often, this is presented to the browser using an IFrame or something similar.  More often than not, this results in external users being prompted to authenticate repeatedly.  Not good.  Fortunately, ISA 2006 provides Single Sign On (SSO) functionality to ensure users only need authenticate once using the aforementioned logon form.  Subsequent authentication requests from published applications are handled by ISA on behalf of the user via a process known as Delegated Authentication.  From the published servers’ perspective, it appears the user is connected to the internal LAN.  Oh, by the way. You say your application requires Kerberos?  No problem.  ISA 2006 &lt;a href="http://technet.microsoft.com/en-us/library/bb794858.aspx"&gt;fully supports Kerberos constrained delegation&lt;/a&gt;.  We recently set up SSO for a customer using ISA to publish a portal consisting of both SharePoint and a 3rd party dashboard application (single portal – multiple servers) and it worked great.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;3. Link Translation.&lt;/strong&gt;  This will be a short, but important one.  ISA 2006 has built-in support for SharePoint Alternate Access Mapping (AAM) and many more capabilities to provide customized link translation.  Last year, I blogged about &lt;a href="/Blogs/nielsen_travis/Pages/Post.aspx?_ID=16"&gt;some of these capabilities&lt;/a&gt;.  This functionality offers application designers a high amount of control over what end users see in their browsers and offers more opportunities for custom branding.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;4. Its a Darn Good Application Layer Firewall.&lt;/strong&gt;  In the past, there’s been a fair amount of bias against ISA out there in the networking community, partially (I suspect) due to Microsoft’s past track record with security.  However, I’ve been noticing this trend has diminished greatly.  The truth is that ISA 2006, when properly configured, is a very high quality application layer firewall.  In fact, if you look ISA 2006 up on &lt;a href="http://secunia.com/advisories/"&gt;Secunia&lt;/a&gt;, you’ll find a grand total of &lt;a href="http://secunia.com/advisories/product/12468/?task=advisories_2009"&gt;ONE&lt;/a&gt; (1) advisories for ISA 2006. Both vulnerabilities were disclosed in 2009 and patches were available at the same time as the announcement.  Compare that with &lt;a href="http://secunia.com/advisories/product/6102/?task=advisories_2009"&gt;Cisco PIX 7.x&lt;/a&gt; and &lt;a href="http://secunia.com/advisories/product/16164/?task=advisories_2009"&gt;Cisco PIX 8.x&lt;/a&gt;.  Now, I’m not foolish enough to claim ISA 2006 is “more secure” than other products like PIX / ASA.  My point is that ISA 2006 is proven to be a trustworthy component of an overall security infrastructure.  And because its an &lt;em&gt;application layer&lt;/em&gt; firewall, it provides unique functionality to protect Microsoft products like SharePoint and Exchange server from potential application-specific vulnerabilities.  This is critical when you consider that recent studies show that around 70% of attacks today are targeting &lt;em&gt;applications&lt;/em&gt;, not operating systems.  For example, on its own SharePoint can’t defend itself against things like &lt;a href="http://www.secureworks.com/research/threats/ddos/"&gt;HTTP Distributed Denial of Service attacks&lt;/a&gt;.  And that’s just one example.  By inspecting HTTP (and even HTTPS) traffic, ISA 2006 ensures HTTP connections are legitimate, correctly formed, and fit within safe parameters.  This translates to higher availability and better performance for your end-users.  Of course, &lt;a href="http://technet.microsoft.com/en-us/library/bb794735.aspx"&gt;a full listing of the security features included with ISA 2006&lt;/a&gt; is available on TechNet.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;5. High Availability (and Scalability).&lt;/strong&gt;  I don’t think many folks out there realize that ISA 2006 can be installed and configured in a load balanced array.  We’ve done this a couple of times and have always found it to work quite well.  If you don’t have a hardware load balancing solution available or don’t want to mess with that stuff, its actually fairly straightforward to set up two or three servers and distribute traffic between them.  This way, a failure (or scheduled downtime) on one ISA server won’t impact the availability of your published web servers to end-users.  This load balancing capability thus provides high availability, better performance, and scalability.  Additionally, a load-balanced ISA array can in turn publish internal web servers in a round-robin fashion.  And connections can be configured to be “sticky” to support those highly dynamic, interactive web based apps we all know and love.  All this allows you to accomplish more with less.&lt;/p&gt; &lt;p&gt;So there are my top five reasons. I can already think of a few more…..cost and ease-of-use come to mind.  Anyhow, a few quick Google (ahem) &lt;a href="http://www.live.com/"&gt;Microsoft Live&lt;/a&gt; searches will reveal a very passionate and dynamic community out there for this product.  If you’re developing any sort of custom web application, particularly one based on the Microsoft collaboration platform,I highly recommend you check it out.  And as always let me know if you have any questions.&lt;/p&gt;&lt;/div&gt;</description><author>Travis Nielsen</author><link>http://blogs.pointbridge.com/Blogs/nielsen_travis/Pages/Post.aspx?_ID=26</link><description /><pubDate>2009-05-01 13:34:57</pubDate></item><item><id>28</id><title>Exchange 2010 Beta First Looks: E-mail Moderation</title><body>&lt;div class=ExternalClassE387B990D0064180A40C7B82786F37A0&gt;
&lt;div&gt;The next release of Exchange will include e-mail moderation, whereby you can &amp;quot;ask&amp;quot; for approval to send messages to certain individuals or domains. I think this is pretty neat and beneficial for firms looking to apply compliance controls or build ethical firewalls to avoid any potential legal issues.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;As in my earlier blog on e-mail disclaimers we're back again using Hub Transport rules to achieve this and once again, it's really easy to set this up. Probably the more difficult aspect would be in determining which messages get flagged for moderation. I mean, what manager would want to approve potentially hundreds of emails before they left the company? I think with some creative rules and exceptions you could minimize this. In my example there is a contract negotiation going on between Contoso and NWTraders which is sensitive in nature so the boss(es) want to be extra careful given this situation so they want their staff  to seek approval for any email they send the client. That's pretty rough, huh? :)&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Here's the rule configuration to pull this off. Remember we want all email sent to nwtraders.com to be flagged for moderation but the two bosses.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/EditTransPortRule.png"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Select your conditions:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/EditTransPortRule2.png"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Here we want to add &lt;a href="mailto:'@nwtraders.com'"&gt;'@nwtraders.com'&lt;/a&gt; as search criteria so the HT (hub transport) grabs the messages and processes them appropriately.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/EditTransPortRule3.png"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Now we want the HT to forward these messages to the bosses for approval. What I noticed is that while you may have multiple people on the moderation list, any one of these people may approve or reject the message. This may help when people moderating messages are out of the office and are being covered by someone else.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/EditTransPortRule4.png"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Here's the summarized rule.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/EditTransPortRule5.png"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Now let's compose a simple message and see how this works. I prepared a message with two people from NWTraders, one listed as a contact in the GAL and another I added manually.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img style="width:617px;height:361px" alt="" src="/Blogs/enger_erik/Lists/Photos/ComposeMessage1.png" width=752 height=432&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/ComposeMessage2.png" width=592 height=349&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;After sending the message, the Administrator and Boss Person receive it. Here's what it looks like in OWA 2010. When it shows up in Outlook 2007, it shows up with voting buttons at the top but operates normally.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img style="width:584px;height:371px" alt="" src="/Blogs/enger_erik/Lists/Photos/Moderate1.png" width=919 height=640&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/Moderate2.png" width=519 height=430&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;We're going to decline this message.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/Moderate3.png" width=535 height=420&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/Moderate4.png" width=528 height=272&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;And so I receive the Administrator's message back which shows up in the conversation thread.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img style="width:558px;height:327px" alt="" src="/Blogs/enger_erik/Lists/Photos/ModeratedMessageDenied1.png" width=948 height=603&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;As you can see, this is a pretty powerful feature. Companies in delicate relationships or under compliance restrictions might consider this to be a very useful tool.&lt;/div&gt;&lt;/div&gt;</body><description>&lt;div class=ExternalClassE387B990D0064180A40C7B82786F37A0&gt;
&lt;div&gt;The next release of Exchange will include e-mail moderation, whereby you can &amp;quot;ask&amp;quot; for approval to send messages to certain individuals or domains. I think this is pretty neat and beneficial for firms looking to apply compliance controls or build ethical firewalls to avoid any potential legal issues.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;As in my earlier blog on e-mail disclaimers we're back again using Hub Transport rules to achieve this and once again, it's really easy to set this up. Probably the more difficult aspect would be in determining which messages get flagged for moderation. I mean, what manager would want to approve potentially hundreds of emails before they left the company? I think with some creative rules and exceptions you could minimize this. In my example there is a contract negotiation going on between Contoso and NWTraders which is sensitive in nature so the boss(es) want to be extra careful given this situation so they want their staff  to seek approval for any email they send the client. That's pretty rough, huh? :)&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Here's the rule configuration to pull this off. Remember we want all email sent to nwtraders.com to be flagged for moderation but the two bosses.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/EditTransPortRule.png"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Select your conditions:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/EditTransPortRule2.png"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Here we want to add &lt;a href="mailto:'@nwtraders.com'"&gt;'@nwtraders.com'&lt;/a&gt; as search criteria so the HT (hub transport) grabs the messages and processes them appropriately.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/EditTransPortRule3.png"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Now we want the HT to forward these messages to the bosses for approval. What I noticed is that while you may have multiple people on the moderation list, any one of these people may approve or reject the message. This may help when people moderating messages are out of the office and are being covered by someone else.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/EditTransPortRule4.png"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Here's the summarized rule.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/EditTransPortRule5.png"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Now let's compose a simple message and see how this works. I prepared a message with two people from NWTraders, one listed as a contact in the GAL and another I added manually.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img style="width:617px;height:361px" alt="" src="/Blogs/enger_erik/Lists/Photos/ComposeMessage1.png" width=752 height=432&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/ComposeMessage2.png" width=592 height=349&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;After sending the message, the Administrator and Boss Person receive it. Here's what it looks like in OWA 2010. When it shows up in Outlook 2007, it shows up with voting buttons at the top but operates normally.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img style="width:584px;height:371px" alt="" src="/Blogs/enger_erik/Lists/Photos/Moderate1.png" width=919 height=640&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/Moderate2.png" width=519 height=430&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;We're going to decline this message.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/Moderate3.png" width=535 height=420&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/Moderate4.png" width=528 height=272&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;And so I receive the Administrator's message back which shows up in the conversation thread.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img style="width:558px;height:327px" alt="" src="/Blogs/enger_erik/Lists/Photos/ModeratedMessageDenied1.png" width=948 height=603&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;As you can see, this is a pretty powerful feature. Companies in delicate relationships or under compliance restrictions might consider this to be a very useful tool.&lt;/div&gt;&lt;/div&gt;</description><author>Erik Enger</author><link>http://blogs.pointbridge.com/Blogs/enger_erik/Pages/Post.aspx?_ID=28</link><description /><pubDate>2009-04-25 14:31:00</pubDate></item><item><id>27</id><title>Exchange 2010 Beta First Looks: New E-Mail Disclaimer Feature</title><body>&lt;div class=ExternalClassB81C06F5DD724FD6BD6FA10A0056BD3C&gt;
&lt;div&gt;Now that the Exchange 2010 Beta is here I thought I'd take a closer look into some of the new features. While the list of proposed improvements is vast and sorely needed, there are a few little ones that most will appreciate, like being able to add AD attributes to disclaimer messages. I know, it's not earth-shattering, but it's one of the many improvements that you might appreciate now or in the future. Some customers have had to purchase third party products to achieve the same goal, so this might save you a few dollars.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Here's a quick example of how to set this up. It's really easy and is basically a standard Hub Transport rule for an e-mail disclaimer with some minor tweaks. So, go ahead a create a normal Hub Tranport rule for an email disclaimer, like the one shown below then add your AD attributes surrounded by '%%' on both ends and let Exchange do the rest. You can get really creative with this, however, you need to be relatively sure that the attributes you're placing into your disclaimer are present and what you'd expect. It could be potentially embarrassing for the sender or company if inappropriate or unintended content was included in your emails.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;If you are using a identity management product like MIIS/ILM you will probably have better control over the content in these attributes.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/Create%20Disclaimer1.png"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/Create%20Disclaimer2.png"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Add your disclaimer text. Since you can use HTML code in the content, you can be pretty creative. This example is pretty basic. Another thing to keep in mind when creating your disclaimers, especially with HTML code in them is that there is a risk that some anti-spam software may flag the email as being spam so I would suggest using it sparingly.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;font style="background-color:#c0c0c0"&gt;&amp;lt;p&amp;gt;%%DisplayName%%&amp;lt;br /&amp;gt;&lt;br&gt;%%title%%&amp;lt;br /&amp;gt;&lt;br&gt;%%Company%%&amp;lt;br /&amp;gt;&lt;br&gt;%%streetAddress%%&amp;lt;br /&amp;gt;&lt;br&gt;%%Phone%%&amp;lt;br /&amp;gt;&lt;br&gt;&amp;lt;/p&amp;gt;&lt;br&gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;&amp;lt;em&amp;gt;IMPORTANT NOTICE: This e-mail message is intended to be received only by persons entitled to receive the confidential information it may contain. E-mail messages to clients of Contoso may contain information that is confidential and legally privileged. Please do not read, copy, forward, or store this message unless you are an intended recipient of it. If you have received this message in error, please forward it to the sender and delete it completely from your computer system. Contoso LTD, Suite# 1, AnyStreet, AnyTown, USA, &lt;/font&gt;&lt;a href="http://www.contoso.com/"&gt;&lt;font style="background-color:#c0c0c0"&gt;www.contoso.com&lt;/font&gt;&lt;/a&gt;&lt;font style="background-color:#c0c0c0"&gt; &amp;lt;/em&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;This will produce the following results when delivered to the recipient:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/Disclaimer.png"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;I'm interested in running some more tests to see to what level this new feature can be used.&lt;/div&gt;&lt;/div&gt;</body><description>&lt;div class=ExternalClassB81C06F5DD724FD6BD6FA10A0056BD3C&gt;
&lt;div&gt;Now that the Exchange 2010 Beta is here I thought I'd take a closer look into some of the new features. While the list of proposed improvements is vast and sorely needed, there are a few little ones that most will appreciate, like being able to add AD attributes to disclaimer messages. I know, it's not earth-shattering, but it's one of the many improvements that you might appreciate now or in the future. Some customers have had to purchase third party products to achieve the same goal, so this might save you a few dollars.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Here's a quick example of how to set this up. It's really easy and is basically a standard Hub Transport rule for an e-mail disclaimer with some minor tweaks. So, go ahead a create a normal Hub Tranport rule for an email disclaimer, like the one shown below then add your AD attributes surrounded by '%%' on both ends and let Exchange do the rest. You can get really creative with this, however, you need to be relatively sure that the attributes you're placing into your disclaimer are present and what you'd expect. It could be potentially embarrassing for the sender or company if inappropriate or unintended content was included in your emails.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;If you are using a identity management product like MIIS/ILM you will probably have better control over the content in these attributes.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/Create%20Disclaimer1.png"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/Create%20Disclaimer2.png"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Add your disclaimer text. Since you can use HTML code in the content, you can be pretty creative. This example is pretty basic. Another thing to keep in mind when creating your disclaimers, especially with HTML code in them is that there is a risk that some anti-spam software may flag the email as being spam so I would suggest using it sparingly.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;font style="background-color:#c0c0c0"&gt;&amp;lt;p&amp;gt;%%DisplayName%%&amp;lt;br /&amp;gt;&lt;br&gt;%%title%%&amp;lt;br /&amp;gt;&lt;br&gt;%%Company%%&amp;lt;br /&amp;gt;&lt;br&gt;%%streetAddress%%&amp;lt;br /&amp;gt;&lt;br&gt;%%Phone%%&amp;lt;br /&amp;gt;&lt;br&gt;&amp;lt;/p&amp;gt;&lt;br&gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;&amp;lt;em&amp;gt;IMPORTANT NOTICE: This e-mail message is intended to be received only by persons entitled to receive the confidential information it may contain. E-mail messages to clients of Contoso may contain information that is confidential and legally privileged. Please do not read, copy, forward, or store this message unless you are an intended recipient of it. If you have received this message in error, please forward it to the sender and delete it completely from your computer system. Contoso LTD, Suite# 1, AnyStreet, AnyTown, USA, &lt;/font&gt;&lt;a href="http://www.contoso.com/"&gt;&lt;font style="background-color:#c0c0c0"&gt;www.contoso.com&lt;/font&gt;&lt;/a&gt;&lt;font style="background-color:#c0c0c0"&gt; &amp;lt;/em&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;This will produce the following results when delivered to the recipient:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/Disclaimer.png"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;I'm interested in running some more tests to see to what level this new feature can be used.&lt;/div&gt;&lt;/div&gt;</description><author>Erik Enger</author><link>http://blogs.pointbridge.com/Blogs/enger_erik/Pages/Post.aspx?_ID=27</link><description /><pubDate>2009-04-25 14:01:00</pubDate></item><item><id>26</id><title>Quest MSDE Null Out Field Value</title><body>&lt;div class=ExternalClass093355624D834CF5870998960592DCDC&gt;
&lt;div&gt;Disclaimer:&lt;/div&gt;
&lt;div&gt;***Although the steps outlined in this blog will work, it is NOT supported by Quest. Use at your own risk and be prepared to recreate your database if something goes wrong.***&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;This article is intended for those familiar with Quest's migration products but will work in general for any SQL table in which you want to set a field back to NULL. Quest uses MSDE or SQL to store its migration database and there are many tables and relationships within the database to track and execute the migrations. The tables are always being updated by the migration processes but one of the things that doesn't happen automatically is clearing values in a field that has already been populated. This is by design to prevent you from accidentally destroying your database, however, if you know what you're doing you can safely remove values by running an update directly against the SQL table.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;For example, I have an MSDE 2005 database and I installed the SQL Server Management Studio Express Edition (SSMSEE) so I could manage the local instance of my server.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;After opening the SSMSEE and navigating to the table which contains the data I want to clear I create this update routine which will select the data I'm interested in and set the value back to NULL.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Here's a look at the database without any filters. Note the ExchangeMailboxStore value. Let's run a query to make sure we're isolating just the fields with a value in it.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img style="width:538px;height:274px" alt="" src="/Blogs/enger_erik/Lists/Photos/NULLSQLField1.png" width=787 height=445&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;div&gt;I performed a quick query to make sure I'm selecting the data I wish to update. For my example, I wanted to clear the ExchangeMailboxStore field. Here's the query.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img style="width:632px;height:329px" alt="" src="/Blogs/enger_erik/Lists/Photos/NULLSQLField2.png" width=917 height=409&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Now to perform the actual update you simply paste this SQL Query into the query window and execute it (!). In a couple of seconds it will update your data. Refresh the table and you should see &lt;em&gt;NULL&lt;/em&gt; in the field you chose.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;UPDATE    T_NMEObjects&lt;br&gt;SET       ExchangeMailboxStore = NULL&lt;br&gt;WHERE     (ExchangeMailboxStore IS NOT NULL)&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Now you should see a popup indicating how many rows were affected by your update and you should see your fields and their new null value. That's it. As I indicated at the beginning of this blog, this procedure is not supported by Quest per se, but it's good to know it will work in a pinch if you have no other recourse.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/NULLSQLField3.png"&gt;&lt;/div&gt;&lt;/div&gt;</body><description>&lt;div class=ExternalClass093355624D834CF5870998960592DCDC&gt;
&lt;div&gt;Disclaimer:&lt;/div&gt;
&lt;div&gt;***Although the steps outlined in this blog will work, it is NOT supported by Quest. Use at your own risk and be prepared to recreate your database if something goes wrong.***&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;This article is intended for those familiar with Quest's migration products but will work in general for any SQL table in which you want to set a field back to NULL. Quest uses MSDE or SQL to store its migration database and there are many tables and relationships within the database to track and execute the migrations. The tables are always being updated by the migration processes but one of the things that doesn't happen automatically is clearing values in a field that has already been populated. This is by design to prevent you from accidentally destroying your database, however, if you know what you're doing you can safely remove values by running an update directly against the SQL table.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;For example, I have an MSDE 2005 database and I installed the SQL Server Management Studio Express Edition (SSMSEE) so I could manage the local instance of my server.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;After opening the SSMSEE and navigating to the table which contains the data I want to clear I create this update routine which will select the data I'm interested in and set the value back to NULL.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Here's a look at the database without any filters. Note the ExchangeMailboxStore value. Let's run a query to make sure we're isolating just the fields with a value in it.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img style="width:538px;height:274px" alt="" src="/Blogs/enger_erik/Lists/Photos/NULLSQLField1.png" width=787 height=445&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;div&gt;I performed a quick query to make sure I'm selecting the data I wish to update. For my example, I wanted to clear the ExchangeMailboxStore field. Here's the query.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img style="width:632px;height:329px" alt="" src="/Blogs/enger_erik/Lists/Photos/NULLSQLField2.png" width=917 height=409&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Now to perform the actual update you simply paste this SQL Query into the query window and execute it (!). In a couple of seconds it will update your data. Refresh the table and you should see &lt;em&gt;NULL&lt;/em&gt; in the field you chose.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;UPDATE    T_NMEObjects&lt;br&gt;SET       ExchangeMailboxStore = NULL&lt;br&gt;WHERE     (ExchangeMailboxStore IS NOT NULL)&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Now you should see a popup indicating how many rows were affected by your update and you should see your fields and their new null value. That's it. As I indicated at the beginning of this blog, this procedure is not supported by Quest per se, but it's good to know it will work in a pinch if you have no other recourse.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/NULLSQLField3.png"&gt;&lt;/div&gt;&lt;/div&gt;</description><author>Erik Enger</author><link>http://blogs.pointbridge.com/Blogs/enger_erik/Pages/Post.aspx?_ID=26</link><description /><pubDate>2009-03-24 18:04:00</pubDate></item><item><id>25</id><title>Mail-enabled SharePoint Libraries and Winmail.dat issue</title><body>&lt;div class=ExternalClass7A60A15156634E4A892422D3DAAA6E6E&gt;
&lt;div&gt;While I have never professed to be a SharePoint or web anything, I was able to help one of my peers get mail delivery between Exchange and SharePoint working in a lab. The SharePoint person was looking at a published &lt;a href="http://www.combined-knowledge.com/Downloads/How to configure Email Enabled Lists in Moss2007 RTM using Exchange 2007.pdf"&gt;article&lt;/a&gt; and wanted to see it in action in our lab. I was tasked with the Exchange pieces of the setup so I followed the doc and we were successful in getting mail flow to work.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;However, a day later when they were testing in earnest, I was informed that they would receive the messages and could see them appear in the &amp;quot;Drop&amp;quot; folder on the MOSS SMTP server but there was no attachment. After looking into it a little further and sending several tests of my own, I concurred that they were not coming across even though the message size was right on target. I used Outlook Express on the MOSS SMTP server to take a closer look and noticed the &amp;quot;winmail.dat&amp;quot; signature in the header. Well, I've seen this before so I knew what to do and created the appropriate remote domain on the Exchange 2007 server to deal with this. It worked as expected and they were now able to receive and process mail messages and their attachments.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Here's what I saw in a sample message indicating the problem.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/Winmail-dat3.png"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;And the header looked like this:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img style="width:426px;height:355px" alt="" src="/Blogs/enger_erik/Lists/Photos/Winmail-dat.png" width=603 height=458&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Now, after seeing this I created a remote domain and turned off RTF as seen in this image.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/Remote%20Domain.png"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;After creating the remote domain and sending test messages through, the problem went away.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/Winmail-dat4.png"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img style="width:477px;height:677px" alt="" src="/Blogs/enger_erik/Lists/Photos/Winmail-dat2.png" width=667 height=844&gt;&lt;/div&gt;&lt;/div&gt;</body><description>&lt;div class=ExternalClass7A60A15156634E4A892422D3DAAA6E6E&gt;
&lt;div&gt;While I have never professed to be a SharePoint or web anything, I was able to help one of my peers get mail delivery between Exchange and SharePoint working in a lab. The SharePoint person was looking at a published &lt;a href="http://www.combined-knowledge.com/Downloads/How to configure Email Enabled Lists in Moss2007 RTM using Exchange 2007.pdf"&gt;article&lt;/a&gt; and wanted to see it in action in our lab. I was tasked with the Exchange pieces of the setup so I followed the doc and we were successful in getting mail flow to work.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;However, a day later when they were testing in earnest, I was informed that they would receive the messages and could see them appear in the &amp;quot;Drop&amp;quot; folder on the MOSS SMTP server but there was no attachment. After looking into it a little further and sending several tests of my own, I concurred that they were not coming across even though the message size was right on target. I used Outlook Express on the MOSS SMTP server to take a closer look and noticed the &amp;quot;winmail.dat&amp;quot; signature in the header. Well, I've seen this before so I knew what to do and created the appropriate remote domain on the Exchange 2007 server to deal with this. It worked as expected and they were now able to receive and process mail messages and their attachments.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Here's what I saw in a sample message indicating the problem.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/Winmail-dat3.png"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;And the header looked like this:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img style="width:426px;height:355px" alt="" src="/Blogs/enger_erik/Lists/Photos/Winmail-dat.png" width=603 height=458&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Now, after seeing this I created a remote domain and turned off RTF as seen in this image.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/Remote%20Domain.png"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;After creating the remote domain and sending test messages through, the problem went away.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/Winmail-dat4.png"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img style="width:477px;height:677px" alt="" src="/Blogs/enger_erik/Lists/Photos/Winmail-dat2.png" width=667 height=844&gt;&lt;/div&gt;&lt;/div&gt;</description><author>Erik Enger</author><link>http://blogs.pointbridge.com/Blogs/enger_erik/Pages/Post.aspx?_ID=25</link><description /><pubDate>2009-03-24 16:19:00</pubDate></item><item><id>24</id><title>PowerShell Add ProxyAddresses Script</title><body>&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;I do a lot of email migration work so I'm always looking for new ways (and hopefully better ways) to do some common tasks. For example, I regularly have to add new aliases from the old mail system to the new mailboxes. Normally I would use the migration tool to perform this task, but once in a while you might not be able to do this for a variety of reasons. Nevertheless, you still need a way to quickly and safely do this.&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt; &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;I have used VBScripts to perform this task in the past but I wanted to find an easier way to do the same thing using PowerShell. So here's an example of using PowerShell to parse through a CSV file, split up a string of SMTP addresses and add them to an existing mailbox. Oh, and did I mention that I'm also a big fan of looping through CSV files? :)&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt; &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;Here's what our input file (AddProxy.csv) looks like:&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt; &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;&lt;font style="background-color:#c0c0c0" color="#000000"&gt;Alias,TargetAlias&lt;/font&gt;&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;&lt;font style="background-color:#c0c0c0" color="#000000"&gt;taccount1,taccount1@nwtraders.com%taccount1@nwtraders.org%taccount1@nwtraders.info&lt;/font&gt;&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;
&lt;div&gt;&lt;font style="background-color:#c0c0c0" color="#000000"&gt;taccount2,taccount2@nwtraders.com%taccount2@nwtraders.org%taccount2@nwtraders.info&lt;/font&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;&lt;font color="#008000"&gt;# ======================================================================&lt;br&gt;# &lt;br&gt;# NAME: addproxy.ps1&lt;br&gt;# &lt;br&gt;# AUTHOR: Erik Enger , PointBridge&lt;br&gt;# DATE  : 3/08/2009&lt;br&gt;# &lt;br&gt;# COMMENT: Used to add proxyAddresses read in from a CSV file.&lt;br&gt;#&lt;br&gt;# Note: This script requires the Exchange Management Shell Snapin to function. Add this snapin to the Windows PowerShell default profile first.&lt;br&gt;#&lt;br&gt;#  The c:\windows\system32\windowspowershell\v1.0\profile.ps1 file should contain this line:&lt;br&gt;#&lt;br&gt;#  add-pssnapin Microsoft.Exchange.Management.PowerShell.Admin&lt;br&gt;# &lt;br&gt;# ======================================================================&lt;/font&gt;&lt;/div&gt;
&lt;div dir=ltr class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;&lt;font color="#0000ff"&gt;Write-Host &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot;Beginning proxyAddress addition...&amp;quot; &lt;/font&gt;-foregroundcolor red -BackgroundColor darkmagenta&lt;br&gt;&lt;font color="#0000ff"&gt;Write-Host &lt;/font&gt;`n&lt;/div&gt;
&lt;div dir=ltr class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;&lt;font color="#0000ff"&gt;Import-CSV&lt;/font&gt; &lt;font color="#800000"&gt;&amp;quot;c:\migration\AddProxy.csv&amp;quot;&lt;/font&gt; | &lt;font color="#008080"&gt;ForEach &lt;/font&gt;{&lt;/div&gt;
&lt;blockquote style="margin-right:0px" dir=ltr&gt;
&lt;div dir=ltr class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;&lt;font color="#008000"&gt;## Start a Transcript&lt;br&gt;&lt;/font&gt;&lt;font color="#800000"&gt;$file&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot;C:\migration\ScriptLogs\&amp;quot;&lt;/font&gt;&lt;br&gt;&lt;font color="#800000"&gt;$file&lt;/font&gt;&lt;font color="#0000ff"&gt;+=&lt;/font&gt; &lt;font color="#800000"&gt;$_&lt;font color="#000000"&gt;.&lt;/font&gt;&lt;font color="#000000"&gt;DisplayName &lt;/font&gt;&lt;font color="#0000ff"&gt;+&lt;/font&gt;&amp;quot;-addproxy.log&amp;quot;&lt;/font&gt;&lt;br&gt;&lt;font color="#0000ff"&gt;Start-Transcript &lt;/font&gt;&lt;font color="#800000"&gt;$file &lt;/font&gt;-append&lt;br&gt; &lt;br&gt;&lt;font color="#008000"&gt;# Read in TargetAlias field from import file&lt;/font&gt;&lt;br&gt;&lt;font color="#800000"&gt;$newproxy&lt;/font&gt;=&lt;font color="#800000"&gt;$_&lt;/font&gt;.TargetAlias.Split(&lt;font color="#800000"&gt;'%'&lt;/font&gt;)&lt;br&gt; &lt;br&gt;&lt;font color="#008000"&gt;# Connect to Exchange mailbox&lt;/font&gt;&lt;br&gt;&lt;font color="#800000"&gt;$user&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#000000"&gt;Get-Mailbox &lt;/font&gt;-Identity &lt;font color="#800000"&gt;$_&lt;/font&gt;.Alias -DomainController dc1.contoso.com&lt;br&gt;&lt;font color="#0000ff"&gt;Write-Host &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot;Processing user &amp;quot; $user&lt;/font&gt;.Name -foregroundcolor yellow -BackgroundColor darkmagenta&lt;br&gt; &lt;br&gt;&lt;font color="#008000"&gt;# List existing proxyAddresses &lt;/font&gt;&lt;br&gt;&lt;font color="#0000ff"&gt;Write-Host &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot;Existing proxyAddresses:&amp;quot; $user&lt;/font&gt;.EmailAddresses&lt;br&gt;&lt;font color="#0000ff"&gt;Write-Host &lt;/font&gt;`n&lt;br&gt; &lt;br&gt;&lt;font color="#008000"&gt;# Begin looping through import file and adding any proxyAddresses that are missing&lt;br&gt;&lt;/font&gt;&lt;font color="#008000"&gt;for&lt;/font&gt;(&lt;font color="#800000"&gt;$i&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#800000"&gt;0&lt;/font&gt;;&lt;font color="#800000"&gt;$i&lt;/font&gt; &lt;font color="#0000ff"&gt;-le&lt;/font&gt; &lt;font color="#800000"&gt;$newproxy&lt;/font&gt;.Count-&lt;font color="#800000"&gt;1&lt;/font&gt;;&lt;font color="#800000"&gt;$i&lt;/font&gt;&lt;font color="#0000ff"&gt;++&lt;/font&gt;)&lt;br&gt;{&lt;br&gt;&lt;font color="#800000"&gt;$newaddr&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#800000"&gt;$newproxy&lt;/font&gt;[&lt;font color="#800000"&gt;$i&lt;/font&gt;]&lt;br&gt;&lt;font color="#008080"&gt;if&lt;/font&gt; (&lt;font color="#800000"&gt;$user&lt;/font&gt;.EmailAddresses -notcontains &lt;font color="#800000"&gt;$newaddr&lt;/font&gt;)&lt;br&gt; {&lt;br&gt; &lt;font color="#0000ff"&gt;Write-Host &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot;Adding new proxyAddress: &amp;quot;&lt;/font&gt; &lt;font color="#800000"&gt;$newaddr&lt;/font&gt;&lt;br&gt;  &lt;font color="#800000"&gt;$user&lt;/font&gt;.EmailAddresses.Add(&lt;font color="#800000"&gt;&amp;quot;smtp:&amp;quot;&lt;/font&gt;&lt;font color="#0000ff"&gt;+&lt;/font&gt;&lt;font color="#800000"&gt;$newaddr&lt;/font&gt;)}&lt;br&gt;&lt;font color="#008080"&gt;else&lt;/font&gt;&lt;br&gt; {&lt;font color="#0000ff"&gt;Write-Host&lt;/font&gt; &lt;font color="#800000"&gt;&amp;quot;Duplicate SMTP address found&lt;/font&gt; &lt;font color="#800000"&gt;(&amp;quot; $newaddr &amp;quot;)&lt;/font&gt; &lt;font color="#800000"&gt;Skipping addition...&amp;quot;&lt;/font&gt;}&lt;br&gt;}&lt;/div&gt;
&lt;div dir=ltr class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt; &lt;/div&gt;
&lt;div dir=ltr class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;Set-Mailbox -Instance &lt;font color="#800000"&gt;$user&lt;/font&gt; -DomainController dc1.contoso.com&lt;/div&gt;&lt;/blockquote&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;&lt;font color="#008000"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;&lt;font color="#008000"&gt;# Reset variables&lt;/font&gt;&lt;br&gt;$newaddr=&amp;quot;&amp;quot;&lt;br&gt;Write-Host `n&lt;br&gt;&lt;font color="#008000"&gt;### Stop the log for the current object&lt;/font&gt;&lt;br&gt;Date&lt;br&gt;&lt;font color="#0000ff"&gt;Stop-Transcript&lt;/font&gt;&lt;br&gt;}&lt;br&gt;Write-Host &lt;font color="#800000"&gt;&amp;quot;ProxyAddress additions complete.&amp;quot;&lt;/font&gt; -foregroundcolor red -BackgroundColor darkmagenta&lt;br&gt;&lt;font color="#0000ff"&gt;Write-Host&lt;/font&gt; `n`n`n&lt;br&gt;&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt; &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt; &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt; &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;Running this will add any new SMTP addresses found in the import file to the respective user accounts. If an existing value is found it will be skipped. You could also reconfigure this script to remove addresses too. The &amp;quot;transcript&amp;quot; function captures the PowerShell console output and stores it in a log file for each user.&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt; &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;*************************&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;I'm adding this example of a VBScript that performs a similar function. It doesn't have all the same logic as the PowerShell version the primary purpose was to add a new SMTP address to an existing list of proxyAddresses.&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt; &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;Hi. Here's a sample VBScript I used before that read data from a spreadsheet and appended an SMTP address to the current list of proxyAddresses. While it's not exactly the same method I'm using for the PowerShell script, it should show a comparison of the coding differences. I hope this helps.&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;'==========================================================================&lt;br&gt;'&lt;br&gt;' VBScript Source File -- Created with SAPIEN Technologies PrimalScript 4.0&lt;br&gt;'&lt;br&gt;' NAME: Add proxy address(es) to existing mailbox enable objects&lt;br&gt;'&lt;br&gt;' AUTHOR: Erik Enger, PointBridge, LLC&lt;br&gt;' DATE  : 9/2/2005&lt;br&gt;'&lt;br&gt;' COMMENT: This script is designed to add proxy addresses from a spreasdsheet&lt;br&gt;' to an existing mailbox enabled object&lt;br&gt;'&lt;br&gt;'==========================================================================&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Explicitly declaring 3 types of variables &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;Option Explicit&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Objects declared :&lt;br&gt;Dim objUser, objContainer&lt;br&gt;Dim objExcel, objSheet, objRootLDAP&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Strings declared :&lt;br&gt;Dim strOUContainer, strDN, strObjectClass&lt;br&gt;Dim strPathExcel, strPath, strObjCN&lt;br&gt;Dim strDomain, strOU, strProxy, strMailbox, strNick&lt;br&gt;Dim arrProxyAddresses&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Integers declared :&lt;br&gt;Dim intNumusers, intRunError, intRow, intCol&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Where is your spreadsheet? &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' PLEASE ALTER Path to your spreadsheet&lt;br&gt;strPathExcel = &amp;quot;d:\migration\scripts\update-metadir.xls&amp;quot; &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Connect and Open the Spreadsheet &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Connect to spreadsheet where users are stored&lt;br&gt;Set objExcel = CreateObject(&amp;quot;Excel.Application&amp;quot;) &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Open the Speadsheet (Error Handling Section).&lt;br&gt;On Error Resume Next&lt;br&gt;Err.Clear&lt;br&gt;objExcel.Workbooks.Open strPathExcel&lt;br&gt;If Err.Number &amp;lt;&amp;gt; 0 Then&lt;br&gt;Err.Clear&lt;br&gt;On Error GoTo 0&lt;br&gt;WScript.Echo &amp;quot;Edit the path to YOUR spreadsheet &amp;quot; &amp;amp; strPathExcel&lt;br&gt;Wscript.Quit&lt;br&gt;End If&lt;br&gt;On Error GoTo 0&lt;br&gt;Set objSheet = objExcel.ActiveWorkbook.Worksheets(1)&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' DO ... LOOP Until Reading the spreadsheet &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Second row in spreadsheet has attributes so start at row 3&lt;br&gt;' Check intRow offset numbers&lt;br&gt;intRow = 2 &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Do - Read each row in spreadsheet until reach a blank row&lt;br&gt;' For each row, create user and set attribute values.&lt;br&gt;' Loop until Empty cell&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;Do &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Read values from spreadsheet for this user.&lt;br&gt;strDN = Trim(objSheet.Cells(intRow, 1).Value)&lt;br&gt;strProxy = Trim(objSheet.Cells(intRow, 7).Value)&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;On Error Resume Next&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Section to bind to Active Directory&lt;br&gt;Set objRootLDAP = GetObject(&amp;quot;&lt;a&gt;LDAP://rootDSE&lt;/a&gt;&amp;quot;)&lt;br&gt;Set objContainer = GetObject(&amp;quot;LDAP://&amp;quot; &amp;amp; strOU _&lt;br&gt;&amp;amp; objRootLDAP.Get(&amp;quot;DefaultNamingContext&amp;quot;)) &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Modify attributes of mailboxes&lt;br&gt;Set objUser = GetObject(&amp;quot;LDAP://&amp;quot;&amp;amp; strDN &amp;amp; &amp;quot;,ou=migrated users,dc=contoso,dc=com&amp;quot;) &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Save the user's proxy addresses to an Array&lt;br&gt;arrProxyAddresses = objUser.proxyAddresses&lt;br&gt;WScript.Echo &amp;quot;Adding Uniform proxy address: &amp;quot; &amp;amp; strProxy &amp;amp; &amp;quot; to: &amp;quot; &amp;amp; strDN&lt;br&gt;WScript.Echo&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Extend the array and insert the proxy address&lt;br&gt;ReDim Preserve arrProxyAddresses(UBound(arrProxyAddresses) + 1)&lt;br&gt;arrProxyAddresses(UBound(arrProxyAddresses)) = &amp;quot;smtp:&amp;quot; &amp;amp; strProxy&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Clear the existing list of proxy addresses from the user object&lt;br&gt;objUser.Put &amp;quot;proxyAddresses&amp;quot;, &amp;quot;&amp;quot;&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Assign the new list of proxy addresses to the user object&lt;br&gt;objUser.Put &amp;quot;proxyAddresses&amp;quot;, arrProxyAddresses&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;'Commit changes to AD&lt;br&gt;objUser.SetInfo&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Increment to next user.&lt;br&gt;intRow = intRow + 1&lt;br&gt;intNumusers = intNumusers + 1&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;Loop Until objSheet.Cells(intRow, 1).Value = &amp;quot;&amp;quot; &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Echo confirmation Message&lt;br&gt;WScript.Echo intNumusers &amp;amp; &amp;quot; proxy addresses added.&amp;quot; &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Tidy up Reset objects to nothing &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;objExcel.ActiveWorkbook.Close&lt;br&gt;objExcel.Application.Quit&lt;br&gt;Set objUser = Nothing&lt;br&gt;Set objContainer = Nothing&lt;br&gt;Set objSheet = Nothing&lt;br&gt;Set objExcel = Nothing&lt;br&gt;Set objRootLDAP = Nothing&lt;br&gt;&lt;/div&gt;</body><description>&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;I do a lot of email migration work so I'm always looking for new ways (and hopefully better ways) to do some common tasks. For example, I regularly have to add new aliases from the old mail system to the new mailboxes. Normally I would use the migration tool to perform this task, but once in a while you might not be able to do this for a variety of reasons. Nevertheless, you still need a way to quickly and safely do this.&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt; &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;I have used VBScripts to perform this task in the past but I wanted to find an easier way to do the same thing using PowerShell. So here's an example of using PowerShell to parse through a CSV file, split up a string of SMTP addresses and add them to an existing mailbox. Oh, and did I mention that I'm also a big fan of looping through CSV files? :)&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt; &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;Here's what our input file (AddProxy.csv) looks like:&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt; &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;&lt;font style="background-color:#c0c0c0" color="#000000"&gt;Alias,TargetAlias&lt;/font&gt;&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;&lt;font style="background-color:#c0c0c0" color="#000000"&gt;taccount1,taccount1@nwtraders.com%taccount1@nwtraders.org%taccount1@nwtraders.info&lt;/font&gt;&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;
&lt;div&gt;&lt;font style="background-color:#c0c0c0" color="#000000"&gt;taccount2,taccount2@nwtraders.com%taccount2@nwtraders.org%taccount2@nwtraders.info&lt;/font&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;&lt;font color="#008000"&gt;# ======================================================================&lt;br&gt;# &lt;br&gt;# NAME: addproxy.ps1&lt;br&gt;# &lt;br&gt;# AUTHOR: Erik Enger , PointBridge&lt;br&gt;# DATE  : 3/08/2009&lt;br&gt;# &lt;br&gt;# COMMENT: Used to add proxyAddresses read in from a CSV file.&lt;br&gt;#&lt;br&gt;# Note: This script requires the Exchange Management Shell Snapin to function. Add this snapin to the Windows PowerShell default profile first.&lt;br&gt;#&lt;br&gt;#  The c:\windows\system32\windowspowershell\v1.0\profile.ps1 file should contain this line:&lt;br&gt;#&lt;br&gt;#  add-pssnapin Microsoft.Exchange.Management.PowerShell.Admin&lt;br&gt;# &lt;br&gt;# ======================================================================&lt;/font&gt;&lt;/div&gt;
&lt;div dir=ltr class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;&lt;font color="#0000ff"&gt;Write-Host &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot;Beginning proxyAddress addition...&amp;quot; &lt;/font&gt;-foregroundcolor red -BackgroundColor darkmagenta&lt;br&gt;&lt;font color="#0000ff"&gt;Write-Host &lt;/font&gt;`n&lt;/div&gt;
&lt;div dir=ltr class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;&lt;font color="#0000ff"&gt;Import-CSV&lt;/font&gt; &lt;font color="#800000"&gt;&amp;quot;c:\migration\AddProxy.csv&amp;quot;&lt;/font&gt; | &lt;font color="#008080"&gt;ForEach &lt;/font&gt;{&lt;/div&gt;
&lt;blockquote style="margin-right:0px" dir=ltr&gt;
&lt;div dir=ltr class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;&lt;font color="#008000"&gt;## Start a Transcript&lt;br&gt;&lt;/font&gt;&lt;font color="#800000"&gt;$file&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot;C:\migration\ScriptLogs\&amp;quot;&lt;/font&gt;&lt;br&gt;&lt;font color="#800000"&gt;$file&lt;/font&gt;&lt;font color="#0000ff"&gt;+=&lt;/font&gt; &lt;font color="#800000"&gt;$_&lt;font color="#000000"&gt;.&lt;/font&gt;&lt;font color="#000000"&gt;DisplayName &lt;/font&gt;&lt;font color="#0000ff"&gt;+&lt;/font&gt;&amp;quot;-addproxy.log&amp;quot;&lt;/font&gt;&lt;br&gt;&lt;font color="#0000ff"&gt;Start-Transcript &lt;/font&gt;&lt;font color="#800000"&gt;$file &lt;/font&gt;-append&lt;br&gt; &lt;br&gt;&lt;font color="#008000"&gt;# Read in TargetAlias field from import file&lt;/font&gt;&lt;br&gt;&lt;font color="#800000"&gt;$newproxy&lt;/font&gt;=&lt;font color="#800000"&gt;$_&lt;/font&gt;.TargetAlias.Split(&lt;font color="#800000"&gt;'%'&lt;/font&gt;)&lt;br&gt; &lt;br&gt;&lt;font color="#008000"&gt;# Connect to Exchange mailbox&lt;/font&gt;&lt;br&gt;&lt;font color="#800000"&gt;$user&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#000000"&gt;Get-Mailbox &lt;/font&gt;-Identity &lt;font color="#800000"&gt;$_&lt;/font&gt;.Alias -DomainController dc1.contoso.com&lt;br&gt;&lt;font color="#0000ff"&gt;Write-Host &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot;Processing user &amp;quot; $user&lt;/font&gt;.Name -foregroundcolor yellow -BackgroundColor darkmagenta&lt;br&gt; &lt;br&gt;&lt;font color="#008000"&gt;# List existing proxyAddresses &lt;/font&gt;&lt;br&gt;&lt;font color="#0000ff"&gt;Write-Host &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot;Existing proxyAddresses:&amp;quot; $user&lt;/font&gt;.EmailAddresses&lt;br&gt;&lt;font color="#0000ff"&gt;Write-Host &lt;/font&gt;`n&lt;br&gt; &lt;br&gt;&lt;font color="#008000"&gt;# Begin looping through import file and adding any proxyAddresses that are missing&lt;br&gt;&lt;/font&gt;&lt;font color="#008000"&gt;for&lt;/font&gt;(&lt;font color="#800000"&gt;$i&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#800000"&gt;0&lt;/font&gt;;&lt;font color="#800000"&gt;$i&lt;/font&gt; &lt;font color="#0000ff"&gt;-le&lt;/font&gt; &lt;font color="#800000"&gt;$newproxy&lt;/font&gt;.Count-&lt;font color="#800000"&gt;1&lt;/font&gt;;&lt;font color="#800000"&gt;$i&lt;/font&gt;&lt;font color="#0000ff"&gt;++&lt;/font&gt;)&lt;br&gt;{&lt;br&gt;&lt;font color="#800000"&gt;$newaddr&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#800000"&gt;$newproxy&lt;/font&gt;[&lt;font color="#800000"&gt;$i&lt;/font&gt;]&lt;br&gt;&lt;font color="#008080"&gt;if&lt;/font&gt; (&lt;font color="#800000"&gt;$user&lt;/font&gt;.EmailAddresses -notcontains &lt;font color="#800000"&gt;$newaddr&lt;/font&gt;)&lt;br&gt; {&lt;br&gt; &lt;font color="#0000ff"&gt;Write-Host &lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot;Adding new proxyAddress: &amp;quot;&lt;/font&gt; &lt;font color="#800000"&gt;$newaddr&lt;/font&gt;&lt;br&gt;  &lt;font color="#800000"&gt;$user&lt;/font&gt;.EmailAddresses.Add(&lt;font color="#800000"&gt;&amp;quot;smtp:&amp;quot;&lt;/font&gt;&lt;font color="#0000ff"&gt;+&lt;/font&gt;&lt;font color="#800000"&gt;$newaddr&lt;/font&gt;)}&lt;br&gt;&lt;font color="#008080"&gt;else&lt;/font&gt;&lt;br&gt; {&lt;font color="#0000ff"&gt;Write-Host&lt;/font&gt; &lt;font color="#800000"&gt;&amp;quot;Duplicate SMTP address found&lt;/font&gt; &lt;font color="#800000"&gt;(&amp;quot; $newaddr &amp;quot;)&lt;/font&gt; &lt;font color="#800000"&gt;Skipping addition...&amp;quot;&lt;/font&gt;}&lt;br&gt;}&lt;/div&gt;
&lt;div dir=ltr class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt; &lt;/div&gt;
&lt;div dir=ltr class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;Set-Mailbox -Instance &lt;font color="#800000"&gt;$user&lt;/font&gt; -DomainController dc1.contoso.com&lt;/div&gt;&lt;/blockquote&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;&lt;font color="#008000"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;&lt;font color="#008000"&gt;# Reset variables&lt;/font&gt;&lt;br&gt;$newaddr=&amp;quot;&amp;quot;&lt;br&gt;Write-Host `n&lt;br&gt;&lt;font color="#008000"&gt;### Stop the log for the current object&lt;/font&gt;&lt;br&gt;Date&lt;br&gt;&lt;font color="#0000ff"&gt;Stop-Transcript&lt;/font&gt;&lt;br&gt;}&lt;br&gt;Write-Host &lt;font color="#800000"&gt;&amp;quot;ProxyAddress additions complete.&amp;quot;&lt;/font&gt; -foregroundcolor red -BackgroundColor darkmagenta&lt;br&gt;&lt;font color="#0000ff"&gt;Write-Host&lt;/font&gt; `n`n`n&lt;br&gt;&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt; &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt; &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt; &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;Running this will add any new SMTP addresses found in the import file to the respective user accounts. If an existing value is found it will be skipped. You could also reconfigure this script to remove addresses too. The &amp;quot;transcript&amp;quot; function captures the PowerShell console output and stores it in a log file for each user.&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt; &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;*************************&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;I'm adding this example of a VBScript that performs a similar function. It doesn't have all the same logic as the PowerShell version the primary purpose was to add a new SMTP address to an existing list of proxyAddresses.&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt; &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;Hi. Here's a sample VBScript I used before that read data from a spreadsheet and appended an SMTP address to the current list of proxyAddresses. While it's not exactly the same method I'm using for the PowerShell script, it should show a comparison of the coding differences. I hope this helps.&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;'==========================================================================&lt;br&gt;'&lt;br&gt;' VBScript Source File -- Created with SAPIEN Technologies PrimalScript 4.0&lt;br&gt;'&lt;br&gt;' NAME: Add proxy address(es) to existing mailbox enable objects&lt;br&gt;'&lt;br&gt;' AUTHOR: Erik Enger, PointBridge, LLC&lt;br&gt;' DATE  : 9/2/2005&lt;br&gt;'&lt;br&gt;' COMMENT: This script is designed to add proxy addresses from a spreasdsheet&lt;br&gt;' to an existing mailbox enabled object&lt;br&gt;'&lt;br&gt;'==========================================================================&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Explicitly declaring 3 types of variables &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;Option Explicit&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Objects declared :&lt;br&gt;Dim objUser, objContainer&lt;br&gt;Dim objExcel, objSheet, objRootLDAP&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Strings declared :&lt;br&gt;Dim strOUContainer, strDN, strObjectClass&lt;br&gt;Dim strPathExcel, strPath, strObjCN&lt;br&gt;Dim strDomain, strOU, strProxy, strMailbox, strNick&lt;br&gt;Dim arrProxyAddresses&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Integers declared :&lt;br&gt;Dim intNumusers, intRunError, intRow, intCol&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Where is your spreadsheet? &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' PLEASE ALTER Path to your spreadsheet&lt;br&gt;strPathExcel = &amp;quot;d:\migration\scripts\update-metadir.xls&amp;quot; &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Connect and Open the Spreadsheet &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Connect to spreadsheet where users are stored&lt;br&gt;Set objExcel = CreateObject(&amp;quot;Excel.Application&amp;quot;) &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Open the Speadsheet (Error Handling Section).&lt;br&gt;On Error Resume Next&lt;br&gt;Err.Clear&lt;br&gt;objExcel.Workbooks.Open strPathExcel&lt;br&gt;If Err.Number &amp;lt;&amp;gt; 0 Then&lt;br&gt;Err.Clear&lt;br&gt;On Error GoTo 0&lt;br&gt;WScript.Echo &amp;quot;Edit the path to YOUR spreadsheet &amp;quot; &amp;amp; strPathExcel&lt;br&gt;Wscript.Quit&lt;br&gt;End If&lt;br&gt;On Error GoTo 0&lt;br&gt;Set objSheet = objExcel.ActiveWorkbook.Worksheets(1)&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' DO ... LOOP Until Reading the spreadsheet &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Second row in spreadsheet has attributes so start at row 3&lt;br&gt;' Check intRow offset numbers&lt;br&gt;intRow = 2 &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Do - Read each row in spreadsheet until reach a blank row&lt;br&gt;' For each row, create user and set attribute values.&lt;br&gt;' Loop until Empty cell&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;Do &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Read values from spreadsheet for this user.&lt;br&gt;strDN = Trim(objSheet.Cells(intRow, 1).Value)&lt;br&gt;strProxy = Trim(objSheet.Cells(intRow, 7).Value)&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;On Error Resume Next&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Section to bind to Active Directory&lt;br&gt;Set objRootLDAP = GetObject(&amp;quot;&lt;a&gt;LDAP://rootDSE&lt;/a&gt;&amp;quot;)&lt;br&gt;Set objContainer = GetObject(&amp;quot;LDAP://&amp;quot; &amp;amp; strOU _&lt;br&gt;&amp;amp; objRootLDAP.Get(&amp;quot;DefaultNamingContext&amp;quot;)) &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Modify attributes of mailboxes&lt;br&gt;Set objUser = GetObject(&amp;quot;LDAP://&amp;quot;&amp;amp; strDN &amp;amp; &amp;quot;,ou=migrated users,dc=contoso,dc=com&amp;quot;) &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Save the user's proxy addresses to an Array&lt;br&gt;arrProxyAddresses = objUser.proxyAddresses&lt;br&gt;WScript.Echo &amp;quot;Adding Uniform proxy address: &amp;quot; &amp;amp; strProxy &amp;amp; &amp;quot; to: &amp;quot; &amp;amp; strDN&lt;br&gt;WScript.Echo&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Extend the array and insert the proxy address&lt;br&gt;ReDim Preserve arrProxyAddresses(UBound(arrProxyAddresses) + 1)&lt;br&gt;arrProxyAddresses(UBound(arrProxyAddresses)) = &amp;quot;smtp:&amp;quot; &amp;amp; strProxy&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Clear the existing list of proxy addresses from the user object&lt;br&gt;objUser.Put &amp;quot;proxyAddresses&amp;quot;, &amp;quot;&amp;quot;&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Assign the new list of proxy addresses to the user object&lt;br&gt;objUser.Put &amp;quot;proxyAddresses&amp;quot;, arrProxyAddresses&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;'Commit changes to AD&lt;br&gt;objUser.SetInfo&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Increment to next user.&lt;br&gt;intRow = intRow + 1&lt;br&gt;intNumusers = intNumusers + 1&lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;Loop Until objSheet.Cells(intRow, 1).Value = &amp;quot;&amp;quot; &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Echo confirmation Message&lt;br&gt;WScript.Echo intNumusers &amp;amp; &amp;quot; proxy addresses added.&amp;quot; &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;' Tidy up Reset objects to nothing &lt;/div&gt;
&lt;div class=ExternalClassB1ACF48A09C841A58EE898309AB63AF9&gt;objExcel.ActiveWorkbook.Close&lt;br&gt;objExcel.Application.Quit&lt;br&gt;Set objUser = Nothing&lt;br&gt;Set objContainer = Nothing&lt;br&gt;Set objSheet = Nothing&lt;br&gt;Set objExcel = Nothing&lt;br&gt;Set objRootLDAP = Nothing&lt;br&gt;&lt;/div&gt;</description><author>Erik Enger</author><link>http://blogs.pointbridge.com/Blogs/enger_erik/Pages/Post.aspx?_ID=24</link><description /><pubDate>2009-03-24 15:21:00</pubDate></item><item><id>22</id><title>Excel VLOOKUP to the Rescue</title><body>&lt;div class=ExternalClass76195DDA8C344C45B2A0B931AB339EDB&gt;
&lt;div&gt;
&lt;p style="line-height:normal;margin:0in 0in 0pt;vertical-align:top" class=MsoNormal&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;While I am no Excel expert, I do have to use this application a lot for my job. My wife laughs when I suggest using technology to resolve her problems in her job as a journalist and insists on doing things longhand. Anyway, I'll keep trying. Most of my time is spent migrating various mail platforms to Exchange or BPOS so I'm constantly building migration databases to stay organized.&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:normal;margin:0in 0in 0pt;vertical-align:top" class=MsoNormal&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p style="line-height:normal;margin:0in 0in 0pt;vertical-align:top" class=MsoNormal&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;When I usually have several different data sources to deal with I use Access to tie them all together. This has worked great for me and I still use it. Although I knew about the various lookups in Excel, I never thought they were all that helpful or powerful until I needed a quick and somewhat simple way for me to lookup two possible matches for a given field.&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:normal;margin:0in 0in 0pt;vertical-align:top" class=MsoNormal&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p style="line-height:normal;margin:0in 0in 0pt;vertical-align:top" class=MsoNormal&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;So my scenario starts like this. My migration application would update the user's email address to the new migrated one within its database. There was mailbox size data associated to this email address. In my migration database (Excel spreadsheet) I had some lookup columns that were pretty straightforward but I realized I had a snag when the migration application changed this key field. Suddenly the logic in my lookup made no sense and returned zero matches for some users. Once I identified what was happening I needed a simple way to lookups that might contain one of two possible values, like two different email addresses.&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:normal;margin:0in 0in 0pt;vertical-align:top" class=MsoNormal&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p style="line-height:normal;margin:0in 0in 0pt;vertical-align:top" class=MsoNormal&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;Trying to Google my scenario was difficult. I couldn't think of the right keywords to search for. After some poking around with Excel's online help and Googling some resources I ended up just using Excel's built-in help. It gave me a starting point and I went through every logical and lookup and reference until I was able to piece together what I needed. Needless to say it took me several trials before I got the results I wanted.&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:normal;margin:0in 0in 0pt;vertical-align:top" class=MsoNormal&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p style="line-height:normal;margin:0in 0in 0pt;vertical-align:top" class=MsoNormal&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;img style="width:309px;height:273px" alt="" src="/Blogs/enger_erik/Lists/Photos/ExcelVLOOKUP1.png" width=236 height=168&gt;&lt;img style="width:311px;height:407px" alt="" src="/Blogs/enger_erik/Lists/Photos/ExcelVLOOKUP2.png" width=276 height=254&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:normal;margin:0in 0in 0pt;vertical-align:top" class=MsoNormal&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;/span&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p style="line-height:normal;margin:0in 0in 0pt;vertical-align:top" class=MsoNormal&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;My workbook looked like this. This example is significantly trimmed down to make it more clear. I had the main view of my database with all the names and fields I wanted. I also had data from my migration application which contained the mailbox size information. These can be seen on the two tabs in my workbook.&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:normal;margin:0in 0in 0pt;vertical-align:top" class=MsoNormal&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p style="line-height:normal;margin:0in 0in 0pt;vertical-align:top" class=MsoNormal&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;/span&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:normal;margin:0in 0in 0pt;vertical-align:top" class=MsoNormal&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:normal;margin:0in 0in 0pt;vertical-align:top" class=MsoNormal&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;img style="width:586px;height:171px" alt="" src="/Blogs/enger_erik/Lists/Photos/ExcelVLOOKUP3.png" width=1081 height=419&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:normal;margin:0in 0in 0pt;vertical-align:top" class=MsoNormal&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;Here’s the data from the Migration Database sheet. We have the account information and the old and new email addresses. The last three columns contain the lookup formula that pulls data from the Mailbox Stats sheet.&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:normal;margin:0in 0in 0pt;vertical-align:top" class=MsoNormal&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p style="line-height:normal;margin:0in 0in 0pt;vertical-align:top" class=MsoNormal&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;img style="width:560px;height:79px" alt="" src="/Blogs/enger_erik/Lists/Photos/ExcelVLOOKUP5.png" width=806 height=114&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;Here’s the data from the Mailbox Stats sheet. Notice the mixture of addresses and even one that doesn’t match up with either the old or new address for ‘&lt;i&gt;taccount5’&lt;/i&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/ExcelVLOOKUP6.png" width=401 height=83&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;And now on to the formula. As I said earlier it took me several tries to get the formula to return the results I wanted. Here’s the formula:&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';background:#d9d9d9;color:black;font-size:8.5pt"&gt;=IFERROR(IF(ISERROR(VLOOKUP('Migration Database'!C2,'Mailbox Stats'!A:D,2,FALSE)),VLOOKUP('Migration Database'!D2,'Mailbox Stats'!A:D,2,FALSE),VLOOKUP('Migration Database'!C2,'Mailbox Stats'!A:D,2,FALSE)),&amp;quot;&amp;quot;)&lt;/span&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;Pretty confusing, huh? Well, looking at a long formula with lots of commas, parentheses, exclamation points, etc. is very confusing at times. Luckily Excel makes this easier by highlighting the sections within the formula that go together.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;/span&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;img style="width:623px;height:183px" alt="" src="/Blogs/enger_erik/Lists/Photos/ExcelVLOOKUP4.png" width=746 height=291&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;Let’s breakdown the formula. First, I had to determine the root of what I was looking for. I wanted to match up one of two possible values for the email address and then perform a lookup on the Mailbox Stats sheet and return the result. Also, if there were any errors in matching up the values, I wanted to return blank values instead of the errors like these (#N/A, #VALUE!, #REF!, #DIV/0!, #NUM!, #NAME?, or #NULL!). At first I thought an OR logical function is what I needed but I chose a simple IF function instead. I’m sure there are a few different ways to achieve the same result however but this was simple and worked for me. So the first part of the IF function is to perform the logical test, in other words, if something returns a true or false. I did this by using the ISERROR function and tested whether or not looking up my new email address triggered a failure or error as described above.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;Let’s step back a minute and look at our IF function. First, there’s the test, then depending on the result (TRUE or FALSE) you can perform different calculations. You can nest these and other functions to provide more granular information. For me this is like trying to code a complex script on one line. It’s easier if you can break up the logic into smaller chunks.&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-indent:0.5in;margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;IF(logical_test, value_if_true, [value_if_false])&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;This next part of the formula performs the test. We look up the value in C2 on the Migration Database sheet in the Mailbox Stats sheet and if we have a match it returns a FALSE value. Conversely, we return TRUE if there is no match.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';background:#d9d9d9;color:black;font-size:8.5pt"&gt;ISERROR(VLOOKUP('Migration Database'!C2,'Mailbox Stats'!A:D,2,FALSE))&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;Once we have our test result we perform either the value_if_true or value_if_false part. In my example, I look up the new email address first and if that returns an error, I look up the old email address and return the values from the Mailbox Stats sheet I’m looking for. So in looking at the entire IF function this satisfies our goal.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';background:#d9d9d9;color:black;font-size:8.5pt"&gt;IF(ISERROR(VLOOKUP('Migration Database'!C2,'Mailbox Stats'!A:D,2,FALSE)),VLOOKUP('Migration Database'!D2,'Mailbox Stats'!A:D,2,FALSE),VLOOKUP('Migration Database'!C2,'Mailbox Stats'!A:D,2,FALSE))&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;The last piece of the puzzle has to do with cleaning up the data in the event of a total failure in our lookup, meaning neither the old or new email address are found. That’s where the IFERROR function comes into play.&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-indent:0.5in;margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;IFERROR&lt;/span&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;(&lt;span&gt;value&lt;/span&gt;,&lt;span&gt;value_if_error&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;So basically with this wrapped around the IF function we are saying that if we receive an error to return some value. This could be another calculation or simple text that’s nicer than one of these (#N/A, #VALUE!, #REF!, #DIV/0!, #NUM!, #NAME?, or #NULL!). In my formula, I just wanted to return a blank so hence the double quotes (“”) at the end.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;I hope this article saves someone some time looking for the same logic or spurs further investigation into some of these powerful Excel functions.&lt;/span&gt;&lt;/p&gt;.&lt;/div&gt;&lt;/div&gt;</body><description>&lt;div class=ExternalClass76195DDA8C344C45B2A0B931AB339EDB&gt;
&lt;div&gt;
&lt;p style="line-height:normal;margin:0in 0in 0pt;vertical-align:top" class=MsoNormal&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;While I am no Excel expert, I do have to use this application a lot for my job. My wife laughs when I suggest using technology to resolve her problems in her job as a journalist and insists on doing things longhand. Anyway, I'll keep trying. Most of my time is spent migrating various mail platforms to Exchange or BPOS so I'm constantly building migration databases to stay organized.&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:normal;margin:0in 0in 0pt;vertical-align:top" class=MsoNormal&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p style="line-height:normal;margin:0in 0in 0pt;vertical-align:top" class=MsoNormal&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;When I usually have several different data sources to deal with I use Access to tie them all together. This has worked great for me and I still use it. Although I knew about the various lookups in Excel, I never thought they were all that helpful or powerful until I needed a quick and somewhat simple way for me to lookup two possible matches for a given field.&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:normal;margin:0in 0in 0pt;vertical-align:top" class=MsoNormal&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p style="line-height:normal;margin:0in 0in 0pt;vertical-align:top" class=MsoNormal&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;So my scenario starts like this. My migration application would update the user's email address to the new migrated one within its database. There was mailbox size data associated to this email address. In my migration database (Excel spreadsheet) I had some lookup columns that were pretty straightforward but I realized I had a snag when the migration application changed this key field. Suddenly the logic in my lookup made no sense and returned zero matches for some users. Once I identified what was happening I needed a simple way to lookups that might contain one of two possible values, like two different email addresses.&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:normal;margin:0in 0in 0pt;vertical-align:top" class=MsoNormal&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p style="line-height:normal;margin:0in 0in 0pt;vertical-align:top" class=MsoNormal&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;Trying to Google my scenario was difficult. I couldn't think of the right keywords to search for. After some poking around with Excel's online help and Googling some resources I ended up just using Excel's built-in help. It gave me a starting point and I went through every logical and lookup and reference until I was able to piece together what I needed. Needless to say it took me several trials before I got the results I wanted.&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:normal;margin:0in 0in 0pt;vertical-align:top" class=MsoNormal&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p style="line-height:normal;margin:0in 0in 0pt;vertical-align:top" class=MsoNormal&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;img style="width:309px;height:273px" alt="" src="/Blogs/enger_erik/Lists/Photos/ExcelVLOOKUP1.png" width=236 height=168&gt;&lt;img style="width:311px;height:407px" alt="" src="/Blogs/enger_erik/Lists/Photos/ExcelVLOOKUP2.png" width=276 height=254&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:normal;margin:0in 0in 0pt;vertical-align:top" class=MsoNormal&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;/span&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p style="line-height:normal;margin:0in 0in 0pt;vertical-align:top" class=MsoNormal&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;My workbook looked like this. This example is significantly trimmed down to make it more clear. I had the main view of my database with all the names and fields I wanted. I also had data from my migration application which contained the mailbox size information. These can be seen on the two tabs in my workbook.&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:normal;margin:0in 0in 0pt;vertical-align:top" class=MsoNormal&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p style="line-height:normal;margin:0in 0in 0pt;vertical-align:top" class=MsoNormal&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;/span&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:normal;margin:0in 0in 0pt;vertical-align:top" class=MsoNormal&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:normal;margin:0in 0in 0pt;vertical-align:top" class=MsoNormal&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;img style="width:586px;height:171px" alt="" src="/Blogs/enger_erik/Lists/Photos/ExcelVLOOKUP3.png" width=1081 height=419&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:normal;margin:0in 0in 0pt;vertical-align:top" class=MsoNormal&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;Here’s the data from the Migration Database sheet. We have the account information and the old and new email addresses. The last three columns contain the lookup formula that pulls data from the Mailbox Stats sheet.&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height:normal;margin:0in 0in 0pt;vertical-align:top" class=MsoNormal&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p style="line-height:normal;margin:0in 0in 0pt;vertical-align:top" class=MsoNormal&gt;&lt;span style="font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;img style="width:560px;height:79px" alt="" src="/Blogs/enger_erik/Lists/Photos/ExcelVLOOKUP5.png" width=806 height=114&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;Here’s the data from the Mailbox Stats sheet. Notice the mixture of addresses and even one that doesn’t match up with either the old or new address for ‘&lt;i&gt;taccount5’&lt;/i&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/ExcelVLOOKUP6.png" width=401 height=83&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;And now on to the formula. As I said earlier it took me several tries to get the formula to return the results I wanted. Here’s the formula:&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';background:#d9d9d9;color:black;font-size:8.5pt"&gt;=IFERROR(IF(ISERROR(VLOOKUP('Migration Database'!C2,'Mailbox Stats'!A:D,2,FALSE)),VLOOKUP('Migration Database'!D2,'Mailbox Stats'!A:D,2,FALSE),VLOOKUP('Migration Database'!C2,'Mailbox Stats'!A:D,2,FALSE)),&amp;quot;&amp;quot;)&lt;/span&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;Pretty confusing, huh? Well, looking at a long formula with lots of commas, parentheses, exclamation points, etc. is very confusing at times. Luckily Excel makes this easier by highlighting the sections within the formula that go together.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;/span&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;&lt;img style="width:623px;height:183px" alt="" src="/Blogs/enger_erik/Lists/Photos/ExcelVLOOKUP4.png" width=746 height=291&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;Let’s breakdown the formula. First, I had to determine the root of what I was looking for. I wanted to match up one of two possible values for the email address and then perform a lookup on the Mailbox Stats sheet and return the result. Also, if there were any errors in matching up the values, I wanted to return blank values instead of the errors like these (#N/A, #VALUE!, #REF!, #DIV/0!, #NUM!, #NAME?, or #NULL!). At first I thought an OR logical function is what I needed but I chose a simple IF function instead. I’m sure there are a few different ways to achieve the same result however but this was simple and worked for me. So the first part of the IF function is to perform the logical test, in other words, if something returns a true or false. I did this by using the ISERROR function and tested whether or not looking up my new email address triggered a failure or error as described above.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;Let’s step back a minute and look at our IF function. First, there’s the test, then depending on the result (TRUE or FALSE) you can perform different calculations. You can nest these and other functions to provide more granular information. For me this is like trying to code a complex script on one line. It’s easier if you can break up the logic into smaller chunks.&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-indent:0.5in;margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;IF(logical_test, value_if_true, [value_if_false])&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;This next part of the formula performs the test. We look up the value in C2 on the Migration Database sheet in the Mailbox Stats sheet and if we have a match it returns a FALSE value. Conversely, we return TRUE if there is no match.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';background:#d9d9d9;color:black;font-size:8.5pt"&gt;ISERROR(VLOOKUP('Migration Database'!C2,'Mailbox Stats'!A:D,2,FALSE))&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;Once we have our test result we perform either the value_if_true or value_if_false part. In my example, I look up the new email address first and if that returns an error, I look up the old email address and return the values from the Mailbox Stats sheet I’m looking for. So in looking at the entire IF function this satisfies our goal.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';background:#d9d9d9;color:black;font-size:8.5pt"&gt;IF(ISERROR(VLOOKUP('Migration Database'!C2,'Mailbox Stats'!A:D,2,FALSE)),VLOOKUP('Migration Database'!D2,'Mailbox Stats'!A:D,2,FALSE),VLOOKUP('Migration Database'!C2,'Mailbox Stats'!A:D,2,FALSE))&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;The last piece of the puzzle has to do with cleaning up the data in the event of a total failure in our lookup, meaning neither the old or new email address are found. That’s where the IFERROR function comes into play.&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-indent:0.5in;margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;IFERROR&lt;/span&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;(&lt;span&gt;value&lt;/span&gt;,&lt;span&gt;value_if_error&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;So basically with this wrapped around the IF function we are saying that if we receive an error to return some value. This could be another calculation or simple text that’s nicer than one of these (#N/A, #VALUE!, #REF!, #DIV/0!, #NUM!, #NAME?, or #NULL!). In my formula, I just wanted to return a blank so hence the double quotes (“”) at the end.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0in 0in 10pt" class=MsoNormal&gt;&lt;span style="line-height:115%;font-family:'Verdana','sans-serif';color:black;font-size:8.5pt"&gt;I hope this article saves someone some time looking for the same logic or spurs further investigation into some of these powerful Excel functions.&lt;/span&gt;&lt;/p&gt;.&lt;/div&gt;&lt;/div&gt;</description><author>Erik Enger</author><link>http://blogs.pointbridge.com/Blogs/enger_erik/Pages/Post.aspx?_ID=22</link><description /><pubDate>2009-03-24 13:57:00</pubDate></item><item><id>21</id><title>Useful Exchange PowerShell One-Liners</title><body>&lt;div class=ExternalClass6BEEFEF6A05940A6B7895D221B334BE5&gt;
&lt;div&gt;After working on various Exchange-related projects you start to accumulate some useful scripts and tools. For me, PowerShell has proven to be an invaluable tool and although I usually can't find enough time to develop ellaborate scripts, I do occassionally come across some common but useful one-liners in some situations.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Here's a few of these that you might find useful:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Show mailbox statistics (excluding system mailboxes)&lt;br&gt;&lt;/strong&gt;Get-MailboxStatistics -server mbxserver1 | where {$_.ObjectClass -NotMatch '(SystemAttendantMailbox|ExOleDbSystemMailbox)'}|sort-object TotalItemSize -Descending |  format-table  DisplayName, ItemCount,@{expression={$_.TotalItemSize.Value.ToMB()};label=&amp;quot;TotalItemSize(MB)&amp;quot;}, Database -autosize&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;strong&gt;List your permissions on all mailbox databases&lt;br&gt;&lt;/strong&gt;Get-MailboxDatabase|Get-ADPermission -User jdoe&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Remove your permissions on all mailbox databases (you inadvertently added receive-as for the wrong account to all databases)&lt;/strong&gt;&lt;br&gt;Get-MailboxDatabase|Remove-ADPermission -User jdoe -ExtendedRights Receive-As&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;strong&gt;Bulk creation of mailbox accounts&lt;/strong&gt;&lt;br&gt;import-csv import.csv | foreach {$pswd = ConvertTo-SecureString $_.Password -asplaintext -force; new-mailbox -alias $_.alias -name $_.name -userprincipalname $_.upn -database $_.database -org employees -Password $pswd -displayname $_.name -firstname $_.firstname -lastname $_.lastname -samaccountname $_.samaccountname}&lt;/div&gt;
&lt;blockquote dir=ltr style="margin-right:0px"&gt;
&lt;div&gt;&lt;br&gt;&lt;strong&gt;The import.csv looks like this:&lt;/strong&gt;&lt;br&gt;firstname,lastname,initials,alias,password,database,userprincipalname,displayname,samaccountname,name&lt;br&gt;John,Smith,S,JSmith,P@ssw0rd,MBX1\Mailbox Database,JSmith@contoso.com,John Smith,JSmith,John Smith&lt;/div&gt;&lt;/blockquote&gt;
&lt;div&gt;&lt;br&gt;&lt;strong&gt;Report on mailbox quotas&lt;/strong&gt;&lt;br&gt;get-mailbox -resultsize unlimited | select displayname,alias,issuewarningquota,prohibitsendquota,prohibitsendreceivequota |sort displayname | ft -autosize&lt;br&gt; &lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Determine which mail users have mismatched &amp;quot;mail&amp;quot; attributes and primary SMTP address (the OAB generator won't create these accounts in the address book unless these are the same)&lt;/strong&gt;&lt;br&gt;Get-Mailbox -resultsize unlimited -ignoredefaultscope:$true | select-object displayname,alias,recipienttype,windowsemailaddress,primarysmtpaddress,externalemailaddress | where {$_.windowsemailaddress -notmatch $_.primarysmtpaddress}| Export-CSV c:\mailrpt.csv -NoClobber:$false -NoTypeInformation&lt;br&gt; &lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Override database limits and set user’s mailbox limits&lt;/strong&gt;&lt;br&gt;Set-Mailbox jsmith -UseDatabaseQuotaDefaults:$false -IssueWarningQuota:250MB -ProhibitSendQuota:300MB -ProhibitSendReceiveQuota:unlimited&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;strong&gt;Configure a custom email address policy&lt;br&gt;&lt;/strong&gt;Set-EmailAddressPolicy -Identity &amp;quot;Default Policy&amp;quot; -EnabledEmailAddressTemplates smtp:%g.%s@contoso.com,smtp:%m@contoso.com,SMTP:%g.%i.%s@contoso.com&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;strong&gt;Get mailbox folder size (in MB) for a particular user&lt;/strong&gt;&lt;br&gt;get-mailboxfolderstatistics jsmith | ft FolderPath, ItemsInFolder, @{Label=&amp;quot;FolderSize(MB)&amp;quot;;expression={$_.FolderSize.ToMB()} } -auto&lt;/div&gt;
&lt;div&gt;&lt;br&gt;You can find and piece together your own one-liners by examining the issue or task you may be facing with Exchange and start with the TechNet site for a particular command you have in mind. The &amp;quot;power&amp;quot; really comes when you start stringing several of these commands together. I know I will keep adding to my personal collection of useful one-liners and hopefully I can also find the time to start creating more complex PS scripts.&lt;br&gt;&lt;/div&gt;&lt;/div&gt;</body><description>&lt;div class=ExternalClass6BEEFEF6A05940A6B7895D221B334BE5&gt;
&lt;div&gt;After working on various Exchange-related projects you start to accumulate some useful scripts and tools. For me, PowerShell has proven to be an invaluable tool and although I usually can't find enough time to develop ellaborate scripts, I do occassionally come across some common but useful one-liners in some situations.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Here's a few of these that you might find useful:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Show mailbox statistics (excluding system mailboxes)&lt;br&gt;&lt;/strong&gt;Get-MailboxStatistics -server mbxserver1 | where {$_.ObjectClass -NotMatch '(SystemAttendantMailbox|ExOleDbSystemMailbox)'}|sort-object TotalItemSize -Descending |  format-table  DisplayName, ItemCount,@{expression={$_.TotalItemSize.Value.ToMB()};label=&amp;quot;TotalItemSize(MB)&amp;quot;}, Database -autosize&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;strong&gt;List your permissions on all mailbox databases&lt;br&gt;&lt;/strong&gt;Get-MailboxDatabase|Get-ADPermission -User jdoe&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Remove your permissions on all mailbox databases (you inadvertently added receive-as for the wrong account to all databases)&lt;/strong&gt;&lt;br&gt;Get-MailboxDatabase|Remove-ADPermission -User jdoe -ExtendedRights Receive-As&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;strong&gt;Bulk creation of mailbox accounts&lt;/strong&gt;&lt;br&gt;import-csv import.csv | foreach {$pswd = ConvertTo-SecureString $_.Password -asplaintext -force; new-mailbox -alias $_.alias -name $_.name -userprincipalname $_.upn -database $_.database -org employees -Password $pswd -displayname $_.name -firstname $_.firstname -lastname $_.lastname -samaccountname $_.samaccountname}&lt;/div&gt;
&lt;blockquote dir=ltr style="margin-right:0px"&gt;
&lt;div&gt;&lt;br&gt;&lt;strong&gt;The import.csv looks like this:&lt;/strong&gt;&lt;br&gt;firstname,lastname,initials,alias,password,database,userprincipalname,displayname,samaccountname,name&lt;br&gt;John,Smith,S,JSmith,P@ssw0rd,MBX1\Mailbox Database,JSmith@contoso.com,John Smith,JSmith,John Smith&lt;/div&gt;&lt;/blockquote&gt;
&lt;div&gt;&lt;br&gt;&lt;strong&gt;Report on mailbox quotas&lt;/strong&gt;&lt;br&gt;get-mailbox -resultsize unlimited | select displayname,alias,issuewarningquota,prohibitsendquota,prohibitsendreceivequota |sort displayname | ft -autosize&lt;br&gt; &lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Determine which mail users have mismatched &amp;quot;mail&amp;quot; attributes and primary SMTP address (the OAB generator won't create these accounts in the address book unless these are the same)&lt;/strong&gt;&lt;br&gt;Get-Mailbox -resultsize unlimited -ignoredefaultscope:$true | select-object displayname,alias,recipienttype,windowsemailaddress,primarysmtpaddress,externalemailaddress | where {$_.windowsemailaddress -notmatch $_.primarysmtpaddress}| Export-CSV c:\mailrpt.csv -NoClobber:$false -NoTypeInformation&lt;br&gt; &lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Override database limits and set user’s mailbox limits&lt;/strong&gt;&lt;br&gt;Set-Mailbox jsmith -UseDatabaseQuotaDefaults:$false -IssueWarningQuota:250MB -ProhibitSendQuota:300MB -ProhibitSendReceiveQuota:unlimited&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;strong&gt;Configure a custom email address policy&lt;br&gt;&lt;/strong&gt;Set-EmailAddressPolicy -Identity &amp;quot;Default Policy&amp;quot; -EnabledEmailAddressTemplates smtp:%g.%s@contoso.com,smtp:%m@contoso.com,SMTP:%g.%i.%s@contoso.com&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;strong&gt;Get mailbox folder size (in MB) for a particular user&lt;/strong&gt;&lt;br&gt;get-mailboxfolderstatistics jsmith | ft FolderPath, ItemsInFolder, @{Label=&amp;quot;FolderSize(MB)&amp;quot;;expression={$_.FolderSize.ToMB()} } -auto&lt;/div&gt;
&lt;div&gt;&lt;br&gt;You can find and piece together your own one-liners by examining the issue or task you may be facing with Exchange and start with the TechNet site for a particular command you have in mind. The &amp;quot;power&amp;quot; really comes when you start stringing several of these commands together. I know I will keep adding to my personal collection of useful one-liners and hopefully I can also find the time to start creating more complex PS scripts.&lt;br&gt;&lt;/div&gt;&lt;/div&gt;</description><author>Erik Enger</author><link>http://blogs.pointbridge.com/Blogs/enger_erik/Pages/Post.aspx?_ID=21</link><description /><pubDate>2008-12-17 18:02:00</pubDate></item><item><id>20</id><title>Exchange 2007 certificate request with special characters</title><body>&lt;div class=ExternalClass73E900E6F07E47969DC6559C9FFF0308&gt;
&lt;div&gt;Hopefully this blog will help someone avoid spending time scratching their head wondering why their cert request is not working when submitting it to a CA. Some of you may have already figured this out but for some reason this problem never reared its head until recently. The problem and solution are pretty simple. The premise of the problem lies in generating a public certificate request for a CAS server with special or reserved characters in the company name or other field you need to populate in the certificate.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;What I mean by special characters are those like commas, slashes, etc. The one that through a wrench in the works for me was a simple comma. When using the Exchange Management Shell to create the request, we ran into a problem whereby a comma in the company name (i.e. &amp;quot;Contoso, Ltd&amp;quot;) caused the cert request to fail when submitted to the CA. As you know there are many commas in the subject name and various fields to populate (&lt;a href="http://technet.microsoft.com/en-us/library/aa998840.aspx"&gt;http://technet.microsoft.com/en-us/library/aa998840.aspx&lt;/a&gt;) The CA required the comma to be there. At first, we thought it was a simple thing to fix but after many iterations of the request we finally came up with the correct syntax. What we were missing is double quotes around the &amp;quot;entire&amp;quot; company name. We obviously tried everything else we could think of before this and felt kinda dumb for not trying it sooner. Even researching this on the web proved to be futile. We had some hints of things to try but none of them panned out.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Anyway, here's the short simple answer that will hopefully save someone else from our pitfall. We'll use our sample company name, Contoso, Ltd as the example:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;New-ExchangeCertificate -GenerateRequest -Path c:\owa_contoso_com.csr -KeySize 2048 -SubjectName &amp;quot;c=US, s=Illinois, l=Chicago, o=&lt;strong&gt;&amp;quot;&amp;quot;Contoso, Ltd&amp;quot;&amp;quot;&lt;/strong&gt;, ou=Messaging, cn=owa.contoso.com&amp;quot; -DomainName owa.contoso.com,autodiscover.contoso.com,cas.contoso.com,cas -PrivateKeyExportable $True&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;/div&gt;</body><description>&lt;div class=ExternalClass73E900E6F07E47969DC6559C9FFF0308&gt;
&lt;div&gt;Hopefully this blog will help someone avoid spending time scratching their head wondering why their cert request is not working when submitting it to a CA. Some of you may have already figured this out but for some reason this problem never reared its head until recently. The problem and solution are pretty simple. The premise of the problem lies in generating a public certificate request for a CAS server with special or reserved characters in the company name or other field you need to populate in the certificate.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;What I mean by special characters are those like commas, slashes, etc. The one that through a wrench in the works for me was a simple comma. When using the Exchange Management Shell to create the request, we ran into a problem whereby a comma in the company name (i.e. &amp;quot;Contoso, Ltd&amp;quot;) caused the cert request to fail when submitted to the CA. As you know there are many commas in the subject name and various fields to populate (&lt;a href="http://technet.microsoft.com/en-us/library/aa998840.aspx"&gt;http://technet.microsoft.com/en-us/library/aa998840.aspx&lt;/a&gt;) The CA required the comma to be there. At first, we thought it was a simple thing to fix but after many iterations of the request we finally came up with the correct syntax. What we were missing is double quotes around the &amp;quot;entire&amp;quot; company name. We obviously tried everything else we could think of before this and felt kinda dumb for not trying it sooner. Even researching this on the web proved to be futile. We had some hints of things to try but none of them panned out.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Anyway, here's the short simple answer that will hopefully save someone else from our pitfall. We'll use our sample company name, Contoso, Ltd as the example:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;New-ExchangeCertificate -GenerateRequest -Path c:\owa_contoso_com.csr -KeySize 2048 -SubjectName &amp;quot;c=US, s=Illinois, l=Chicago, o=&lt;strong&gt;&amp;quot;&amp;quot;Contoso, Ltd&amp;quot;&amp;quot;&lt;/strong&gt;, ou=Messaging, cn=owa.contoso.com&amp;quot; -DomainName owa.contoso.com,autodiscover.contoso.com,cas.contoso.com,cas -PrivateKeyExportable $True&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;/div&gt;</description><author>Erik Enger</author><link>http://blogs.pointbridge.com/Blogs/enger_erik/Pages/Post.aspx?_ID=20</link><description /><pubDate>2008-12-10 14:49:00</pubDate></item><item><id>19</id><title>Connecting Entourage 2008 to Exchange 2007</title><body>&lt;div class=ExternalClassA75A74482F384F18835DC9CF40CED6A7&gt;
&lt;div&gt;The purpose of this post is to hopefully help someone who is experiencing difficulty connecting an Entourage 2008 client to Exchange 2007, more specifically, with Exchange hosted on Windows Server 2008.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;When the platform was Windows Server 2003 connecting an Entourage client was as easy as enabling WebDAV in IIS 6.0. With 2008 and IIS 7.0 WebDAV is not integrated into IIS anymore so it's not as simple as setting the security to 'Allowed'. So I went through the new process of downloading, installing and configuring WebDAV on my 2008 server. This proved to be a futile attempt and my Entourage client could never connect. I scoured the web for anything I could find regarding my problem. I tried many of the suggestions but the forum posting that caught my eye was one saying you didn't even need WebDAV to connect the client. I made a few simple changes to my CAS server's Exchange and Exchweb sites and voila, it worked.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Below are the changes made to the CAS server and settings for the Entourage client. I hope this helps someone else having trouble getting connected.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;First, on the CAS server you'll need to make sure the Exchange and Exchweb sites are configured for forms-based authentication and the logon format is UPN.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/CAS-Exchange.png"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/CAS-Exchweb.png"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Then make sure the Mailbox server's sites have Basic and Windows Authentication enabled.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/MBX-Exchange-Public.png"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/MBX-Exchange.png"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/MBX-Public.png"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;And finally, on the Entourage client...&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/Entourage-Account-Settings.png"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/Entourage-Advanced-Settings.png"&gt;&lt;/div&gt;&lt;/div&gt;</body><description>&lt;div class=ExternalClassA75A74482F384F18835DC9CF40CED6A7&gt;
&lt;div&gt;The purpose of this post is to hopefully help someone who is experiencing difficulty connecting an Entourage 2008 client to Exchange 2007, more specifically, with Exchange hosted on Windows Server 2008.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;When the platform was Windows Server 2003 connecting an Entourage client was as easy as enabling WebDAV in IIS 6.0. With 2008 and IIS 7.0 WebDAV is not integrated into IIS anymore so it's not as simple as setting the security to 'Allowed'. So I went through the new process of downloading, installing and configuring WebDAV on my 2008 server. This proved to be a futile attempt and my Entourage client could never connect. I scoured the web for anything I could find regarding my problem. I tried many of the suggestions but the forum posting that caught my eye was one saying you didn't even need WebDAV to connect the client. I made a few simple changes to my CAS server's Exchange and Exchweb sites and voila, it worked.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Below are the changes made to the CAS server and settings for the Entourage client. I hope this helps someone else having trouble getting connected.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;First, on the CAS server you'll need to make sure the Exchange and Exchweb sites are configured for forms-based authentication and the logon format is UPN.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/CAS-Exchange.png"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/CAS-Exchweb.png"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Then make sure the Mailbox server's sites have Basic and Windows Authentication enabled.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/MBX-Exchange-Public.png"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/MBX-Exchange.png"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/MBX-Public.png"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;And finally, on the Entourage client...&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/Entourage-Account-Settings.png"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/Entourage-Advanced-Settings.png"&gt;&lt;/div&gt;&lt;/div&gt;</description><author>Erik Enger</author><link>http://blogs.pointbridge.com/Blogs/enger_erik/Pages/Post.aspx?_ID=19</link><description /><pubDate>2008-11-26 10:34:00</pubDate></item><item><id>47</id><title>Forwarding a Voicemail via Outlook</title><body>&lt;div class=ExternalClass257B50E095B94D0DBD5A01053C0B5B01&gt;&lt;p&gt;I've been using Exchange 2007 UM for quite a while now. It's been great. I have had one qualm though: it drives me nuts that when I receive a forwarded VM from a co-worker, I can only open it with Windows Media Player because it's like a regular e-mail with the WMA attached. It doesn't have the built in media player control and the &amp;quot;Play on Phone&amp;quot; option is missing. Until now! Here comes the science…
&lt;/p&gt;&lt;p&gt;Here's what a message looks like when it's forwarded normally:
&lt;/p&gt;&lt;p&gt;&lt;img src="/Blogs/mcgillen_matt/PublishingImages/101708_2138_Forwardinga1.png" alt=""&gt;
	&lt;/p&gt;&lt;p&gt;All I can do is click on the WMA file. Which is &lt;em&gt;okay&lt;/em&gt; but I want it to be treated more like a regular VM. I saw a post in the technet forums from one of the MS gurus &amp;amp; he said that this was &amp;quot;by design&amp;quot; – which made me sad. So I goofed around with ideas and finally came up with this one:
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Forward the message, with the original message attached. The keyboard shortcut in outlook is &amp;quot;CTRL+ALT+F&amp;quot;.
&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;I tested it out and here's the result:
&lt;/p&gt;&lt;p&gt;&lt;img src="/Blogs/mcgillen_matt/PublishingImages/101708_2138_Forwardinga2.png" alt=""&gt;
	&lt;/p&gt;&lt;p&gt;Now you see it embedded. Cool! Here's what happens when you click on the attached VM:
&lt;/p&gt;&lt;p&gt;&lt;img src="/Blogs/mcgillen_matt/PublishingImages/101708_2138_Forwardinga3.png" alt=""&gt;
	&lt;/p&gt;&lt;p&gt;WAAAAY better. Got the &amp;quot;Play on Phone&amp;quot; and the embedded player.
&lt;/p&gt;&lt;p&gt;The one minor drawback still is that it doesn't show up as a &amp;quot;voicemail&amp;quot; when I dial into Outlook Voice Access. But I can live with that for now.&lt;/p&gt;&lt;/div&gt;</body><description>&lt;div class=ExternalClass257B50E095B94D0DBD5A01053C0B5B01&gt;&lt;p&gt;I've been using Exchange 2007 UM for quite a while now. It's been great. I have had one qualm though: it drives me nuts that when I receive a forwarded VM from a co-worker, I can only open it with Windows Media Player because it's like a regular e-mail with the WMA attached. It doesn't have the built in media player control and the &amp;quot;Play on Phone&amp;quot; option is missing. Until now! Here comes the science…
&lt;/p&gt;&lt;p&gt;Here's what a message looks like when it's forwarded normally:
&lt;/p&gt;&lt;p&gt;&lt;img src="/Blogs/mcgillen_matt/PublishingImages/101708_2138_Forwardinga1.png" alt=""&gt;
	&lt;/p&gt;&lt;p&gt;All I can do is click on the WMA file. Which is &lt;em&gt;okay&lt;/em&gt; but I want it to be treated more like a regular VM. I saw a post in the technet forums from one of the MS gurus &amp;amp; he said that this was &amp;quot;by design&amp;quot; – which made me sad. So I goofed around with ideas and finally came up with this one:
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Forward the message, with the original message attached. The keyboard shortcut in outlook is &amp;quot;CTRL+ALT+F&amp;quot;.
&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;I tested it out and here's the result:
&lt;/p&gt;&lt;p&gt;&lt;img src="/Blogs/mcgillen_matt/PublishingImages/101708_2138_Forwardinga2.png" alt=""&gt;
	&lt;/p&gt;&lt;p&gt;Now you see it embedded. Cool! Here's what happens when you click on the attached VM:
&lt;/p&gt;&lt;p&gt;&lt;img src="/Blogs/mcgillen_matt/PublishingImages/101708_2138_Forwardinga3.png" alt=""&gt;
	&lt;/p&gt;&lt;p&gt;WAAAAY better. Got the &amp;quot;Play on Phone&amp;quot; and the embedded player.
&lt;/p&gt;&lt;p&gt;The one minor drawback still is that it doesn't show up as a &amp;quot;voicemail&amp;quot; when I dial into Outlook Voice Access. But I can live with that for now.&lt;/p&gt;&lt;/div&gt;</description><author>Matthew McGillen</author><link>http://blogs.pointbridge.com/Blogs/mcgillen_matt/Pages/Post.aspx?_ID=47</link><description /><pubDate>2008-10-17 16:38:41</pubDate></item><item><id>15</id><title>Migrating from GroupWise to Exchange 2007, over SMTP – Flat Forwarding</title><body>&lt;div class=ExternalClass87DBB61F556143F0AEF47470A0265680&gt;
&lt;div&gt;&lt;font face=Calibri&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;&lt;font size=3&gt;One of the challenges I had more recently with a migration from GroupWise to Exchange was specifically with users existing in GroupWise and users that have been migrated from GroupWise to Exchange.&lt;span&gt;  &lt;/span&gt;The scenario is, when users still exist in GroupWise, how do they email users already migrated to Exchange?&lt;span&gt;  &lt;/span&gt;The best approach, with minimal impact to the users is to continue utilizing the GroupWise address book and to also not lose frequent contacts historical information.&lt;/font&gt;&lt;/p&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;&lt;font size=3&gt;The challenge with maintaining the existing address book is how we represent the users and how messages flow forward to Exchange.&lt;span&gt;  &lt;/span&gt;If you have experience with the GroupWise connector for Exchange 2003, you know that contacts appear within GroupWise for migrated users.&lt;span&gt;  &lt;/span&gt;Those contacts send all messages to the API gateway, created for this connector.&lt;span&gt;  &lt;/span&gt;Well, in Exchange 2007 (without Exchange 2003 coexistence) SMTP mail delivery is the most optimal approach, between coexisting environments.&lt;span&gt;  &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;&lt;font size=3&gt;Because we are using SMTP mail delivery, we wanted to forward all messages going to the old GroupWise mailbox, to the new Exchange mailbox.&lt;span&gt;  &lt;/span&gt;However, when this occurs, the message does forward to the Exchange mailbox, but appears as an attachment from that person’s mailbox.&lt;span&gt;  &lt;/span&gt;(Example, GroupWise UserA sends to migrated GroupWise mailbox UserB.&lt;span&gt;  &lt;/span&gt;UserB receives the email in Exchange, but looks like it came from themselves UserB.)&lt;span&gt;  &lt;/span&gt;GroupWise is unlike Exchange, in which you cannot setup forwarding on the mailbox, without it looking like a forwarded message.&lt;span&gt;  &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;&lt;font size=3&gt;We found a solution to work around this problem.&lt;span&gt;  &lt;/span&gt;Our solution was to use a “Flat Forwarding” option with GroupWise.&lt;span&gt;  &lt;/span&gt;Flat forwarding is supported on a GroupWise Internet Agent (GWIA), but not necessarily (easily) on a per user basis.&lt;span&gt;  &lt;/span&gt;Our initial thought on flat forwarding was to direct each Domain/PO to the flat forwarding GWIA, when the users were migrated.&lt;span&gt;  &lt;/span&gt;However, that wouldn’t work because we couldn’t always plan for everyone to be migrated in a single Domain/PO.&lt;span&gt;  &lt;/span&gt;So our work-around for this was to setup flat forwarding on a specific GWIA and to direct each mailbox to that PO, by adding the GWIA address to their forwarding address.&lt;span&gt;  &lt;/span&gt;As an example: in the GroupWise client, normally forwarding would be setup as such: forward to &lt;i&gt;&lt;a href="mailto:UserB@exchange.smtpdomain.com"&gt;&lt;font color="#0000ff"&gt;UserB@exchange.smtpdomain.com&lt;/font&gt;&lt;/a&gt;&lt;/i&gt;.&lt;span&gt;  &lt;/span&gt;To support flat forwarding, we added the following to the SMTP address: &lt;i&gt;GWDomain.FFGWIA:UserB@exchange.smtpdomain.com&lt;/i&gt;.&lt;span&gt;  &lt;/span&gt;The GWDomain.FFGWIA is the domain in which the GWIA exists, followed by the Flat Forwarding GWIA connector.&lt;/font&gt;&lt;/p&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;&lt;/font&gt; &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;</body><description>&lt;div class=ExternalClass87DBB61F556143F0AEF47470A0265680&gt;
&lt;div&gt;&lt;font face=Calibri&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;&lt;font size=3&gt;One of the challenges I had more recently with a migration from GroupWise to Exchange was specifically with users existing in GroupWise and users that have been migrated from GroupWise to Exchange.&lt;span&gt;  &lt;/span&gt;The scenario is, when users still exist in GroupWise, how do they email users already migrated to Exchange?&lt;span&gt;  &lt;/span&gt;The best approach, with minimal impact to the users is to continue utilizing the GroupWise address book and to also not lose frequent contacts historical information.&lt;/font&gt;&lt;/p&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;&lt;font size=3&gt;The challenge with maintaining the existing address book is how we represent the users and how messages flow forward to Exchange.&lt;span&gt;  &lt;/span&gt;If you have experience with the GroupWise connector for Exchange 2003, you know that contacts appear within GroupWise for migrated users.&lt;span&gt;  &lt;/span&gt;Those contacts send all messages to the API gateway, created for this connector.&lt;span&gt;  &lt;/span&gt;Well, in Exchange 2007 (without Exchange 2003 coexistence) SMTP mail delivery is the most optimal approach, between coexisting environments.&lt;span&gt;  &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;&lt;font size=3&gt;Because we are using SMTP mail delivery, we wanted to forward all messages going to the old GroupWise mailbox, to the new Exchange mailbox.&lt;span&gt;  &lt;/span&gt;However, when this occurs, the message does forward to the Exchange mailbox, but appears as an attachment from that person’s mailbox.&lt;span&gt;  &lt;/span&gt;(Example, GroupWise UserA sends to migrated GroupWise mailbox UserB.&lt;span&gt;  &lt;/span&gt;UserB receives the email in Exchange, but looks like it came from themselves UserB.)&lt;span&gt;  &lt;/span&gt;GroupWise is unlike Exchange, in which you cannot setup forwarding on the mailbox, without it looking like a forwarded message.&lt;span&gt;  &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;&lt;font size=3&gt;We found a solution to work around this problem.&lt;span&gt;  &lt;/span&gt;Our solution was to use a “Flat Forwarding” option with GroupWise.&lt;span&gt;  &lt;/span&gt;Flat forwarding is supported on a GroupWise Internet Agent (GWIA), but not necessarily (easily) on a per user basis.&lt;span&gt;  &lt;/span&gt;Our initial thought on flat forwarding was to direct each Domain/PO to the flat forwarding GWIA, when the users were migrated.&lt;span&gt;  &lt;/span&gt;However, that wouldn’t work because we couldn’t always plan for everyone to be migrated in a single Domain/PO.&lt;span&gt;  &lt;/span&gt;So our work-around for this was to setup flat forwarding on a specific GWIA and to direct each mailbox to that PO, by adding the GWIA address to their forwarding address.&lt;span&gt;  &lt;/span&gt;As an example: in the GroupWise client, normally forwarding would be setup as such: forward to &lt;i&gt;&lt;a href="mailto:UserB@exchange.smtpdomain.com"&gt;&lt;font color="#0000ff"&gt;UserB@exchange.smtpdomain.com&lt;/font&gt;&lt;/a&gt;&lt;/i&gt;.&lt;span&gt;  &lt;/span&gt;To support flat forwarding, we added the following to the SMTP address: &lt;i&gt;GWDomain.FFGWIA:UserB@exchange.smtpdomain.com&lt;/i&gt;.&lt;span&gt;  &lt;/span&gt;The GWDomain.FFGWIA is the domain in which the GWIA exists, followed by the Flat Forwarding GWIA connector.&lt;/font&gt;&lt;/p&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;&lt;/font&gt; &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;</description><author>David Greve</author><link>http://blogs.pointbridge.com/Blogs/greve_david/Pages/Post.aspx?_ID=15</link><description /><pubDate>2008-09-22 23:00:00</pubDate></item><item><id>12</id><title>SCR Copy Status – Storage Group Copy Status showing “Failed”</title><body>&lt;div class=ExternalClassB96CFB38AE6A4CBFB6351B563F18D1FD&gt;
&lt;div&gt;&lt;font face=Calibri size=3&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;While implementing a couple SCR solutions, I noticed a common error I have seen while reviewing the copy status of a SCR source and target Exchange 2007 server.&lt;span&gt;  &lt;/span&gt;I noticed this problem while monitoring the health of a SCR configuration, as an example, run the following command:&lt;/p&gt;
&lt;p class=MsoListParagraph style="margin:0in 0in 10pt 0.25in;text-indent:-0.25in"&gt;&lt;span style="font-family:Wingdings"&gt;&lt;span&gt;Ø&lt;span style="font:7pt 'Times New Roman'"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Get-StorageGroupCopyStatus –Identity &amp;lt;SourceServer\StorageGroup&amp;gt; –StandByMachine &amp;lt;TargetServer&amp;gt; | FL&lt;/p&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;If you see storage group copy status showing “Failed” instead of “Healthy”, and SCR was functioning properly in the past, check to ensure all services are running properly on both servers.&lt;span&gt;  &lt;/span&gt;I’ve seen this problem a couple times and every time I have reviewed this problem it appeared to be the replication service not running or needed to be restarted.&lt;span&gt;  &lt;/span&gt;Our most recent experience has been with Exchange 2007 SP1 - Rollup 3, in which the services would not start and a work-around needed to be applied to start these services.&lt;span&gt;  &lt;/span&gt;This work-around can be located at: &lt;span style="color:black;line-height:115%"&gt;&lt;a href="http://support.microsoft.com/kb/944752/"&gt;Exchange Server 2007 managed code services do not start after you install an update rollup for Exchange Server 2007&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;&lt;/font&gt; &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;</body><description>&lt;div class=ExternalClassB96CFB38AE6A4CBFB6351B563F18D1FD&gt;
&lt;div&gt;&lt;font face=Calibri size=3&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;While implementing a couple SCR solutions, I noticed a common error I have seen while reviewing the copy status of a SCR source and target Exchange 2007 server.&lt;span&gt;  &lt;/span&gt;I noticed this problem while monitoring the health of a SCR configuration, as an example, run the following command:&lt;/p&gt;
&lt;p class=MsoListParagraph style="margin:0in 0in 10pt 0.25in;text-indent:-0.25in"&gt;&lt;span style="font-family:Wingdings"&gt;&lt;span&gt;Ø&lt;span style="font:7pt 'Times New Roman'"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Get-StorageGroupCopyStatus –Identity &amp;lt;SourceServer\StorageGroup&amp;gt; –StandByMachine &amp;lt;TargetServer&amp;gt; | FL&lt;/p&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;If you see storage group copy status showing “Failed” instead of “Healthy”, and SCR was functioning properly in the past, check to ensure all services are running properly on both servers.&lt;span&gt;  &lt;/span&gt;I’ve seen this problem a couple times and every time I have reviewed this problem it appeared to be the replication service not running or needed to be restarted.&lt;span&gt;  &lt;/span&gt;Our most recent experience has been with Exchange 2007 SP1 - Rollup 3, in which the services would not start and a work-around needed to be applied to start these services.&lt;span&gt;  &lt;/span&gt;This work-around can be located at: &lt;span style="color:black;line-height:115%"&gt;&lt;a href="http://support.microsoft.com/kb/944752/"&gt;Exchange Server 2007 managed code services do not start after you install an update rollup for Exchange Server 2007&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;&lt;/font&gt; &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;</description><author>David Greve</author><link>http://blogs.pointbridge.com/Blogs/greve_david/Pages/Post.aspx?_ID=12</link><description /><pubDate>2008-09-22 22:59:00</pubDate></item><item><id>13</id><title>SCR Copy Status – Storage Group Copy Status showing “Initializing”</title><body>&lt;div class=ExternalClass7E2542FFA92D41829A3A89A9868313B6&gt;&lt;font face=Calibri size=3&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;While implementing a couple SCR solutions, I noticed a common error I have seen while reviewing the copy status of a SCR source and target Exchange 2007 server.&lt;span&gt;  &lt;/span&gt;I noticed this problem while monitoring the health of a SCR configuration, as an example, run the following command:&lt;/p&gt;
&lt;p class=MsoListParagraph style="margin:0in 0in 10pt 0.25in;text-indent:-0.25in"&gt;&lt;span style="font-family:Wingdings"&gt;&lt;span&gt;Ø&lt;span style="font:7pt 'Times New Roman'"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;Get-StorageGroupCopyStatus –Identity &amp;lt;SourceServer\StorageGroup&amp;gt; –StandByMachine &amp;lt;TargetServer&amp;gt; | FL&lt;/span&gt;&lt;/p&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;If you see storage group copy status showing “Initializing” instead of “Healthy”, check to ensure all services are running properly on both servers.&lt;span&gt;  &lt;/span&gt;You may want to consider restarting the Information Store and Replication service on both servers, if you continue to see this problem.&lt;span&gt;  &lt;/span&gt;Worst case scenario, you may have to recreate the SCR configuration for that storage group.&lt;span&gt;  &lt;/span&gt;Here is an example of how to perform those tasks:&lt;/p&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;&lt;b&gt;Start by disabling SCR for the Storage Group in question:&lt;/b&gt;&lt;/p&gt;
&lt;p class=MsoListParagraph style="margin:0in 0in 10pt 0.25in;text-indent:-0.25in"&gt;&lt;span style="font-family:Wingdings"&gt;&lt;span&gt;Ø&lt;span style="font:7pt 'Times New Roman'"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;Disable-StorageGroupCopy &amp;lt;source server&amp;gt;\&amp;lt;SG in Question&amp;gt;&lt;span&gt;  &lt;/span&gt;–StandbyMachine &amp;lt;target server&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;Recreate SCR for that Storage Group&lt;/p&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;&lt;b&gt;Starting replication from the source server:&lt;/b&gt;&lt;/p&gt;
&lt;p class=MsoListParagraph style="margin:0in 0in 10pt 0.25in;text-indent:-0.25in"&gt;&lt;span style="font-family:Wingdings"&gt;&lt;span&gt;Ø&lt;span style="font:7pt 'Times New Roman'"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;Enable-StorageGroupCopy &amp;lt;source server&amp;gt;\&amp;lt;SG in Question&amp;gt; -StandbyMachine &amp;lt;target server&amp;gt; -ReplayLagTime 0.0:0:0 -TruncationLagTime 0.0:0:0&lt;/span&gt;&lt;/p&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;&lt;span style="font-size:10pt;color:red;line-height:115%"&gt;(*Note, set the replay and truncation lag time with the delay you previously defined.)&lt;/span&gt;&lt;/p&gt;
&lt;p class=MsoListParagraph style="margin:0in 0in 10pt 0.25in;text-indent:-0.25in"&gt;&lt;span style="font-family:Wingdings"&gt;&lt;span&gt;Ø&lt;span style="font:7pt 'Times New Roman'"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;Suspend-StorageGroupCopy &amp;lt;source server&amp;gt;\&amp;lt;SG in Question&amp;gt; –StandbyMachine &amp;lt;target server&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;&lt;span style="font-size:10pt;color:red;line-height:115%"&gt;(*Note, the replication service may not respond, causing the command to not run successfully.&lt;span&gt;  &lt;/span&gt;You may have to wait five minutes before running this command.)&lt;/span&gt;&lt;/p&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;&lt;b&gt;Seeding the target server:&lt;/b&gt;&lt;/p&gt;
&lt;p class=MsoListParagraph style="margin:0in 0in 10pt 0.25in;text-indent:-0.25in"&gt;&lt;span style="font-family:Wingdings"&gt;&lt;span&gt;Ø&lt;span style="font:7pt 'Times New Roman'"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;Update-StorageGroupCopy &amp;lt;source server&amp;gt;\&amp;lt;SG in Question&amp;gt; –StandbyMachine &amp;lt;target server&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;&lt;b&gt;Finalizing replication on the source server:&lt;/b&gt;&lt;/p&gt;
&lt;p class=MsoListParagraph style="margin:0in 0in 10pt 0.25in;text-indent:-0.25in"&gt;&lt;span style="font-family:Wingdings"&gt;&lt;span&gt;Ø&lt;span style="font:7pt 'Times New Roman'"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;Resume-StorageGroupCopy &amp;lt;source server&amp;gt;\&amp;lt;SG in Question&amp;gt; –StandbyMachine &amp;lt;targ&lt;/span&gt;et server&amp;gt;&lt;/p&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;&lt;/font&gt;&lt;font size=2&gt; &lt;/p&gt;&lt;/font&gt;&lt;/div&gt;</body><description>&lt;div class=ExternalClass7E2542FFA92D41829A3A89A9868313B6&gt;&lt;font face=Calibri size=3&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;While implementing a couple SCR solutions, I noticed a common error I have seen while reviewing the copy status of a SCR source and target Exchange 2007 server.&lt;span&gt;  &lt;/span&gt;I noticed this problem while monitoring the health of a SCR configuration, as an example, run the following command:&lt;/p&gt;
&lt;p class=MsoListParagraph style="margin:0in 0in 10pt 0.25in;text-indent:-0.25in"&gt;&lt;span style="font-family:Wingdings"&gt;&lt;span&gt;Ø&lt;span style="font:7pt 'Times New Roman'"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;Get-StorageGroupCopyStatus –Identity &amp;lt;SourceServer\StorageGroup&amp;gt; –StandByMachine &amp;lt;TargetServer&amp;gt; | FL&lt;/span&gt;&lt;/p&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;If you see storage group copy status showing “Initializing” instead of “Healthy”, check to ensure all services are running properly on both servers.&lt;span&gt;  &lt;/span&gt;You may want to consider restarting the Information Store and Replication service on both servers, if you continue to see this problem.&lt;span&gt;  &lt;/span&gt;Worst case scenario, you may have to recreate the SCR configuration for that storage group.&lt;span&gt;  &lt;/span&gt;Here is an example of how to perform those tasks:&lt;/p&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;&lt;b&gt;Start by disabling SCR for the Storage Group in question:&lt;/b&gt;&lt;/p&gt;
&lt;p class=MsoListParagraph style="margin:0in 0in 10pt 0.25in;text-indent:-0.25in"&gt;&lt;span style="font-family:Wingdings"&gt;&lt;span&gt;Ø&lt;span style="font:7pt 'Times New Roman'"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;Disable-StorageGroupCopy &amp;lt;source server&amp;gt;\&amp;lt;SG in Question&amp;gt;&lt;span&gt;  &lt;/span&gt;–StandbyMachine &amp;lt;target server&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;Recreate SCR for that Storage Group&lt;/p&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;&lt;b&gt;Starting replication from the source server:&lt;/b&gt;&lt;/p&gt;
&lt;p class=MsoListParagraph style="margin:0in 0in 10pt 0.25in;text-indent:-0.25in"&gt;&lt;span style="font-family:Wingdings"&gt;&lt;span&gt;Ø&lt;span style="font:7pt 'Times New Roman'"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;Enable-StorageGroupCopy &amp;lt;source server&amp;gt;\&amp;lt;SG in Question&amp;gt; -StandbyMachine &amp;lt;target server&amp;gt; -ReplayLagTime 0.0:0:0 -TruncationLagTime 0.0:0:0&lt;/span&gt;&lt;/p&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;&lt;span style="font-size:10pt;color:red;line-height:115%"&gt;(*Note, set the replay and truncation lag time with the delay you previously defined.)&lt;/span&gt;&lt;/p&gt;
&lt;p class=MsoListParagraph style="margin:0in 0in 10pt 0.25in;text-indent:-0.25in"&gt;&lt;span style="font-family:Wingdings"&gt;&lt;span&gt;Ø&lt;span style="font:7pt 'Times New Roman'"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;Suspend-StorageGroupCopy &amp;lt;source server&amp;gt;\&amp;lt;SG in Question&amp;gt; –StandbyMachine &amp;lt;target server&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;&lt;span style="font-size:10pt;color:red;line-height:115%"&gt;(*Note, the replication service may not respond, causing the command to not run successfully.&lt;span&gt;  &lt;/span&gt;You may have to wait five minutes before running this command.)&lt;/span&gt;&lt;/p&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;&lt;b&gt;Seeding the target server:&lt;/b&gt;&lt;/p&gt;
&lt;p class=MsoListParagraph style="margin:0in 0in 10pt 0.25in;text-indent:-0.25in"&gt;&lt;span style="font-family:Wingdings"&gt;&lt;span&gt;Ø&lt;span style="font:7pt 'Times New Roman'"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;Update-StorageGroupCopy &amp;lt;source server&amp;gt;\&amp;lt;SG in Question&amp;gt; –StandbyMachine &amp;lt;target server&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;&lt;b&gt;Finalizing replication on the source server:&lt;/b&gt;&lt;/p&gt;
&lt;p class=MsoListParagraph style="margin:0in 0in 10pt 0.25in;text-indent:-0.25in"&gt;&lt;span style="font-family:Wingdings"&gt;&lt;span&gt;Ø&lt;span style="font:7pt 'Times New Roman'"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;Resume-StorageGroupCopy &amp;lt;source server&amp;gt;\&amp;lt;SG in Question&amp;gt; –StandbyMachine &amp;lt;targ&lt;/span&gt;et server&amp;gt;&lt;/p&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;&lt;/font&gt;&lt;font size=2&gt; &lt;/p&gt;&lt;/font&gt;&lt;/div&gt;</description><author>David Greve</author><link>http://blogs.pointbridge.com/Blogs/greve_david/Pages/Post.aspx?_ID=13</link><description /><pubDate>2008-09-22 22:59:00</pubDate></item><item><id>14</id><title>Exchange 2007 OAB – NTLM problem with Server 2008</title><body>&lt;div class=ExternalClass001A2643A36F4337A1EBB6133D4846F7&gt;
&lt;div&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;&lt;font face=Calibri size=3&gt;We have been deploying Exchange 2007 for a while now, on Windows Server 2003.&lt;span&gt;  &lt;/span&gt;Most recently, I have deployed Exchange 2007 on Windows Server 2008 machines.&lt;span&gt;  &lt;/span&gt;The one noticeable problem, while setting up the Client Access Server role on server 2008 was that the Offline Address Book(OAB) URL was not functioning properly.&lt;span&gt;  &lt;/span&gt;You could access the OAB directory, only after IIS has been restarted or after the server restarts.&lt;span&gt;  &lt;/span&gt;However, after a couple minutes, the site becomes inaccessible, with a permission error.&lt;span&gt;  &lt;/span&gt;This also presents a problem to the end-users, as it asks them to authenticate to the OAB URL over and over again, but never actually accepts their credentials.&lt;span&gt;  &lt;/span&gt;My initial work-around for this problem was to setup Basic Authentication with SSL. (which actually fixes the problem.)&lt;/font&gt;&lt;/p&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;&lt;font face=Calibri size=3&gt;I was not very satisfied with this work-around as NTLM should work with Exchange 2007 and Windows Server 2008.&lt;span&gt;  &lt;/span&gt;After working with one of my colleagues &lt;/font&gt;&lt;a href="/Blogs/enger_erik/Pages/default.aspx"&gt;&lt;font face=Calibri size=3&gt;Erik Enger&lt;/font&gt;&lt;/a&gt;&lt;font size=3&gt;&lt;font face=Calibri&gt;, who stayed in touch with Microsoft, we discovered what the root cause of this problem was.&lt;span&gt;  &lt;/span&gt;The problem seems to be related to Kernel-mode authentication.&lt;span&gt;  &lt;/span&gt;When it is not enabled, the problem with the OAB IIS folder seems to go away.&lt;span&gt;  &lt;/span&gt;We also applied these same settings to AutoDiscover and EWS folder.&lt;span&gt;  &lt;/span&gt;This resolved our OAB and Outlook Anywhere authentication issues, using NTLM.&lt;span&gt;  &lt;/span&gt;Before considering these settings for your environment; please review the security and performance implications in your environment, before accepting such changes.&lt;span&gt;  &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;&lt;font size=3&gt;&lt;font face=Calibri&gt;&lt;span&gt;&lt;img alt="" src="/Blogs/greve_david/Lists/Photos/NTLM-OAB-1.jpg"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;</body><description>&lt;div class=ExternalClass001A2643A36F4337A1EBB6133D4846F7&gt;
&lt;div&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;&lt;font face=Calibri size=3&gt;We have been deploying Exchange 2007 for a while now, on Windows Server 2003.&lt;span&gt;  &lt;/span&gt;Most recently, I have deployed Exchange 2007 on Windows Server 2008 machines.&lt;span&gt;  &lt;/span&gt;The one noticeable problem, while setting up the Client Access Server role on server 2008 was that the Offline Address Book(OAB) URL was not functioning properly.&lt;span&gt;  &lt;/span&gt;You could access the OAB directory, only after IIS has been restarted or after the server restarts.&lt;span&gt;  &lt;/span&gt;However, after a couple minutes, the site becomes inaccessible, with a permission error.&lt;span&gt;  &lt;/span&gt;This also presents a problem to the end-users, as it asks them to authenticate to the OAB URL over and over again, but never actually accepts their credentials.&lt;span&gt;  &lt;/span&gt;My initial work-around for this problem was to setup Basic Authentication with SSL. (which actually fixes the problem.)&lt;/font&gt;&lt;/p&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;&lt;font face=Calibri size=3&gt;I was not very satisfied with this work-around as NTLM should work with Exchange 2007 and Windows Server 2008.&lt;span&gt;  &lt;/span&gt;After working with one of my colleagues &lt;/font&gt;&lt;a href="/Blogs/enger_erik/Pages/default.aspx"&gt;&lt;font face=Calibri size=3&gt;Erik Enger&lt;/font&gt;&lt;/a&gt;&lt;font size=3&gt;&lt;font face=Calibri&gt;, who stayed in touch with Microsoft, we discovered what the root cause of this problem was.&lt;span&gt;  &lt;/span&gt;The problem seems to be related to Kernel-mode authentication.&lt;span&gt;  &lt;/span&gt;When it is not enabled, the problem with the OAB IIS folder seems to go away.&lt;span&gt;  &lt;/span&gt;We also applied these same settings to AutoDiscover and EWS folder.&lt;span&gt;  &lt;/span&gt;This resolved our OAB and Outlook Anywhere authentication issues, using NTLM.&lt;span&gt;  &lt;/span&gt;Before considering these settings for your environment; please review the security and performance implications in your environment, before accepting such changes.&lt;span&gt;  &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class=MsoNormal style="margin:0in 0in 10pt"&gt;&lt;font size=3&gt;&lt;font face=Calibri&gt;&lt;span&gt;&lt;img alt="" src="/Blogs/greve_david/Lists/Photos/NTLM-OAB-1.jpg"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;</description><author>David Greve</author><link>http://blogs.pointbridge.com/Blogs/greve_david/Pages/Post.aspx?_ID=14</link><description /><pubDate>2008-09-22 22:59:00</pubDate></item><item><id>36</id><title>Using the Microsoft Notes Connector to Synchronize with Mail-Enabled Objects</title><body>&lt;div class=ExternalClass2D357FC635C4437EA91630ED8A79E603&gt;&lt;p&gt;In a previous &lt;a href="/Blogs/schertz_jeff/Pages/Post.aspx?_ID=28" target="_blank"&gt;blog entry&lt;/a&gt; I covered how to use object filtering with the Microsoft Notes Connector.  There was a reason I ran into that situation in the first place which was planning a migration from Notes to Exchange using the Notes Connector, but with a catch: I had already created new accounts in the target forest for the users in the migration scope.  These accounts needed to be pre-deployed before any directory synchronization was configured so that employees in the newly acquired company could authenticate to the parent company's AD forest and access the intranet site, among other resources.  This is why I needed to limit the migration scope to the &lt;em&gt;exact &lt;/em&gt;set of user accounts that had already been deployed in the target forest via a CSVDE import.&lt;/p&gt; &lt;p&gt;Normally this would not cause a problem as the directory synchronization portion of the Notes Connector can be configured to create new Contact objects instead of new User objects.  Then when the mail migration tasks are performed, native or third-party tools (like Quest's &lt;a href="http://www.quest.com/notes-migrator-for-exchange/" target="_blank"&gt;Notes Migrator&lt;/a&gt; or Binary Tree's &lt;a href="http://www.binarytree.com/website/msg/home.nsf/vContentW/CMT+For+Exchange--CMT+For+Exchange!Opendocument" target="_blank"&gt;CMT Universal&lt;/a&gt;) can identify matching user accounts and contacts objects, merge the mail attributes into the user account, mailbox-enable it, and then delete the contact from AD.  Notice I said &lt;em&gt;normally&lt;/em&gt;. Sigh.&lt;/p&gt; &lt;p&gt;Introduce catch #2: The new user accounts I created in the target forest were mail-enabled.  They needed to have their mail attribute (among a few others) populated with their legacy email address so that SharePoint services would import that attribute into their profile for use in the intranet site's company directory.  These items were also already acting a mail-forwarding objects and messing with them can start to open a can of worms related to X.400 addresses.  When the accounts were imported in bulk, many of the legacy mail attributes were also brought it; mail-disabling them was simply not an option.  This obviously presents a problem to the Connector's directory synchronization, as it will not be able to use those in-use mail attributes since they are already entered in the user accounts, so new contacts would be created with incorrect SMTP address.  That could muck-up a Global Address List in short order.&lt;/p&gt; &lt;p&gt;After researching the documentation and contacting Microsoft Product Support I learned that there was no native way to configure the Connector's directory synchronization to identify the existing user objects and 'merge' the imported information with them.  When researching a solution for this, &lt;a href="/Blogs/nielsen_travis" target="_blank"&gt;Travis Nielsen&lt;/a&gt; mentioned that he had run across something similar few years prior and figured out a way to move some attributes off of the contacts created by the directory sync and stamp them onto the pre-existing objects, effectively fooling the Connector.&lt;/p&gt; &lt;p&gt;Knowing this, I set off to dissect how the Connector worked so that I could understand exactly what could be modified to get the end result I was looking for.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;font color="#3f72ae"&gt;Under the Hood&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;In a test lab I have a target Windows 2003 forest with a separate Exchange 2003 server, and a source Windows 2003 forest with another member server running Notes/Domino 6.5.4.  The Notes Connector is configured and I've already synchronized a handful of objects.  I also have the DirSync options on the Connector set to create new Contact objects.  So let's go ahead and create a brand new user in the Notes directory to watch how directory synchronization works.&lt;/p&gt; &lt;p&gt;I've created a new user (CRusso) in the Notes directory.  I'm current filtering objects with the Connector by setting the field carLicense = 'Sync' so then stamped that value on there, otherwise the directory sync would ignore the new user.&lt;br&gt;&lt;/p&gt; &lt;p&gt;From the &lt;strong&gt;DirSync Options&lt;/strong&gt; tab on the &lt;strong&gt;Connector for Lotus Notes &lt;/strong&gt;object in the ESM, I kicked off an &lt;strong&gt;Immediate update &lt;/strong&gt;from Notes to Exchange.&lt;/p&gt; &lt;p&gt;Checking the interactive service window on the Domino Server will show the creation of the new user, as well as the connection from the Exchange Connector:&lt;/p&gt; &lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/36/image_8.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=170 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/36/image_thumb_3.png" width=644 border=0&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Because an Immediate update was run, only new objects not yet identified by the Connector will be processed, hence the &lt;strong&gt;Documents read: 1&lt;/strong&gt; summary.  If an Immediate Full Reload was run then all objects included in the filter scope would be read.&lt;/p&gt; &lt;p&gt;Flipping back to the Exchange server, the Application event log shows some recent events that tell us what the DirSync process did:&lt;/p&gt; &lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/36/image_6.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=148 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/36/image_thumb_2.png" width=644 border=0&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;The most recent Notes Directory Synchronization event mirrors what we saw on the Domino server console:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font face="Courier New" color="#3f72ae" size=1&gt;Event Type:      Information&lt;br&gt;Event Source:    MSExchangeNOTES&lt;br&gt;Event Category:  Notes Directory Synchronization &lt;br&gt;Event ID:        60378&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New" color="#3f72ae" size=1&gt;&lt;br&gt;Description:     &lt;/font&gt;&lt;font face="Courier New" color="#3f72ae" size=1&gt;Directory Synchronization Export is complete. MS.DXANOTES successfully exported 1 entries, and had problems exporting 0 entries. &lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;In addition, the two Proxy Generation events describe the stamping of mail attributes on the new contact in AD. I've snipped down the description to just the import part, which proxies were applied to the object.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font face="Courier New" color="#3f72ae" size=1&gt;Event Type:      Information&lt;br&gt;Event Source:    MSExchangeSA&lt;br&gt;Event Category:  Proxy Generation &lt;br&gt;Event ID:        3006 &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" color="#3f72ae" size=1&gt;Description: &lt;br&gt;&lt;/font&gt;&lt;font face="Courier New" color="#3f72ae" size=1&gt;Policy provider instance processing recipient. &lt;br&gt;Recipient DN: CN=Chris Russo,OU=Import,OU=DirSync,DC=contoso,DC=com &lt;br&gt;Proxies written to recipient: &lt;br&gt;    X400:c=US;a= ;p=Contoso;o=Exchange;s=Russo;g=Chris;&lt;br&gt;    SMTP:CRusso@contoso.com&lt;br&gt;    notes:UID=1913cc8-3c223412-862574a6-54b234&lt;br&gt;    NOTES:Chris Russo/nwtraders@nwtraders&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Now we have a new contact object in the defined Import OU in Active Directory.  A quick look at the E-mail Addresses tab in ADUC and we can see that we see the typical X.400 and SMTP addresses created by the RUS, as well as two Notes proxy addresses.  The default (NOTES) is the address that will be used by Exchange to route email sent to this contact over the connector to the Notes directory for foreign delivery.  The secondary proxy (notes) is apparently some kind of unique identifier.  &lt;em&gt;This attribute value will play a key role later on ;)&lt;/em&gt;&lt;/p&gt; &lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/36/image_10.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=211 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/36/image_thumb_4.png" width=354 border=0&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;But if I run through the same exact process as above, only for a user which already has a user account in AD then a couple things can happen.  If the user object exists in the same OU that DirSync is configured to import to, then the Connector will notice the conflict.  But if the user object is in a different OU, outside what DirSync is configured to look at, then the conflict will be discovered when Exchange 2003 generates the proxy addresses on the object.  Here we can see that the SMTP alias was automatically stamped with a '2' suffix since the intended address is not unique.&lt;/p&gt; &lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/36/image_12.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=207 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/36/image_thumb_5.png" width=354 border=0&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;So this is exactly the behavior we want to avoid, and ultimately have only the single user account in AD. Let's turn our attention to the imported objects AD attributes to see what we can find.  &lt;/p&gt; &lt;p&gt;After looking through the raw attributes of these contacts and comparing them to others, I noticed one attribute in particular that was stamped on only the contact objects created by the Connector: &lt;strong&gt;importedFrom&lt;/strong&gt;.  And every object had the same exact value, which is actually a unique identifier which indicates what created these objects: the Connector for Lotus Notes.&lt;/p&gt; &lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/36/image_14.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=121 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/36/image_thumb_6.png" width=304 border=0&gt;&lt;/a&gt;    &lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/36/image_16.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=122 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/36/image_thumb_7.png" width=314 border=0&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;This that one of half of the puzzle, while the other half is that notes proxy address I mentioned earlier.  Each AD object created by the Connector has it's own unique value for that proxy address and I discovered it's actually the the Person Document's UNID in Notes.&lt;/p&gt; &lt;p&gt;This can be viewed in the Domino Administrator by looking at the Document Properties and clicking on the far-right tab.  The first two lines make up the UNID:&lt;/p&gt; &lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/36/image_18.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=150 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/36/image_thumb_8.png" width=304 border=0&gt;&lt;/a&gt; &lt;/p&gt; &lt;p align=left&gt;When you look at the secondary notes proxy address in Active Directory on a contact object created by the Connector, we see the same UNID, but stored in a slightly different format than in Notes:&lt;/p&gt; &lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/36/image_20.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=137 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/36/image_thumb_9.png" width=354 border=0&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;The 'OF' and 'ON' prefixes are omitted, as well as and preceding zeros, and the colons are replaced by hyphens.&lt;/p&gt; &lt;blockquote&gt;&lt;font face="Courier New" color="#3f72ae" size=1&gt; &lt;p&gt;UN&lt;/font&gt;&lt;font face="Courier New" color="#3f72ae" size=1&gt;ID Notes Format:   &lt;font color="#808080"&gt;OF&lt;/font&gt;733DCF3E:D9716911:&lt;font color="#808080"&gt;ON&lt;/font&gt;862574A6:&lt;font color="#808080"&gt;00&lt;/font&gt;522990&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New" color="#3f72ae" size=1&gt;UNID AD Format:        733DCF3E-D9716911-  862574A6-  522990&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p align=left&gt;Unfortunately that Notes document properties tab only displays the string, you cannot highlight and copy text from it.  For a simpler way to get the UNID without typing it in manually, switch to the &lt;strong&gt;&amp;lt;+&amp;gt;&lt;/strong&gt; tab and look at the end of the &lt;em&gt;Identifier&lt;/em&gt; field, the UNID is also stored there as an alpha-numeric string:&lt;/p&gt; &lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/36/image_21.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=259 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/36/image_thumb.png" width=304 border=0&gt;&lt;/a&gt; &lt;/p&gt; &lt;p align=left&gt;The portion after the last forward slash is the UNID:&lt;/p&gt; &lt;blockquote&gt; &lt;p align=left&gt;&lt;font size=1&gt;&lt;font face="Courier New"&gt;&lt;font color="#3f72ae"&gt;Notes://LAB3NOTES/86257420007522B9/77B3DCF1F48F935485256B49007DC700/&lt;/font&gt;&lt;font color="#ff0000"&gt;&lt;strong&gt;733DCF3ED9716911862574A600522990&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;font color="#3f72ae"&gt;The Workaround&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;So to test the process I deleted the new contact object for CRusso and manually created a new user account in AD.  I mail-enabled the object and set a legacy SMTP address of &lt;a href="mailto:crusso@nwtraders.com"&gt;crusso@nwtraders.com&lt;/a&gt; to match the Notes account's SMTP address.  Then I manually set the &lt;em&gt;importedFrom &lt;/em&gt;attribute, as well as added the secondary Notes proxy address. (Note that the secondary proxy address for the UNID cannot be entered in ADUC as the format is deemed invalid by the tool, it must be entered in the attribute using a raw editor, like ADSIedit.) I also updated the value in the Company Name field on the Notes Person document to have another piece of information to verify directory synchronization.&lt;/p&gt; &lt;p&gt;After issuing a full immediate reload on the connector I found that the primary NOTES proxy address had been added to the mail-enabled user object and the company field was also updated to reflect the change in the Notes database.  Now any successive manual or scheduled directory synchronization processes will update this object as they have been associated together.&lt;/p&gt; &lt;p&gt;In order to complete this task at a larger scale, you would just need to export the UNID fields and NOTES mail addresses for all in-scope Notes accounts, and then use a CSV or LDIF import to create the new account in the target domain with the required information to set the foundation up for the Connector to link.&lt;/p&gt; &lt;p&gt;It's also important to note that the import Container scope on the Notes Connector is able to see and search the location of any proposed targets for object matching.  If you stamp the required attributes on an account stored in an OU that Connector is not configured to look at, then the matching will not work and the default action will be chosen (Create a Windows Contact object in the import container.)&lt;/p&gt; &lt;p&gt;Of course after I reverse engineered this process I eventually ran across a discussion online that confirmed the behavior I saw: Connector for Lotus Notes Directory Synchronization: &lt;a href="http://blogs.technet.com/collabtools/archive/2006/08/11/446024.aspx" target="_blank"&gt;Part 3 - Frequently Asked Questions&lt;/a&gt;.  &lt;/p&gt; &lt;p&gt;Also, It's probably worth noting that both the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=d9f3a35e-1046-47b5-b09b-bda9de60cd9d&amp;amp;DisplayLang=en" target="_blank"&gt;Notes Connector&lt;/a&gt; and the &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=C14932A1-55F4-4256-AF7E-617639D46024&amp;amp;displaylang=en" target="_blank"&gt;Calendar Connector&lt;/a&gt; were just updated the other day.&lt;/p&gt;&lt;/div&gt;</body><description>&lt;div class=ExternalClass2D357FC635C4437EA91630ED8A79E603&gt;&lt;p&gt;In a previous &lt;a href="/Blogs/schertz_jeff/Pages/Post.aspx?_ID=28" target="_blank"&gt;blog entry&lt;/a&gt; I covered how to use object filtering with the Microsoft Notes Connector.  There was a reason I ran into that situation in the first place which was planning a migration from Notes to Exchange using the Notes Connector, but with a catch: I had already created new accounts in the target forest for the users in the migration scope.  These accounts needed to be pre-deployed before any directory synchronization was configured so that employees in the newly acquired company could authenticate to the parent company's AD forest and access the intranet site, among other resources.  This is why I needed to limit the migration scope to the &lt;em&gt;exact &lt;/em&gt;set of user accounts that had already been deployed in the target forest via a CSVDE import.&lt;/p&gt; &lt;p&gt;Normally this would not cause a problem as the directory synchronization portion of the Notes Connector can be configured to create new Contact objects instead of new User objects.  Then when the mail migration tasks are performed, native or third-party tools (like Quest's &lt;a href="http://www.quest.com/notes-migrator-for-exchange/" target="_blank"&gt;Notes Migrator&lt;/a&gt; or Binary Tree's &lt;a href="http://www.binarytree.com/website/msg/home.nsf/vContentW/CMT+For+Exchange--CMT+For+Exchange!Opendocument" target="_blank"&gt;CMT Universal&lt;/a&gt;) can identify matching user accounts and contacts objects, merge the mail attributes into the user account, mailbox-enable it, and then delete the contact from AD.  Notice I said &lt;em&gt;normally&lt;/em&gt;. Sigh.&lt;/p&gt; &lt;p&gt;Introduce catch #2: The new user accounts I created in the target forest were mail-enabled.  They needed to have their mail attribute (among a few others) populated with their legacy email address so that SharePoint services would import that attribute into their profile for use in the intranet site's company directory.  These items were also already acting a mail-forwarding objects and messing with them can start to open a can of worms related to X.400 addresses.  When the accounts were imported in bulk, many of the legacy mail attributes were also brought it; mail-disabling them was simply not an option.  This obviously presents a problem to the Connector's directory synchronization, as it will not be able to use those in-use mail attributes since they are already entered in the user accounts, so new contacts would be created with incorrect SMTP address.  That could muck-up a Global Address List in short order.&lt;/p&gt; &lt;p&gt;After researching the documentation and contacting Microsoft Product Support I learned that there was no native way to configure the Connector's directory synchronization to identify the existing user objects and 'merge' the imported information with them.  When researching a solution for this, &lt;a href="/Blogs/nielsen_travis" target="_blank"&gt;Travis Nielsen&lt;/a&gt; mentioned that he had run across something similar few years prior and figured out a way to move some attributes off of the contacts created by the directory sync and stamp them onto the pre-existing objects, effectively fooling the Connector.&lt;/p&gt; &lt;p&gt;Knowing this, I set off to dissect how the Connector worked so that I could understand exactly what could be modified to get the end result I was looking for.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;font color="#3f72ae"&gt;Under the Hood&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;In a test lab I have a target Windows 2003 forest with a separate Exchange 2003 server, and a source Windows 2003 forest with another member server running Notes/Domino 6.5.4.  The Notes Connector is configured and I've already synchronized a handful of objects.  I also have the DirSync options on the Connector set to create new Contact objects.  So let's go ahead and create a brand new user in the Notes directory to watch how directory synchronization works.&lt;/p&gt; &lt;p&gt;I've created a new user (CRusso) in the Notes directory.  I'm current filtering objects with the Connector by setting the field carLicense = 'Sync' so then stamped that value on there, otherwise the directory sync would ignore the new user.&lt;br&gt;&lt;/p&gt; &lt;p&gt;From the &lt;strong&gt;DirSync Options&lt;/strong&gt; tab on the &lt;strong&gt;Connector for Lotus Notes &lt;/strong&gt;object in the ESM, I kicked off an &lt;strong&gt;Immediate update &lt;/strong&gt;from Notes to Exchange.&lt;/p&gt; &lt;p&gt;Checking the interactive service window on the Domino Server will show the creation of the new user, as well as the connection from the Exchange Connector:&lt;/p&gt; &lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/36/image_8.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=170 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/36/image_thumb_3.png" width=644 border=0&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Because an Immediate update was run, only new objects not yet identified by the Connector will be processed, hence the &lt;strong&gt;Documents read: 1&lt;/strong&gt; summary.  If an Immediate Full Reload was run then all objects included in the filter scope would be read.&lt;/p&gt; &lt;p&gt;Flipping back to the Exchange server, the Application event log shows some recent events that tell us what the DirSync process did:&lt;/p&gt; &lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/36/image_6.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=148 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/36/image_thumb_2.png" width=644 border=0&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;The most recent Notes Directory Synchronization event mirrors what we saw on the Domino server console:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font face="Courier New" color="#3f72ae" size=1&gt;Event Type:      Information&lt;br&gt;Event Source:    MSExchangeNOTES&lt;br&gt;Event Category:  Notes Directory Synchronization &lt;br&gt;Event ID:        60378&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New" color="#3f72ae" size=1&gt;&lt;br&gt;Description:     &lt;/font&gt;&lt;font face="Courier New" color="#3f72ae" size=1&gt;Directory Synchronization Export is complete. MS.DXANOTES successfully exported 1 entries, and had problems exporting 0 entries. &lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;In addition, the two Proxy Generation events describe the stamping of mail attributes on the new contact in AD. I've snipped down the description to just the import part, which proxies were applied to the object.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font face="Courier New" color="#3f72ae" size=1&gt;Event Type:      Information&lt;br&gt;Event Source:    MSExchangeSA&lt;br&gt;Event Category:  Proxy Generation &lt;br&gt;Event ID:        3006 &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" color="#3f72ae" size=1&gt;Description: &lt;br&gt;&lt;/font&gt;&lt;font face="Courier New" color="#3f72ae" size=1&gt;Policy provider instance processing recipient. &lt;br&gt;Recipient DN: CN=Chris Russo,OU=Import,OU=DirSync,DC=contoso,DC=com &lt;br&gt;Proxies written to recipient: &lt;br&gt;    X400:c=US;a= ;p=Contoso;o=Exchange;s=Russo;g=Chris;&lt;br&gt;    SMTP:CRusso@contoso.com&lt;br&gt;    notes:UID=1913cc8-3c223412-862574a6-54b234&lt;br&gt;    NOTES:Chris Russo/nwtraders@nwtraders&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Now we have a new contact object in the defined Import OU in Active Directory.  A quick look at the E-mail Addresses tab in ADUC and we can see that we see the typical X.400 and SMTP addresses created by the RUS, as well as two Notes proxy addresses.  The default (NOTES) is the address that will be used by Exchange to route email sent to this contact over the connector to the Notes directory for foreign delivery.  The secondary proxy (notes) is apparently some kind of unique identifier.  &lt;em&gt;This attribute value will play a key role later on ;)&lt;/em&gt;&lt;/p&gt; &lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/36/image_10.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=211 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/36/image_thumb_4.png" width=354 border=0&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;But if I run through the same exact process as above, only for a user which already has a user account in AD then a couple things can happen.  If the user object exists in the same OU that DirSync is configured to import to, then the Connector will notice the conflict.  But if the user object is in a different OU, outside what DirSync is configured to look at, then the conflict will be discovered when Exchange 2003 generates the proxy addresses on the object.  Here we can see that the SMTP alias was automatically stamped with a '2' suffix since the intended address is not unique.&lt;/p&gt; &lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/36/image_12.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=207 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/36/image_thumb_5.png" width=354 border=0&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;So this is exactly the behavior we want to avoid, and ultimately have only the single user account in AD. Let's turn our attention to the imported objects AD attributes to see what we can find.  &lt;/p&gt; &lt;p&gt;After looking through the raw attributes of these contacts and comparing them to others, I noticed one attribute in particular that was stamped on only the contact objects created by the Connector: &lt;strong&gt;importedFrom&lt;/strong&gt;.  And every object had the same exact value, which is actually a unique identifier which indicates what created these objects: the Connector for Lotus Notes.&lt;/p&gt; &lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/36/image_14.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=121 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/36/image_thumb_6.png" width=304 border=0&gt;&lt;/a&gt;    &lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/36/image_16.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=122 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/36/image_thumb_7.png" width=314 border=0&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;This that one of half of the puzzle, while the other half is that notes proxy address I mentioned earlier.  Each AD object created by the Connector has it's own unique value for that proxy address and I discovered it's actually the the Person Document's UNID in Notes.&lt;/p&gt; &lt;p&gt;This can be viewed in the Domino Administrator by looking at the Document Properties and clicking on the far-right tab.  The first two lines make up the UNID:&lt;/p&gt; &lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/36/image_18.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=150 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/36/image_thumb_8.png" width=304 border=0&gt;&lt;/a&gt; &lt;/p&gt; &lt;p align=left&gt;When you look at the secondary notes proxy address in Active Directory on a contact object created by the Connector, we see the same UNID, but stored in a slightly different format than in Notes:&lt;/p&gt; &lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/36/image_20.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=137 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/36/image_thumb_9.png" width=354 border=0&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;The 'OF' and 'ON' prefixes are omitted, as well as and preceding zeros, and the colons are replaced by hyphens.&lt;/p&gt; &lt;blockquote&gt;&lt;font face="Courier New" color="#3f72ae" size=1&gt; &lt;p&gt;UN&lt;/font&gt;&lt;font face="Courier New" color="#3f72ae" size=1&gt;ID Notes Format:   &lt;font color="#808080"&gt;OF&lt;/font&gt;733DCF3E:D9716911:&lt;font color="#808080"&gt;ON&lt;/font&gt;862574A6:&lt;font color="#808080"&gt;00&lt;/font&gt;522990&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New" color="#3f72ae" size=1&gt;UNID AD Format:        733DCF3E-D9716911-  862574A6-  522990&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p align=left&gt;Unfortunately that Notes document properties tab only displays the string, you cannot highlight and copy text from it.  For a simpler way to get the UNID without typing it in manually, switch to the &lt;strong&gt;&amp;lt;+&amp;gt;&lt;/strong&gt; tab and look at the end of the &lt;em&gt;Identifier&lt;/em&gt; field, the UNID is also stored there as an alpha-numeric string:&lt;/p&gt; &lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/36/image_21.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=259 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/36/image_thumb.png" width=304 border=0&gt;&lt;/a&gt; &lt;/p&gt; &lt;p align=left&gt;The portion after the last forward slash is the UNID:&lt;/p&gt; &lt;blockquote&gt; &lt;p align=left&gt;&lt;font size=1&gt;&lt;font face="Courier New"&gt;&lt;font color="#3f72ae"&gt;Notes://LAB3NOTES/86257420007522B9/77B3DCF1F48F935485256B49007DC700/&lt;/font&gt;&lt;font color="#ff0000"&gt;&lt;strong&gt;733DCF3ED9716911862574A600522990&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;font color="#3f72ae"&gt;The Workaround&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;So to test the process I deleted the new contact object for CRusso and manually created a new user account in AD.  I mail-enabled the object and set a legacy SMTP address of &lt;a href="mailto:crusso@nwtraders.com"&gt;crusso@nwtraders.com&lt;/a&gt; to match the Notes account's SMTP address.  Then I manually set the &lt;em&gt;importedFrom &lt;/em&gt;attribute, as well as added the secondary Notes proxy address. (Note that the secondary proxy address for the UNID cannot be entered in ADUC as the format is deemed invalid by the tool, it must be entered in the attribute using a raw editor, like ADSIedit.) I also updated the value in the Company Name field on the Notes Person document to have another piece of information to verify directory synchronization.&lt;/p&gt; &lt;p&gt;After issuing a full immediate reload on the connector I found that the primary NOTES proxy address had been added to the mail-enabled user object and the company field was also updated to reflect the change in the Notes database.  Now any successive manual or scheduled directory synchronization processes will update this object as they have been associated together.&lt;/p&gt; &lt;p&gt;In order to complete this task at a larger scale, you would just need to export the UNID fields and NOTES mail addresses for all in-scope Notes accounts, and then use a CSV or LDIF import to create the new account in the target domain with the required information to set the foundation up for the Connector to link.&lt;/p&gt; &lt;p&gt;It's also important to note that the import Container scope on the Notes Connector is able to see and search the location of any proposed targets for object matching.  If you stamp the required attributes on an account stored in an OU that Connector is not configured to look at, then the matching will not work and the default action will be chosen (Create a Windows Contact object in the import container.)&lt;/p&gt; &lt;p&gt;Of course after I reverse engineered this process I eventually ran across a discussion online that confirmed the behavior I saw: Connector for Lotus Notes Directory Synchronization: &lt;a href="http://blogs.technet.com/collabtools/archive/2006/08/11/446024.aspx" target="_blank"&gt;Part 3 - Frequently Asked Questions&lt;/a&gt;.  &lt;/p&gt; &lt;p&gt;Also, It's probably worth noting that both the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=d9f3a35e-1046-47b5-b09b-bda9de60cd9d&amp;amp;DisplayLang=en" target="_blank"&gt;Notes Connector&lt;/a&gt; and the &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=C14932A1-55F4-4256-AF7E-617639D46024&amp;amp;displaylang=en" target="_blank"&gt;Calendar Connector&lt;/a&gt; were just updated the other day.&lt;/p&gt;&lt;/div&gt;</description><author>Jeff Schertz</author><link>http://blogs.pointbridge.com/Blogs/schertz_jeff/Pages/Post.aspx?_ID=36</link><description /><pubDate>2008-08-19 16:37:54</pubDate></item><item><id>41</id><title>Exchange 2007 and Unified Messaging Retention Policies</title><body>&lt;div class=ExternalClassD27A181E91FD40488503470E4DCA0A04&gt;
&lt;p&gt;By now, most people are used to thinking of e-mail as &amp;quot;discoverable&amp;quot; material for audits; whether the audits are Sarbanes-Oxley, HIPPA, SEC, or any other type of regulatory audit. And most companies that are bound by such regulation, as well as many who choose to self-regulate, have a stated policy about e-mail retention. &lt;/p&gt;
&lt;p&gt;But there is a new twist to auditing and compliance: Voicemail. Historically, voicemail has been a separate appliance with recorded messages stored on the appliance itself and not subjected to the same regulations that e-mail is. I'm no compliance expert, so I can't speak with any real authority on the subject. But I did find &lt;a href="http://www.microsoft.com/exchange/evaluation/unifiedmessaging/dataretentionwp.mspx"&gt;this excellent whitepaper on the MS site&lt;/a&gt; that talks about compliance and voicemail as it relates to Exchange and UM. To get an idea of what good info the whitepaper has, I'll provide an exceprt: &lt;/p&gt;
&lt;p style="background:#eeece1"&gt;&lt;span style="font-family:Times New Roman"&gt;&lt;strong&gt;&lt;em&gt;For the securities industry, the SEC requires regulated companies to retain business-related communications, but it has indicated in a related context that although &amp;quot;blast&amp;quot; voice mail messages are treated as electronic communications, individual voice mail messages are not. &lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;This paper is full of great info that is a must-read for people considering Exchange Unified Messaging or Unified Messaging of any sort. I won't rehash what's already in there, but I did think that it was worth providing some real-world info about how to construct and enforce retention policies for Voicemail with Exchange UM. &lt;/p&gt;
&lt;p&gt;The first step is to take a look at Managed Folders. Here's a screenshot of the Exchange 2007 console and where to find managed folders &lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="/Blogs/mcgillen_matt/PublishingImages/080608_2339_Exchange2001.png"&gt; &lt;/p&gt;
&lt;p&gt;To set a retention policy on the inbox, Right-click on the inbox and choose &amp;quot;New Managed Content Settings&amp;quot; &lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="/Blogs/mcgillen_matt/PublishingImages/080608_2339_Exchange2002.png"&gt; &lt;/p&gt;
&lt;p&gt;When the wizard appears: &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Enter a name such as &amp;quot;VM Retention Policy&amp;quot; &lt;/li&gt;
&lt;li&gt;Choose &amp;quot;VoiceMail&amp;quot; from the drop-down list of message types &lt;/li&gt;
&lt;li&gt;Check the &amp;quot;Length of retention period&amp;quot; box and enter the number of days you want to keep the messages &lt;/li&gt;
&lt;li&gt;Choose when the retention period should start (usually &amp;quot;When Delivered&amp;quot;) &lt;/li&gt;
&lt;li&gt;Choose what to do with the messages once the retention period has ended &lt;/li&gt;&lt;/ol&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="/Blogs/mcgillen_matt/PublishingImages/080608_2339_Exchange2003.png"&gt; &lt;/p&gt;
&lt;p&gt;Click next to continue. &lt;/p&gt;
&lt;p&gt;IF you want to send copies of this type of message somewhere, choose that. &lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="/Blogs/mcgillen_matt/PublishingImages/080608_2339_Exchange2004.png"&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Otherwise, click next. &lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="/Blogs/mcgillen_matt/PublishingImages/080608_2339_Exchange2005.png"&gt; &lt;/p&gt;
&lt;p&gt;Review the settings and click &amp;quot;New&amp;quot;. &lt;/p&gt;
&lt;p&gt;This will apply the new VoiceMail retention setting.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Conclusion:&lt;/em&gt;&lt;/strong&gt; I really highly suggest exploring the Managed Content Settings feature of Exchange. It's a very flexible and powerful new way of handling compliance and archiving issues from within Exchange itself.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;/div&gt;</body><description>&lt;div class=ExternalClassD27A181E91FD40488503470E4DCA0A04&gt;
&lt;p&gt;By now, most people are used to thinking of e-mail as &amp;quot;discoverable&amp;quot; material for audits; whether the audits are Sarbanes-Oxley, HIPPA, SEC, or any other type of regulatory audit. And most companies that are bound by such regulation, as well as many who choose to self-regulate, have a stated policy about e-mail retention. &lt;/p&gt;
&lt;p&gt;But there is a new twist to auditing and compliance: Voicemail. Historically, voicemail has been a separate appliance with recorded messages stored on the appliance itself and not subjected to the same regulations that e-mail is. I'm no compliance expert, so I can't speak with any real authority on the subject. But I did find &lt;a href="http://www.microsoft.com/exchange/evaluation/unifiedmessaging/dataretentionwp.mspx"&gt;this excellent whitepaper on the MS site&lt;/a&gt; that talks about compliance and voicemail as it relates to Exchange and UM. To get an idea of what good info the whitepaper has, I'll provide an exceprt: &lt;/p&gt;
&lt;p style="background:#eeece1"&gt;&lt;span style="font-family:Times New Roman"&gt;&lt;strong&gt;&lt;em&gt;For the securities industry, the SEC requires regulated companies to retain business-related communications, but it has indicated in a related context that although &amp;quot;blast&amp;quot; voice mail messages are treated as electronic communications, individual voice mail messages are not. &lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;This paper is full of great info that is a must-read for people considering Exchange Unified Messaging or Unified Messaging of any sort. I won't rehash what's already in there, but I did think that it was worth providing some real-world info about how to construct and enforce retention policies for Voicemail with Exchange UM. &lt;/p&gt;
&lt;p&gt;The first step is to take a look at Managed Folders. Here's a screenshot of the Exchange 2007 console and where to find managed folders &lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="/Blogs/mcgillen_matt/PublishingImages/080608_2339_Exchange2001.png"&gt; &lt;/p&gt;
&lt;p&gt;To set a retention policy on the inbox, Right-click on the inbox and choose &amp;quot;New Managed Content Settings&amp;quot; &lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="/Blogs/mcgillen_matt/PublishingImages/080608_2339_Exchange2002.png"&gt; &lt;/p&gt;
&lt;p&gt;When the wizard appears: &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Enter a name such as &amp;quot;VM Retention Policy&amp;quot; &lt;/li&gt;
&lt;li&gt;Choose &amp;quot;VoiceMail&amp;quot; from the drop-down list of message types &lt;/li&gt;
&lt;li&gt;Check the &amp;quot;Length of retention period&amp;quot; box and enter the number of days you want to keep the messages &lt;/li&gt;
&lt;li&gt;Choose when the retention period should start (usually &amp;quot;When Delivered&amp;quot;) &lt;/li&gt;
&lt;li&gt;Choose what to do with the messages once the retention period has ended &lt;/li&gt;&lt;/ol&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="/Blogs/mcgillen_matt/PublishingImages/080608_2339_Exchange2003.png"&gt; &lt;/p&gt;
&lt;p&gt;Click next to continue. &lt;/p&gt;
&lt;p&gt;IF you want to send copies of this type of message somewhere, choose that. &lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="/Blogs/mcgillen_matt/PublishingImages/080608_2339_Exchange2004.png"&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Otherwise, click next. &lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="/Blogs/mcgillen_matt/PublishingImages/080608_2339_Exchange2005.png"&gt; &lt;/p&gt;
&lt;p&gt;Review the settings and click &amp;quot;New&amp;quot;. &lt;/p&gt;
&lt;p&gt;This will apply the new VoiceMail retention setting.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Conclusion:&lt;/em&gt;&lt;/strong&gt; I really highly suggest exploring the Managed Content Settings feature of Exchange. It's a very flexible and powerful new way of handling compliance and archiving issues from within Exchange itself.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;/div&gt;</description><author>Matthew McGillen</author><link>http://blogs.pointbridge.com/Blogs/mcgillen_matt/Pages/Post.aspx?_ID=41</link><description /><pubDate>2008-08-06 18:52:00</pubDate></item><item><id>28</id><title>Object Filtering with the Microsoft Notes Connector</title><body>&lt;div class=ExternalClassBCBF425308D04FDBBD826EFA49F75EE3&gt;
&lt;p&gt;Although I might be one of just a few currently working on the bleeding-edge technology of synchronizing Lotus Domino/Notes directories with Microsoft Active Directory via Exchange 2003, I figure I'd share this little tidbit of information.  According to Microsoft Product Support this is not documented anywhere in TechNet and I had to open a ticket just to find this information out.&lt;/p&gt;
&lt;p&gt;After successfully establishing Directory Synchronization with a Notes 6.5 directory, the default behavior of the native Notes Connector is to synchronize &lt;em&gt;every &lt;/em&gt;known object in the Domino directory.  From what I understand this behavior can not be modified for contacts and distribution lists, but it can be controlled for user objects.  In a particular migration I only wanted to bring a certain number of objects into AD and had already narrowed that scope down to a specific list of probably 75% of the total number of people in Notes. I discovered there are two ways to filter out the unwanted objects and have the Notes Connector ignore these: either by setting the Notes Directory to exempt those objects from participation in any foreign directory synchronization, or by configuring the Connector itself to look for a specific attribute match and either filter in what I want, or filter out what I don't.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;&lt;font color="#3f72ae"&gt;Disable Foreign Directory Sync&lt;/font&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;To simply exempt a user from participating in any foreign directory sync, hence making it invisible to the Notes Connector, just edit a specific user in Domino Administrator and on the Administration tab change the value of the &lt;em&gt;&amp;quot;Allow foreign directory synchronization&amp;quot;&lt;/em&gt; setting to &lt;strong&gt;No&lt;/strong&gt;. (Yes, I see the irony in my test Notes Domain name).&lt;/p&gt;
&lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/28/image_2.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=368 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/28/image_thumb.png" width=641 border=0&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p align=left&gt;This first option would have been the easiest to implement, but if the source Notes directory was already synchronizing with other foreign directories (e.g. MIIS), changing that setting could have a negative impact on the source organization's current processes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;font color="#3f72ae"&gt;Attribute Filtering Rules&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Here's a list of Microsoft TechNet articles which cover how to configure the Notes Connector to either include or exclude objects by specific attribute matching rules.  The main problem is take a look at the dates and applicable products; most reference Exchange 5.5 and are dated far older than anything I have in my refrigerator. My contact at MS Product Support said that these articles still apply to the current version of the Connector for Exchange 2003, but I was unable to get any kind of filtering to work correctly.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://support.microsoft.com/kb/245223"&gt;XFOR: Filter Rules for Lotus Notes and Exchange Server Directory Synchronization&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://support.microsoft.com/kb/249113"&gt;Exchange Connector for Lotus Notes extracts filter rule incorrectly&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://support.microsoft.com/kb/241324/EN-US/" target="_blank"&gt;XFOR: DocErr: Filter Rules Only Support EQ and NE Operators&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;After a number of unsuccessful attempts to filter out any objects I noticed a line in the first article that stated to &amp;quot;modify the Exchconn.ini file located in the &lt;u&gt;Exchsrvr\Connect\Exchconn&lt;/u&gt; folder&amp;quot; but the problem was this file did not exist on the Exchange server were I installed the Connector.  I previously found that the there were two instances of that exchconn.ini file, one located in the &lt;u&gt;Exchsrvr\bin&lt;/u&gt; folder and another in &lt;u&gt;Exchsrvr\conndata\tables&lt;/u&gt;.  When I added a filtering rule as per the instructions to either file, it would not work.  I even experimented with moving a duplicate of the INI file into the path referenced above by the article but still no luck.&lt;/p&gt;
&lt;p&gt;After triple-checking everything I ended up contacting MS Product Support as I could not find any further documentation on the functionality of this feature.  After I walked through the entire configuration with someone from the mail connector team we decided that everything was correct and it 'should' have worked.  After he did some research on his end he can back and found that the same behavior can also be configured via the registry and not just the INI file.  As a test I reverted the INI file to it's original configuration, made one simple change to the registry, and voila; it worked as expected.  I had set a filter to match only for objects which had a &lt;em&gt;CompanyName &lt;/em&gt;field equal to &amp;quot;Sync&amp;quot; and had previously entered that string into the Company field in roughly half of the Notes people in the directory.  All previous tests created a new object in AD for &lt;strong&gt;&lt;em&gt;all &lt;/em&gt;&lt;/strong&gt;Notes people after an &lt;strong&gt;Immediate Full Reload &lt;/strong&gt;from Notes to Exchange, but this time only the people with their Company set to &amp;quot;Sync&amp;quot; were created in AD. Success.&lt;/p&gt;
&lt;p&gt;After a little more testing we decided that the INI file settings &lt;em&gt;should &lt;/em&gt;have worked, but filtering was now working as expected via the registry change, so that was good enough for me.  &lt;/p&gt;
&lt;p&gt;Here is the setting required to enable object filtering via attribute matching in the registry:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font face="Courier New" color="#3f72ae" size=1&gt;Location:    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LME-NOTES\Parameters&lt;br&gt;Name:        DXANOTES_&lt;em&gt;&lt;font color="#ff0000"&gt;&amp;lt;UniqueFilterName&amp;gt;&lt;/font&gt;&lt;br&gt;&lt;/em&gt;Value:       &lt;em&gt;&lt;font color="#ff0000"&gt;&amp;lt;NotesFieldName&amp;gt;&lt;/font&gt;&lt;/em&gt;,EQ,&lt;em&gt;&lt;font color="#ff0000"&gt;&amp;lt;FieldData&amp;gt;&lt;/font&gt;&lt;/em&gt;&lt;br&gt;Type:        REG_SZ&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;em&gt;&amp;lt;UniqueFilterName&amp;gt;&lt;/em&gt; can be any text string as long as it is unique, it is only used to identify the filter entry.  I know you can have multiple filters but I have not experimented with how the order may be applied in the case of any conflicts.  The suggested naming scheme of Filter1, Filter2, etc in the documentation leads me to believe it might be top-down alphabetical, but that is just a guess.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;lt;NotesFieldName&amp;gt; &lt;/em&gt;can be any valid field name in the Notes directory, regardless as to how the Connector is configured.  Even if an attribute value is not being migrated or matched via the Connector configuration it still can be used for filtering as the connector looks at the Notes objects data and searches for the field name supplied, and then attempts to match the value to the filter string.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;EQ &lt;/em&gt;means to only include objects that match this rule (as in &lt;em&gt;&lt;u&gt;Eq&lt;/u&gt;ual&lt;/em&gt;) , and &lt;em&gt;NE &lt;/em&gt;means to exclude any matches (as in &lt;em&gt;&lt;u&gt;N&lt;/u&gt;ot &lt;u&gt;E&lt;/u&gt;qual&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;lt;FieldData&amp;gt; &lt;/em&gt;should include the actual string begin searched for in the Notes directory.&lt;/p&gt;
&lt;p&gt;Below is a specific example of the registry setting in action:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font face="Courier New" color="#3f72ae" size=1&gt;Location:    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LME-NOTES\Parameters&lt;br&gt;Name:        DXANOTES_&lt;strong&gt;Filter1&lt;/strong&gt;&lt;br&gt;Value:       &lt;strong&gt;CompanyName&lt;/strong&gt;,EQ,Sync&lt;br&gt;Type:        REG_SZ&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Clearly using a common attribute like &lt;em&gt;CompanyName&lt;/em&gt; would not be a good idea for controlling the scope of directory synchronization as if any administrators changed that value on any objects then some users would stop synching and other unwanted accounts might appear in AD.  I poked around in the Notes directory to look for a better field selection: one that was both unpopulated and hidden from the standard Notes Administrator view.&lt;/p&gt;
&lt;p&gt;To take a look at the field names in Notes, right-click and choose Document Properties on a Notes User in the Domino Administrator.  Select the second tab (with the icon of the right-triangle) and scroll down the list to view fields and values.  I chose the inconspicuous &lt;strong&gt;&lt;em&gt;carLicense&lt;/em&gt;&lt;/strong&gt; field as it was not being used for storing any information and it's not visible (nor modifiable) in the user's properties.&lt;/p&gt;
&lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/28/image_6.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=212 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/28/image_thumb_2.png" width=310 border=0&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;In order to test using this field I needed to add a value to it.  The simplest way I've found was to create an Agent in the domino Administrator to stamp (And another to null) the desired string.  From the Domino Administrator, do the following on the &lt;em&gt;People &amp;amp; Groups&lt;/em&gt; tab.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Select &lt;strong&gt;Create &lt;/strong&gt;&amp;gt; &lt;strong&gt;Agent...&lt;/strong&gt; 
&lt;li&gt;Enter any descriptive name, like &amp;quot;Set carLicense field to Sync&amp;quot;. 
&lt;li&gt;Close that properties window and then select &lt;strong&gt;Formula &lt;/strong&gt;from the actions drop-down menu. 
&lt;li&gt;Insert the cursor in the blank-window and add the following text:&lt;/li&gt;&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;field&lt;/font&gt; carLicense := &lt;font color="#ff00ff"&gt;&amp;quot;Sync&amp;quot;&lt;/font&gt;&lt;br&gt;&lt;font color="#0000ff"&gt;select @All&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Save the changes and close the current tab.  Now select any people in the directory by highlighting or ticking the checkmark, and then choose the new agent in from the &lt;strong&gt;Actions &lt;/strong&gt;menu.  Afterwards look at the document properties for a selected user and verify the field has been correctly populated.&lt;/p&gt;
&lt;p&gt;I then created a second agent to reverse the change to that field.  Just perform the same steps as above but select a unique name for the agent, but change the &lt;font color="#ff00ff"&gt;&amp;quot;Sync&amp;quot;&lt;/font&gt; to simply &lt;font color="#ff00ff"&gt;&amp;quot;&amp;quot;&lt;/font&gt; and the field value will be removed when executing this agent.&lt;/p&gt;
&lt;p&gt;In order to update the Notes Connector to now use this field and string for filtering, the DXANOTES registry setting was modified.&lt;/p&gt;
&lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/28/image_4.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=157 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/28/image_thumb_1.png" width=737 border=0&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;The end result is a clean, definitive way to control the exact scope of user objects to be synchronized from Notes into Exchange.  Too bad the same can't be performed on groups and contacts, but the useful life of the Notes Connector for Exchange 2003 is ticking down.  As more and more migrations will target Exchange 2007, the more flexible Transporter can be used.&lt;/p&gt;&lt;/div&gt;</body><description>&lt;div class=ExternalClassBCBF425308D04FDBBD826EFA49F75EE3&gt;
&lt;p&gt;Although I might be one of just a few currently working on the bleeding-edge technology of synchronizing Lotus Domino/Notes directories with Microsoft Active Directory via Exchange 2003, I figure I'd share this little tidbit of information.  According to Microsoft Product Support this is not documented anywhere in TechNet and I had to open a ticket just to find this information out.&lt;/p&gt;
&lt;p&gt;After successfully establishing Directory Synchronization with a Notes 6.5 directory, the default behavior of the native Notes Connector is to synchronize &lt;em&gt;every &lt;/em&gt;known object in the Domino directory.  From what I understand this behavior can not be modified for contacts and distribution lists, but it can be controlled for user objects.  In a particular migration I only wanted to bring a certain number of objects into AD and had already narrowed that scope down to a specific list of probably 75% of the total number of people in Notes. I discovered there are two ways to filter out the unwanted objects and have the Notes Connector ignore these: either by setting the Notes Directory to exempt those objects from participation in any foreign directory synchronization, or by configuring the Connector itself to look for a specific attribute match and either filter in what I want, or filter out what I don't.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;&lt;font color="#3f72ae"&gt;Disable Foreign Directory Sync&lt;/font&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;To simply exempt a user from participating in any foreign directory sync, hence making it invisible to the Notes Connector, just edit a specific user in Domino Administrator and on the Administration tab change the value of the &lt;em&gt;&amp;quot;Allow foreign directory synchronization&amp;quot;&lt;/em&gt; setting to &lt;strong&gt;No&lt;/strong&gt;. (Yes, I see the irony in my test Notes Domain name).&lt;/p&gt;
&lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/28/image_2.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=368 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/28/image_thumb.png" width=641 border=0&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p align=left&gt;This first option would have been the easiest to implement, but if the source Notes directory was already synchronizing with other foreign directories (e.g. MIIS), changing that setting could have a negative impact on the source organization's current processes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;font color="#3f72ae"&gt;Attribute Filtering Rules&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Here's a list of Microsoft TechNet articles which cover how to configure the Notes Connector to either include or exclude objects by specific attribute matching rules.  The main problem is take a look at the dates and applicable products; most reference Exchange 5.5 and are dated far older than anything I have in my refrigerator. My contact at MS Product Support said that these articles still apply to the current version of the Connector for Exchange 2003, but I was unable to get any kind of filtering to work correctly.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://support.microsoft.com/kb/245223"&gt;XFOR: Filter Rules for Lotus Notes and Exchange Server Directory Synchronization&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://support.microsoft.com/kb/249113"&gt;Exchange Connector for Lotus Notes extracts filter rule incorrectly&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://support.microsoft.com/kb/241324/EN-US/" target="_blank"&gt;XFOR: DocErr: Filter Rules Only Support EQ and NE Operators&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;After a number of unsuccessful attempts to filter out any objects I noticed a line in the first article that stated to &amp;quot;modify the Exchconn.ini file located in the &lt;u&gt;Exchsrvr\Connect\Exchconn&lt;/u&gt; folder&amp;quot; but the problem was this file did not exist on the Exchange server were I installed the Connector.  I previously found that the there were two instances of that exchconn.ini file, one located in the &lt;u&gt;Exchsrvr\bin&lt;/u&gt; folder and another in &lt;u&gt;Exchsrvr\conndata\tables&lt;/u&gt;.  When I added a filtering rule as per the instructions to either file, it would not work.  I even experimented with moving a duplicate of the INI file into the path referenced above by the article but still no luck.&lt;/p&gt;
&lt;p&gt;After triple-checking everything I ended up contacting MS Product Support as I could not find any further documentation on the functionality of this feature.  After I walked through the entire configuration with someone from the mail connector team we decided that everything was correct and it 'should' have worked.  After he did some research on his end he can back and found that the same behavior can also be configured via the registry and not just the INI file.  As a test I reverted the INI file to it's original configuration, made one simple change to the registry, and voila; it worked as expected.  I had set a filter to match only for objects which had a &lt;em&gt;CompanyName &lt;/em&gt;field equal to &amp;quot;Sync&amp;quot; and had previously entered that string into the Company field in roughly half of the Notes people in the directory.  All previous tests created a new object in AD for &lt;strong&gt;&lt;em&gt;all &lt;/em&gt;&lt;/strong&gt;Notes people after an &lt;strong&gt;Immediate Full Reload &lt;/strong&gt;from Notes to Exchange, but this time only the people with their Company set to &amp;quot;Sync&amp;quot; were created in AD. Success.&lt;/p&gt;
&lt;p&gt;After a little more testing we decided that the INI file settings &lt;em&gt;should &lt;/em&gt;have worked, but filtering was now working as expected via the registry change, so that was good enough for me.  &lt;/p&gt;
&lt;p&gt;Here is the setting required to enable object filtering via attribute matching in the registry:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font face="Courier New" color="#3f72ae" size=1&gt;Location:    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LME-NOTES\Parameters&lt;br&gt;Name:        DXANOTES_&lt;em&gt;&lt;font color="#ff0000"&gt;&amp;lt;UniqueFilterName&amp;gt;&lt;/font&gt;&lt;br&gt;&lt;/em&gt;Value:       &lt;em&gt;&lt;font color="#ff0000"&gt;&amp;lt;NotesFieldName&amp;gt;&lt;/font&gt;&lt;/em&gt;,EQ,&lt;em&gt;&lt;font color="#ff0000"&gt;&amp;lt;FieldData&amp;gt;&lt;/font&gt;&lt;/em&gt;&lt;br&gt;Type:        REG_SZ&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;em&gt;&amp;lt;UniqueFilterName&amp;gt;&lt;/em&gt; can be any text string as long as it is unique, it is only used to identify the filter entry.  I know you can have multiple filters but I have not experimented with how the order may be applied in the case of any conflicts.  The suggested naming scheme of Filter1, Filter2, etc in the documentation leads me to believe it might be top-down alphabetical, but that is just a guess.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;lt;NotesFieldName&amp;gt; &lt;/em&gt;can be any valid field name in the Notes directory, regardless as to how the Connector is configured.  Even if an attribute value is not being migrated or matched via the Connector configuration it still can be used for filtering as the connector looks at the Notes objects data and searches for the field name supplied, and then attempts to match the value to the filter string.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;EQ &lt;/em&gt;means to only include objects that match this rule (as in &lt;em&gt;&lt;u&gt;Eq&lt;/u&gt;ual&lt;/em&gt;) , and &lt;em&gt;NE &lt;/em&gt;means to exclude any matches (as in &lt;em&gt;&lt;u&gt;N&lt;/u&gt;ot &lt;u&gt;E&lt;/u&gt;qual&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;lt;FieldData&amp;gt; &lt;/em&gt;should include the actual string begin searched for in the Notes directory.&lt;/p&gt;
&lt;p&gt;Below is a specific example of the registry setting in action:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font face="Courier New" color="#3f72ae" size=1&gt;Location:    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LME-NOTES\Parameters&lt;br&gt;Name:        DXANOTES_&lt;strong&gt;Filter1&lt;/strong&gt;&lt;br&gt;Value:       &lt;strong&gt;CompanyName&lt;/strong&gt;,EQ,Sync&lt;br&gt;Type:        REG_SZ&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Clearly using a common attribute like &lt;em&gt;CompanyName&lt;/em&gt; would not be a good idea for controlling the scope of directory synchronization as if any administrators changed that value on any objects then some users would stop synching and other unwanted accounts might appear in AD.  I poked around in the Notes directory to look for a better field selection: one that was both unpopulated and hidden from the standard Notes Administrator view.&lt;/p&gt;
&lt;p&gt;To take a look at the field names in Notes, right-click and choose Document Properties on a Notes User in the Domino Administrator.  Select the second tab (with the icon of the right-triangle) and scroll down the list to view fields and values.  I chose the inconspicuous &lt;strong&gt;&lt;em&gt;carLicense&lt;/em&gt;&lt;/strong&gt; field as it was not being used for storing any information and it's not visible (nor modifiable) in the user's properties.&lt;/p&gt;
&lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/28/image_6.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=212 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/28/image_thumb_2.png" width=310 border=0&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;In order to test using this field I needed to add a value to it.  The simplest way I've found was to create an Agent in the domino Administrator to stamp (And another to null) the desired string.  From the Domino Administrator, do the following on the &lt;em&gt;People &amp;amp; Groups&lt;/em&gt; tab.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Select &lt;strong&gt;Create &lt;/strong&gt;&amp;gt; &lt;strong&gt;Agent...&lt;/strong&gt; 
&lt;li&gt;Enter any descriptive name, like &amp;quot;Set carLicense field to Sync&amp;quot;. 
&lt;li&gt;Close that properties window and then select &lt;strong&gt;Formula &lt;/strong&gt;from the actions drop-down menu. 
&lt;li&gt;Insert the cursor in the blank-window and add the following text:&lt;/li&gt;&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;field&lt;/font&gt; carLicense := &lt;font color="#ff00ff"&gt;&amp;quot;Sync&amp;quot;&lt;/font&gt;&lt;br&gt;&lt;font color="#0000ff"&gt;select @All&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Save the changes and close the current tab.  Now select any people in the directory by highlighting or ticking the checkmark, and then choose the new agent in from the &lt;strong&gt;Actions &lt;/strong&gt;menu.  Afterwards look at the document properties for a selected user and verify the field has been correctly populated.&lt;/p&gt;
&lt;p&gt;I then created a second agent to reverse the change to that field.  Just perform the same steps as above but select a unique name for the agent, but change the &lt;font color="#ff00ff"&gt;&amp;quot;Sync&amp;quot;&lt;/font&gt; to simply &lt;font color="#ff00ff"&gt;&amp;quot;&amp;quot;&lt;/font&gt; and the field value will be removed when executing this agent.&lt;/p&gt;
&lt;p&gt;In order to update the Notes Connector to now use this field and string for filtering, the DXANOTES registry setting was modified.&lt;/p&gt;
&lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/28/image_4.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=157 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/28/image_thumb_1.png" width=737 border=0&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;The end result is a clean, definitive way to control the exact scope of user objects to be synchronized from Notes into Exchange.  Too bad the same can't be performed on groups and contacts, but the useful life of the Notes Connector for Exchange 2003 is ticking down.  As more and more migrations will target Exchange 2007, the more flexible Transporter can be used.&lt;/p&gt;&lt;/div&gt;</description><author>Jeff Schertz</author><link>http://blogs.pointbridge.com/Blogs/schertz_jeff/Pages/Post.aspx?_ID=28</link><description /><pubDate>2008-05-22 12:04:00</pubDate></item><item><id>27</id><title>Converting a Mail-Enabled User into Mailbox-Enabled</title><body>&lt;div class=ExternalClassAAC69530F90A43FF948171D64251AB62&gt;
&lt;p&gt;I recently needed to create few thousand mail-enabled users in Active Directory for a project in which the original plan was to use a third-party mail migration product to later mailbox-enable and then migrate data in from another directory.  But as plans changed I found that we were going to need to manually convert a good number of these objects into mailbox-enabled accounts.  At the time I thought, &amp;quot;No problem, I'll just filter out the specific users and select the Exchange Task to Create a New Mailbox.  Well, I was surprised to notice that is not an option in the Exchange System Manager for Exchange 2003; I guess I've never needed to do that before.  Some searching through TechNet articles and discussion forums led me to believe that it was not possible to do this, and the recommended solution was to execute the Exchange task to remove the email addresses and then run the task to create a new mailbox. I didn't like that idea very much, as not only is that a pain to do for hundreds of users, I'd have to export and re-import the current attributes as some changes had been made since originally creating those user accounts.  For example, I had added a middle initial to all the accounts via an LDIF import &lt;em&gt;after &lt;/em&gt;they were already mail-enabled, so that would cause the RUS to stamp different X400 address if it was run again on newly enabled objects.  Because I already had all the attributes the way we needed them, I figured there had to be a way to retain the existing account state and force a conversion into mailbox-enabled status.&lt;/p&gt;
&lt;p&gt;There are already some of good articles out there outlining the differences between a &lt;strong&gt;mail-enabled&lt;/strong&gt; and a &lt;strong&gt;mail&lt;em&gt;&lt;u&gt;box&lt;/u&gt;&lt;/em&gt;-enabled&lt;/strong&gt; object in AD, like this &lt;a href="http://www.msexchange.org/tutorials/Understanding-Mailbox-Enabled-Mail-Enabled-Recipients.html" target="_blank"&gt;one from MSExchange.org&lt;/a&gt;, but I was looking for even more detail regarding the stamping of attributes and exactly what Exchange does to determine the difference, so I started working backwards in my lab and it turned out to actually be pretty simple.  If we modify just the right attributes, then the RUS will do the rest of the work for us.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;font color="#3f72ae"&gt;The Process&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Although these steps are unnecessary for the solution, I'm going to start out with reviewing how to increase diagnostic logging so that we can watch Application events and follow along with the RUS while it locates and stamps the attributes we desire.&lt;/p&gt;
&lt;p&gt;First, we need to find out which Exchange Server is currently running the RUS for the specific domain in which we will be working. Also make note of the associated domain controller so that we can look for the changes immediately and not have to wait on, or force any AD replication.  &lt;em&gt;In this lab there is only a single domain controller (LAB2DC) and a single Exchange 2003 server (LAB2EXCH).&lt;/em&gt;&lt;/p&gt;
&lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/27/image_2.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;border-top:0px;border-right:0px" border=0 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/27/image_thumb.png" width=860 height=179&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Then on the Exchange server (LAB2EXCH) we want to turn up diagnostic logging for a couple categories: &lt;/p&gt;
&lt;table border=1 cellspacing=0 cellpadding=2 width=600&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=top width=152&gt;&lt;strong&gt;Service&lt;/strong&gt;&lt;/td&gt;
&lt;td valign=top width=248&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;td valign=top width=198&gt;&lt;strong&gt;Logging Level&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=top width=155&gt;MSExchangeAL&lt;/td&gt;
&lt;td valign=top width=247&gt;Address List Synchronization&lt;/td&gt;
&lt;td valign=top width=196&gt;Maximum&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=top width=158&gt;MSExchangeSA&lt;/td&gt;
&lt;td valign=top width=246&gt;Proxy Generation&lt;/td&gt;
&lt;td valign=top width=196&gt;Maximum&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Create a new user account in Active Directory, but do not create an Exchange mailbox.  After the wizard is completed select the new object and choose &lt;strong&gt;Exchange Tasks &lt;/strong&gt;and select &lt;strong&gt;Establish an E-mail Address&lt;/strong&gt;.  Add a new SMTP address for a foreign domain for this user.  After a few minutes have passed, open the Application Event Log on the same Exchange server and look for event ID 3006 to appear, which shows what proxy addresses were added to the object:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font color="#3f72ae" size=1 face="Courier New"&gt;Event Type:      Information&lt;br&gt;Event Source:    MSExchangeSA&lt;br&gt;Event Category:  Proxy Generation &lt;br&gt;Event ID:        3006 &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#3f72ae" size=1 face="Courier New"&gt;Description: &lt;br&gt;&lt;/font&gt;&lt;font color="#3f72ae" size=1 face="Courier New"&gt;Policy provider instance processing recipient. &lt;br&gt;Recipient DN: CN=Mucci\, Tony,OU=Users,OU=Contoso Corp,DC=contoso,DC=com &lt;br&gt;Current recipient proxies:  &lt;br&gt;Applicable policies: &lt;br&gt;    CN=Default Policy,CN=Recipient Policies,CN=Contoso,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=contoso,DC=com &lt;br&gt;Chosen policy: CN=Default Policy,CN=Recipient Policies,CN=Contoso,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=contoso,DC=com &lt;br&gt;Proxies of chosen policy: &lt;br&gt;    X400:c=US;a= ;p=Contoso;o=Exchange;&lt;br&gt;    SMTP:@contoso.com &lt;br&gt;Proxies in change list:  &lt;br&gt;Proxies to generate: &lt;br&gt;    X400:c=US;a= ;p=Contoso;o=Exchange;&lt;br&gt;    SMTP:@contoso.com &lt;br&gt;Conflicts during generation:  &lt;br&gt;Proxies generated: &lt;br&gt;    X400:c=US;a= ;p=Contoso;o=Exchange;s=Mucci;g=Tony;&lt;br&gt;    SMTP:tony@nwtraders.com &lt;br&gt;Proxies written to recipient: &lt;br&gt;    X400:c=US;a= ;p=Contoso;o=Exchange;s=Mucci;g=Tony;&lt;br&gt;    SMTP:tony@nwtraders.com&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The &lt;em&gt;Address List Synchronization &lt;/em&gt;events which immediately follow that event detail the steps that the RUS is taking to identify the type of objects (Mail-Enabled or Mailbox-Enabled) so that it properly stamps the required missing attributes.  Take a minute to read through each of those events.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/27/image_6.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;border-top:0px;border-right:0px" border=0 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/27/image_thumb_2.png" width=597 height=202&gt;&lt;/a&gt; &lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;In this case the object was determined to be Mail-Enabled as denoted by event 8130:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font color="#3f72ae" size=1 face="Courier New"&gt;Event Type:      Information&lt;br&gt;Event Source:    MSExchangeAL&lt;br&gt;Event Category:  Address List Synchronization &lt;br&gt;Event ID:        8130&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#3f72ae" size=1 face="Courier New"&gt;Description:&lt;br&gt;'CN=&lt;font color="#ff0000"&gt;Mail Enable Recipient&lt;/font&gt;,CN=System Policies,CN=Contoso,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=contoso,DC=com' added to 'CN=Mucci\, Tony,OU=Users,OU=Contoso Corp,DC=contoso,DC=com'. DC=contoso,DC=com&lt;/font&gt; &lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;As documented in Microsoft TechNet article &lt;a href="http://support.microsoft.com/kb/253838" target="_blank"&gt;253838&lt;/a&gt;, if the Recipient Update Service determines that an object contains a populated &lt;em&gt;mailNickName &lt;/em&gt;attribute, then the RUS checks additional attributes to determine if the object is mail-enabled or mailbox-enabled.  The trigger is if &lt;em&gt;any &lt;/em&gt;of these three attributes are populated (&lt;em&gt;msExchHomeServerName&lt;/em&gt;, &lt;em&gt;homeMDB&lt;/em&gt;, or &lt;em&gt;homeMTA&lt;/em&gt;) then the object is treated as mailbox-enabled, but if they are all blank (but &lt;em&gt;mailNickName&lt;/em&gt; is still populated) then it is mail-enabled, and the RUS will attempt to fill in all the other attributes associated with the chosen type. 
&lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;font color="#3f72ae"&gt;The Solution&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt; 
&lt;p&gt;Following that logic, and some trial-and-error, I determined that I only needed to make two simple changes to a mail-enabled account in order to allow the Recipient Update Service to then see the modified object as mailbox-enabled: &lt;u&gt;add a value to the &lt;em&gt;homeMDB &lt;/em&gt;attribute, and then erase the value of the &lt;em&gt;targetAddress &lt;/em&gt;attribute&lt;/u&gt;. 
&lt;p&gt;Since the &lt;em&gt;homeMDB&lt;/em&gt; attribute is the most specific of the three requirements for a mailbox-enabled account, the RUS will automatically populate the other two with the correct values, as well as adding the &lt;em&gt;msExchMailboxGUID &lt;/em&gt;and all of the other required attributes.  Although it is technically possible to set a value for the &lt;em&gt;targetAddress &lt;/em&gt;attribute on a mailbox-enabled account later (for contact-less forwarding), if that attribute is not null at the time the RUS checks it then the object is still treated as mail-enabled. 
&lt;p&gt;So let's use ADSIedit to modify those two attributes.  First locate an existing mailbox-enabled user account in the same mailbox store as we want this user to be stored in, and copy the &lt;em&gt;homeMDB&lt;/em&gt; attribute value: 
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/27/image_8.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;border-top:0px;border-right:0px" border=0 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/27/image_thumb_3.png" width=414 height=140&gt;&lt;/a&gt; &lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font color="#3f72ae" size=1 face="Courier New"&gt;CN=Mailbox Store (LAB2EXCH),CN=First Storage Group,CN=InformationStore,CN=LAB2EXCH,CN=Servers,CN=First Administrative Group,CN=Administrative Groups,CN=Contoso,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=contoso,DC=com&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Paste the string into the &lt;em&gt;homeMDB &lt;/em&gt;attribute on our new user account, and then clear the &lt;em&gt;targetAddress &lt;/em&gt;attribute value. After a few minutes check the Application log again for the associated event ID 3006, and then find the next occurrence of ID 8130: 
&lt;blockquote&gt;
&lt;p&gt;&lt;font color="#3f72ae" size=1 face="Courier New"&gt;Event Type:      Information&lt;br&gt;Event Source:    MSExchangeAL&lt;br&gt;Event Category:  Address List Synchronization &lt;br&gt;Event ID:        8130&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#3f72ae" size=1 face="Courier New"&gt;Description:&lt;br&gt;'CN=&lt;font color="#ff0000"&gt;Mailbox Enable User&lt;/font&gt;,CN=System Policies,CN=Contoso,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=contoso,DC=com' added to 'CN=Mucci\, Tony,OU=Users,OU=Contoso Corp,DC=contoso,DC=com'. DC=contoso,DC=com&lt;/font&gt; &lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;We can see that the RUS has now identified our user as mailbox-enabled and if we look at the account's attributes we'll find all of the other required attributes are populated: 
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/27/image_14.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;border-top:0px;border-right:0px" border=0 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/27/image_thumb_6.png" width=380 height=139&gt;&lt;/a&gt; &lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;font color="#3f72ae"&gt;Scripting Bulk Changes&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt; 
&lt;p&gt;Since we now know what to change, it's simple to create an LDIF import file to make these changes to many accounts in bulk.  This also lets us decide which mailbox store each account should be assigned to, so using a CSVDE export and Excel it would be pretty simple to create a working spreadsheet to list our object's current &lt;em&gt;DN &lt;/em&gt;and desired &lt;em&gt;homeMDB &lt;/em&gt;values.  Using my &lt;a href="/Blogs/seaman_derek/Pages/Post.aspx?_ID=5" target="_blank"&gt;colleague Derek's blog&lt;/a&gt; on how to convert CSV files to LDIF format we should end up with a single import file that would convert any number of mail-enabled users into mailbox-enabled.&lt;/p&gt;
&lt;p&gt;The LDIFDE import file would look something like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font color="#3f72ae" size=1 face="Courier New"&gt;dn: CN=Mucci\, Tony,OU=Users,OU=Contoso Corp,DC=contoso,DC=com &lt;br&gt;changetype: modify&lt;br&gt;replace: homeMTA&lt;br&gt;homeMTA: &lt;font color="#3f72ae" size=1 face="Courier New"&gt;CN=Mailbox Store (LAB2EXCH),CN=First Storage Group,CN=InformationStore,CN=LAB2EXCH,CN=Servers,CN=First Administrative Group,CN=Administrative Groups,CN=Contoso,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=contoso,DC=com&lt;/font&gt;&lt;br&gt;-&lt;br&gt;delete: targetAddress&lt;br&gt;-&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;One final note is that since a mail-enabled object should have a foreign SMTP address while a mailbox-enabled object would typically require an Exchange-owned SMTP address, we'd probably want to stamp a new primary SMTP address depending on the specific scenario.  This can easily be accomplished via another LDIF import to modify the &lt;em&gt;proxyAddresses &lt;/em&gt;and &lt;em&gt;mail &lt;/em&gt;attributes, or using a tool like ADModify.NET. 
&lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;font color="#3f72ae"&gt;Does this work in Exchange 2007?&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt; 
&lt;p&gt;In a native Exchange 2007 organization the RUS has been eliminated, so I started to poke around in my 2007 lab to see how this process might differ, or if it is even at all possible.  The biggest difference is how Exchange 2003 determines an objects 'mail type' by looking at a range of attributes and their values (or if they even have any), while Exchange 2007 actually has some new attributes which are used to define the objects type.  More can be read on these new attributes in this &lt;a href="http://blogs.technet.com/benw/archive/2007/04/05/exchange-2007-and-recipient-type-details.aspx" target="_blank"&gt;TechNet blog by BenW&lt;/a&gt;.  I hacked around with a similar approach, but Exchange would continually bark at me about not liking the object type when attempted to mailbox-enable via a cmdlet or the console. 
&lt;p&gt;I'm going to keep exploring and researching this to see if it's even possible to perform the same 'trick' in Exchange 2007, or if it ends up being more work than just simply exporting the attributes, mail-disabling the objects, and then re-importing the desired attributes back in.  But that's for another day... &lt;/p&gt;&lt;/div&gt;</body><description>&lt;div class=ExternalClassAAC69530F90A43FF948171D64251AB62&gt;
&lt;p&gt;I recently needed to create few thousand mail-enabled users in Active Directory for a project in which the original plan was to use a third-party mail migration product to later mailbox-enable and then migrate data in from another directory.  But as plans changed I found that we were going to need to manually convert a good number of these objects into mailbox-enabled accounts.  At the time I thought, &amp;quot;No problem, I'll just filter out the specific users and select the Exchange Task to Create a New Mailbox.  Well, I was surprised to notice that is not an option in the Exchange System Manager for Exchange 2003; I guess I've never needed to do that before.  Some searching through TechNet articles and discussion forums led me to believe that it was not possible to do this, and the recommended solution was to execute the Exchange task to remove the email addresses and then run the task to create a new mailbox. I didn't like that idea very much, as not only is that a pain to do for hundreds of users, I'd have to export and re-import the current attributes as some changes had been made since originally creating those user accounts.  For example, I had added a middle initial to all the accounts via an LDIF import &lt;em&gt;after &lt;/em&gt;they were already mail-enabled, so that would cause the RUS to stamp different X400 address if it was run again on newly enabled objects.  Because I already had all the attributes the way we needed them, I figured there had to be a way to retain the existing account state and force a conversion into mailbox-enabled status.&lt;/p&gt;
&lt;p&gt;There are already some of good articles out there outlining the differences between a &lt;strong&gt;mail-enabled&lt;/strong&gt; and a &lt;strong&gt;mail&lt;em&gt;&lt;u&gt;box&lt;/u&gt;&lt;/em&gt;-enabled&lt;/strong&gt; object in AD, like this &lt;a href="http://www.msexchange.org/tutorials/Understanding-Mailbox-Enabled-Mail-Enabled-Recipients.html" target="_blank"&gt;one from MSExchange.org&lt;/a&gt;, but I was looking for even more detail regarding the stamping of attributes and exactly what Exchange does to determine the difference, so I started working backwards in my lab and it turned out to actually be pretty simple.  If we modify just the right attributes, then the RUS will do the rest of the work for us.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;font color="#3f72ae"&gt;The Process&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Although these steps are unnecessary for the solution, I'm going to start out with reviewing how to increase diagnostic logging so that we can watch Application events and follow along with the RUS while it locates and stamps the attributes we desire.&lt;/p&gt;
&lt;p&gt;First, we need to find out which Exchange Server is currently running the RUS for the specific domain in which we will be working. Also make note of the associated domain controller so that we can look for the changes immediately and not have to wait on, or force any AD replication.  &lt;em&gt;In this lab there is only a single domain controller (LAB2DC) and a single Exchange 2003 server (LAB2EXCH).&lt;/em&gt;&lt;/p&gt;
&lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/27/image_2.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;border-top:0px;border-right:0px" border=0 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/27/image_thumb.png" width=860 height=179&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Then on the Exchange server (LAB2EXCH) we want to turn up diagnostic logging for a couple categories: &lt;/p&gt;
&lt;table border=1 cellspacing=0 cellpadding=2 width=600&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=top width=152&gt;&lt;strong&gt;Service&lt;/strong&gt;&lt;/td&gt;
&lt;td valign=top width=248&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;td valign=top width=198&gt;&lt;strong&gt;Logging Level&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=top width=155&gt;MSExchangeAL&lt;/td&gt;
&lt;td valign=top width=247&gt;Address List Synchronization&lt;/td&gt;
&lt;td valign=top width=196&gt;Maximum&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=top width=158&gt;MSExchangeSA&lt;/td&gt;
&lt;td valign=top width=246&gt;Proxy Generation&lt;/td&gt;
&lt;td valign=top width=196&gt;Maximum&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Create a new user account in Active Directory, but do not create an Exchange mailbox.  After the wizard is completed select the new object and choose &lt;strong&gt;Exchange Tasks &lt;/strong&gt;and select &lt;strong&gt;Establish an E-mail Address&lt;/strong&gt;.  Add a new SMTP address for a foreign domain for this user.  After a few minutes have passed, open the Application Event Log on the same Exchange server and look for event ID 3006 to appear, which shows what proxy addresses were added to the object:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font color="#3f72ae" size=1 face="Courier New"&gt;Event Type:      Information&lt;br&gt;Event Source:    MSExchangeSA&lt;br&gt;Event Category:  Proxy Generation &lt;br&gt;Event ID:        3006 &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#3f72ae" size=1 face="Courier New"&gt;Description: &lt;br&gt;&lt;/font&gt;&lt;font color="#3f72ae" size=1 face="Courier New"&gt;Policy provider instance processing recipient. &lt;br&gt;Recipient DN: CN=Mucci\, Tony,OU=Users,OU=Contoso Corp,DC=contoso,DC=com &lt;br&gt;Current recipient proxies:  &lt;br&gt;Applicable policies: &lt;br&gt;    CN=Default Policy,CN=Recipient Policies,CN=Contoso,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=contoso,DC=com &lt;br&gt;Chosen policy: CN=Default Policy,CN=Recipient Policies,CN=Contoso,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=contoso,DC=com &lt;br&gt;Proxies of chosen policy: &lt;br&gt;    X400:c=US;a= ;p=Contoso;o=Exchange;&lt;br&gt;    SMTP:@contoso.com &lt;br&gt;Proxies in change list:  &lt;br&gt;Proxies to generate: &lt;br&gt;    X400:c=US;a= ;p=Contoso;o=Exchange;&lt;br&gt;    SMTP:@contoso.com &lt;br&gt;Conflicts during generation:  &lt;br&gt;Proxies generated: &lt;br&gt;    X400:c=US;a= ;p=Contoso;o=Exchange;s=Mucci;g=Tony;&lt;br&gt;    SMTP:tony@nwtraders.com &lt;br&gt;Proxies written to recipient: &lt;br&gt;    X400:c=US;a= ;p=Contoso;o=Exchange;s=Mucci;g=Tony;&lt;br&gt;    SMTP:tony@nwtraders.com&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The &lt;em&gt;Address List Synchronization &lt;/em&gt;events which immediately follow that event detail the steps that the RUS is taking to identify the type of objects (Mail-Enabled or Mailbox-Enabled) so that it properly stamps the required missing attributes.  Take a minute to read through each of those events.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/27/image_6.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;border-top:0px;border-right:0px" border=0 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/27/image_thumb_2.png" width=597 height=202&gt;&lt;/a&gt; &lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;In this case the object was determined to be Mail-Enabled as denoted by event 8130:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font color="#3f72ae" size=1 face="Courier New"&gt;Event Type:      Information&lt;br&gt;Event Source:    MSExchangeAL&lt;br&gt;Event Category:  Address List Synchronization &lt;br&gt;Event ID:        8130&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#3f72ae" size=1 face="Courier New"&gt;Description:&lt;br&gt;'CN=&lt;font color="#ff0000"&gt;Mail Enable Recipient&lt;/font&gt;,CN=System Policies,CN=Contoso,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=contoso,DC=com' added to 'CN=Mucci\, Tony,OU=Users,OU=Contoso Corp,DC=contoso,DC=com'. DC=contoso,DC=com&lt;/font&gt; &lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;As documented in Microsoft TechNet article &lt;a href="http://support.microsoft.com/kb/253838" target="_blank"&gt;253838&lt;/a&gt;, if the Recipient Update Service determines that an object contains a populated &lt;em&gt;mailNickName &lt;/em&gt;attribute, then the RUS checks additional attributes to determine if the object is mail-enabled or mailbox-enabled.  The trigger is if &lt;em&gt;any &lt;/em&gt;of these three attributes are populated (&lt;em&gt;msExchHomeServerName&lt;/em&gt;, &lt;em&gt;homeMDB&lt;/em&gt;, or &lt;em&gt;homeMTA&lt;/em&gt;) then the object is treated as mailbox-enabled, but if they are all blank (but &lt;em&gt;mailNickName&lt;/em&gt; is still populated) then it is mail-enabled, and the RUS will attempt to fill in all the other attributes associated with the chosen type. 
&lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;font color="#3f72ae"&gt;The Solution&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt; 
&lt;p&gt;Following that logic, and some trial-and-error, I determined that I only needed to make two simple changes to a mail-enabled account in order to allow the Recipient Update Service to then see the modified object as mailbox-enabled: &lt;u&gt;add a value to the &lt;em&gt;homeMDB &lt;/em&gt;attribute, and then erase the value of the &lt;em&gt;targetAddress &lt;/em&gt;attribute&lt;/u&gt;. 
&lt;p&gt;Since the &lt;em&gt;homeMDB&lt;/em&gt; attribute is the most specific of the three requirements for a mailbox-enabled account, the RUS will automatically populate the other two with the correct values, as well as adding the &lt;em&gt;msExchMailboxGUID &lt;/em&gt;and all of the other required attributes.  Although it is technically possible to set a value for the &lt;em&gt;targetAddress &lt;/em&gt;attribute on a mailbox-enabled account later (for contact-less forwarding), if that attribute is not null at the time the RUS checks it then the object is still treated as mail-enabled. 
&lt;p&gt;So let's use ADSIedit to modify those two attributes.  First locate an existing mailbox-enabled user account in the same mailbox store as we want this user to be stored in, and copy the &lt;em&gt;homeMDB&lt;/em&gt; attribute value: 
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/27/image_8.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;border-top:0px;border-right:0px" border=0 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/27/image_thumb_3.png" width=414 height=140&gt;&lt;/a&gt; &lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font color="#3f72ae" size=1 face="Courier New"&gt;CN=Mailbox Store (LAB2EXCH),CN=First Storage Group,CN=InformationStore,CN=LAB2EXCH,CN=Servers,CN=First Administrative Group,CN=Administrative Groups,CN=Contoso,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=contoso,DC=com&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Paste the string into the &lt;em&gt;homeMDB &lt;/em&gt;attribute on our new user account, and then clear the &lt;em&gt;targetAddress &lt;/em&gt;attribute value. After a few minutes check the Application log again for the associated event ID 3006, and then find the next occurrence of ID 8130: 
&lt;blockquote&gt;
&lt;p&gt;&lt;font color="#3f72ae" size=1 face="Courier New"&gt;Event Type:      Information&lt;br&gt;Event Source:    MSExchangeAL&lt;br&gt;Event Category:  Address List Synchronization &lt;br&gt;Event ID:        8130&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#3f72ae" size=1 face="Courier New"&gt;Description:&lt;br&gt;'CN=&lt;font color="#ff0000"&gt;Mailbox Enable User&lt;/font&gt;,CN=System Policies,CN=Contoso,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=contoso,DC=com' added to 'CN=Mucci\, Tony,OU=Users,OU=Contoso Corp,DC=contoso,DC=com'. DC=contoso,DC=com&lt;/font&gt; &lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;We can see that the RUS has now identified our user as mailbox-enabled and if we look at the account's attributes we'll find all of the other required attributes are populated: 
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/27/image_14.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;border-top:0px;border-right:0px" border=0 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/27/image_thumb_6.png" width=380 height=139&gt;&lt;/a&gt; &lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;font color="#3f72ae"&gt;Scripting Bulk Changes&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt; 
&lt;p&gt;Since we now know what to change, it's simple to create an LDIF import file to make these changes to many accounts in bulk.  This also lets us decide which mailbox store each account should be assigned to, so using a CSVDE export and Excel it would be pretty simple to create a working spreadsheet to list our object's current &lt;em&gt;DN &lt;/em&gt;and desired &lt;em&gt;homeMDB &lt;/em&gt;values.  Using my &lt;a href="/Blogs/seaman_derek/Pages/Post.aspx?_ID=5" target="_blank"&gt;colleague Derek's blog&lt;/a&gt; on how to convert CSV files to LDIF format we should end up with a single import file that would convert any number of mail-enabled users into mailbox-enabled.&lt;/p&gt;
&lt;p&gt;The LDIFDE import file would look something like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font color="#3f72ae" size=1 face="Courier New"&gt;dn: CN=Mucci\, Tony,OU=Users,OU=Contoso Corp,DC=contoso,DC=com &lt;br&gt;changetype: modify&lt;br&gt;replace: homeMTA&lt;br&gt;homeMTA: &lt;font color="#3f72ae" size=1 face="Courier New"&gt;CN=Mailbox Store (LAB2EXCH),CN=First Storage Group,CN=InformationStore,CN=LAB2EXCH,CN=Servers,CN=First Administrative Group,CN=Administrative Groups,CN=Contoso,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=contoso,DC=com&lt;/font&gt;&lt;br&gt;-&lt;br&gt;delete: targetAddress&lt;br&gt;-&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;One final note is that since a mail-enabled object should have a foreign SMTP address while a mailbox-enabled object would typically require an Exchange-owned SMTP address, we'd probably want to stamp a new primary SMTP address depending on the specific scenario.  This can easily be accomplished via another LDIF import to modify the &lt;em&gt;proxyAddresses &lt;/em&gt;and &lt;em&gt;mail &lt;/em&gt;attributes, or using a tool like ADModify.NET. 
&lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;font color="#3f72ae"&gt;Does this work in Exchange 2007?&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt; 
&lt;p&gt;In a native Exchange 2007 organization the RUS has been eliminated, so I started to poke around in my 2007 lab to see how this process might differ, or if it is even at all possible.  The biggest difference is how Exchange 2003 determines an objects 'mail type' by looking at a range of attributes and their values (or if they even have any), while Exchange 2007 actually has some new attributes which are used to define the objects type.  More can be read on these new attributes in this &lt;a href="http://blogs.technet.com/benw/archive/2007/04/05/exchange-2007-and-recipient-type-details.aspx" target="_blank"&gt;TechNet blog by BenW&lt;/a&gt;.  I hacked around with a similar approach, but Exchange would continually bark at me about not liking the object type when attempted to mailbox-enable via a cmdlet or the console. 
&lt;p&gt;I'm going to keep exploring and researching this to see if it's even possible to perform the same 'trick' in Exchange 2007, or if it ends up being more work than just simply exporting the attributes, mail-disabling the objects, and then re-importing the desired attributes back in.  But that's for another day... &lt;/p&gt;&lt;/div&gt;</description><author>Jeff Schertz</author><link>http://blogs.pointbridge.com/Blogs/schertz_jeff/Pages/Post.aspx?_ID=27</link><description /><pubDate>2008-05-20 15:16:00</pubDate></item><item><id>18</id><title>OAB Generation in Exchange 2007 Reminder</title><body>&lt;div class=ExternalClass269E5D28AD1741F8ADDBC7145DA41560&gt;
&lt;div&gt;This blog is basically a heads up for those deciding to split up roles across many servers when upgrading from Exchange 2003. One of the processes you need to move over is the OAB generation. While this is pretty straightforward I ran into a minor quirk in the new 2007 environment.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;The documentation for this process is pretty sparse and lacking detail but may end up taking some of your valuable time better spent doing other things. Anyway, we had a new 2007 environment with all the bells and whistles (CCR, SCR, UM, ISA, etc) and ran into a little snag when decommissioning the 2003 servers. As part of the transition to 2007 we moved over the OAB generation to our mailbox server (CCR). We also had Public Folders sitting on a couple of servers that were pulling double duty as Hub Transport server. The majority of the clients were still on Outlook 2003 so we couldn't just use web distribution for OAB. So we configured the OAB for web and public folder distribution.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;The problem started when we ran our moveallreplicas script to move all public folders off the 2003 servers. Later the next morning we started seeing 9331/9335 errors in the event log on the mailbox cluster. Those basically meant that the public store was not online. We knew all stores were online though/ That was odd and a little alarming so I researched the events further but everything checked out from what I could see and test. I even looked in ADSI edit and the only thing I found out of place was the siteFolderServer was still pointing to a 2003 server on the Administrative Group for 2007 and on the Offline Address book we published. I contacted MS and they agreed that this should be changed. We stopped and started the stores on all the servers, yet the problem remained. The MS engineer and I tried some different things from recreating the OAB to changes in replcation. On a follow up call the engineer had me move the OAB generation server to another machine, one of our PF servers.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;We made some progress doing that and didn't get the 9331/9335 errors. Now we got two new warnings, 9386/9399. These were similar to the previous errors in that they claimed the public folder for version 2, 3 and 4 were not online. Once again this was not true. Finally the engineer suggested creating a local mailbox store on the PF server. That did it!&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;So the moral of this story is to &lt;strong&gt;ensure you have both a mailbox and public folder store on the same machine running your OAB generation&lt;/strong&gt;. Since we were running a CCR cluster and wanted some resiliency for PFs we opted not to add that database to the cluster and on the PF server we did not have a mailbox database since we had not planned on homing any users there. So this series of events led us to the conclusion that we needed both databases locally to make OAB happy. I hope this helps someone prevent this from happening in your environment. I've been told a KB article may come out about this but one would only hope this type of issue gets published somewhere.&lt;/div&gt;&lt;/div&gt;</body><description>&lt;div class=ExternalClass269E5D28AD1741F8ADDBC7145DA41560&gt;
&lt;div&gt;This blog is basically a heads up for those deciding to split up roles across many servers when upgrading from Exchange 2003. One of the processes you need to move over is the OAB generation. While this is pretty straightforward I ran into a minor quirk in the new 2007 environment.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;The documentation for this process is pretty sparse and lacking detail but may end up taking some of your valuable time better spent doing other things. Anyway, we had a new 2007 environment with all the bells and whistles (CCR, SCR, UM, ISA, etc) and ran into a little snag when decommissioning the 2003 servers. As part of the transition to 2007 we moved over the OAB generation to our mailbox server (CCR). We also had Public Folders sitting on a couple of servers that were pulling double duty as Hub Transport server. The majority of the clients were still on Outlook 2003 so we couldn't just use web distribution for OAB. So we configured the OAB for web and public folder distribution.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;The problem started when we ran our moveallreplicas script to move all public folders off the 2003 servers. Later the next morning we started seeing 9331/9335 errors in the event log on the mailbox cluster. Those basically meant that the public store was not online. We knew all stores were online though/ That was odd and a little alarming so I researched the events further but everything checked out from what I could see and test. I even looked in ADSI edit and the only thing I found out of place was the siteFolderServer was still pointing to a 2003 server on the Administrative Group for 2007 and on the Offline Address book we published. I contacted MS and they agreed that this should be changed. We stopped and started the stores on all the servers, yet the problem remained. The MS engineer and I tried some different things from recreating the OAB to changes in replcation. On a follow up call the engineer had me move the OAB generation server to another machine, one of our PF servers.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;We made some progress doing that and didn't get the 9331/9335 errors. Now we got two new warnings, 9386/9399. These were similar to the previous errors in that they claimed the public folder for version 2, 3 and 4 were not online. Once again this was not true. Finally the engineer suggested creating a local mailbox store on the PF server. That did it!&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;So the moral of this story is to &lt;strong&gt;ensure you have both a mailbox and public folder store on the same machine running your OAB generation&lt;/strong&gt;. Since we were running a CCR cluster and wanted some resiliency for PFs we opted not to add that database to the cluster and on the PF server we did not have a mailbox database since we had not planned on homing any users there. So this series of events led us to the conclusion that we needed both databases locally to make OAB happy. I hope this helps someone prevent this from happening in your environment. I've been told a KB article may come out about this but one would only hope this type of issue gets published somewhere.&lt;/div&gt;&lt;/div&gt;</description><author>Erik Enger</author><link>http://blogs.pointbridge.com/Blogs/enger_erik/Pages/Post.aspx?_ID=18</link><description /><pubDate>2008-05-08 15:14:00</pubDate></item><item><id>17</id><title>Publishing Outlook Anywhere using NTLM Authentication on ISA 2006</title><body>&lt;div class=ExternalClass4B4EF9FD8CF84BA685DE4F414844DC20&gt;
&lt;div&gt;The title of this blog sounds familiar, right? Maybe. Well, when I went searching for a way to do this I hit dead end after dead end. I searched everywhere (ISAServer.org, MSExchange.org, TechNet, blogs, forums, etc) and came up empty. It sounded like an obvious thing to want in order to minimize the impact on the users and eliminate getting prompted for a password each time they took their laptop offsite.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;After all, these machines were joined to the domain and were under corporate control so they should be trusted. Well all I could find was how to publish Outlook Anywhere using Basic Authentication. This was the defacto standard I have used in the past and never had any complaints about the login prompt per session. So I tried a few things on the ISA server rule to get this to work but I couldn't get anything to work. I even called MS PSS and got the same answer, use Basic.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;I was determined to figure out a way so I ran through several iterations in my lab and came up with a solution after watching ISA disconnect or repeatedly prompt for authentication on every iteration I tried. I ended up having to modify two of the Exchange 2007 rules, one for Outlook Anywhere and the one for Autodiscover.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Since ISA 2006 currently doesn't support SAN certificates I had to use two listeners and two certs. I hear this is fixed in the upcoming service pack though. Finally! Anyway, so I used the standard Exchange 2007 publishing wizard in ISA to create my rules. To get NTLM authentication to work I had to first set the CAS server for NTLM authentication by modifying the Outlook Anywhere settings:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/_w/CAS%20NTLM_jpg.jpg"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Then I modified the Outlook Anywhere and Autodiscover rules to match this. There were basically two things I had to do for both of these rules. First, I had to set the user set to 'All Users' and secondly I had to set the Authentication Delegation to 'no delegation, but client may authenticate directly'. I did this for both rules, published it and I was able to take a domain joined machine with Outlook 2003/2007 configured for RPC/HTTP with NTLM authentication and connect remotely using my Windows (domain cached credentials) login ID and open Outlook and connect without getting prompted.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/_w/ISA%20Outlook%20Anywhere%20Users_jpg.jpg"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/_w/ISA%20Outlook%20Anywhere%20Authentication_jpg.jpg"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;/div&gt;</body><description>&lt;div class=ExternalClass4B4EF9FD8CF84BA685DE4F414844DC20&gt;
&lt;div&gt;The title of this blog sounds familiar, right? Maybe. Well, when I went searching for a way to do this I hit dead end after dead end. I searched everywhere (ISAServer.org, MSExchange.org, TechNet, blogs, forums, etc) and came up empty. It sounded like an obvious thing to want in order to minimize the impact on the users and eliminate getting prompted for a password each time they took their laptop offsite.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;After all, these machines were joined to the domain and were under corporate control so they should be trusted. Well all I could find was how to publish Outlook Anywhere using Basic Authentication. This was the defacto standard I have used in the past and never had any complaints about the login prompt per session. So I tried a few things on the ISA server rule to get this to work but I couldn't get anything to work. I even called MS PSS and got the same answer, use Basic.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;I was determined to figure out a way so I ran through several iterations in my lab and came up with a solution after watching ISA disconnect or repeatedly prompt for authentication on every iteration I tried. I ended up having to modify two of the Exchange 2007 rules, one for Outlook Anywhere and the one for Autodiscover.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Since ISA 2006 currently doesn't support SAN certificates I had to use two listeners and two certs. I hear this is fixed in the upcoming service pack though. Finally! Anyway, so I used the standard Exchange 2007 publishing wizard in ISA to create my rules. To get NTLM authentication to work I had to first set the CAS server for NTLM authentication by modifying the Outlook Anywhere settings:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/_w/CAS%20NTLM_jpg.jpg"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Then I modified the Outlook Anywhere and Autodiscover rules to match this. There were basically two things I had to do for both of these rules. First, I had to set the user set to 'All Users' and secondly I had to set the Authentication Delegation to 'no delegation, but client may authenticate directly'. I did this for both rules, published it and I was able to take a domain joined machine with Outlook 2003/2007 configured for RPC/HTTP with NTLM authentication and connect remotely using my Windows (domain cached credentials) login ID and open Outlook and connect without getting prompted.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/_w/ISA%20Outlook%20Anywhere%20Users_jpg.jpg"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;img alt="" src="/Blogs/enger_erik/Lists/Photos/_w/ISA%20Outlook%20Anywhere%20Authentication_jpg.jpg"&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;/div&gt;</description><author>Erik Enger</author><link>http://blogs.pointbridge.com/Blogs/enger_erik/Pages/Post.aspx?_ID=17</link><description /><pubDate>2008-05-08 13:56:00</pubDate></item><item><id>16</id><title>Custom Outlook Forms Issue: Reporting on and resetting message classes for public folder data</title><body>&lt;div class=ExternalClassDBA13003CAA748FAB6F7420597B4FE5B&gt;
&lt;div&gt;Recently I came across an issue that was new to me. I don't have a lot of experience working with Outlook forms because I've always been in the infrastructure world and frankly never had a need or admittedly a desire to design any forms.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Anyway, to my point, a user came to me and wanted to know why the nice form he created for the data stored in a public folder was not displaying properly. The content was based on the contacts message class and the user had created a nice form and assigned it to the public folder, so anyone creating or opening data from that folder would see the form. He showed me what was happening (or not in this instance) and sure enough, each item he opened displayed in the standard contact form.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;So I silently scratched my head and said I would look into it for him. I proceeded to research the issue and tried to get creative with my Google searches in hopes of finding some matches of other users having the same issue. It was a laborious process and information pertinent to the issue was hard to find. I looked at every aspect I could stemming from things that might be going on the Exchange server to something at the client level. I looked into the EFORMS Registry system folder, &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;I finally came across a KB article (&lt;a href="http://support.microsoft.com/kb/290659"&gt;MS KB 290659&lt;/a&gt;) with a few words which sparked my curiousity and looked like it was what I was looking for:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&amp;quot;A property of the item called message class determines the form the item uses. You cannot change the message class of an item manually. However, you can write Visual Basic Scripting Edition (VBScript) or Visual Basic Automation code to change the message class for all items in a folder.&lt;br&gt;&lt;br&gt;When you create and publish a custom form, the form is assigned a message class. This message class determines which form is associated with an item. The format of the name is &amp;quot;IPM.&lt;i&gt;FormType&lt;/i&gt;.&lt;i&gt;FormName&lt;/i&gt;&amp;quot;, where &lt;i&gt;FormType&lt;/i&gt; is the type of form (Contact, Task, and such) and &lt;i&gt;FormName&lt;/i&gt; is the name of the custom form. For example, if you create a new contact form, name it Revised, and then publish it to your Contacts folder, the message class is IPM.Contact.Revised.&amp;quot;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Okay, so I had a little more information which might point me to the problem but I still didn't know what the problem was. I needed some way to find out if what I just read fit our situation.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;MS offered three options to resolve the issue. Being a VBScripting fan, I opted for that process. MS provides a simple, yet powerful little script to change en masse your message classes on whatever folder you point it at. Of course I wasn't looking for that yet. I wanted to report on my findings first, then if that confirmed what I thought was the problem we could move on and actually change the classes.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;So I took the base code MS provided and tweaked it a bit to first report on the existing message classes and then I would use the same code to make the changes. Here's the script I used to spit out the current message classes to a simple text file so I could review them in Excel.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;blockquote dir=ltr style="margin-right:0px"&gt;
&lt;div&gt;&lt;font color="#0000ff"&gt;Sub Item_Open&lt;br&gt;Dim objFSO, objFile, wrongClass&lt;br&gt;Const ForWriting = 2&lt;br&gt;Const ForAppending = 8&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#0000ff"&gt;wrongClass=0&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#0000ff"&gt;' Create log file&lt;br&gt;' You may change the name and path of this log file in the following line&lt;br&gt;LogFile = &amp;quot;C:\get-message-class.log&amp;quot;&lt;br&gt;Set objFSO = CreateObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)&lt;br&gt; If objFSO.FileExists(LogFile) Then&lt;br&gt;  Set objFile = objFSO.OpenTextFile(LogFile, ForAppending)&lt;br&gt;  objfile.WriteLine&lt;br&gt;  objFile.Writeline &amp;quot;Beginning message class reporting session &amp;quot; &amp;amp; Now&lt;br&gt;  objFile.Writeline &amp;quot;Item #&amp;quot; &amp;amp; vbtab &amp;amp; &amp;quot;Description&amp;quot; &amp;amp; vbtab &amp;amp; &amp;quot;Message Class&amp;quot;&lt;br&gt; Else&lt;br&gt;  Set objFile = objFSO.CreateTextFile(LogFile)&lt;br&gt;  objFile.Close&lt;br&gt;  Set objFile = objFSO.OpenTextFile(LogFile, ForWriting)&lt;br&gt;  objfile.Writeline &amp;quot;Beginning message class reporting session &amp;quot; &amp;amp; Now&lt;br&gt;  objFile.Writeline &amp;quot;Item #&amp;quot; &amp;amp; vbtab &amp;amp; &amp;quot;Description&amp;quot; &amp;amp; vbtab &amp;amp; &amp;quot;Message Class&amp;quot;&lt;br&gt; End If&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#0000ff"&gt;   ' Change the following line to your new Message Class&lt;br&gt;   NewMC = &amp;quot;IPM.Contact.Test&amp;quot;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#0000ff"&gt;   Set CurFolder = Application.ActiveExplorer.CurrentFolder&lt;br&gt;   Set AllItems = CurFolder.Items&lt;br&gt;   NumItems = CurFolder.Items.Count&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#0000ff"&gt;   ' Loop through all of the items in the folder&lt;br&gt;   For I = 1 to NumItems&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#0000ff"&gt;      Set CurItem = AllItems.Item(I)&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#0000ff"&gt; objFile.writeline I &amp;amp; vbtab &amp;amp; CurItem &amp;amp; vbtab &amp;amp; CurItem.MessageClass&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#0000ff"&gt;      ' Test to see if the Message Class needs to be changed&lt;br&gt;      If CurItem.MessageClass &amp;lt;&amp;gt; NewMC Then&lt;br&gt;       'MsgBox &amp;quot;Item: &amp;quot; &amp;amp; CurItem &amp;amp; vbtab &amp;amp; &amp;quot;Current message class: &amp;quot; &amp;amp; CurItem.MessageClass&lt;br&gt;  wrongClass=wrongClass+1&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#0000ff"&gt;         ' Change the Message Class&lt;br&gt;         'CurItem.MessageClass = NewMC&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#0000ff"&gt;         ' Save the changed item&lt;br&gt;         'CurItem.Save&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#0000ff"&gt;      End If&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#0000ff"&gt;   Next&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#0000ff"&gt;   MsgBox &amp;quot;Done.&amp;quot;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#0000ff"&gt;objFile.writeline &amp;quot;Number of items with correct message class: &amp;quot; &amp;amp; NumItems - wrongClass&lt;br&gt;objFile.writeline &amp;quot;Number of items with incorrect message class: &amp;quot; &amp;amp; wrongClass&lt;br&gt;objFile.writeline &amp;quot;Ending message class reporting session &amp;quot; &amp;amp; Now&lt;br&gt;objFile.close&lt;br&gt;wrongClass=0&lt;br&gt;End Sub&lt;/font&gt;&lt;/div&gt;&lt;/blockquote&gt;
&lt;div dir=ltr&gt;&lt;font color="#000000"&gt;One of the things I added was the output file )get-message-class.log) because I wanted a report I could show the user the message classes first. I also had to remark out the lines that actually make the change (CurItem.MessageClass=NewMC and CurItem.Save). I also remarked out the first MsgBox line which would have resulted in hundreds of dialog box popups. This may be fine for a few objects but can be very annoying and time consuming clicking OK every two seconds.&lt;/font&gt;&lt;/div&gt;
&lt;div dir=ltr&gt;&lt;font color="#000000"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div dir=ltr&gt;&lt;font color="#000000"&gt;The name of our form was IPM.Contact.Test which was a simple form based on the Contact form template. Basically this script is designed to read all of the items in a public folder and report on the message class of each item and count the number of items that match and don't match our form.&lt;/font&gt;&lt;/div&gt;
&lt;div dir=ltr&gt;&lt;font color="#000000"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div dir=ltr&gt;&lt;font color="#000000"&gt;So, following the steps MS described I ran this in my lab with some test data and got my nice little report clearly showing which items were not set correctly. I then ran this report for the client and showed him that about 15 of the 300 entries had the wrong message classification. To fix the issue we just removed the comments from the two CurItem lines listed above and re-ran the script. Voila! Now the user was able to view the existing data in his custom form again.&lt;/font&gt;&lt;/div&gt;
&lt;div dir=ltr&gt;&lt;font color="#000000"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div dir=ltr&gt;&lt;font color="#000000"&gt;Now the million dollar answer is how did they get that way if he assigned the form to the public folder? Unfortunately we don't really know. It could have been something at the client or server level preventing the correct form from being read when creating new entries. The form could have been unlinked from the public folder for a period of time too. The bottom line is that we were able to report on and fix the issue and make the customer happy.&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;</body><description>&lt;div class=ExternalClassDBA13003CAA748FAB6F7420597B4FE5B&gt;
&lt;div&gt;Recently I came across an issue that was new to me. I don't have a lot of experience working with Outlook forms because I've always been in the infrastructure world and frankly never had a need or admittedly a desire to design any forms.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Anyway, to my point, a user came to me and wanted to know why the nice form he created for the data stored in a public folder was not displaying properly. The content was based on the contacts message class and the user had created a nice form and assigned it to the public folder, so anyone creating or opening data from that folder would see the form. He showed me what was happening (or not in this instance) and sure enough, each item he opened displayed in the standard contact form.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;So I silently scratched my head and said I would look into it for him. I proceeded to research the issue and tried to get creative with my Google searches in hopes of finding some matches of other users having the same issue. It was a laborious process and information pertinent to the issue was hard to find. I looked at every aspect I could stemming from things that might be going on the Exchange server to something at the client level. I looked into the EFORMS Registry system folder, &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;I finally came across a KB article (&lt;a href="http://support.microsoft.com/kb/290659"&gt;MS KB 290659&lt;/a&gt;) with a few words which sparked my curiousity and looked like it was what I was looking for:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&amp;quot;A property of the item called message class determines the form the item uses. You cannot change the message class of an item manually. However, you can write Visual Basic Scripting Edition (VBScript) or Visual Basic Automation code to change the message class for all items in a folder.&lt;br&gt;&lt;br&gt;When you create and publish a custom form, the form is assigned a message class. This message class determines which form is associated with an item. The format of the name is &amp;quot;IPM.&lt;i&gt;FormType&lt;/i&gt;.&lt;i&gt;FormName&lt;/i&gt;&amp;quot;, where &lt;i&gt;FormType&lt;/i&gt; is the type of form (Contact, Task, and such) and &lt;i&gt;FormName&lt;/i&gt; is the name of the custom form. For example, if you create a new contact form, name it Revised, and then publish it to your Contacts folder, the message class is IPM.Contact.Revised.&amp;quot;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Okay, so I had a little more information which might point me to the problem but I still didn't know what the problem was. I needed some way to find out if what I just read fit our situation.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;MS offered three options to resolve the issue. Being a VBScripting fan, I opted for that process. MS provides a simple, yet powerful little script to change en masse your message classes on whatever folder you point it at. Of course I wasn't looking for that yet. I wanted to report on my findings first, then if that confirmed what I thought was the problem we could move on and actually change the classes.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;So I took the base code MS provided and tweaked it a bit to first report on the existing message classes and then I would use the same code to make the changes. Here's the script I used to spit out the current message classes to a simple text file so I could review them in Excel.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;blockquote dir=ltr style="margin-right:0px"&gt;
&lt;div&gt;&lt;font color="#0000ff"&gt;Sub Item_Open&lt;br&gt;Dim objFSO, objFile, wrongClass&lt;br&gt;Const ForWriting = 2&lt;br&gt;Const ForAppending = 8&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#0000ff"&gt;wrongClass=0&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#0000ff"&gt;' Create log file&lt;br&gt;' You may change the name and path of this log file in the following line&lt;br&gt;LogFile = &amp;quot;C:\get-message-class.log&amp;quot;&lt;br&gt;Set objFSO = CreateObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)&lt;br&gt; If objFSO.FileExists(LogFile) Then&lt;br&gt;  Set objFile = objFSO.OpenTextFile(LogFile, ForAppending)&lt;br&gt;  objfile.WriteLine&lt;br&gt;  objFile.Writeline &amp;quot;Beginning message class reporting session &amp;quot; &amp;amp; Now&lt;br&gt;  objFile.Writeline &amp;quot;Item #&amp;quot; &amp;amp; vbtab &amp;amp; &amp;quot;Description&amp;quot; &amp;amp; vbtab &amp;amp; &amp;quot;Message Class&amp;quot;&lt;br&gt; Else&lt;br&gt;  Set objFile = objFSO.CreateTextFile(LogFile)&lt;br&gt;  objFile.Close&lt;br&gt;  Set objFile = objFSO.OpenTextFile(LogFile, ForWriting)&lt;br&gt;  objfile.Writeline &amp;quot;Beginning message class reporting session &amp;quot; &amp;amp; Now&lt;br&gt;  objFile.Writeline &amp;quot;Item #&amp;quot; &amp;amp; vbtab &amp;amp; &amp;quot;Description&amp;quot; &amp;amp; vbtab &amp;amp; &amp;quot;Message Class&amp;quot;&lt;br&gt; End If&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#0000ff"&gt;   ' Change the following line to your new Message Class&lt;br&gt;   NewMC = &amp;quot;IPM.Contact.Test&amp;quot;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#0000ff"&gt;   Set CurFolder = Application.ActiveExplorer.CurrentFolder&lt;br&gt;   Set AllItems = CurFolder.Items&lt;br&gt;   NumItems = CurFolder.Items.Count&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#0000ff"&gt;   ' Loop through all of the items in the folder&lt;br&gt;   For I = 1 to NumItems&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#0000ff"&gt;      Set CurItem = AllItems.Item(I)&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#0000ff"&gt; objFile.writeline I &amp;amp; vbtab &amp;amp; CurItem &amp;amp; vbtab &amp;amp; CurItem.MessageClass&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#0000ff"&gt;      ' Test to see if the Message Class needs to be changed&lt;br&gt;      If CurItem.MessageClass &amp;lt;&amp;gt; NewMC Then&lt;br&gt;       'MsgBox &amp;quot;Item: &amp;quot; &amp;amp; CurItem &amp;amp; vbtab &amp;amp; &amp;quot;Current message class: &amp;quot; &amp;amp; CurItem.MessageClass&lt;br&gt;  wrongClass=wrongClass+1&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#0000ff"&gt;         ' Change the Message Class&lt;br&gt;         'CurItem.MessageClass = NewMC&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#0000ff"&gt;         ' Save the changed item&lt;br&gt;         'CurItem.Save&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#0000ff"&gt;      End If&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#0000ff"&gt;   Next&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#0000ff"&gt;   MsgBox &amp;quot;Done.&amp;quot;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#0000ff"&gt;objFile.writeline &amp;quot;Number of items with correct message class: &amp;quot; &amp;amp; NumItems - wrongClass&lt;br&gt;objFile.writeline &amp;quot;Number of items with incorrect message class: &amp;quot; &amp;amp; wrongClass&lt;br&gt;objFile.writeline &amp;quot;Ending message class reporting session &amp;quot; &amp;amp; Now&lt;br&gt;objFile.close&lt;br&gt;wrongClass=0&lt;br&gt;End Sub&lt;/font&gt;&lt;/div&gt;&lt;/blockquote&gt;
&lt;div dir=ltr&gt;&lt;font color="#000000"&gt;One of the things I added was the output file )get-message-class.log) because I wanted a report I could show the user the message classes first. I also had to remark out the lines that actually make the change (CurItem.MessageClass=NewMC and CurItem.Save). I also remarked out the first MsgBox line which would have resulted in hundreds of dialog box popups. This may be fine for a few objects but can be very annoying and time consuming clicking OK every two seconds.&lt;/font&gt;&lt;/div&gt;
&lt;div dir=ltr&gt;&lt;font color="#000000"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div dir=ltr&gt;&lt;font color="#000000"&gt;The name of our form was IPM.Contact.Test which was a simple form based on the Contact form template. Basically this script is designed to read all of the items in a public folder and report on the message class of each item and count the number of items that match and don't match our form.&lt;/font&gt;&lt;/div&gt;
&lt;div dir=ltr&gt;&lt;font color="#000000"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div dir=ltr&gt;&lt;font color="#000000"&gt;So, following the steps MS described I ran this in my lab with some test data and got my nice little report clearly showing which items were not set correctly. I then ran this report for the client and showed him that about 15 of the 300 entries had the wrong message classification. To fix the issue we just removed the comments from the two CurItem lines listed above and re-ran the script. Voila! Now the user was able to view the existing data in his custom form again.&lt;/font&gt;&lt;/div&gt;
&lt;div dir=ltr&gt;&lt;font color="#000000"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div dir=ltr&gt;&lt;font color="#000000"&gt;Now the million dollar answer is how did they get that way if he assigned the form to the public folder? Unfortunately we don't really know. It could have been something at the client or server level preventing the correct form from being read when creating new entries. The form could have been unlinked from the public folder for a period of time too. The bottom line is that we were able to report on and fix the issue and make the customer happy.&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;</description><author>Erik Enger</author><link>http://blogs.pointbridge.com/Blogs/enger_erik/Pages/Post.aspx?_ID=16</link><description /><pubDate>2008-05-08 13:19:00</pubDate></item><item><id>25</id><title>Exchange 2003 Public Folder Replication Failures</title><body>&lt;div class=ExternalClass97C28A4C0DE542CE9B99766DF1DB47B4&gt;&lt;p&gt;On a recent project I ran into a unique problem regarding replication of public folder information in an Exchange 2003 organization.  The problem was recently discovered after the migration of an acquisition into the existing organization when users noticed that Free/Busy information for mailboxes was not displaying between mailboxes in the existing offices and the new office.  After an exhaustive search and a few dead-ends I was able to finally resolve the issue, but the lack of information I found online made this a good topic for review.&lt;/p&gt; &lt;p&gt;To setup the scenario, we have a multiple-server Exchange 2003 organization with a single routing group and single administrative group.  No public folders were using replication, but a few system folders were configured to replicate between 4 mailbox servers.  A new company was acquired and their current Exchange 2000 information was migrated (via Quest Migration Manager) onto a new Exchange 2003 mailbox server which was located in a new administrative group.&lt;/p&gt; &lt;p&gt;After the migration was completed it was reported that users on mailbox servers in Administrative Group 1 (AG1) could not view Free/Busy information for any users in Administrative Group 2 (AG2), and vice versa.  All other mail flow worked correctly and all Exchange servers were allowed to communicate with each other across all ports between any firewalls.&lt;/p&gt; &lt;p&gt;The first thing I looked at was the replication settings for the SCHEDULE+ FREE BUSY system folder, as that is the where all mailbox free/busy information is stored in Exchange 2003.  On Exchange servers in the first administrative group I only saw a single subfolder for that administrative group, and the new server only contained a subfolder for the second administrative group.  I quickly compared the public folder hierarchy between servers in each administrative group and saw that they did not match.  It turned out that users in each group saw only their 'local' folders, which from a user standpoint caused no issues.  Corporate users saw no change in the folder hierarchy and migrated users from the new company still saw only their migrated folder structure as it appeared before.  But now that existing users were trying to schedule meetings with attendees from the newly acquired company did the underlying issue of a segmented public folder hierarchy become apparent.&lt;/p&gt; &lt;p&gt;To begin troubleshooting public folder replication problems, logging needs to be enabled so that individual messages can be tracked.  This &lt;a href="http://support.microsoft.com/kb/842273" target="_blank"&gt;Microsoft TechNet article&lt;/a&gt; (KB842273) explains how to enable logging on the correct sources and which application event logs correlate to specific events.  After some message tracking it was clear that outbound replication messages from a server in AG1 was reaching all servers in the same group, but not the new server in AG2.  I also verified that replication messages outbound from the new server were not reaching any server in the AG1.  After verifying that firewalls between both sites were not causing any problems I kept on searching for the root cause.&lt;/p&gt; &lt;p&gt;Coincidentally this related &lt;a href="http://www.msexchange.org/articles/Public-Folder-Replication-Troubleshooting.html" target="_blank"&gt;MSExchange.org tutorial&lt;/a&gt; mentions that one possible cause might be missing a SMTP address on a Public Store, which would prevent the server from sending and receiving SMTP-based PF replication messages.  Sure enough, the &lt;em&gt;proxyAddresses&lt;/em&gt; attribute on the new server's Public Folder Store was completely blank. This was the problem.&lt;/p&gt; &lt;p&gt;My first concern was that although I could manually stamp this attribute and probably resolve the replication issues quickly, what caused this mis-configuration in the first place?  The Enterprise Recipient Update Service is responsible for stamping that address on the PF store in the first place, so that is where I turned my attention.  Using &lt;a href="http://support.microsoft.com/kb/822794" target="_blank"&gt;TechNet article 822794&lt;/a&gt; is a guide I ran through a couple cycles of both the &lt;strong&gt;Update&lt;/strong&gt; and &lt;strong&gt;Rebuild All &lt;/strong&gt;commands, but after verifying (via USN) that the targeted object was processed the attributes continued to remain blank.  I checked the &lt;em&gt;gatewayProxy&lt;/em&gt; attribute on the Enterprise RUS itself, to see if the 'queue' was jammed up (as described in &lt;a href="http://support.microsoft.com/?id=821743" target="_blank"&gt;TechNet article 821743&lt;/a&gt;) but it was clear.&lt;/p&gt; &lt;p&gt;At this point I shifted focus back to getting the replication issue resolved and would save the root cause troubleshooting for later.  I manually stamped the &lt;em&gt;proxyAddresses&lt;/em&gt; attribute with SMTP and X400 addresses, using the formats &lt;strong&gt;SMTP:&lt;em&gt;SERVERNAME&lt;/em&gt;-IS@domain.com&lt;/strong&gt; and duplicated the X400 address from another server, updating the Administrative Group name in the path.  After some time passed I still didn't see any replication messages flowing in or out of that server.  I finally located Microsoft documentation related to this specific issue, under the Storage section of the Best Practice Analyzer articles, entitled &lt;a href="http://technet.microsoft.com/en-us/library/aa997872(EXCHG.80).aspx" target="_blank"&gt;Public Folder store does not have an email-address&lt;/a&gt;.  I found that both the &lt;em&gt;mail &lt;/em&gt;and &lt;em&gt;textEncodedORAddress &lt;/em&gt;attributes where also blank, so I populated them and double-checked ALL mail-related attributes on the same Public Folder Store object using ADSIedit.&lt;/p&gt; &lt;p&gt;Finally, within an hour, I was finding multiple replication messages in the tracking logs being delivered successfully to and from the new server.  Yet, strangely, I still didn't see the SCHEDULE+ child folder for the other Administrative Groups appearing on servers in either group.  I manually triggered Public Folder Hierarchy replication and at last, I began to see &lt;strong&gt;Hierarchy&lt;/strong&gt;, and &lt;strong&gt;Folder Content Backfill Response &lt;/strong&gt;messages:&lt;/p&gt; &lt;p&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/25/image_2.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=87 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/25/image_thumb.png" width=384 border=0&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;By this point the entire hierarchy trued up between all servers and both folders and content began to populate between all Exchange servers.  &lt;/p&gt; &lt;p&gt;With the immediate problem of SMTP mail flow into the public store resolved, I set off to discover the root cause of the issue.  I knew that the Enterprise RUS was not stamping those attributes like it was supposed to, but nothing in the error logs was helping.  Shortly after, the client deployed another Exchange mailbox server and noticed the same problem with missing mail attributes on the public folder store.  When they cranked up diagnostic logging on the server holding the Enterprise RUS service they noticed something that we hadn't seen when troubleshooting the issue with the previous server.  There were permissions-related errors (IDs 8317 and 8270) appearing under the &lt;strong&gt;ExchangeAL &lt;/strong&gt;service in the &lt;strong&gt;LDAP Operations &lt;/strong&gt;category, basically reporting that the server running the ERUS was &lt;em&gt;trying &lt;/em&gt;to stamp those objects, but was unable.  Scenario 3 in &lt;a href="http://support.microsoft.com/kb/254030" target="_blank"&gt;TechNet article 254030&lt;/a&gt; matched the specific errors we were seeing.&lt;/p&gt; &lt;p&gt;The client immediately linked this to an undocumented customization of their environment where the default security permissions had been altered way back when Exchange 2003 was originally deployed.  As a practice, whenever a new server was built they manually added the other Exchange server objects to the new server's Security tab, granting Full Control rights.  This configuration was unknown to the migration team and has since been added to the server deployment documentation as a required build step.&lt;/p&gt;&lt;/div&gt;</body><description>&lt;div class=ExternalClass97C28A4C0DE542CE9B99766DF1DB47B4&gt;&lt;p&gt;On a recent project I ran into a unique problem regarding replication of public folder information in an Exchange 2003 organization.  The problem was recently discovered after the migration of an acquisition into the existing organization when users noticed that Free/Busy information for mailboxes was not displaying between mailboxes in the existing offices and the new office.  After an exhaustive search and a few dead-ends I was able to finally resolve the issue, but the lack of information I found online made this a good topic for review.&lt;/p&gt; &lt;p&gt;To setup the scenario, we have a multiple-server Exchange 2003 organization with a single routing group and single administrative group.  No public folders were using replication, but a few system folders were configured to replicate between 4 mailbox servers.  A new company was acquired and their current Exchange 2000 information was migrated (via Quest Migration Manager) onto a new Exchange 2003 mailbox server which was located in a new administrative group.&lt;/p&gt; &lt;p&gt;After the migration was completed it was reported that users on mailbox servers in Administrative Group 1 (AG1) could not view Free/Busy information for any users in Administrative Group 2 (AG2), and vice versa.  All other mail flow worked correctly and all Exchange servers were allowed to communicate with each other across all ports between any firewalls.&lt;/p&gt; &lt;p&gt;The first thing I looked at was the replication settings for the SCHEDULE+ FREE BUSY system folder, as that is the where all mailbox free/busy information is stored in Exchange 2003.  On Exchange servers in the first administrative group I only saw a single subfolder for that administrative group, and the new server only contained a subfolder for the second administrative group.  I quickly compared the public folder hierarchy between servers in each administrative group and saw that they did not match.  It turned out that users in each group saw only their 'local' folders, which from a user standpoint caused no issues.  Corporate users saw no change in the folder hierarchy and migrated users from the new company still saw only their migrated folder structure as it appeared before.  But now that existing users were trying to schedule meetings with attendees from the newly acquired company did the underlying issue of a segmented public folder hierarchy become apparent.&lt;/p&gt; &lt;p&gt;To begin troubleshooting public folder replication problems, logging needs to be enabled so that individual messages can be tracked.  This &lt;a href="http://support.microsoft.com/kb/842273" target="_blank"&gt;Microsoft TechNet article&lt;/a&gt; (KB842273) explains how to enable logging on the correct sources and which application event logs correlate to specific events.  After some message tracking it was clear that outbound replication messages from a server in AG1 was reaching all servers in the same group, but not the new server in AG2.  I also verified that replication messages outbound from the new server were not reaching any server in the AG1.  After verifying that firewalls between both sites were not causing any problems I kept on searching for the root cause.&lt;/p&gt; &lt;p&gt;Coincidentally this related &lt;a href="http://www.msexchange.org/articles/Public-Folder-Replication-Troubleshooting.html" target="_blank"&gt;MSExchange.org tutorial&lt;/a&gt; mentions that one possible cause might be missing a SMTP address on a Public Store, which would prevent the server from sending and receiving SMTP-based PF replication messages.  Sure enough, the &lt;em&gt;proxyAddresses&lt;/em&gt; attribute on the new server's Public Folder Store was completely blank. This was the problem.&lt;/p&gt; &lt;p&gt;My first concern was that although I could manually stamp this attribute and probably resolve the replication issues quickly, what caused this mis-configuration in the first place?  The Enterprise Recipient Update Service is responsible for stamping that address on the PF store in the first place, so that is where I turned my attention.  Using &lt;a href="http://support.microsoft.com/kb/822794" target="_blank"&gt;TechNet article 822794&lt;/a&gt; is a guide I ran through a couple cycles of both the &lt;strong&gt;Update&lt;/strong&gt; and &lt;strong&gt;Rebuild All &lt;/strong&gt;commands, but after verifying (via USN) that the targeted object was processed the attributes continued to remain blank.  I checked the &lt;em&gt;gatewayProxy&lt;/em&gt; attribute on the Enterprise RUS itself, to see if the 'queue' was jammed up (as described in &lt;a href="http://support.microsoft.com/?id=821743" target="_blank"&gt;TechNet article 821743&lt;/a&gt;) but it was clear.&lt;/p&gt; &lt;p&gt;At this point I shifted focus back to getting the replication issue resolved and would save the root cause troubleshooting for later.  I manually stamped the &lt;em&gt;proxyAddresses&lt;/em&gt; attribute with SMTP and X400 addresses, using the formats &lt;strong&gt;SMTP:&lt;em&gt;SERVERNAME&lt;/em&gt;-IS@domain.com&lt;/strong&gt; and duplicated the X400 address from another server, updating the Administrative Group name in the path.  After some time passed I still didn't see any replication messages flowing in or out of that server.  I finally located Microsoft documentation related to this specific issue, under the Storage section of the Best Practice Analyzer articles, entitled &lt;a href="http://technet.microsoft.com/en-us/library/aa997872(EXCHG.80).aspx" target="_blank"&gt;Public Folder store does not have an email-address&lt;/a&gt;.  I found that both the &lt;em&gt;mail &lt;/em&gt;and &lt;em&gt;textEncodedORAddress &lt;/em&gt;attributes where also blank, so I populated them and double-checked ALL mail-related attributes on the same Public Folder Store object using ADSIedit.&lt;/p&gt; &lt;p&gt;Finally, within an hour, I was finding multiple replication messages in the tracking logs being delivered successfully to and from the new server.  Yet, strangely, I still didn't see the SCHEDULE+ child folder for the other Administrative Groups appearing on servers in either group.  I manually triggered Public Folder Hierarchy replication and at last, I began to see &lt;strong&gt;Hierarchy&lt;/strong&gt;, and &lt;strong&gt;Folder Content Backfill Response &lt;/strong&gt;messages:&lt;/p&gt; &lt;p&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/25/image_2.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=87 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/25/image_thumb.png" width=384 border=0&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;By this point the entire hierarchy trued up between all servers and both folders and content began to populate between all Exchange servers.  &lt;/p&gt; &lt;p&gt;With the immediate problem of SMTP mail flow into the public store resolved, I set off to discover the root cause of the issue.  I knew that the Enterprise RUS was not stamping those attributes like it was supposed to, but nothing in the error logs was helping.  Shortly after, the client deployed another Exchange mailbox server and noticed the same problem with missing mail attributes on the public folder store.  When they cranked up diagnostic logging on the server holding the Enterprise RUS service they noticed something that we hadn't seen when troubleshooting the issue with the previous server.  There were permissions-related errors (IDs 8317 and 8270) appearing under the &lt;strong&gt;ExchangeAL &lt;/strong&gt;service in the &lt;strong&gt;LDAP Operations &lt;/strong&gt;category, basically reporting that the server running the ERUS was &lt;em&gt;trying &lt;/em&gt;to stamp those objects, but was unable.  Scenario 3 in &lt;a href="http://support.microsoft.com/kb/254030" target="_blank"&gt;TechNet article 254030&lt;/a&gt; matched the specific errors we were seeing.&lt;/p&gt; &lt;p&gt;The client immediately linked this to an undocumented customization of their environment where the default security permissions had been altered way back when Exchange 2003 was originally deployed.  As a practice, whenever a new server was built they manually added the other Exchange server objects to the new server's Security tab, granting Full Control rights.  This configuration was unknown to the migration team and has since been added to the server deployment documentation as a required build step.&lt;/p&gt;&lt;/div&gt;</description><author>Jeff Schertz</author><link>http://blogs.pointbridge.com/Blogs/schertz_jeff/Pages/Post.aspx?_ID=25</link><description /><pubDate>2008-04-25 15:39:18</pubDate></item><item><id>27</id><title>Routing Calls Directly to VoiceMail with CallManager and Exchange Unified Messaging</title><body>&lt;div class=ExternalClassF858B7A9716049EA91314AAC787631DE&gt;&lt;p&gt;This is a common scenario: someone calls you, and wants to speak to a co-worker of yours. Since you know that the co-worker is not in, you would like to transfer the caller to your co-worker's VoiceMail. But you don't want to transfer, have it ring 4 times, then go to VM. You want to transfer directly into VM. It would be great to be able to do this:
&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Hit transfer
&lt;/li&gt;&lt;li&gt;Dial * then the 4 digit extension of the user you are trying to transfer to
&lt;/li&gt;&lt;li&gt;Hit transfer to put the caller through to the VM box
&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Here's the good news: it can be done!
&lt;/p&gt;&lt;p&gt;Below is how to set it up in CallManager and Exchange UM (well, it's really just a function of CallManager… this works with CallManager and Unity, too).
&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;Note&lt;/strong&gt;: in the following, I am assuming that you aren't already using * for anything in CCM.
&lt;/em&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt"&gt;&lt;strong&gt;First, go to call manager and create a new voicemail profile:
&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="/Blogs/mcgillen_matt/Lists/Photos/031908_1939_RoutingCall1.png" alt=""&gt;
	&lt;/p&gt;&lt;p&gt;Note:
&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Give it a handy name like &amp;quot;Direct2VM&amp;quot;
&lt;/li&gt;&lt;li&gt;Pick the VM pilot that your normal VM users use
&lt;/li&gt;&lt;li&gt;Make the VM mask XXXX (4 Xs)
&lt;/li&gt;&lt;li&gt;Do not check &amp;quot;make this the default profile&amp;quot; – you will be very sad if you do this
&lt;/li&gt;&lt;li&gt;Save it
&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt"&gt;&lt;strong&gt;Next, go to call manager and create a new CTI route point like this:
&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="/Blogs/mcgillen_matt/Lists/Photos/031908_1939_RoutingCall2.png" alt=""&gt;
	&lt;/p&gt;&lt;p&gt;Make sure to give the route point the same calling search space that you give your normal users' phones.
&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt"&gt;&lt;strong&gt;Then add a line (line 1) to the route point like this:
&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="/Blogs/mcgillen_matt/Lists/Photos/031908_1939_RoutingCall3.png" alt=""&gt;
	&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;Notice that
&lt;/p&gt;&lt;ol&gt;&lt;li&gt;the Directory number is an asterisk (*) followed by XXXX. 
&lt;/li&gt;&lt;li&gt;Also note that it is in the same partition as all your user's extensions. 
&lt;/li&gt;&lt;li&gt;I've assigned my new &amp;quot;Direct to VM&amp;quot; profile
&lt;/li&gt;&lt;li&gt;And, VERY IMPORTANT, make sure that you check the &amp;quot;forward all&amp;quot; box to send calls directly to VoiceMail.
&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;That should be it.
&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;You can test by picking up your phone, dialing * then your extension. It should go right to your own VM. Next, test it by having someone call you. Hit transfer, dial *1234 (where 1234 is someone's extension), then hit transfer again. 
&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;/div&gt;</body><description>&lt;div class=ExternalClassF858B7A9716049EA91314AAC787631DE&gt;&lt;p&gt;This is a common scenario: someone calls you, and wants to speak to a co-worker of yours. Since you know that the co-worker is not in, you would like to transfer the caller to your co-worker's VoiceMail. But you don't want to transfer, have it ring 4 times, then go to VM. You want to transfer directly into VM. It would be great to be able to do this:
&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Hit transfer
&lt;/li&gt;&lt;li&gt;Dial * then the 4 digit extension of the user you are trying to transfer to
&lt;/li&gt;&lt;li&gt;Hit transfer to put the caller through to the VM box
&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Here's the good news: it can be done!
&lt;/p&gt;&lt;p&gt;Below is how to set it up in CallManager and Exchange UM (well, it's really just a function of CallManager… this works with CallManager and Unity, too).
&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;Note&lt;/strong&gt;: in the following, I am assuming that you aren't already using * for anything in CCM.
&lt;/em&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt"&gt;&lt;strong&gt;First, go to call manager and create a new voicemail profile:
&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="/Blogs/mcgillen_matt/Lists/Photos/031908_1939_RoutingCall1.png" alt=""&gt;
	&lt;/p&gt;&lt;p&gt;Note:
&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Give it a handy name like &amp;quot;Direct2VM&amp;quot;
&lt;/li&gt;&lt;li&gt;Pick the VM pilot that your normal VM users use
&lt;/li&gt;&lt;li&gt;Make the VM mask XXXX (4 Xs)
&lt;/li&gt;&lt;li&gt;Do not check &amp;quot;make this the default profile&amp;quot; – you will be very sad if you do this
&lt;/li&gt;&lt;li&gt;Save it
&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt"&gt;&lt;strong&gt;Next, go to call manager and create a new CTI route point like this:
&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="/Blogs/mcgillen_matt/Lists/Photos/031908_1939_RoutingCall2.png" alt=""&gt;
	&lt;/p&gt;&lt;p&gt;Make sure to give the route point the same calling search space that you give your normal users' phones.
&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt"&gt;&lt;strong&gt;Then add a line (line 1) to the route point like this:
&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="/Blogs/mcgillen_matt/Lists/Photos/031908_1939_RoutingCall3.png" alt=""&gt;
	&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;Notice that
&lt;/p&gt;&lt;ol&gt;&lt;li&gt;the Directory number is an asterisk (*) followed by XXXX. 
&lt;/li&gt;&lt;li&gt;Also note that it is in the same partition as all your user's extensions. 
&lt;/li&gt;&lt;li&gt;I've assigned my new &amp;quot;Direct to VM&amp;quot; profile
&lt;/li&gt;&lt;li&gt;And, VERY IMPORTANT, make sure that you check the &amp;quot;forward all&amp;quot; box to send calls directly to VoiceMail.
&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;That should be it.
&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;You can test by picking up your phone, dialing * then your extension. It should go right to your own VM. Next, test it by having someone call you. Hit transfer, dial *1234 (where 1234 is someone's extension), then hit transfer again. 
&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;/div&gt;</description><author>Matthew McGillen</author><link>http://blogs.pointbridge.com/Blogs/mcgillen_matt/Pages/Post.aspx?_ID=27</link><description /><pubDate>2008-03-19 13:39:50</pubDate></item><item><id>24</id><title>Exchange Server, Free System Page Table Entries, and the 3GB and USERVA switches</title><body>&lt;div class=ExternalClass1A82AB41FA394D06A445373710B17A10&gt;&lt;p&gt;In a recent migration project I needed to move nearly 2TB of mailbox data between Exchange 2003 servers in the same organization, to the tune of 100-200GB per day.  The first couple days went fine, with excellent performance, but as more mailboxes were moved to the target server and mail delivery processes and user connections increased, move-performance began to degrade to the point that mailbox moves started to spit out generic MAPI errors and failed.&lt;/p&gt; &lt;p&gt;After a quick check of the application log I found a never-ending string of PerfOS 2012 errors:&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" color="#3f72ae" size=1&gt;Event Type:    Warning&lt;br&gt;Event Source:  PerfOS&lt;br&gt;Event ID:      2012&lt;br&gt;&lt;/font&gt;&lt;font color="#3f72ae"&gt;&lt;font face="Courier New" size=1&gt;Description:   Unable to get system process information from system.  The status code returned is in&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New" size=1&gt;               the &lt;/font&gt;&lt;font face="Courier New" size=1&gt;first DWORD in the data section.&lt;/font&gt;&lt;/font&gt;&lt;font color="#008080"&gt;&lt;font face="Courier New" size=1&gt;&lt;/p&gt;&lt;/font&gt;&lt;/font&gt; &lt;p&gt;I found very little information online regarding this error, but what I did see was typically related to memory-leaking processes.  It's quote possible that the massive mailbox moves were eating up resources and not allowing the system to reclaim them, as a reboot of the server temporarily resolved the issue.  But after moving a large amount of data the same error would return, forcing an almost daily cycle of the server to 'refresh' it's resources.&lt;/p&gt; &lt;p&gt;Since the target server was built with 16GB of RAM and Server 2003 Enterprise Edition, the &lt;strong&gt;/3GB&lt;/strong&gt; and &lt;strong&gt;/USERVA &lt;/strong&gt;boot.ini switches were used.  There are a handful of articles covering the usage and importance of this configuration:&lt;/p&gt; &lt;p&gt;&lt;a title="http://support.microsoft.com/kb/823440" href="http://support.microsoft.com/kb/823440"&gt;http://support.microsoft.com/kb/823440&lt;/a&gt;&lt;br&gt;&lt;a title="http://support.microsoft.com/kb/328882" href="http://support.microsoft.com/kb/328882"&gt;http://support.microsoft.com/kb/328882&lt;/a&gt;&lt;br&gt;&lt;a title="http://technet.microsoft.com/en-us/library/bb124810.aspx" href="http://technet.microsoft.com/en-us/library/bb124810.aspx"&gt;http://technet.microsoft.com/en-us/library/bb124810.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The first article specifically talks about monitoring &lt;strong&gt;Free System Page Table Entries&lt;/strong&gt; which is found in the &lt;em&gt;Memory &lt;/em&gt;performance object in Performance Monitor. Throughout the next set of scheduled moves I tracked the value of this counter and observed the same behavioral pattern: starting MSExchangeIS would typically reduce the counter value by 1 third, and then mailbox moves would continually lower the value over time, until it would drop around 600-1000.  Around this time the PerfOS messages would reappear in the application log and it was only a matter of time before mailbox moves started to fail.&lt;/p&gt; &lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/24/image_2.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px" height=411 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/24/image_thumb.png" width=476 border=0&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;By manually restarting the Exchange Information Store once per day I was able to raise the Free System Page Table Entries to a higher level, but new instances of the PerfOS errors were still appearing in the Application Log.  Simply rebooting the server resolved the issue temporarily, but the mass movement of mailbox data was just expediting the same low resources issue that would eventually re-appear under normal operations.&lt;/p&gt; &lt;p&gt;While reviewing MS KB article &lt;a href="http://support.microsoft.com/kb/316739" target="_blank"&gt;316739&lt;/a&gt; I discovered that the recommended /USERVA value of &lt;strong&gt;3030&lt;/strong&gt; is only really suggested as a starting point, and the server was only showing about 2000 free system page table entries after the MSExchangeIS service was started, which would decline to nearly 900 before this error would appear in the System log, requiring a reboot.&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" color="#3f72ae" size=1&gt;Event Type:    Error&lt;br&gt;Event Source:  Application Popup&lt;br&gt;Event ID:      333&lt;br&gt;&lt;/font&gt;&lt;font color="#3f72ae"&gt;&lt;font face="Courier New" size=1&gt;Description:   An I/O operation initiated by the Registry failed unrecoverably. The Registry could not read&lt;br&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#3f72ae"&gt;&lt;font face="Courier New" size=1&gt;               in, or write out, or flush, one of the files that contain the system's image of the registry.&lt;/font&gt;&lt;/font&gt;&lt;font color="#3f72ae"&gt;&lt;font face="Courier New" size=1&gt;&lt;br&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;By decreasing the USERVA setting by the recommended 64MB increments I was able to increase the observed PTE value above the 24,000 range.   So, after a little experimenting I found that a setting of &lt;strong&gt;2900 &lt;/strong&gt;addressed nearly &lt;em&gt;35,000 &lt;/em&gt;free system PTEs and the server has been stable ever since.  &lt;/p&gt;&lt;/div&gt;</body><description>&lt;div class=ExternalClass1A82AB41FA394D06A445373710B17A10&gt;&lt;p&gt;In a recent migration project I needed to move nearly 2TB of mailbox data between Exchange 2003 servers in the same organization, to the tune of 100-200GB per day.  The first couple days went fine, with excellent performance, but as more mailboxes were moved to the target server and mail delivery processes and user connections increased, move-performance began to degrade to the point that mailbox moves started to spit out generic MAPI errors and failed.&lt;/p&gt; &lt;p&gt;After a quick check of the application log I found a never-ending string of PerfOS 2012 errors:&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" color="#3f72ae" size=1&gt;Event Type:    Warning&lt;br&gt;Event Source:  PerfOS&lt;br&gt;Event ID:      2012&lt;br&gt;&lt;/font&gt;&lt;font color="#3f72ae"&gt;&lt;font face="Courier New" size=1&gt;Description:   Unable to get system process information from system.  The status code returned is in&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New" size=1&gt;               the &lt;/font&gt;&lt;font face="Courier New" size=1&gt;first DWORD in the data section.&lt;/font&gt;&lt;/font&gt;&lt;font color="#008080"&gt;&lt;font face="Courier New" size=1&gt;&lt;/p&gt;&lt;/font&gt;&lt;/font&gt; &lt;p&gt;I found very little information online regarding this error, but what I did see was typically related to memory-leaking processes.  It's quote possible that the massive mailbox moves were eating up resources and not allowing the system to reclaim them, as a reboot of the server temporarily resolved the issue.  But after moving a large amount of data the same error would return, forcing an almost daily cycle of the server to 'refresh' it's resources.&lt;/p&gt; &lt;p&gt;Since the target server was built with 16GB of RAM and Server 2003 Enterprise Edition, the &lt;strong&gt;/3GB&lt;/strong&gt; and &lt;strong&gt;/USERVA &lt;/strong&gt;boot.ini switches were used.  There are a handful of articles covering the usage and importance of this configuration:&lt;/p&gt; &lt;p&gt;&lt;a title="http://support.microsoft.com/kb/823440" href="http://support.microsoft.com/kb/823440"&gt;http://support.microsoft.com/kb/823440&lt;/a&gt;&lt;br&gt;&lt;a title="http://support.microsoft.com/kb/328882" href="http://support.microsoft.com/kb/328882"&gt;http://support.microsoft.com/kb/328882&lt;/a&gt;&lt;br&gt;&lt;a title="http://technet.microsoft.com/en-us/library/bb124810.aspx" href="http://technet.microsoft.com/en-us/library/bb124810.aspx"&gt;http://technet.microsoft.com/en-us/library/bb124810.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The first article specifically talks about monitoring &lt;strong&gt;Free System Page Table Entries&lt;/strong&gt; which is found in the &lt;em&gt;Memory &lt;/em&gt;performance object in Performance Monitor. Throughout the next set of scheduled moves I tracked the value of this counter and observed the same behavioral pattern: starting MSExchangeIS would typically reduce the counter value by 1 third, and then mailbox moves would continually lower the value over time, until it would drop around 600-1000.  Around this time the PerfOS messages would reappear in the application log and it was only a matter of time before mailbox moves started to fail.&lt;/p&gt; &lt;p align=center&gt;&lt;a href="/Blogs/schertz_jeff/Lists/Posts/Attachments/24/image_2.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px" height=411 alt=image src="/Blogs/schertz_jeff/Lists/Posts/Attachments/24/image_thumb.png" width=476 border=0&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;By manually restarting the Exchange Information Store once per day I was able to raise the Free System Page Table Entries to a higher level, but new instances of the PerfOS errors were still appearing in the Application Log.  Simply rebooting the server resolved the issue temporarily, but the mass movement of mailbox data was just expediting the same low resources issue that would eventually re-appear under normal operations.&lt;/p&gt; &lt;p&gt;While reviewing MS KB article &lt;a href="http://support.microsoft.com/kb/316739" target="_blank"&gt;316739&lt;/a&gt; I discovered that the recommended /USERVA value of &lt;strong&gt;3030&lt;/strong&gt; is only really suggested as a starting point, and the server was only showing about 2000 free system page table entries after the MSExchangeIS service was started, which would decline to nearly 900 before this error would appear in the System log, requiring a reboot.&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" color="#3f72ae" size=1&gt;Event Type:    Error&lt;br&gt;Event Source:  Application Popup&lt;br&gt;Event ID:      333&lt;br&gt;&lt;/font&gt;&lt;font color="#3f72ae"&gt;&lt;font face="Courier New" size=1&gt;Description:   An I/O operation initiated by the Registry failed unrecoverably. The Registry could not read&lt;br&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#3f72ae"&gt;&lt;font face="Courier New" size=1&gt;               in, or write out, or flush, one of the files that contain the system's image of the registry.&lt;/font&gt;&lt;/font&gt;&lt;font color="#3f72ae"&gt;&lt;font face="Courier New" size=1&gt;&lt;br&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;By decreasing the USERVA setting by the recommended 64MB increments I was able to increase the observed PTE value above the 24,000 range.   So, after a little experimenting I found that a setting of &lt;strong&gt;2900 &lt;/strong&gt;addressed nearly &lt;em&gt;35,000 &lt;/em&gt;free system PTEs and the server has been stable ever since.  &lt;/p&gt;&lt;/div&gt;</description><author>Jeff Schertz</author><link>http://blogs.pointbridge.com/Blogs/schertz_jeff/Pages/Post.aspx?_ID=24</link><description /><pubDate>2008-03-12 13:26:18</pubDate></item><item><id>11</id><title>Review of Windows 2008 Failover Clustering</title><body>&lt;div class=ExternalClassA95C412AB4894EA682F3B3D2B33922F3&gt;
&lt;p&gt;In keeping with the Windows Server 2008 theme, I'm posting my second PointCast, which covers some of the new features in failover clustering. It includes a demo in which I fail over an active node of a CCR cluster to a passive one located on a different IP subnet. This is something I wish we had years ago! All in all, I've been &lt;em&gt;very&lt;/em&gt; impressed with clustering on Windows Server 2008. It's come a long way since the good 'ol days of Windows 2000. &lt;/p&gt;
&lt;p&gt;NOTE: All demo material that you see has been performed on RTM builds. &lt;/p&gt;
&lt;p&gt;The PointCast lasts about 15 minutes. [ &lt;a href="/Blogs/nielsen_travis/Documents/PointCast2/Windows%202008%20Failover%20Clustering.html"&gt;web&lt;/a&gt; / &lt;a href="/Blogs/nielsen_travis/Documents/PointCast2/Windows%202008%20Failover%20Clustering.m4v"&gt;iPod&lt;/a&gt; (18,761 KB) ]&lt;/p&gt;&lt;/div&gt;</body><description>&lt;div class=ExternalClassA95C412AB4894EA682F3B3D2B33922F3&gt;
&lt;p&gt;In keeping with the Windows Server 2008 theme, I'm posting my second PointCast, which covers some of the new features in failover clustering. It includes a demo in which I fail over an active node of a CCR cluster to a passive one located on a different IP subnet. This is something I wish we had years ago! All in all, I've been &lt;em&gt;very&lt;/em&gt; impressed with clustering on Windows Server 2008. It's come a long way since the good 'ol days of Windows 2000. &lt;/p&gt;
&lt;p&gt;NOTE: All demo material that you see has been performed on RTM builds. &lt;/p&gt;
&lt;p&gt;The PointCast lasts about 15 minutes. [ &lt;a href="/Blogs/nielsen_travis/Documents/PointCast2/Windows%202008%20Failover%20Clustering.html"&gt;web&lt;/a&gt; / &lt;a href="/Blogs/nielsen_travis/Documents/PointCast2/Windows%202008%20Failover%20Clustering.m4v"&gt;iPod&lt;/a&gt; (18,761 KB) ]&lt;/p&gt;&lt;/div&gt;</description><author>Travis Nielsen</author><link>http://blogs.pointbridge.com/Blogs/nielsen_travis/Pages/Post.aspx?_ID=11</link><description /><pubDate>2008-02-18 20:46:00</pubDate></item><item><id>24</id><title>Exchange Unified Messaging integrated with OCS 2007</title><body>&lt;div class=ExternalClass6629BF9CCFF44A7A82903A8DD00FD3BF&gt;&lt;p&gt;I've had this pop up twice on me now, so I'm thinking that it's