Thursday 13 December 2007

Why did I just get multiple invites and cancellations for the same meeting? Is this thing on?

A while back I posted about common ways meetings can go missing, one of which is when a distribution list is invited to a meeting.
Today I saw an interesting 'feature' of how inviting a distribution list (DL) then trying to make changes later can really confuse things.  Our team got two invites and a cancellation to the same meeting, and the organiser couldn't work out how it had happened.
http://support.microsoft.com/?id=222388 covers the basics of what the organiser and invitees see, but it doesn't really explain how that occurs. So for the record, here's a worked example (you know how I love those):
  • I've been asked to create the invite for my team's offsite team-building exercise (read: we're going to the pub)
  • My team are all members of a DL called BigTeam, so I send the invite to them (ignoring the great advice I usually encourage everyone else to follow that says never invite a DL without expanding it, especially one you're a member of)
  • I realise later that the BigTeam DL also includes some guys who work at a remote location to us - remote enough that they probably don't want to know the details of some drink-up they won't be able to get to. So I go back into the meeting and remove them.
  • Here's the critical bit: because they were invited as part of the BigTeam DL, to un-invite them I have to expand out the DL, then remove them from the expanded list.
  • Here's the bit they don't explain in the KB article: Outlook just sees addresses in the invitee list. It doesn't much care if they're DLs or individuals. It sees that the BigTeam DL has gone from the invitee list, and a whole load of individuals have suddenly appeared. (It just sees the difference between how the invitee list looked before and how it looks now, so isn't 'aware' that a DL was expanded to get to where we are now.)
  • Outlook does what it always does in these situations: it sends a cancellation to all the addresses that were in the invitee list but aren't any more (i.e. the BigTeam DL) and sends an invitation to all the addresses that are in the invitee list that weren't before (i.e. the people whose names are left after I removed our far-flung colleagues).
  • Everyone gets a cancellation (because a cancellation was sent to the BigTeam DL), and those lucky enough to still be invited get a new meeting request. It doesn't appear to make sense, but this is Outlook behaving as it was designed.
The up-side if you're using Outlook 2007 is that at least it doesn't allow you to process meeting invites/updates/cancellations in the wrong order, which would probably confuse things even further. But the basic behaviour is still the same.
I hope this helps explain things if this has been causing you the same kind of confusion it caused in our office today!

Wednesday 12 December 2007

Cool Excel tip to make sure VLOOKUP continues to work if columns move

I'm a fairly advanced user of Excel so generally I find hints and tips fall into two categories: either I already know them, or they relate to features I never use (like functions way beyond my meagre grasp of maths or finance). But today I read a really cool tip that 1) I'd definitely use and 2) it never occurred to me to try before.

This is from David Gainer's blog, I hope he doesn't mind me reproducing it here...


Here’s a trick to using VLOOKUP with tables. VLOOKUP isn’t table-aware, so the third argument, col_index_num, is still a number and not, say, a column name when used with Tables. Next time you use VLOOKUP on a table, use the following formula for the third argument instead of an index number:

MATCH( TableName[[#Headers], [ColumnName]], TableName[#Headers], 0)

Substitute ‘TableName’ with the name of the table you are looking up, and ‘ColumnName’ for the name of the table column you want to index into. This, in effect, gives you a tight pointer to the column that does not break if the column name changes or if the column is re-arranged in the table, thereby providing a more robust alternative to using a numerical index.





Office 2007 SP1 is available

See http://support.microsoft.com/kb/936982 for details.

Invariably there are a few new hiccups discovered in the early days of a major Service Pack, so if your PC is critical to what you do then it's usually a good idea to hold back a few days. Let other more intrepid (or more foolhardy, depends on your view) folks try it out and see how much shouting there is on the blogs and newsgroups before you install it for yourself.

Of course, if SP1 contains a fix for a problem that's been bothering you then you may want to go ahead now anyway.

Meanwhile, I'll be one of the intrepid/foolhardy people installing mine tonight. (But then I've already been running the Beta on a test machine for a while.)

Monday 12 November 2007

Information gathering

A story of when the humble traffic reporter scooped the newsdesks:

Around lunchtime today a massive cloud of smoke appeared over East London, clearly visible from the building where I work. Immediately people were asking each other: Was London under terrorist attack again? Were toxic fumes being released into the air? Would we be able to get home tonight? The story was too new for any of the usual news websites to have any information, so I dug out my headphones and tuned in to the local radio station to find out what was going on.

After about five minutes of an interview with some minor celebrity, the presenter cut in with a 'breaking news on-the-spot report' by phone from a local cab driver. He was a couple of miles away but estimated where he thought the fire was to within a mile or so and gave a description of what he could see, which was basically a lot of black smoke in the sky. The radio presenter commented on the pictures he'd just found on the TV news, but said the information was sketchy and they'd keep us updated with whatever they found out in the unfolding drama. Then he cut to the traffic report.

The traffic and travel reporter told us calmly and confidently that it was a fire, where it was, what roads were closed, where the worst of the congestion was, then got on with telling us what was going on with the roads and public transport across the rest of London. The news room had just been scooped by the traffic desk.

Our immediate questions weren't about what kind of traffic jam had been caused by the fire, but in gathering that information the traffic desk also knew a lot of basics we did want to know, and from the fact there weren't reports of the whole area being evacuated we could assume there wasn't a major leak of hazardous substances.

I guess the moral of that story is that sometimes the best place to go for information isn't necessarily the most obvious. It helps to think about who has the best ability for (and often the technology most suited to) gathering the information in the first place.

Thursday 8 November 2007

Long time no blog

Over a month in fact.  I could pretend I was so busy saving the world from moving DST dates that I didn't have time to write, but the truth of it is I've just got out of the habit.  Most of my best work (cough) was written on my train journey home, but my routine has changed a bit so now I need to find a new place/time that I automatically think about sitting down with the laptop to write a post.  Right now it's the kitchen table, which is a lot more comfortable for typing than the train ever used to be.

If anyone was waiting eagerly for my wrap-up of miscellaneous Outlook/DST factoids, my apologies.  I promise they weren't that interesting anyway, and were unlikely to impact your ability to deal with the last few weekends.  Please get in touch through the comments if there was something I missed though and I'll answer any questions I can.

Wednesday 26 September 2007

Excel 2007 bug: result of 100000, should be around 65535

If you use Excel 2007 in any serious capacity, you really should know about this issue David Gainer blogged about in the early hours (my time, at least) this morning:
Calculation Issue Update
The short version of the story is that if you have any calculations with a result of around 65535, they may show an incorrect result of 100000.
I expect a few people on the product team at Microsoft will have a very uncomfortable few days. Hopefully David will keep us updated through his blog.

Tuesday 25 September 2007

Why I like PCs

I hate to jump on a bandwagon, but Stephen Fry's epic post about iPhones, SmartPhones, and technology in general got me thinking. (Everyone and their dog has referred to his blog recently, it seems, including me now. And worse, I've shamelessly referenced it and I'm not even going to talk about mobile devices.) The age-old rivalry between PC and Mac fans, Fry being a proud Mac devotee, is something that's always baffled me. And when I say rivalry, I really mean hatred for each other's choice of product. If I knew people who drove Ford Focuses (Focii?) who absolutely detested Volkswagen Golfs then maybe I could understand it, but I don't.

I've always liked PCs for the same reason I like the English Language. I learned to use each of them before their alternatives and they're familiar to me; we go back a long way. I’ve had a lot of practise so I can now use both reasonably competently, and they serve me more than adequately. I believe there are parallels in the way the PC and the English Language arrived at where they are today. They've grown, absorbing components from anywhere and everywhere, evolving as they needed to because no one organisation had control – at least in recent times. Standards have appeared, but mostly because conventions were adopted and became widespread, then were documented and made official - not the reverse. I would argue that both are better for being products of chaos and evolution, not control and design.

There's little doubt that a bog-standard Mac is more aesthetically pleasing than a bog-standard PC or laptop. But if I could have an upgrade to ‘pretty’ for my PC for £50 I don't think I'd bother. It sits under my desk, for practical reasons, so it would be a waste of some designer's efforts, not to mention my cash, for a pretty PC not to be seen. As long as it isn't conspicuously ugly, I'm quite happy. Nondescript suits me just fine. To borrow Stephen's analogy about concrete buildings, they don’t bother me if they’re the most practical solution to a practical problem. Unless they’re truly hideous, they usually only become offensive when placed next to a thing of beauty, which is why my PC doesn’t sit next to a vase of lilies.

In fact, I just wrote that last paragraph completely forgetting the small and (to my mind) attractive glossy black AOpen machine I recently built as a server. It sits on a bookcase in my lounge. I did pay a bit extra for the case, but mostly because it was small and had quiet, integrated cooling. There probably were some butt-ugly alternatives which I didn't even consider - so perhaps there are times when design is important. But I still chose the nicest case available for the technology I wanted, not the other way round. It's just a bonus that I didn't have to find a place to hide it.

Then there’s the idea that choosing a Mac or PC, Windows or Linux, says something about who I am, as if my laptop is somehow a symbol that other commuters on the train may use to judge me. If my choice of computer makes some kind of image statement, then I hope the statement is just that I don't care enough about my image for it to dictate my choice of computer.

As for the aesthetics of the desktop operating system, I quite like Windows Vista. Is that controversial? The whole Glass thing is easy on the eye, and it’s very useable. (I say that, but I frequently use a remote connection to my main machine which immediately disables all the flashy graphics to conserve bandwidth. I barely even notice a difference.) I even remember being impressed by Windows XP when I first saw it, at least after I switched off the Teletubby Hill desktop image and the Fisher-Price inspired Start Menu. I expect the Vista ‘look’ will get tired quicker than any MacOS just like XP did but mainly because of its ubiquity. And even then it won't bother me - it doesn't have to be a work of art or even visually pleasing, it just has to be reasonably intuitive to use without being downright ugly. Windows 95 looked sleek and sophisticated compared to Windows 3.1 - it just shows how our expectations change.

As with the English language, another reason Windows feels natural to me is because its history and culture don't need to be explained - I know that CTRL+Insert does the same thing as CTRL+C because it's a legacy from DOS days. (I choose that example because I'm a leftie-mouser and those keys are convenient for my right hand, so I’m happy that trick has been preserved.) I expect I could learn to like a Linux or MacOS desktop, but it would take a long time for them to stop feeling somehow foreign. My TiVo is a Linux box and I love it dearly as a PVR, but if I need to telnet to it to perform some housekeeping (yes, of course it's hacked and networked), I need step-by-step instructions for all but the most basic tasks. It’s like trying to speak Russian from a phrase book when the only words I’ve committed to memory are “hello”, “goodbye”, “two beers, please” and “thank you”.

Ultimately, I guess my point is that technology isn't religion. Nobody has to choose one computer or OS and forsake all others. We don't have to engage in some holy war over who is right or wrong. If your circumstances require you to use a piece of technology you hate, I’ve been there. It sucks, and I sympathise, even if the very thing you hate is the one I would choose.

Monday 10 September 2007

Daylight Saving 3: When 'summer' moves

In my part of the world we've hardly had anything resembling a summer... I'd love to know where ours got moved to.

Seriously though... in my previous post I showed how Outlook appointments appear to move when people in different regions 'do Daylight Saving Time (DST) differently. Now we get onto the really fun stuff... when legislature keeps us on our toes by moving DST about.

In 2005, the US Government passed a bill to make DST last longer starting from spring 2007. Various other countries followed suit, and in total 33 time zones changed. Software vendors had to issue patches to all their systems that were DST-aware, Microsoft included. Patches for Windows were released to cope with the change so everyone's system clock should automatically update on the correct weekend.

Because of what we already know about how Outlook stores appointments, this caused meetings to appear to move about. An appointment would have been affected if all the following were true:

  • The appointment was scheduled from one of the affected time zones (i.e. one whose DST rules changed)
  • The appointment was created on a machine with the unpatched version of the time zone information (i.e. one where the meeting was created before the Windows Updates were applied or possibly before they existed)
  • The meeting occurred in one of the 'delta' periods, i.e. the dates between when the clocks would change under the old and new rules (so the spring delta ran from the second Sunday in March to the first Sunday in April)

Here's an example of how an appointment would appear to move just by applying the Windows DST patch to a user's machine:

Appointment time is stored in UTC when the appointment is first created, i.e. before the update was applied to the user's machine:

Appointment time is displayed in Local Time, calculated at the time it is viewed. So this is how it will appear after the update is applied to the user's machine:

Local time in NY

13:00

UTC

18:00

Adjust for Daylight Saving

0:00

Adjust for Daylight Saving

+1:00

Adjust for GMT-5 time zone

+5:00

Adjust for GMT+5.5 time zone

-5:00

UTC

18:00

Local time in NY

14:00

*according to unpatched settings, 15th March is not within Daylight Saving Time

*according to patched settings, 15th March is within Daylight Saving Time

(If those tables don't make any sense, check out this post for an explanation.)

Microsoft released some 'rebasing' tools to help users 'fix' the appointments that appeared to have moved. These were mostly sufficient for the average home user, but for large organizations they had the following drawbacks:

  • The tool could only reliably tell if a recurring appointment had the incorrect DST information and needed fixing. (This is because single-instance appointments don't store time zone data at all.)
  • The user-side tool wasn't easy to automate because of the risk of 'fixing' a single-instance appointment that was already correct.
  • The first iteration of the server-side tool aimed at network administrators was slow, unstable, and required constant monitoring. For an environment of more than a few thousand users it just wasn't a realistic prospect.
  • The next iteration of the server-side tool was released very late - only about a week before the first delta period began, if I recall correctly. Many network administrators felt there wasn't sufficient time to test it, and in any case had already been forced to make alternative arrangements for their users.

Which left a lot of folks looking after large enterprise environments in a bit of a mess.

The organization I was working with at the time has a huge number of users, many of whom collaborate with colleagues across continents on a daily basis. These people are very dependent on their Outlook calendars and take it very personally if someone messes around with their data. Stability was their highest priority, so with the timescales involved we decided the safest thing we could do was provide recommendations to our users of how they could manually fix their own appointments. Our IT support teams out at the sharp end were armed with the client-side rebasing tools to use for coordinators and other people who schedule a massive amount of appointments. We decided it was best for those folks to have some personal help to be on the safe side. Maybe we were too cautious, who knows... without splitting the organisation in two and trying a different approach on the rest of them, it's impossible to say.

Next time I'll share some assorted DST facts that didn't make it into the first three posts.

Wednesday 8 August 2007

Daylight Saving 2: Appointments that jump without moving

In my previous post I talked about how Outlook stores appointment times in UTC (time-zone neutral) and converts them from/to your local time zone when you create or view an appointment.

I briefly hinted, right at the end, at the fact that some countries like India (and most of Asia and the Far East, amongst others) don't put their clocks forward and back each spring and autumn. This can cause confusion when scheduling conference calls across regions and continents, when some participants observe daylight saving and others don't.

Today I'll take this further with a worked example:

Imagine Bilal works in Mumbai, and books a regular weekly meeting for his call each Monday with Zoe in London. Mumbai is 5½ hours ahead of GMT, and does not do daylight saving. London, like most of Europe, does observe daylight saving. Through the winter months, the meeting is at 4:00pm for Bilal and 10:30am for Zoe. In the Spring, because London goes to Daylight Saving Time (but Mumbai does not), the meeting 'moves' to 9:30am for Zoe, but stays at 4:00pm for Bilal.

Winter (booked from Mumbai, viewed in London)

Local time in Mumbai

16:00

UTC

10:30

Remove GMT+5.5 time zone

-5:30

Same as GMT time zone

+0:00

No daylight saving

-0:00

No daylight saving

+0:00

UTC

10:30

Local time in London

10:30

Summer (booked from Mumbai, viewed in London)

Local time in Mumbai

16:00

UTC

10:30

Remove GMT+5.5 time zone

-5:30

Same as GMT time zone

+0:00

No daylight saving

-0:00

Add daylight saving

+1:00

UTC

10:30

Local time in London

11:30

This causes a problem for Zoe because she has another meeting at 9:30am on Mondays. Thankfully, Bilal's calendar is less congested on a Monday afternoon, so the solution is simple; they agree that the meeting should be scheduled from Zoe's time zone. Bilal cancels the appointment and Zoe sets up a new one for 10:30am London time. Now the appointment appears at 5:00pm for Bilal, but in the autumn it will 'move' to 4:00pm, while staying at 10:30am for Zoe.

Winter (booked from London, viewed in Mumbai)

Local time in London

10:30

UTC

10:30

Already in GMT time zone

+0:00

Adjust to GMT+5.5 time zone

+5:30

No daylight saving

-0:00

No daylight saving

+0:00

UTC

10:30

Local time in Mumbai

16:00

Summer (booked from London, viewed in Mumbai)

Local time in London

10:30

UTC

09:30

Already in GMT time zone

+0:00

Adjust to GMT+5.5 time zone

+5:30

Remove daylight saving hour

-1:00

No daylight saving

+0:00

UTC

09:30

Local time in Mumbai

15:00

This has taken a lot more words than I thought it would, so I'll save the story of how this changed this year for next time...

Friday 20 July 2007

Daylight Saving 1: A primer on appointment times

In my previous post I promised an explanation of how changes to Daylight Saving Time affect Outlook. But before we can even look at Daylight Saving, we need to understand how Outlook stores appointment times and copes with time zones.

Outlook stores each appointment with a start time and duration. (The end time isn't stored; Outlook works it out on-the-fly.) The start time is stored as UTC, calculated relative to the time zone of the machine the appointment is created on.

UTC stands for Universal Time Coordination – actually the same as GMT, but we refer to it as UTC to avoid confusion with "London Time" which is an hour off from 'real' GMT for half the year.

The easiest way to get to grips with this is through an example. Imagine Alice is in New York. She creates an appointment to remind her about her dentist appointment at 10am on a Wednesday in December. Outlook does this simple calculation based on the time zone of the computer Alice creates the appointment from:

Local time

10:00

Remove GMT-5 time zone

+5:00

UTC

15:00

So Alice's 10am appointment is actually stored at 15:00 UTC.

Two things to note: first, I deliberately chose December because daylight saving won't apply, and second, I'm using 24-hour clock times for simplicity.

When an appointment is viewed, Outlook converts the start time from UTC back to Local Time based on the time zone settings of the local computer.

So Alice views the appointment at her computer in New York, she'll see it as happening at 10am and never needs to know this calculation back and forth took place. But what if Alice were to view her calendar from another time zone?

Let's say Alice travels to Mumbai, and uses a local machine in the Mumbai office to view her Calendar, which she can do because it's stored on the Exchange server. India's Time Zone is GMT+5.5 so her dentist appointment will appear at the following time:

UTC (which we worked out already)

15:00

Adjust to GMT+5.5 time zone

+5.30

Local time in Mumbai

20:30

Nothing has changed in the way the meeting is stored, just the machine it's being viewed from has a different time zone so it appears with a different start time.

So now we'll add DST into the mix. Here's how the calculations would work if the appointment had been in June:

Local time in New York

10:00

Remove GMT-5 time zone

+5:00

Remove daylight saving hour

-1:00

UTC

14:00

so the appointment would be stored at 14:00 UTC

and the display time would be:

UTC (from above)

14:00

Adjust to GMT+5.5 time zone

+5.30

No adjustment for DST

0:00

Local time in Mumbai

19:30

(Some places don't do daylight saving at all. India is one of them.)

Next time I'll cover some of the things we see working across time zones which do DST differently.

Thursday 12 July 2007

Coming soon: 2007 Daylight Saving changes - The Sequel

I bought my quarterly train ticket just the other day. It expires in October. (I know that should be obvious, but we haven't had much sunshine here yet so it doesn't seem fair that autumn is so close.) That's depressing enough in itself, but I also just realised that the next round of Daylight Savings fun and games will soon be upon us.

For anyone who wasn't supporting Outlook a few months ago (or was in a country unaffected by the changes or just crawled under a rock and stayed there throughout March), the US government passed a piece of legislation in 2005 changing the dates the clocks "spring forward" and "fall back", starting from spring 2007. This gave three weeks more Daylight Saving time, and was calculated to save money and energy by people needing to use less heating and lighting.

Unfortunately, Windows only knows how to cope with one set of Daylight Saving Time (DST) rules per time zone. So, for instance, in London it knows we go into DST on the last Sunday in March, and we go back to GMT (Standard Time) on the last Sunday in October.

This might not sound like a problem, except that every time you schedule a recurring appointment in Outlook, it bases all future occurrences on what it knows about your time zone and DST settings now. So if those settings change, the meeting will appear to change. Which (as a lot of people found out) was exactly what happened.

This is a pretty complicated topic to explain. I spent the best part of three months this year talking about little else, and I still managed to get confused mid-presentation on more than one occasion! So for my own sanity and yours I'm going to stop now and leave the explanation of how Outlook saves appointments in UTC and displays them in local time for my next post.

Tuesday 3 July 2007

How to Delete Outlook Temporary Files 2

In an earlier post, I gave instructions for clearing Outlook temporary files. Of course I forgot that the location of Temporary Internet Files in Windows Vista is different to XP/2000/NT, so different instructions are required. (Thanks to Oriolus for reminding me.) I also found that this is a lot less of a pain in Outlook 2007 than before.

(This procedure involves deleting files. The ones in the folder we're looking at are temporary files whose 'master' copy is held in the mailbox, so it doesn't result in loss of data. However, just in case someone should manage to mistype one of the commands and end up in the wrong folder, the usual disclaimer applies.)

For Outlook 2003 or earlier in Windows Vista:

  1. Start > Run > Type "cmd" (without the quotes) > Click OK
  2. In the command line, type the commands in bold (excluding my numbering and hitting return after each line)

  3. cd "%localappdata%\microsoft\windows\temporary internet files"

  4. dir /ad
  5. You should now see a list of folder names - one or more will begin with OLK.

  6. cd olk*
  7. This should make the first OLK folder the current directory - type the full folder name instead of OLK* to select a different one)

  8. explorer .

Note the space before the "."

This will bring up a Windows Explorer window showing the contents of the folder which you can then delete, but only after you've checked the address bar to make sure you're in the right folder!

If there was more than one OLK folder you can get to it by typing "cd.." at the command prompt then repeating steps 3 and 4 to select the OLK folder with the next folder name.

Type exit in your command window to close it, or just click on the x when you're done.

Maybe someone in the Outlook product group felt our pain, because in Outlook 2007 this has suddenly got a lot easier!

For Outlook 2007 in Windows XP:

  1. Click Start > Run > Type "%userprofile%\local Settings\Temporary Internet Files\content.outlook" and click OK
  2. In the Explorer window that appears, double-check you have the correct folder selected and delete its contents.
For Outlook 2007 in Windows Vista:
  1. Click Start > All Programs > Accessories > Run* > Type "%localappdata%\microsoft\windows\Temporary Internet Files\content.outlook" and click OK *unless, like me, you've already added the Run command to your Start menu.
  2. In the Explorer window that appears, double-check you have the correct folder selected and delete its contents.

Monday 25 June 2007

Outlook Missing Appointments 2 - organizer was an invitee


In my earlier post I talked about the most important piece of information to remember when troubleshooting missing Calendar appointments:
Deleting a meeting invitation or update will delete the associated appointment.

Sometimes we see a special case of this: a meeting invitation was sent out, and now everyone seems to have the meeting in their Calendar except, perplexingly, the person who organized it.
This usually occurs when a meeting organizer invited a Distribution Group (DG) of which they are a member. Typically what happens is something like this:
  • George is in the Sales department and wants to set up the weekly department meeting
  • So he doesn't forget anyone, George invites the SalesDept DG in his address book
  • Because George is a member of the SalesDept DG, he also receives an invite to the meeting
  • George knows he already has the meeting in his calendar because he only created it a moment ago, so he deletes the invite from his Inbox
  • Outlook removes the meeting from George's calendar
The 'solution' to this problem is for George to always remember to expand out any DG he invites to a meeting before sending. But George wants to know how he can fix this meeting where the mistake was already made.
If George is lucky enough to be running in an Exchange environment where Deleted Item Recovery (aka The Dumpster) is enabled, he should go to his Calendar, select Tools > Recover Deleted Items, search for the meeting by subject, then restore it to his Calendar. He can then Cancel the meeting and re-book it with the SalesDept DG 'expanded' so that all the invitees appear individually.
If Deleted Item Recovery isn't available (or all this happened a long time ago and was only just noticed, so the item has already been purged from the Dumpster), the only option for George is to ask his colleagues to each delete their copy of the meeting from the Calendar and to re-book it.
A variation on the symptoms I described is where the Organizer has the meeting in their Calendar, but they are no longer able to make changes to it; the options available are the ones they would have if they were an attendee, i.e. Accept, Decline, etc. This usually occurs as a result of the problem above, but where further attempts have been made to get the item back either by having it forwarded from an attendee, or by recovering the original invite from the Deleted Items Folder. The root cause and solution are, however, the same.

Friday 22 June 2007

Outlook Missing Appointments 1 - invite or update was deleted

Many of the issues I have to troubleshoot concern appointments missing from someone's calendar.
Before I start re-inventing the wheel, How to troubleshoot missing and duplicate appointments in Outlook already covers some of the background on how appointments go missing. However, by far the vast majority of missing appointment problems I see are caused by one not-so-obvious feature of mail based Calendaring in Outlook:
Deleting a meeting invitation or update will delete the associated appointment*


(*This was changed in Outlook 2007 - I guess someone finally realised how much trouble it causes.)
Today I'll cover some fairly straightforward ways this can trip up the unwary, then post soon with a special case that adds another layer of confusion.
Here's what happens - for versions of Outlook up to 2003, that is:
  • Anne invites Bob to a meeting
  • Bob accepts the invitation from his Calendar instead of from his Inbox
  • This leaves the invite in the Inbox (where accepting from the Inbox would have removed it)
  • Bob sees the invite in his Inbox and thinks "I already accepted that, I don't need it" so deletes the invite
  • Outlook removes the meeting from the Calendar
The solution to this is for Bob to remember to always Accept or Decline invites from the Inbox.
Another way confusion can occur is in a manager/delegate relationship. Say Claire has a delegate, Dan, who looks after her diary. Dan receives a copy of all Claire's meeting invitations and updates but, critically, so does Claire:
  • Dan sees an invitation in the Inbox to a meeting he knows Claire will want to attend, so he Accepts it on her behalf
  • Claire also has the invite in her Inbox
  • Claire knows Dan has Accepted the invitation on her behalf, so she decides she doesn't need it in her Inbox and deletes it
  • Outlook removes the meeting from the Calendar
The solution in this case is to change the Delegate options on Claire's mailbox so that only her delegates receive meeting items. If she really feels that she needs to see them, she'll have to remember not to delete them!
Deleting an Updates to a meeting has much the same effect, like this:
  • Evan invites Fiona to a meeting
  • Fiona accepts the invitation
  • Later, Evan sends out an updated version of the meeting including travel information for out-of-town attendees
  • Fiona doesn't need the travel information, so deletes the update from her Inbox
  • Outlook removes the meeting from the Calendar
The solution here is for Fiona to make sure she never deletes a meeting update - she should always Accept if she plans to attend or Decline if she doesn't.
A lot of troubleshooting I get involved in, the user is absolutely adamant that nothing they're doing could cause their meetings to disappear, that there must be some gremlin in the system. They've heard it's a problem with BlackBerry/our CRM application/Cached mode/the moon in Taurus/whatever, they've had this problem for months, they're sick of it and they want us to fix it for them. That's when I use my secret weapon - this article from Microsoft:
It can take some persuasion to get them to read it (sometimes I say "just so you can give some pointers to the newer team members" or "so you know what to look for when your manager is doing something wrong") but I don't think it's an exaggeration to say 99% of those ongoing problems don't come back when people follow the advice in there.
Next time I'll cover how a meeting organizer can become an attendee and get into an even deeper mess...

Friday 15 June 2007

How to delete Outlook temporary files

Outlook* caches file attachments to %userprofile%\Local Settings\Temporary Internet Files\OLKnnn (where nnn is a random number). If you're a system administrator and you can connect to the user's c$ share then it's no problem to empty this folder, e.g. in the fairly common scenario where a user cannot view embedded attachments (a.k.a. Red-X syndrome).

* 2003 and earlier - for instructions for Outlook 2007 see my new post here.  Outlook 2000 before SR1 kept temporary files in %temp%.

But what do you do if you can't get a connection to the user's machine? Direct the user to their Temporary Internet Files folder and most likely they won't be able to see the folders underneath due to Windows' clever (?) obfuscation. (The slightly off-topic article http://support.microsoft.com/kb/301057 has an explanation of this in the introduction.)

Short of writing a script and somehow getting that across to the user, I haven't found a better way of doing this than through the command prompt. Here are my preferred instructions, but let me know if you can suggest improvements!

[Update 4-Jul-2007: I forgot when I wrote this that the file locations changed for Windows Vista - for updated instructions, see my new post here]

  1. Start > Run > Type "cmd" (without the quotes) > Click OK

    In the command line, type the commands in bold (excluding my numbering and hitting return after each line)

  2. cd "%userprofile%\local settings\temporary internet files"

  3. dir /ad

    You should now see a list of folder names - one or more will begin with OLK.

  4. cd olk*

    This should make the first OLK folder the current directory - type the full folder name instead of OLK* to select a different one)

  5. explorer .

Note the space before the "."

This will bring up a Windows Explorer window showing the contents of the folder which you can then delete, but only after you've checked the address bar to make sure you're in the right folder!

If there was more than one OLK folder you can get to it by typing "cd.." at the command prompt then repeating steps 3 and 4 to select the OLK folder with the next folder name.

Type exit in your command window to close it, or just click on the x when you're done.

Thursday 14 June 2007

Forms and Outlook item types

Regardless of whether your Outlook data is stored on an Exchange Server or in a PST file, all of your Mail, Calendar, Task, Contact and other items are stored in messages.

The fact we can see different types of item (appointments, tasks, etc.) seems to contradict this, but the messaging system that underlies Outlook deals in messages and nothing else. We see messages with different properties, being displayed in different forms.

If you use a tool such as MFCMAPI or MDBVU (the usual disclaimer applies) to look at an item's properties, you will see the PR_MESSAGE_CLASS property for a mail item is set to ipm.note, where a calendar item would be ipm.appointment. Outlook opens the correct form (a form is a defined layout for displaying an item) depending on the PR_MESSAGE_CLASS which is how your calendar appointments get scheduling information displayed and your mail items don't.

Outlook has a form associated with each folder - whether it's one of the default folders (Inbox, Calendar, Tasks, etc.) or one you created. Each folder is associated with a message type, and also with a form to go along with it. So if you wanted to create a custom form to show different information for the contacts in your Mobile Contacts folder, you could do that.

A common scenario to troubleshoot in a large corporate environment is where a user is unable to open items of a certain type, or where items of a certain type don't behave as they should (e.g. a button on the form doesn't work). Outlook caches custom forms to save loading them each time they are used, and sometimes this cache can become corrupt, so clearing the forms cache is a logical early step when dealing with this type of issue.

For more information on the forms cache and how to troubleshoot it see http://support.microsoft.com/kb/839804/en-us

Tuesday 12 June 2007

The Outlook Inbox Sniffer

There's not much information around on the web about the Sniffer, but I was lucky enough to get hold of some pretty good documentation last year that covers how it works. Outlook's Inbox Sniffer is a piece of built-in code that keeps an eye on your Inbox for items of a certain type, and performs certain actions for you. The complete list is as follows:
  • Meeting invites (adding tentative meetings to your calendar)
  • Meeting updates (updating details in your calendar)
  • Task updates
  • Message recall (when someone recalls a message you've received)
  • Responses to voting buttons (when you sent a mail with voting buttons, this adds the voting responses back to the original item)

This applies to Outlook versions from 2000 onwards. The results are slightly different in Outlook 2007 (e.g. the way meeting updates are processed) but - as far as I know - the mechanism is the same.

The Sniffer runs as a MAPI idle process. This means it starts processing when the messaging system that underlies Outlook isn't otherwise busy. This doesn't necessarily correspond to whether the Outlook application is busy though. You could be typing an email message and the Sniffer would still fire, whereas it won't fire if mail is downloading from a server, even though you're not 'using' Outlook at the time. This is why sometimes invites appear to show up as tentative Calendar entries almost straight away, and sometimes they take a little longer.

So far so good... but what do you do if the Sniffer isn't working?

(This bit bit contains technical advice, so my usual disclaimer applies.)

  • First, is the actionable item actually in the Inbox? If, say, a meeting invite got moved to a folder by a rule then it may have left the Inbox before the Sniffer got to it. If the rule is client-side then you could get a Rule vs. Sniffer race occurring.

  • Next, have you told Outlook not to process some item types? The settings Process requests and responses on arrival and Process receipts on arrival need to be selected (Tools > Options > Email options > Tracking Options) for those actions to take place.

  • Is this machine able to run the Sniffer against this mailbox? To deal with users running Outlook on more than one machine with the same mailbox, a mechanism was put in place where only one can be the Sniffer at a time (the Sniff Owner). Run Outlook with the /sniff switch to set it as the Sniff Owner, or /cleansniff to delete and recreate the Sniff Owner information.
  • Is there any idle time? An add-in or another application calling Outlook could be keeping MAPI busy (or making it think it's busy). Try closing down any applications that may interact with Outlook, e.g. synchronisation tools, and waiting at least five minutes before checking if items have been processed. If that didn't isolate the problem, try disabling any add-ins you have loaded in Outlook, wait five minutes and check again.
  • Is thre a long idle time specified in the registry? Under the key HKEY_Current_User/Software/Microsoft/Office/11.0/Outlook/Options/General check for these values
    • AutoProcessIdleTime - this is how much idle time is required before the Sniffer will act
    • AutoProcessIdleTimeMax - this is how long the Sniffer waits before trying again if MAPI was not idle on the previous attempt
  • Both the values are specified in milliseconds (so a value of 10000 is 10 seconds). If these don't exist in the registry then the defaults are used, 30 seconds and 600 seconds respectively. Setting a lower value for both would cause the Sniffer to run more frequently, but there would be an associated performance hit on the rest of Outlook. Setting the value very low would cause the Sniffer to run almost continuously, taking up system resources that could be used for other tasks.
  • Is another application or add-in marking the items as 'sniffed'? This is the least likely scenario but theoretically could happen. To test for this you would need to look at the message properties of the Inbox item using a tool such as MDBVU or MFCMAPI. If the PR_PROCESSED property is set to TRUE then the Sniffer will not act on this item again because it thinks it has already done so. (If the property doesn't exist or is set to FALSE then the message has not been marked as sniffed.)

That covers just about everything I know about the Sniffer - I hope this post has been useful to someone out there!

tb

Disclaimer

One of the main reasons I started this blog was as a place to post technical troubleshooting tips. In an ideal world I wouldn't need to post a list of DON'Ts (and in the real world the people who most need them are least likely to read them) but this seems like the responsible thing to do. So here's a list of things you should bear in mind before following any advice I might post, to safeguard your data, your job and my conscience:
  1. Most of my technical posts are aimed at IT Professionals who already have a good understanding of Windows and the products I'm talking about. If you're not comfortable working at that level then get individual help from someone who is.
  2. Don't edit the Windows Registry unless you're pretty sure you know what you're doing.
  3. Don't make any changes through MFCMAPI, MDBVU or similar tools unless you're certain you know what you're doing - they give you access to things in your mailbox that you're not supposed to see, and those things are hidden for good reason.
  4. Your boss will not come looking for me if you screw something up because of some 'good idea' I post in my blog. Everything I say here is in good faith, but I make mistakes just the same as everyone else. Treat every bit of information here with healthy scepticism and don't do anything on a production system unless you understand the consequences and (ideally) have tested in a non-production environment first. That goes for anyone else's blog too, and even perfectly trustworthy vendor information has been known to cause problems if used slightly differently to how it was intended so it's good advice regardless of the source.
Sorted. Now we can get back to talking like grown-ups.

Monday 11 June 2007

Face search in Google

Here's a very cool trick to return just photos of faces using Google's image search... http://shinymedia.headshift.com/cgi-bin/mtshiny/mt-tb.cgi/36297 (I'm still working on the promised post about how Outlook's Inbox Sniffer works)

Thursday 7 June 2007

Appointments, meetings, invites, updates and responses

And so for my first proper (read: useful) post. This post was going to be about how Outlook's Sniffer works on calendar-related mail items - largely because this feature is pretty much undocumented and I find myself explaining it quite often. However, I realised there's some background information to cover first. I hear the terms appointment, meeting and invite used interchangably, which doesn't matter too much at a user level but can cause confusion when you try to troubleshoot calendar problems. In fact the three things are different, and it's useful to understand the distinction.
  • An appointment is an Outlook Calendar item
  • A meeting is an appointment with invitees
  • An invite is a mail item that tells Outlook to create a Calendar item (also known as a meeting request)

...and while I'm writing a mini-glossary of calendar terms...

  • An update is a mail item that tells Outlook to change a Calendar item
  • A response is a mail item that tells the user that someone accepted or declined their meeting, and tells Outlook to update the meeting's Tracking information

In fact, at the mailbox level, all of these (along with Tasks, Notes and pretty much anything else you can store in a mailbox) are messages regardless of their type or whether they live in your Calendar, Inbox or wherever. One day I'll write a post about different message types and how Outlook knows what to do with each, but it isn't important for the purpose of understanding how calendaring works.

Anyway, a typical calendar scenario might go like this...

  1. I decide to book a meeting with my colleagues Anne and Bob. I create a meeting item, and add them as invitees.
  2. When I've finished entering all the details, I hit Send. At this point, my meeting item is saved in the Calendar, and Outlook creates a meeting request (a type of mail item) containing the relevant details of the meeting, which it sends to Anne and Bob.
  3. Anne receives the invite in her Inbox. (Bob does too, but we're just looking at Anne's mailbox right now. Thankfully neither of them have delegates because this post is getting long enough without covering delegate behaviour - again, another post for another day.)
  4. On Anne's machine, Outlook's Inbox Sniffer - that's our undocumented friend that acts on certain types of message in your Inbox - sees a new invite has arrived so uses the details from it to create a new meeting item in her calendar, which it marks as Tentative.
  5. A few minutes later Anne sees the invite herself, opens it and clicks on Accept then chooses to send the response without editing it. At this point, Outlook creates a response (a type of mail item) which it sends back to me, and marks the meeting in Anne's calendar as Accepted.
  6. I receive the response item in my Inbox. The Sniffer sees it and marks Anne's Tracking status for the meeting as Accepted. Because I have the option selected to delete blank meeting responses after processing, it also deletes the response from my Inbox.

So far we've created two calendar entries (one in each of our calendars) and two message items (an invite and a response). This is the crux of mail-based calendaring, every action on one calendar has to be communicated to the other calendar(s) by messages. A point of note is that mail items arrive in the Inbox, meetings and appointments live in the Calendar. They're connected (Outlook has an identifier property on the original Calendar item which all the other items reference so it should always know which response or update refers to which meeting) but very much separate - knowing this is useful when trying to troubleshoot missing appointments, which at my place of work is something we spend a lot of time doing!

If I later decide to change the time of the meeting, I can change the meeting item in my Calendar, and send an update (another mail item) to Anne and Bob, which their Inbox Sniffer will process much the same as before. And again, they can send a response which my Inbox Sniffer will process.

There are pitfalls around this mail-based structure, especially if you bring a delegate into the mix (one meeting, one Calendar, but potentially two copies of the invites/updates and two sniffers... it's a recipe for confusion) and I guess that's something else to add to my ever-growing Topics For Future Posts list.

I said at the start of this post it would be useful. I'm not sure if it actually is directly useful but it should give an idea of how calendaring works in Outlook, which will be relevant when I post on more practical topics in future.

That's all for now

tb

Creative Commons License This work by TechieBird is licensed under a Creative Commons Attribution-No Derivative Works 2.0 UK: England & Wales License.