Showing posts with label Tips/Techniques. Show all posts
Showing posts with label Tips/Techniques. Show all posts

Tuesday, October 23, 2018

Exchange online: Conference Room Provisioning changed to AutoAccept

A heads up for admins who plan to provision new resources in Exchange Online: the defaults will change from AutoUpdate to AutoAccept.  This change will occur on November 15, 2018.


What does this mean? It's another 80/20 rule: depends on the type of resources and if you are a new or existing customer.


For existing Office 365 customers:  
  • 80%: Most of our clients configure resources (rooms, equipment) as AutoAccept. If the user wants to book a room on a particular date/time, Exchange will book it if it's free. 
  • 20%: "Managed" rooms.  Those are the ones only specific users can book, or an admin has to approve. Examples are the Executive conference rooms, HR Interview rooms, the Auditorium, etc.  For those rooms, this will be a problem. 
For new Office 365 / Sumatra's Migration customers,
  • NO IMPACT:  For all migration customers, we recommended you set ALL of your rooms to either None or AutoAccept (depending upon the migration tool). You will replace the defaults.
To check:
Get-Mailbox -RecipientTypeDetails @("Equipment","RoomMailbox") -ResultSize unlimited | Get-CalendarProcessing | Format-Table-Property Identity, AutomateProcessing





See the MS announcement here: Exchange Online - calendar AutomateProcessing changes through PowerShell

Tuesday, January 02, 2018

Windows update consumed all of my hard drive

I blogged about "Surviving a botched windows update" two weeks ago after the December 12, 2017 Windows Update.  I thought my problems were behind me. I was so wrong.  It took almost two weeks to find and fix the problem. What a waste of time.

Here are the four symptoms:

  1. Ran out of hard drive free space (200+ gb of free space suddenly disappeared)
  2. Windows update stuck on 99%
  3. "C:\Windows\Logs\CBS\CBS.LOG" grew to 200GB.  The file had 200,000 of these entries:  Current tick count lower than last tick count. [HRESULT = 0x8007000d - ERROR_INVALID_DATA] 
  4. The Event Logs shows: "Installation Failure: Windows failed to install the following update with error 0x800706BE: 2017-12 Cumulative Update for Windows 10 Version 1709 for x64-based Systems (KB4054517)."

The solution:

I read the December 12, 2017—KB4054517 (OS Build 16299.125).  "When, what to my wondering eyes should appear, But a Knows Issues (1)."  The symptom reported in that KB:
Update installation may stop at 99% and may show elevated CPU or disk utilization if a device was reset using the Reset this PC functionality after installing KB4054022.
No kidding.

Here is an abbreviated version of the steps I took (from the KB article.) 
  1. Download the appropriate version of KB4054022 for your device architecture from the Microsoft Update Catalog to c:\temp. Then run the commands in the steps below from the administrative command prompt.
  2. Create a temp directory, expand the .msu file that you downloaded in step 1.
    • mkdir c:\temp
    • expand -f:* windows10.0-kb4054022-x64_da67baa74c09ad949d90823b25531731c3211184.msu c:\temp
  3. End the existing Trusted Installer processes and install KB4054022 using the Deployment Image Servicing and Management tool.
    • taskkill /f /im tiworker.exe
    • taskkill /f /im trustedinstaller.exe
    • dism /online /add-package /packagepath:c:\temp\Windows10.0-KB4054022-x64.cab
  4. Delete the CBS logs from the Windows Logs directory.
    • del /f %windir%\logs\cbs\*.log


Three days later things seem to be back to "normal."
-----------------------------------------------------------------------------
(1) Adapted from the poem "Twas the Night Before Christmas"

Thursday, December 14, 2017

Surviving a botched Windows update: recover your Outlook profiles

I returned from a client meeting and saw a required reboot after a Windows 10 or Office 2016 Update (I'm not sure which).  After the reboot, the Windows startup said the boot drive was inaccessible.  After spending a half day trying to recover, I gave up and "recovered Windows 10."  Of course that meant I lost every installed application on my hard drive.  Recover kept my user files.  Fortunately most are stored on a different drive and on Sumatra's SAN and cloud drives.

The hardest part was recovering my Outlook Profile -- i was not looking forward to re-entering all of the credentials for my various email accounts.  Windows moved the old windows to a new folder "Windows.Old"  found my old registry hive, and was able to extract the Outlook Profile.

Here's the steps.   Thanks to JRich from Mass General for blog post that pointed me in the right direction!!

In Powershell, run as the administrator:
1. Use the REG command to load the "old hive" into your registry under the HK Local Machine

reg load 'HKLM\_OldOutlook' "C:\Windows.old\Users\riuliano\NTUSER.DAT"

2. Open RegEdit navigate to Outlook, i.e.
HKEY_Local_Machine\_OldOutlook\Software\Microsoft\Office\16.0\Outlook\

3. In Regedit, right-click on "Profiles" and Export the file

4. Edit the exported profile file, and replace "Hkey_Local_Machine\_OldOutlook" with "HKey_Current_User\".  Save the file

5. Back in RegEdit, Import the "reg" file you just edited.

6. Back in Powershell, remove the registry key and garbage collect.
reg unload hklm\OldOutlook

[gc]::collect()

That's IT!



BTW, if you want to see what the director looks like in powershell, you can create a virtual directory of the old hive:
New-PSDrive -Name OldOutlook -PSProvider Registry -Root "HKLM\_OldOutlook"

then you can "cd OldOutlook:"
and get-item and value.  I'm sure i could have looped through and copied each profile key from the old hive to the new hive.  Export seemed much simpler, though.

Remember to remove the PSDrive:
Remove-PSDrive OldOutlook


Tuesday, December 12, 2017

Access Runtime in a click-to-run world

A quick FYI:

Some Sumatra products require MS Access Runtime.   Microsoft offers two versions:

Microsoft Access 2016 Runtime Download  and
Microsoft Access 2013 Runtime Download

Both version of the Access Runtime products are installed via an "MSI" or Windows installer.

Here's the rub: C2R and MSI of the same major version cannot be installed side by side. 

If you have Office 365, you are likely to have the Office "click-to-run" (C2R) version.  Since there is no C2R for either Access Runtime, you'll have to install the Access 2013 Runtime.  Microsoft says the two versions are functionally equivalent, and this installation should work smoothly.

If you wonder what will happen if you install the Access 2016 Runtime and Office C2R, this is what you'll see:


Sunday, February 26, 2017

Installing Exchange 2016 CU4: Service 'WMSVC' Failed to Reach Status 'Running' On This Server

Upgrading our Microsoft Exchange 2016 servers to CU4 failed with this error:

"Microsoft.Exchange.Configuration.Tasks.ServiceDidNotReachStatusException: 
Service 'WMSVC' failed to reach status 'Running' on this Server"


In our case, we had a valid SSL certificate.  Why did it mysteriously disappear from IIS' Management Service??? I reapplied the certificate, restarted IIS, and resumed the Exchange CU4 in-place upgrade.

Here is the error screen, btw:


Russ

Wednesday, June 08, 2016

Troubleshoot Outlook Connectivity in Exchange 2016 on-premises

We hit connectivity issues running Outlook 2016 on Exchange 2016 at least once a week.  Troubleshooting is difficult because of many platforms and technologies in play. 


A recent blog post from the Microsoft Exchange Team titled "Checklist for troubleshooting Outlook connectivity in Exchange 2013 and 2016 (on-premises)" promises to help us figure it out.  There wasn't a check list, per se.  Rather it was an organized collection of troubleshooting tips and techniques. We hope it helps us and helps you.  (Note: this is NOT intended for Office 365 connectivity issues!)




First, here are examples of the connectivity problems they cite, and we've hit:
  • Clients prompting for credentials (intermittently or continuously)
  • Clients getting disconnected
  • Clients are unable to establish a connection
  • Clients freezing or going unresponsive




  • Here is a summary of their tips and recommendations:


    * Ensure that everything is fully patched.  We find Office Configuration Analyzer Tool (OffCAT) quite helpful.  In fact, Microsoft Office released OffCat Version 2.2 June 2016.  Download v2.2 here.


    * They recommend cached mode vs. online mode to smooth out the user experience.  We agree it helps, although it masks connectivity problems.


    * Ensure CAS servers are not turning off NIC cards, use outdated drivers, or are not configured for power saving mode.  The same holds true for the load balancer -- make sure keep-alive and idle timeouts are set above the 15 minute threshold.


    * Too many cores:  it's hard to believe that you can have too many cores, but you can.  Don't have any more than 24 cores per server


    * Configure Exchange performance monitoring ("perfwiz").  MS points you to two articles:  Troubleshoot High CPU Utilization in Exchange 2013, and Exchange Monitoring tool, "Exmon"


    * Logs: The article recommends Outlook logging, HTTP logging, IIS logging, Exchange Logging, and RPC logs.  They recommend a tool, Log Parser Studio, to help parse the logs.




    Writing this blog was the easy part.  Now we'll have to try each suggestion until we discover what's causing the client connectivity problems.











    Tuesday, July 07, 2015

    Resources before and after your Microsoft Exchange calendar migration

    Please consider this a follow-on to Russ's previous post.

    We've got scads of migrations right now at various phases and something that keeps coming up is resource handling ("surprise, surprise" which I always imagine in a Gomer Pyle voice).

    Before inserting calendar data into resource calendars, use PowerShell to enable all mailboxes and to disable automatic calendar processing, scheduling horizon, and conflicts.

    To enable all resource accounts (pre-migration): 

    Get-Mailbox -resultsize unlimited | where {$_.IsResource -eq "true"} | enable-mailbox 


    This script will disable automatic calendar processing, scheduling horizon, and conflicts for ALL resources: 

    Get-Mailbox -resultsize unlimited  -filter {isResource -eq $true} | 
               Set-CalendarProcessing -AutomateProcessing None
               -deletesubject:$False -AllowConflicts: $true 
               -EnforceSchedulingHorizon: $False

    Post migration you can set these to whatever policies you wish -- but this allows us to re-create the calendar as it was in your legacy system.  A lot of field data has conflicts and double-bookings which get decided closer to the date.  The scheduling horizon on some legacy systems is 2039.


    Post-migration to set resources to autoaccept which in Exchange 2013 is done via set-calendarprocessing:


    Get-Mailbox -resultsize unlimited  -filter {isResource -eq $true} | Set-MailboxCalendarSettings -AutomateProcessing AutoAccept -deletesubject:$False -addorganizertosubject:$True


    Post-migration to DISABLE all resource accounts:

    Get-Mailbox -resultsize unlimited | where {$_.IsResource -eq "true"} | disable-mailuser

    For private conference rooms you may want to set some policies like “book-in”, “request-in” that allow admins and other authorized people to either send in a meeting request, or be allowed to book a meeting in the room. This way the admin, as a delegate to the boss, can create a meeting in the boss’ calendar and invite a room. And everything flows through Exchange without issue.  A Look at Exchange Server 2013 Resource Mailboxes goes into good detail showing you how to accomplish that.

    You don’t want to have rooms organize meetings because they are disabled accounts and cannot respond to email traffic.  Since this is a feature of the ICS exports from Oracle Calendar Server there is little we can do to remedy that situation (since OCS does not indicate the human who should be organizer). 

    If you are migrating “shared” calendars, e.g., “carpool van”, “IT vacation schedule”, ”Help Desk Coverage Assignments” then create that entity as a user account in Exchange, migrate the ICS resource data into that entity, and then re-type the account from user to “shared.”  We wrote about the right sequence for migrating Shared Calendars into Exchange and setting them up.

    Final note: now keep in mind: this is relevant to do the kinds of calendar migrations we do where meetings are actual meetings when you get done.  For every other kind of calendar migration out there you can ignore this and focus on having your users re-create all their meetings.

    Thursday, July 02, 2015

    Two ways to grant access to a Resource in #MSFTExchange

    A client asked us to explain the difference in the two ways for an end user to have "delegate" rights to a conference room.  It is confusing -- Microsoft calls them both "delegation"  and tried to explain them in a recent Exchange Team Blog post, Booking Delegation Vs. Classic Delegation.

    Here is the summary:

    1. Grant delegate permission using Outlook or OWA (aka "Classic Delegation")
    2. Grant delegate permission using Exchange Control Panel (aka "Booking Delegation")

    There are three problems with the "Classic Delegation" for conference rooms:
    • First, since rooms are "disabled accounts", it's hard to log into them.  
    • Second, Classic Delegation creates two rules -- one visible (IPM Subtree folders), and one invisible (think NON-IPM Subtree folders.)  When you change/remove a classic delegate, the hidden rule does not always get deleted and thus still remains in force. (Why? Outlook tries to be helpful, and when it sees there is a hidden rule, it uses the hidden rule.) 
    • Third, the classic delegation rules run at a higher priority than  booking delegation rules.  More ways to confuse administrators.
    Moral of this story: don't use Classic to delegate access to rooms. Sumatra urges all our migration customers NOT to migrate delegates -- once set they are difficult to remove (see our post from '08).


    Sumatra recommends you assign room delegates using the "Booking Delegation" approach.  You can either use Exchange control panel to assign booking delegates, or PowerShell.  We prefer PowerShell.

    There are several things you must do, depending upon how you want to handle room reservation requests

    For auto-booking:
    Ensure automated processing of meeting requests is set.
    Example: Set automated processing for conference room 101B
    Set-MailboxCalendarSettings cr_101b -AutomateProcessing AutoAccept

    For a managed room:
    1. Ensure automated processing of meeting requests is disabled.
    Example: Disable automated processing for conference room 101B
    Set-MailboxCalendarSettings cr_101b -AutomateProcessing None

    2. Decide on your room administrators,  grant them permission, and allow the room to receive requests but NOT allow direct booking.  (You and also play with Book-in and Request-In policies starting with this old but good Technet Article....this is beyond the scope of our post, though.)
    Example: Allow Russ Iuliano to manage Auditorium meeting requests. 
    Set-CalendarProcessing Auditorium -AllBookInPolicy $false -AllRequestInPolicy $true -ResourceDelegates "Russ Iuliano"

    3. Grant administrators permission to send on behalf of the room.
    From time to time, you may not
    Example, Grant delegate "riuliano" send as permissions on behalf of Room CR 101B
    Add-ADPermission cr_101b -Trustee riuliano@sumatra.com -AccessRights "Send As"

    Finally, You can read more about creating and managing room booking on Microsoft Technet.

    Tuesday, December 30, 2014

    A few miscellaneous useful links and articles to close out the year

    Closing out 2014 with a few Exchange / Outlook related tips.

    Really good info in Ways to Avoid Email Tracking.

    This includes my favorite advice: Don't even click the UNSUBSCRIBE link.

    What these guys are looking for is any kind of response.  You play into their hands by clicking anything.  Best to ignore them.

    also -- 

    The Best Command Line Replacements for Bloated Desktop Apps gives you some really good tools that are compact and functional.  That we use the exact same philosophy on our calendar migration tools is one of the attractions of this article to me.

    and finally --

    Adding Sun, Moon, and Stars to Google Calendar.  

    Thursday, January 16, 2014

    Useful Guided Walkthroughs for Calendaring in Office 365

    Since one of our most popular posts ever is Shared Calendars in Exchange 2007 sp1, largely to show folks how to create shared calendars, I'm really happy that Microsoft is finally doing its own tutorials on some things that are just darned hard in Exchange.  Well, in this case Office 365.

    Check out the new Guided Walkthroughs Microsoft has put up.

    Of special interest to those followers of our blog are:


    and

    Of course the other walkthroughs on email and mailbox access will be useful to you as well.

    Tuesday, January 07, 2014

    Exchange Database Size Growth Post Undo -- LitigationHoldEnabled

    Customers ask us how much space will Exchange require post-migration if they have to rollback (aka our UNDO.)  We typically suggest it's somewhere around 4x the size of the interim Access database,  and double the size of the Oracle Beehive tablespace.  This has been an inexact science, particularly since email continues to flow in (and out) of the organization during the UNDO process. 


    One contributing factor to the space bloat is the "LitigationHoldEnabled" feature:  post-undo Exchange continues to hold onto deleted items (as it should!) Microsoft's Exchange team released an article and script that shows how to calculate the database Exchange 2010 and 2013 Database Growth Reporting Script.  It is certainly not needed for during testing --  you can always delete and re-create the exchange stores.  Rather, it's something to bookmark just in case you need to figure out why your DB storage requirements jump significantly.

    Monday, December 16, 2013

    It's about time ... Outlook 2013 7 Day Preview is back!

    It's about time (a calendaring geek's favorite expression) Microsoft fixed this issue!

    I was very pissed that Outlook 2013 RTM no longer showed "future" appointments in the ToDo bar. I was thrilled to learn it's available -- see Microsoft's KB# 2837618. 

    And now for the really good news:  The patch causes Outlook 2013's IMAP folders to fail to synchronize.  I'm thrilled to see my appointments 7 days out, but even more pissed that I can't get new mail sent to my inbox, or preventing me from setting up OOF messages. 

    InfoWorld said it better than I could in a recent article: Botched Outlook 2013 patches KB 2837618 and KB 2837643 break Out Of Office reply, Free/Busy, and more. InfoWorld found a detailed synopsis of the issue, written by Matthew Stublefield from Missouri State University.

    Bottom line: DO NOT apply this patch until Microsoft figures out how to fix the fiasco.

    Friday, July 05, 2013

    More #Oracle Beehive Calendar Metrics

    Our latest version of the Beehive to Exchange / Office 365 migration code includes more table of metrics of Beehive calendars.  I show some of the additional stats we generate here using only two users in our test server so it's easier to take in.





    Thursday, May 31, 2012

    Visual Basic Script to make calendar objects public

    Well those fine, fine people at Oracle make the default PRIVATE for ICS exports in Oracle Calendar Server 10.x.

    SO we have options for making our process make them NON-PRIVATE if you wish.

    OR if you want to migrate it as private and then change it, this VB script will help.


    ---------------------
    Here is a VB Script that will make items public
    ---------------------


    Dim appOutlook As New Outlook.Application
    Dim OutlookItems As Outlook.Items

    Public Sub ClearCalendarItemsPrivateFlag()
    Set OutlookItems = appOutlook.GetNamespace("MAPI").GetDefaultFolder(olFolderCalendar).Items

    For Each appointment In OutlookItems
        appointment.Sensitivity = olNormal  'or olPrivate if you want to turn it back
        appointment.Save
    Next appointment

    End Sub

    Wednesday, May 02, 2012

    Microsoft Access 2010 x64 database access

    As more Sumatra customers stand-up x64 systems, they hit the "Unrecognized database format" error.  The issue:  There isn't an x64 MS Access driver.  But there is a solution:   

    Download the 2007 Office System Driver: Data Connectivity Components

    Choose Microsoft Office 12.0 Access Database Engine OLE DB Provider!!

    If you are editing the suExchange _config.xml file, you'll find those settings in the DatabaseProvider tag.  The choices are:

    x64: Provider=Microsoft.ACE.OLEDB.12.0;Data Source=
    or x32: PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=

    Saturday, February 04, 2012

    Symantec Endpoint Protection running on Exchange Servers: Fool me twice....shame on me

    Note to self:  Disable all instances of Symantec Endpoint Protection (SEP) on ALL Exchange servers before and during a calendar migration.

    Why?

    * Insertion throughput dropped 99%: from 750 transactions/minute to four (4) transactions/minute.
    * SEP stripped all of the Sumatra strings we associate with calendar items to process messages.

    This product bit us two years ago.  It just bit us again.

    It's your choice to deploy SEP in your Exchange environment (or not.)   But do not deploy SEP during a Sumatra calendar migration.

    Wednesday, January 18, 2012

    Exchange Transaction logs - capacity planning

    Sumatra's enterprise customers ask me how much space they should allocate for transaction logs.  I came across Ross Smith's Technet post.  Ross suggests a formula to compute the transaction logfile growth:

    For ever 100 messages, Exchange generates 20 transation logs.
    According to another Technet article, "Understanding Mailbox Database and Log Capacity,"  each transaction log is 2MB.

    All calendaring transactions are messages.  Thus, to estimate the logfile size (in MB), sum the total number of transactions (generated through a macro in the Sumatra DB, M_ShowCounts) and multiply by (2/100).


    Thursday, October 06, 2011

    Get Time Zones for your users via PowerShell

    We recently released a cmdlet that bulk-inserts holidays in Exchange 2010 (see the Sumatra website or the Sumatra Blog).

    A holiday is a simple all day calendaring event in Outlook. Yet simple calendaring events can be tricky! Consider: when your end users work in different time zones! If you force an all day event into one time zones, all users who are not in that time zone will see their holidays span multiple days. Not a happy scenario. What's the solution?

    We wrote a script that uses Exchange 2010 "get-mailboxRegionalConfiguration" cmdlet to find the timezones. If used in conjunction with get-mailbox, you can output a file that has the user information plus the timezone. Problem solved!

    This script produces a file that outputs PrimarySMTPAddress + TimeZone:
    #Define your 'default' timezone (if none is set)
    $myDefaultTimezone="Eastern Standard Time"
    
    #Define the output file
    $myOutputFile="userlist.txt"
    
    #Define the list of User Accounts to process
    $myMailboxList = get-mailbox -Filter {RecipientTypeDetails -eq "UserMailbox"}  select-object Identity,PrimarySMTPAddress
    
    #If file exists, delete the file
    $fileExists=test-Path $myOutputFile
    if ($fileExists -eq "True"){del $myOutputFile}
    
    
    #Loop through list and get
    foreach ($t in $myMailboxList) {
        $priSMTP=$t.PrimarySMTPAddress
        $xi=get-mailboxRegionalConfiguration -Identity $t.Identity
        if ($xi.TimeZone -eq $Null) {$tt=$myDefaultTimezone} Else {$tt=$xi.TimeZone}
        write-output "$priSMTP $tt" >> $myOutputFile
    }
    
    write-output "Done!  see the file $myOutputFile"

    You can also download getUserTimezones.zip

    If you have another way, please share!

    -Russ

    Friday, June 24, 2011

    When a user has 15,000+ unread items in the inbox....

    We *thought* huge mailboxes (as measured by disk space) could wreak havoc during a migration. Perhaps we are wrong. This is a story about huge inboxes and unread email (the harbinger of problems that plague email systems.)

    Last week we moved a client into Exchange 2010 (on-premesis). BUT the Sumatra Exchange insertion tool hung while inserting one user. For hours. Restarting the tool and rebooting boxes didn't help. After much digging we found the problem: that end user had 15,000+ unread emails in her inbox. What was the issue? (no, not why would we migrate a user with 15,000 unread emails in their inbox who probably left the company three years ago....)

    The client hit an Exchange threshold. The issue is described in a Microsoft Technet article: Understanding the Performance Impact of High Item Counts and Restricted Views.

    The article says: ...In Exchange 2007 ... an acceptable user experience can still be maintained with item counts as high as 20,000 items. We're still researching if that limit changed for Exchange 2010. Our client hit that wall in Exchange 2010.

    So who are these big-bad-inbox-boys and girls? Here's a powershell command: (note, I've set a conservative threshold of 10,000 items for just user mailboxes.)



    Get-Mailbox -filter {RecipientType -eq "UserMailbox"} -ResultSize unlimited Get-MailboxFolderStatistics where {($_.name -eq "Inbox" -or $_.Name -eq "Calendar") -AND $_.itemsinfolder -ge 10000} sort-object ItemsinFolder -Descending ft Identity,ItemsinFolder,FolderSize

    -Russ