Master & Cmd-R

How and when Clutter is enabled

This question has been bugging me since Clutter was launched, and I was happy to find this thread on the IT Pro Network that answered it. Clutter is one of those features that I take for granted now, but it’s definitely a question that comes up during migrations when users are starting to see it, and some aren’t (yet).

“Let me clarify the issue here:

Clutter is a learning system. It requires to have a certain lower limit of messages in the mailbox to confidently learn about a user’s behavior before Clutter is auto enabled for a mailbox.

For newly created mailboxes and mailboxes that are migrated from On-Prem to the cloud, we need the following requirements to be satisfied:

1) At least 1000 messages delivered to the mailbox after creation (or migration to the cloud).

2) User needs to have logged into the mailbox once after creation (or migration to the cloud).

After the above two criteria are satisfied, Clutter is auto enabled for that mailbox within 24 hours.”

From <>

Transfer Outlook 2010 Autocomplete Cache to a New Profile

One issue that can happen when creating a new Outlook profile in order to configure Office 365 access is that the Autocomplete cache disappears – the reason for this is that the autocomplete cache is tied to the old profile, and doesn’t get carried over automatically… the good news is that there is a way to import it from the old profile, so all is not lost!


Start by navigating to c:\Users\username\AppData\Local\Microsoft\Outlook\RoamCache – look for a file named Stream_Autocomplete_0.dat with a hash of numbers. If you have multiple profiles, you can sort by date, and choose the most recent one – the empty autocomplete file will typically be 1 – 2KB, so it’s usually pretty easy to see which one it is.

Next, find the Autocomplete file that you want to import – it’ll usually be quite a bit bigger, and it will have a different hash of numbers in the file name (and usually a different modified date as well):

In order for this to work, Outlook needs to be closed – once this is done, make a backup of the Autocomplete file that you plan to import – just in case. I typically make a copy of this file, and then work with the copy, so I can always go back to my original if I need to.

Next, rename the empty autocomplete dat file – just change the name of it to .bak, or .old, and that should be sufficient. At the same time, grab the name of the Autocomplete file that you want to replace (in this case, the name you’re copying is Stream_Autocomplete_0_A7D60F3ACC828B4EB204A03004F8BD58, and then rename the copy of the file you just made

Once you’re done, you should now have two autocomplete files of the same size – the autocomplete file from the original profile, and the one you’ve just renamed / imported:

Now, go ahead and open Outlook and verify that autocomplete is working properly again.


There have been a few times that I’ve done this, and found my autocomplete file cleared again when I re-open Outlook – if this is the case, just do the process again. This is why we made a copy of the good autocomplete file, as we can still go back and redo the process – otherwise, your working copy of the autocomplete cache would be all gone, and that would be the end of it!

Sit back and relax, and get used to being hailed as a hero… This trick is a particular brand of magic that makes you seem like both a magician, and a miracle worker!

.TrimEnd removes too many characters

I’m working on a migration project where I need to create temporary accounts for each user that I’m going to be migrating (long story, don’t ask!). I wanted a way to create the temporary account based on the real user name, have them easily identifiable as belonging to that user, and then make sure to not use the primary domain for their email address, just to make sure there was no confusion.

Based on these requirements, I started working on a script to provision these user accounts – I wanted to take a user’s name and UPN from a CSV file, and then produce the temporary migration account from there.

For example, my csv file looked like this:

Name samAccountName UPN LicenseType UsageLocation
YVR E1 Test yvrE1test E1 CA

Just so you can follow along, I’ve imported the CSV file into my Shell so we can work with it:

Now that I have my variable defined, I needed to get just the beginning of the UPN, so I could create a new user. I know what you’re thinking – why not just use the samAccountName, since it matches? Well, I wanted to make sure I wouldn’t end up with discrepancies if I ran this against a larger batch of users, and had some where those values didn’t match – I figured the safest bet would be take the UPN value that I’d be using later (for the real user account), and build off of that.

So, I started out by using the .TrimEnd method to remove the domain name from the end of the UPN, like so:

$migUser = $($u.upn).TrimEnd(“”)

And after that, add a prefix, and the onmicrosoft domain to create a new UPN:

$migUPN = “mc-$migUser+“”

And finally, I wanted the Display Name to make it obvious that this was my temporary migration account:

$migDisplay = $($u.Name) (MC)”

What happened next was really weird – .TrimEnd was taking away more characters than I had expected, like so:


So the end result was that my user would be created, but the results were inconsistent – very frustrating!

Doing some digging around on the internet I discovered that TrimEnd treats the characters that you specify as a character array, and not a string like I was expecting it to. Since all of the letters for “test” are found in “”, it was trimming away every character that it found at the end of the string that matched ANY of those characters. As soon as it hits a character that doesn’t match the array of characters you’ve provided, it stops trimming, which is why it doesn’t take away the remaining “rE” from my username.

To solve this problem, and to make sure that you are removing a specific string of text from the end of a word, use the -replace function instead, like so:

# Define migration user account format

$migUser = $($u.upn) -replace ‘’,

$migUPN = “mc-$migUser+“”

$migDisplay = $($u.Name) (MC)”

As you can see, this time my results were exactly as expected:


So, lessons learned – make sure if you need to remove a specific string of characters from the end of a string in PowerShell, use -replace and not .TrimEnd!

RetentionHoldEnabled Inconsistency

I ran into an issue today where we discovered that a subset of our users with mailboxes that had been migrated to Office 365 had Retention Hold enabled on their mailboxes – what was strange about this was that we hadn’t set this at all during our migration, and it seemed to be randomly applied to about 30% of the mailboxes.

You can check this setting with the following command:

Get-Mailbox -ResultSize unlimited | Where-Object {$_.RetentionHoldEnabled -eq $true} | Format-Table Name,RetentionPolicy,RetentionHoldEnabled –Auto

With this result:


Looking through the list of users, there was a mixture of E1 and E3 licenses, but no K1 licenses or shared mailboxes. This made sense, as K1s and shared mailboxes didn’t have archiving enabled.

It’s important to note that Retention Hold is not the same as Litigation Hold – Litigation Hold puts a change freeze on a mailbox so that a user can’t delete or change items in their mailbox. It generally happens behind the scenes, and most users don’t notice that their mailbox has litigation hold applied, as deleted items disappear as normal, and the deletions/changes end up in a separate folder that the user cannot see.

Retention Hold, on the other hand, prevents the Managed Folder Assistant from running on that mailbox and processing retention tags. This means that users with Retention Hold enabled will not have their emails archiving or deleting based on the policies that have been set up in their Retention Policy.

After looking around a bit, I began to notice a pattern – each of the users who had their RetentionHold set to Enabled were users that we had been importing PST files into their online archives using the Office 365 Import Service. We had already noticed a bug (and opened a ticket), because we were not able to manually delete the jobs, and they weren’t automatically being deleted after 30 days the way they’re supposed to be.

It seems like Retention Hold is being enabled when a PST import job starts, and the flag is not being cleared automatically because the jobs are not being deleted properly.

You can fix this on a single mailbox by running the following command:

Set-Mailbox -RetentionHoldEnabled $false

Alternately, if you want to run this for all affected mailboxes, here’s the command to use:

Get-Mailbox -ResultSize unlimited | Where-Object {$_.RetentionHoldEnabled -eq $true} | Set-Mailbox -RetentionHoldEnabled $false

Hopefully Microsoft will get this bug resolved soon so that we have better control over the PST Import service – in the meantime, you can use this script to get retention policies functioning properly again.

Hope this helps!

Migrating to Office 365: The Good, The Bad, and The Ugly

Last night marked the launch of a new Cloud / Office 365 user group hosted by the team at Long View Systems – I had the pleasure of being the inaugural speaker, and we ended up having a great discussion around the various migration strategies available when moving email into Exchange Online.

It was awesome getting feedback from the folks that were at the meeting, and we had enough field experience in the room to be able to share our war stories, and talk about the good, bad, and ugly parts that make up the move into Microsoft’s cloud.

Hope you enjoy the show! 😀

Force ADFS Database Sync

This’ll be a quick one – I ran into an issue last night where my secondary ADFS servers were not updating their database settings from the primary, and hadn’t updated in over 10 days. This was causing problems, as I had made some changes to ADFS to configure Yammer SSO, and the correct claims rules weren’t being applied if users hit the wrong server.

I checked the Poll Duration in PowerShell, and found that it was set to the standard 300 seconds (5 minutes), and not some insanely long interval:

I tried changing to a shorter poll interval by using the following command:

Set-AdfsSyncProperties -PollDuration 10

This drops the poll duration down to 10 seconds, so you’d think that it would update pretty quickly. Sadly, if a server is already not syncing at 5 minute intervals, setting a shorter sync still doesn’t change anything.

After looking around the web, I couldn’t find any options to force a database sync either through PowerShell, or through the GUI. Thankfully, the resolution to the problem is actually quite simple – just restart the ADFS services, and this will force the database to resync immediately.

Since I was already in PowerShell, I restarted the service using the following command:

Restart-Service adfssrv

You can, of course, just restart the service through services.msc – but I like using PowerShell whenever I can, so there you go!

OneDrive now Supports Syncing Shared Folders

In a surprise move (to me, at least), Microsoft has enabled a feature in OneDrive that allows you to add a folder that has been shared with you into your OneDrive folder hierarchy. I’m not sure when this got enabled, but I only just noticed it, and man, am I excited to see this feature go live!

In my opinion, this is one thing that has been sorely lacking from OneDrive, and I’m so happy to see the OneDrive team continue to add great new features like this.

To add a folder to your OneDrive library, simply navigate to your Shared items, select the folder you want to add, and then click on Add to my OneDrive. This option only appears for folders, and doesn’t show up for individual files.


A popup notifies you that you’re going to be adding a shared folder to your OneDrive, and you will now be able to sync it with the rest of your library – so awesome!

Click Add folder, and then hang tight for a few seconds while it gets added to your library.

Voila! The folder is now available from within your OneDrive in the browser, can be synced down to your various PCs, Macs, and mobile devices!


Now, I know what you’re thinking… “Dropbox has been doing this forever” – well, you’re right. I’m not saying this feature is brand new, and not seen anywhere else – I’m just excited to see Microsoft make this change to make OneDrive, and its sharing features much more user friendly. This feature has been the top of my wish list since forever, and I’m glad to see it finally show up.

Good job, Microsoft – can’t wait to see what’s next for the OneDrive for Business client!

Yammer user blocking

By default, any user can create an account on Yammer using their work email address and get added to your company network. Most of the time, this is just what you want – however, if you’re in a Proof of Concept, you need a way to control the size of the group who has Yammer access in order to perform your testing in a controlled manner.

Before a user can be blocked, their account needs to be deactivated in Yammer. If you export a list of users from within Yammer, all deactivated users show up as soft_delete. Active users simply show up as active. If the user hasn’t logged into Yammer at all, their account won’t show up in the list of users, but I’ll cover blocking these users below.

Deactivating Current Users:

This can be done one at a time, by typing their name into the search field on the Yammer Admin page, under Remove users:

Select the user to be deactivated, and the action you want to take, and then click Submit.

Once a user has been deactivated, they can be reactivated by simply clicking Reactivate beside their name in the list.

Deactivating Users through Bulk Update

You can also use the Bulk Update tool in Yammer to perform the following actions: create a new user, update an existing user, as well as suspend or delete a user.

The Bulk Update tool cannot be used to block or unblock users – this must be done manually through the Yammer Admin page, under Block Users.

Blocking Users in Yammer

Blocking users prevents them from creating an account on your Yammer network – this is why an active user can’t be blocked, only accounts that haven’t been activated for Yammer, or have already been deleted from within Yammer.

To block a user, simply copy paste their email address into the Block Users field – either one email address per line, or comma separated. This field doesn’t allow you to import a csv file of users, but a csv file can be used to copy/paste the required addresses into the field. Once you have the email address(es) in the field, click Block.


When a blocked user attempts to log into Yammer directly through, or by clicking on the Yammer icon in Office 365, they’ll be redirected to the following error page:

Unblocking Users in Yammer

To unblock users in Yammer, simply find their name in the list and click Unblock.

An unblocked user is immediately able to log into Yammer as normal:

As you can imagine, this process is far from ideal – it’s not that bad if you only have a few users to deactivate / block, but what if you had to do this for an organization with thousands of users? That would be incredibly painful to manage – and enabling / disabling access in the future involves scrolling through pages of blocked users to unblock them one at a time.

I really only recommend using this process for smaller networks – if you are planning on implementing Yammer, or have done so in a larger environment, Yammer Single Sign On allows you to allow / deny access based on AD security group. This is much easier to manage, and allows you to control the roll-out, rather than having to let everyone access it right away, and clean up the mess that comes out of that approach.

OneNote: Better than ever, and now even more free

OneNote is easily my most favorite productivity application ever – and most definitely the one application I can’t live without! I’ve been using it since Office 2007, and I continue to love it all the way through to 2013 – even when I was using a Mac exclusively for a while, I couldn’t find anything to replace it, so kept coming back to the PC so I could have my sweet, sweet OneNote back… mind you, OneNote is available on the Mac now, but since I’m running Windows 10, that’s not really the point.

Microsoft continues to knock it out of the park where OneNote is concerned – they’ve made it free, it’s available on just about everything now, and as of today, they’ve made the free version EVEN BETTER!

More details are available here, but this is the gist of what they’ve added:

  • Password protected sections—Add a password to protect sensitive information.
  • Page history—Easily see or go back to prior versions of a page.
  • Audio and video recording—Take notes while recording, and easily jump to the relevant section later.
  • Audio search—Search for a word in a voice or video recording.
  • Embedded files—Insert Office documents or other files directly in your notebook.

By far and large, password protecting sections (or otherwise known as How to Hide Your Christmas List from Your Wife & Kids), and page history are my favorite of these features added today, since they are the ones I use the most.

As always, OneNote connects to your OneDrive account to sync on every possible device that you can run it on – making it one of the first applications I install on any new device I own.

If you’ve never used it before, it’s time to find out what you’re missing – I promise, once you give it a try, you’ll never go back to having stacks of Word documents all over the place!

New Microsoft Azure portal

The new Microsoft Azure portal was announced today at Build 2014, and I immediately headed over to check it out at I love it! The home page is clean and nicely laid out, very similar to the Windows Start page with live tiles that dynamically update, and give you different options when you click on them:

040314 2125 NewMicrosof1 New Microsoft Azure portal


Clicking on the links on the left open up more features and functions:

040314 2125 NewMicrosof2 New Microsoft Azure portal


As you drill down, more dashboards and functions open up along the right, allowing you to view the status of your Azure properties:

040314 2125 NewMicrosof3 New Microsoft Azure portal


Clicking on the Gallery (bottom left on the home page) allows you to browse all of the available options and quickly provision them. Since the portal is still in preview, you have to return to the existing Azure portal to actually provision a new server or service, but it’s a great indicator of what is coming.

040314 2125 NewMicrosof4 New Microsoft Azure portal


This guy is my favorite so far icon biggrin New Microsoft Azure portal

040314 2125 NewMicrosof5 New Microsoft Azure portal

I’m loving these changes – I’m a big fan of software and user interfaces that are clean and beautiful, and the new Azure portal definitely is both of these.

Alongside of these announcements, changes to the Windows 8.1 interface are in the works – the start page continues to get better and better, and I’m going to be hitting that download as soon as it’s available on April 8th.

It’s a good day to be a fanboy! icon biggrin New Microsoft Azure portal
+Jeremy Dahl