Author: Chuck Arconi
Microsoft DST (daylight savings time) - "Unable find mailbox timezone:Error 0x800004005" and
other errors and learning's.
So everybody is scrambling (including MS) to get these out. The server
and workstation updates don't seem to be a problem but the Exchange thing is
a BIG problem. So I gathered my recent experience and fixes as well as the
KB articles you should be looking for.
NOTE: Please read all of the KB articles relating to
this. I have skipped over the steps below that are covered really well in
those articles. I focused on the errors that I received as I saw allot of
other people having the same issues.
The Articles you should read through:
The Demo you need to watch:
The Stuff you need to download:
Windows 2000 "free" update patch:
http://www.intelliadmin.com/blog/2007/01/unofficial-windows-2000-daylight.html
So after you have read through the KB Articles above and watched the
Demo at the Exchange Team Blog here is a condensed version of the steps.
- Install the DST patch/update on your Domain Controllers.
- Install the DST patch/update on your Servers
- Run The Calendar update tool (TZMOVE.EXE)
- Install the DST patch for exchange on your Exchange
server.
- Be aware that this patch contains several other
updates as well (as indicated in this article). These "other"
updates can cause some serious issues as they change "send as"
permissions on some of your accounts.
- Install the DST patch/update on your workstations.
NOTE: Important information regarding the
above, Microsoft changed the order to which Exchange gets patched. as
pointed out to me by one of my visitors. You need to run the Calendar update
tool BEFORE you patch your Exchange Server installation. Also the
Workstation should be patched at the end. I've modified the steps above to
reflect this.
So I have run the update on Windows 2003 servers and XP workstations both by
hand and using WSUS server to deliver the patch through windows update. Both
mechanisms worked fine with no problems.
Now for Exchange:
I had several big problems with the Exchange and client side of things.
But I worked them out and here is what I ended up with as the final best
practices.
- Install the Exchange patch. Remember this will
restart the information store and depending on how your system is
configured (third party apps) you may have to reboot. In my case I had
to reboot, even the front end servers.
- If you are using Goodlink or BlackBerry there are
special considerations. I use Goodlink and we had to go back and reset
permissions as they were changed by the DST Exchange patch. (It actually
stopped delivery of email to handheld devices for some of our users
until we did this)
- Setup your client system for Calendar updating: I
have found a lot of confusion here when I talk to others about this. If
you are not going to have your users run the update tool themselves then
you will need to run it on the Exchange server to update everybody's
appointments.
- Set up a workstation:
- Install XP
- Install .NET 2.0
- Install Outlook 2003
- Do not install Exchange Administrative
console
- Download the
TZMOVE package
- Download the
Calendar update package.
- Create a folder on the root of your system drive to hold the
installable. I named mine "C:\DST"
- Run the TZMOVE.EXE executable

Stop here! Don't click OK!

Click "CANCEL"
NOTE: All you want to do is install the files and create the registry
keys. Do not run the update tool.
- Run the Calendar update package "MsExTmz.msi"


NOTE: Do not use the default path of "C:\program
files\MsExTmz\" . If you do it will not work.

Ok so on the next 2 screens just click Next and OK to finish.
Now Prepare your tools to run: Follow the instructions listed in the Demo
at the
Exchange Team Blog and article
930879
- Make sure you don't forget to check the reg key setting on
the client system-
HKEY_CURRENT_USER\Software\Microsoft\Exchange\client\options\
"PickLogonProfile" value
should be "0"
- Set the Outlook profile to open without prompts -
This is a big gotcha. Here is the only way I could get this to work.
- Go to control panel and open the "Mail" object.

- Delete any profile that exists.
- Create a new profile and name it "admin". Use the account you
granted "send as" permissions to.
- Open outlook and make sure it doesn't prompt you to choose a
profile. If it does; at the profile selection screen click "options" and
check the box "Set as default profile". Let Outlook continue to open.

-
Close Outlook and re-open it to make sure that it does
not prompt you to choose a profile. It it doesn't, close it.
-
Go to the following folder -"C:\Documents and
Settings\admin profile\Local Settings\Application
Data\Microsoft\Outlook"
-
Find the "extend.dat" file and rename it to "extend.old".
Don't delete it, don't name it "extend.old1" or .txt or anything other
than ".old".
-
Your done with Outlook for the time being.
- As of right now when I run this it works
great, but, resource mailboxes that have the Auto Accept Agent running
start hammering everyone with appointment updates and decline notices. I
am trying to work this one out and will post it here as soon as I do.
Maybe the next release of the "update Tool' or the next one, or the next
one...
- When you run "MsExTmzCfg.exe" - you
need to enter the information in a certain way to get the tool to work
(at least I did, with MS support on the line with me)
- In the "Server Name" box enter the friendly name
i.e. the NetBIOS name.
- When you reach the screen "Calendar Update
Configuration" (shown below) you need to browse to
the folder representing your version of Outlook (mine was
version12 )
"C:\Program Files\Microsoft Office\Office12\Office Outlook Time Zone
Data Update Tool\TZMOVE.EXE" and select the 'tzmove.exe" file.
This
file is only 304kb or so, also I tried placing the file in the "DST"
folder I created AND the root of "C" that didn't work. It only liked it if it
was in that folder? Don't ask just do it. ( the screen shot below
shows what I'm talking about.)

- Update to calendar tool-
- The KB Article location is:
http://support.microsoft.com/kb/933146
- The hot fix download is:
(http://download.microsoft.com/download/1/5/b/15bcbfca-5570-4c44-8ddf-e3c4cfa84ed8/tzmove2007-kb933146-fullfile-x86-glb.exe)
- I installed the update to the tool by downloading it and double
clicking it. It will find where it's supposed to place files.
You will notice a new DLL in the tzmove.exe folder location.

There are some new command switches you can use to resolve some of the
issues that plagued the previous version. Read the KB article (933146) to
get all of the switches and their proper usage.
The command I used was; "TZMOVE.EXE /q
/FORCEREBASESUPPRESSEXCHANGEUPDATES"
This allowed updates to be sent to meeting / appointment participants who
resided outside of the company or our Exchange environment but not to those
inside the company ( a huge problem in prior testing.)
Also it forced the resource mailboxes (those being managed by Auto Accept
Agent) to be updated without pounding everyone with acceptance messages.
NOTE: There is some funny behavior your going to have to
watch for. When running the update bat file you will see new log files
appear for each mailbox the the utility successfully moves appointments for.
This is good because it gives you a log for each mailbox. I printed this out
and gave it to the "testers" (read victims) so they could compare with their
calendars in case they lost a meeting. But the time shown in the Log for the
appointment is GMT not whatever your time zone is so that caused some
confusion (as shown below)
NOTE: When you run the MsExTmzCfg.exe and it completes
there are 5 files created under a new folder in the "C:\MsExTmz" folder. It
will be the same name as the exchange server you are running it against,
something like "C:\MsExTmz\MyExchangeserver"
The files are: ConflictUsers.txt, Mailboxes_1.txt, MSExTmz_1.bat,
MSExTmz_1.ini, NonExistent.txt
In the MSExTmz_1.ini is where you will add
"/FORCEREBASESUPPRESSEXCHANGEUPDATES"
The line it's on should be pretty obvious. If you look at the screen shot
below that's the file.

(Click the image for a larger view)
Another NOTE: I ran this recently and one thing you
should be aware of is that after your BAT file is completed there may be an
error log with some accounts that it failed on.
I added the time zone info to the end of every mailbox listed in the
error log and then renamed the log to "Mailboxes_1.txt".
Then I ran the bat file again (MSExTmz_1.bat). After doing this several
times I was able to access every one of the "error" mail boxes and move
their appointments.
Example:
(errors.txt)- /O=MYDOMAIN/OU=COMPANY/CN=RECIPIENTS/CN=WWOOD
I added " myserver Pacific
Standard Time" to the end of the line so it looked like this:
"/O=MYDOMAIN/OU=COMPANY/CN=RECIPIENTS/CN=WWOOD myserver
Pacific Standard Time"
I did this on every line. Then I renamed the file to "Mailboxes_1.txt"
and ran "MSExTmz_1.bat" again.
NOTE: Upon first deployment I noticed that some of the
systems were having issues and that the time was still off by one hour on
appointments within the new DST time period. I followed the instructions
below that are listed in the Q article
914387
I took the script and placed it into a GPO that I already have for my
users that calls the logon script. I added it as a second script and let
that stay in place for a couple of days. This resolved the issue for most of
the systems.
**********************************************
The Following instructions have been copied from the Microsoft Q article
914387. Located at:
http://support.microsoft.com/kb/914387
The registry must be updated in two locations. Importing the TZupdate.reg
file updates the time zone database in the registry. Next, you must create a
script that updates the TimeZoneInformation registry key in the current
control set. You can deploy this script by using Group Policy or another
deployment mechanism.
The script identifies the current time zone of the client computer and then
reloads the TimeZoneInformation registry key with the updated information
from the time zone database. Then, the script writes an event to the
Application log of the client computer where the script was run.
To create the script file, follow these steps.
Note Microsoft provides programming examples for illustration only,
without warranty either expressed or implied. This includes, but is not
limited to, the implied warranties of merchantability or fitness for a
particular purpose. This article assumes that you are familiar with the
programming language that is being demonstrated and with the tools that are
used to create and to debug procedures. Microsoft support engineers can help
explain the functionality of a particular procedure. However, they will not
modify these examples to provide added functionality or construct procedures
to meet your specific requirements.
1. Click Start, click Run, type notepad, and then press ENTER.
2. Copy the following code, and then paste it into the Notepad document.
Set objSh = CreateObject("WScript.Shell")
'Get the StandardName key of the current time zone
szStandardName = objSh.RegRead("HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\StandardName")
'Enumerate the subkeys in the time zone database
const HKEY_LOCAL_MACHINE = &H80000002
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
szTzsKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones"
objReg.EnumKey HKEY_LOCAL_MACHINE, szTzsKeyPath, arrTzSubKeys
'Step through the time zones to find the matching Standard Name
szTzKey = "<Unknown>"
For Each subkey In arrTzSubKeys
If (objSh.RegRead("HKLM\" & szTzsKeyPath & "\" & subkey & "\Std") = szStandardName) Then
'Found matching StandardName, now store this time zone key name
szTzKey = subkey
End If
Next
If szTzKey = "<Unknown>" Then
'Write entry to the Application event log stating that the update has failed to execute
objSh.LogEvent 1, "DST 2007 Registry Update and Refresh failed to execute on this computer. Time zones failed to enumerate properly or matching time zone not found."
Wscript.Quit 0
End If
'Launch control.exe to refresh time zone information using the TZ key name obtained above
objSh.Run "control.exe timedate.cpl,,/Z" & szTzKey
'Get current display name of refreshed time zone
szCurrDispName = objSh.RegRead("HKLM\" & szTzsKeyPath & "\" & szTzKey & "\Display")
'Write entry to the Application event log stating that the update has executed
objSh.LogEvent 4, "DST 2007 Registry Update and Refresh has been executed on this computer." & chr(13) & chr(10) & chr(13) & chr(10) & "Current time zone is: " & szCurrDispName & "."
| 3. |
On the File
menu, click Save As. |
4.
Select a destination, and then type
refreshTZinfo.vbs in the
File name box. |
| 5. |
In the Save as type
box, click All Files, and then click
Save. |
*********************************************
For Systems that still showed up with the issue of appointments off by 1
hour
I found through WSUS (Windows Update Server) that some of the affected
systems still didn't receive the update patch. I manually ran the update and
that fixed it for those. you can get that download through article 931836. The link is at the top or you can download the XP patch here:
http://www.microsoft.com/downloads/details.aspx?familyid=66F1420C-DF2D-400B-A8A9-EF9061A9A3CA&displaylang=en
This will have to be run by the user or you. This was the final fix for
me. I still had a couple of users that could not be fixed by any means, they
had to be moved manually. I had one user that was off by 3 hours during that
DST window?
Good luck!
Well that's all I have for now, I will be updating this as I get new
info.
Donations
I spend a lot of late nights building this site up and if it helps you or makes your job a little easier please think about making a donation to support it. Remember any donation small or large, 50 cents to 50 dollars is greatly appreciated.