Exchange Public Folder Migration, Search for Recurring meeting with no End date

 

You can't migrate a Public Folder from 2007 > 2010 or 2003 > 2010 if there are meetings/Appointments which are

Recurring and have no end date. The 2010 want accept to replicate that meeting to the 2010. Also with all Log Levels

set to Maximum you can see the error but sometimes you don't even find IN which Public Folder the meeting is.

 

 

Here is how to search for the Error in your Messagetracking files:

get-messagetrackinglog -server server2030.customer.ch -eventid fail | fl

 

or

 

get-messagetrackinglog -server server2030.customer.ch -eventid fail | fl > c:\edv\logs.txt

They normally reside in the path:

 

C:\Program Files\Microsoft\Exchange Server\V14\TransportRoles\Logs\MessageTracking

----------------------------------------------------------------------------------------------------------------------------------

 

Turn ON PIPELINE LOGGING (Acttention all email gets dumped PLAINTEXT to some path > Heav Load!)

ON/AN:

set-TransportServer  -PipelineTracingEnabled $true  -ContentConversionTracingEnabled $true  -PipelineTracingPath "d:\Program Files\Microsoft\Exchange Server\V14\TransportRoles\Logs\PipelineTracing"  -PipelineTracingSenderAddress PublicFolderDatabase@customer.ch

OFF/AB:

set-TransportServer  -PipelineTracingEnabled $false  -ContentConversionTracingEnabled  $false
 

On both commands The Exchange will ask you which HUB Server you want to do this on!

Here is how the DUMP looks:

----------------------------------------------------------------------------------------------------------------------------------

 

Turn up the Logging on Exchange 2010/2007

Don't forget to turn it back after you are done

set-eventloglevel -identity "MSExchangeIS\9001 Public\Replication DS Updates" –Level Expert

set-eventloglevel -identity "MSExchangeIS\9001 Public\Replication Incoming Messages" –Level Expert

set-eventloglevel -identity "MSExchangeIS\9001 Public\Replication Outgoing Messages" –Level Expert

set-eventloglevel -identity "MSExchangeIS\9001 Public\Replication NDRs" –Level Expert

set-eventloglevel -identity "MSExchangeIS\9001 Public\Replication Site Folders" –Level Expert

set-eventloglevel -identity "MSExchangeIS\9001 Public\Replication Expiry" –Level Expert

set-eventloglevel -identity "MSExchangeIS\9001 Public\Replication Conflicts" –Level Expert

set-eventloglevel -identity "MSExchangeIS\9001 Public\Replication Backfill" –Level Expert

set-eventloglevel -identity "MSExchangeIS\9001 Public\Replication Errors" –Level Expert

set-eventloglevel -identity "MSExchangeIS\9001 Public\Replication General" –Level Expert

set-eventloglevel -identity "MSExchangeIS\9001 Public\Local Replication" " –Level Expert

 

This how the Error in C:\Program Files\Microsoft\Exchange Server\V14\TransportRoles\Logs\MessageTracking looks:

MessageSubject : Folder Content Backfill Response

Sender : PublicFolderDatabase@customer.ch

ReturnPath : PublicFolderDatabase@customer.ch

MessageInfo :

MessageLatency :

MessageLatencyType : None

EventData : {[MailboxDatabaseName, server2030.customer.ch]}

 

RunspaceId : 9f141a69-d1c8-4d09-acbf-af1a120a7c42

Timestamp : 04.09.2013 14:22:13

ClientIp :

ClientHostname : RSINTERL9322

ServerIp :

ServerHostname : RSINTERL9320

SourceContext : 08D06BC7EC506680;2013-09-04T12:22:13.161Z;0

ConnectorId :

Source : STOREDRIVER

EventId : FAIL

InternalMessageId : 4883

MessageId : <213E7703BD211643BB175C276D557A97028C2EAAEEC9@rsinterl41.interlago.ch>

Recipients : {PF01@customer.ch}

RecipientStatus : {554 5.2.0 STOREDRV.Deliver.Exception:ObjectValidationException; Failed to process message du

e to a permanent exception with message Can't save invalid object Object Violation. Invalid p

roperty = [Calc:EndTime] EndTime. Invalid data for that property = 31.05.2013 21:59:00. Const

raint violated = Property [Calc:StartTime] StartTime must be LessThanOrEqual when compared to

property [Calc:EndTime] EndTime... ObjectValidationException: Can't save invalid object Obje

ct Violation. Invalid property = [Calc:EndTime] EndTime. Invalid data for that property = 31.

05.2013 21:59:00. Constraint violated = Property [Calc:StartTime] StartTime must be LessThanO

rEqual when compared to property [Calc:EndTime] EndTime... [Stage: CreateMessage]}

TotalBytes : 13935

RecipientCount : 1

RelatedRecipientAddress :

Reference :

MessageSubject : Folder Content Backfill Response

Sender : PublicFolderDatabase@customer.ch

ReturnPath : PublicFolderDatabase@customer.ch

MessageInfo :

MessageLatency :

MessageLatencyType : None

EventData : {[MailboxDatabaseName, server2030.customer.ch]}

 

 

My VBSCRIPT to search for all Recurring items in a specific Public Folder

 

Cscript check_public_folder_recurring_appointment.vbs "Your_public_Folder_Name"

 

Output: c:\pf_logfiles.txt

 

It will only work for Public Folder which are ONE Step UNDER the ROOT. If you have more depths you need the expand. Sample > Change one more depth with the subfolder reports under Butsch:

 

Set MyFolder1 = objNamespace.Folders("Öffentliche Ordner")

Set MyFolder2 = MyFolder1.Folders("Alle Öffentlichen Ordner")

Set MyFolder3 = MyFolder2.Folders("butsch")

Set MyFolder4 = MyFolder3.Folders("reports")

Set colItems = MyFolder4.Items

 

Also this is for the GERMAN/Deutsch Exchange 2007/2010 if you have an English one you may have to change.

 

GERMAN:

 

Set MyFolder1 = objNamespace.Folders("Öffentliche Ordner")

Set MyFolder2 = MyFolder1.Folders("Alle Öffentlichen Ordner")

 

ENGLISH:

 

Set MyFolder1 = objNamespace.Folders("Public Folders")

Set MyFolder2 = MyFolder1.Folders("All Public Folders")

 

The Texfile c:\pf_logfiles.txt reports will look like this. Now you can search for .4500 which is relevant to NO End time of a meeting. At least you now see in which Public Folder to search the meeting.

 

' vbscript: check_public_folder_recurring_appointment.vbs

' © www.butsch.ch

' 2013

' Sample Searches in German Public Folder called Butsch right under the root

' Sorry for ugly vb I like c# ;-)

 

On Error Resume Next

Dim myfolder

Const ForAppending = 8

Const olFolderInbox = 6

 

Set objArgs = WScript.Arguments

myfolder = objArgs(0)

 

Set objFSO = CreateObject("Scripting.FileSystemObject")

Set objlog = objFSO.OpenTextFile("c:\pf_logfiles.txt", 8, True)

 

Set objOutlook = CreateObject("Outlook.Application")

Set objNamespace = objOutlook.GetNamespace("MAPI")

 

Set MyFolder1 = objNamespace.Folders("Öffentliche Ordner")

Set MyFolder2 = MyFolder1.Folders("Alle Öffentlichen Ordner")

Set MyFolder3 = MyFolder2.Folders("butsch")

 

Set colItems = MyFolder3.Items

 

strFilter = "[IsRecurring] = TRUE"

 

Set colFilteredItems = colItems.Restrict(strFilter)

 

For Each objItem In colFilteredItems

Set objPattern = objItem.GetRecurrencePattern

objlog.writeline myfolder

    Wscript.Echo "Meeting name: " & objItem.Subject

objlog.writeline "Meeting name: " & objItem.Subject

    Wscript.Echo "Duration: " & objItem.Duration & " minutes"

objlog.writeline "Duration: " & objItem.Duration & " minutes"

    Wscript.Echo "Location: " & objItem.Location

objlog.writeline "Location: " & objItem.Location

    Wscript.Echo "Recurrence type: " & objPattern.RecurrenceType

objlog.writeline "Recurrence type: " & objPattern.RecurrenceType

    Wscript.Echo "Start time: " & objPattern.StartTime

objlog.writeline "Start time: " & objPattern.StartTime

    Wscript.Echo "Start date: " & objPattern.PatternStartDate

objlog.writeline "Start date: " & objPattern.PatternStartDate

    Wscript.Echo "End date: " & objPattern.PatternEndDate

objlog.writeline "End date: " & objPattern.PatternEndDate

    Wscript.Echo "---------------------------------------"

    objlog.writeline "---------------------------------------"

    Next

 

objlog.Close

set objFSO = Nothing

 You then call the VBS in a batch:

cscript check_public_folder_recurring_appointment.vbs "Kunde Pikettzimmer a"  
cscript check_public_folder_recurring_appointment.vbs "Kunde Pikettzimmer b"  
cscript check_public_folder_recurring_appointment.vbs "Kunde Pikettzimmer c"  
cscript check_public_folder_recurring_appointment.vbs "Kunde Pikettzimmer d"  
cscript check_public_folder_recurring_appointment.vbs "Kunde portabler Beamer Hitachi"