OAB: BITS Provides Data for Troubleshooting

NOTE: This post – drafted, composed, written, and published by me – originally appeared on https://blogs.technet.microsoft.com/johnbai and is potentially (c) Microsoft.

At certain times, it may become necessary to troubleshoot OAB downloads from the client-perspective. This has been used for both internal and external customer issues with OAB and I thought would prove useful to discuss.

We can get a general, overall view of what is occurring on the client machine, according to BITS, via Windows PowerShell:

Get-BitsTransfer –AllUsers | Where{$_.DisplayName -ilike ‘Microsoft Outlook Offline Address Book*’} | FT -AutoSize

JobId                                DisplayName                                                             TransferType JobState OwnerAccount
—–                                ———–                                                             ———— ——– ————
a0f7b061-ac0d-4032-8310-65744c2a136b Microsoft Outlook Offline Address Book 029229376bac9a44b09855c03dcebef6 Download     Error    <REDACTED>\johnbai
daf20558-f80e-46f1-92e1-fcf3557f2eb9 Microsoft Outlook Offline Address Book 029229376bac9a44b09855c03dcebef6 Download     Error    <REDACTED>\johnbai
697758cd-22c9-4cd2-ad7b-749a0a673b20 Microsoft Outlook Offline Address Book 029229376bac9a44b09855c03dcebef6 Download     Error    <REDACTED>\johnbai
9fc762e3-64a7-4d74-a302-9695982330fc Microsoft Outlook Offline Address Book 029229376bac9a44b09855c03dcebef6 Download     Error    <REDACTED>\johnbai
02b619ce-28da-41a7-a7f7-b1537859e24e Microsoft Outlook Offline Address Book 029229376bac9a44b09855c03dcebef6 Download     Error    <REDACTED>\johnbai
3fcb0305-b6b4-49e4-ab7c-2d0b8d05b4cc Microsoft Outlook Offline Address Book 029229376bac9a44b09855c03dcebef6 Download     Error    <REDACTED>\johnbai
18dc84c8-563e-4fd3-8715-63dbedc04bc0 Microsoft Outlook Offline Address Book 029229376bac9a44b09855c03dcebef6 Download     Error    <REDACTED>\johnbai
b5bbbb4f-c5cc-4c72-9ab3-79268e49c26e Microsoft Outlook Offline Address Book 029229376bac9a44b09855c03dcebef6 Download     Error    <REDACTED>\johnbai
f29e4b69-46fc-4ca7-9c0c-759165b0f94a Microsoft Outlook Offline Address Book 029229376bac9a44b09855c03dcebef6 Download     Error    <REDACTED>\johnbai
c58fec18-d563-424b-ba47-f0dcf3d9c202 Microsoft Outlook Offline Address Book 029229376bac9a44b09855c03dcebef6 Download     Error    <REDACTED>\johnbai
89ac88cb-3b4d-47b6-b6d2-d2c877d8028b Microsoft Outlook Offline Address Book 029229376bac9a44b09855c03dcebef6 Download     Error    <REDACTED>\johnbai

We can also deep-dive into the issue, as far as BITS reporting goes via the command ‘bitsadmin /list /verbose’:

So, in this case, the user (myself) was receiving a 401 when attempting to download the OAB.

Exchange: Non-Discriminant Mailbox Moves

NOTE: This post – drafted, composed, written, and published by me – originally appeared on https://blogs.technet.microsoft.com/johnbai and is potentially (c) Microsoft.

I had to rebuild my lab and in one of the invariable problems of doing this is that the default database is created and by the time you do any administration in Exchange, mailboxes exist on it.

I had to come up with a sure-fire way to balance moves between the two mount-points I had created, so as to not really favor one over the other (plus, manually alternating isn’t much fun).

Enter PowerShell. First, I had to make script to test if the iteration I was on was even or odd:

function Check-IfEvenOrOdd ($digit) {[bool]!($digit%2)}

Once I had the function, the next step was to iterate:

$MBXs = @()
$MBXs += Get-Mailbox -Database “Mailbox Database 1750300935”
$MBXs += Get-Mailbox -Database “Mailbox Database 1750300935” -Monitoring
$MBXs += Get-Mailbox -Database “Mailbox Database 1750300935” -Arbitration
$MBXs += Get-Mailbox -Database “Mailbox Database 1909919934” -Monitoring
$MBXs += Get-Mailbox -Database “Mailbox Database 1909919934” -Arbitration
($MBXs | Measure-Object).Count

for([int]$y = 0; $y -le 18; $y++)
{
 if(Check-IfEvenOrOdd $y = $true)
 {
  New-MoveRequest $MBXs[$y].Identity -TargetDatabase EURPROD01-db001
 }
 else
 {
  New-MoveRequest $MBXs[$y].Identity -TargetDatabase EURPROD01-db002
 }
}

And there you have it: Easy ‘balancing’ of mailbox moves to evacuate databases.