History of a calendar item

There are always issues with appointments, meeting requests and meeting series with delegates or mobile devices. Sometimes appointments disappear, got shifted or updates don’t make it to all involved parties.

In the past I opened a case with Microsoft and get these issues analyzed. But this is very time intensive and often the affected users are VIPs, which want to have as quick as possible a report about what happened.

I spent some time on this topic and I wrote about it here. I also wrote my script to pull all the relevant data from mailboxes in a way, which is much faster and has more capabilities. You can read more about this script here. This script was recently updated to translate the properties PidLidClientIntent and PidLidChangeHighlight in a human readable format. You can read more about it here.

In this post I will go through the history of a calendar item. There will be several changes and I will show what happened with each change. I know that this post has a lot of pictures, but to get an understanding what exactly happens, pictures are sometimes a better way to explain something.

Scenario

In this scenario we have a manager and its delegate:

  • Manager: Ingo Gegenwarth
  • Delegate: Susan Smith

The delegate will create an appointment, which will be changed several times.

History

Delegate created a single appointment in manager’s calendar

CalHistory01.png

CalHistory02.png

Delegate added an attendee and location

CalHistory03.png

CalHistory04.png

Attendee accepted meeting invitation

calhistory05

calhistory06

Manager updated the appointment to recurring meeting series

calhistory07

calhistory08

Delegate modified the body of the recurring meetings series

calhistory09

calhistory10

Attendee accepted the new invite

calhistory11

calhistory12

Delegate deleted one occurrence

calhistory13

calhistory14

Manager shifted one occurrence

calhistory15

calhistory16

Attendee declined and proposed a new time for the shifted occurrence

calhistory17

calhistory18

Manager accepted proposed time

calhistory19

calhistory20

Delegate changed recurring meeting series end date

calhistory21

calhistory22

Manager canceled meeting series on mobile device

calhistory23

calhistory24

In all steps I used the script with the following parameters:

$CalHistory=C:\temp\Scripts\Get-CalendarItems_gallery.ps1 -EmailAddress , -Subject 'Exchange 2016' -AllItemProps -Credentials

By default and as shown here, the script sorts the output by LastModifiedTimeUTC, but you can also sort by DateTimeCreatedUTC.

To pipe the used variable $CalHistory into Grid-View I used the following command:

$CalHistory | select * -ExcludeProperty item,*id | ogv

The output is an array of objects. When you use the switch AllItemProps, you will get the appointment as an object. This means you can also check the body, if you experience any issues here (e.g.: conversion issue through EWS clients like Mac).

You just have to reference the body property of an item:

calhistory25

calhistory26

But there are more properties available, depending on the IPM ItemClass :

CalHistory27.png

As mentioned before the script has some more capabilities compared to the built-in CmdLet:

  • search by subject must NOT be the exact subject like in the built-in command Get-CalendarDiagnosticLog
  • you can search on multiple criteria (e.g.: Subject, CleanGlobalObjectID, GlobalObjectID)
  • almost all MAPI properties will be returned (e.g.: body of an item)
  • the properties PidLidClientIntent and PidLidChangeHighlight will be translated into human readable format

I also want to highlight the requirements of the script:

 

Conclusion

If you often have to deal with calendar issues I encourage you to play with this. It makes sense to see what in a good trace happens, as sometimes issues occur due to the fact that some clients not did what they supposed to do. I hope this helps.

Advertisements

4 thoughts on “History of a calendar item

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s