Exchange 2013: Understanding the Room Finder function in OWA

In Exchange 2013, when you use OWA to book a room, there can be two methods that get called for this to occur. Both of these methods start workflows against service.svc and you can see this in the client behavior via the following URLs: https://<vanityDomain>/owa/service.svc?action=GetRoomLists&ID=-<ID>&AC=1https://<vanityDomain>/owa/service.svc?action=GetRoomsInternal&ID=-<ID>&AC=1 The first method, GetRoomLists, returns all rooms found in room lists (Get-DistributionGroup…


OAB: BITS Provides Data for Troubleshooting

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…


Exchange: Non-Discriminant Mailbox Moves

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…


Exchange: Recovering a Database from Dirty Shutdown (the Easy Way)

In testing (and production), we invariably run into problems where the database will be in a 'bad state'. In my case, I pulled Store service out from under it (disabled and stopped the service) and this caused the database to go into dirty shutdown: eseutil.exe /mh "C:\Databases\EMEA-SWEEX15-01 Store 001\EMEA-SWEEX15-01 Store 001.EDB" Extensible Storage Engine Utilities…


C#: Returning an Object via System.Threading.Tasks.Task<T>

In programming something (in EWS), discovered the joys of what I believe was 'lock contention'. To explain, first we need to cover Tasks. Async Tasks (which call 'await' against other tasks) will only perform the action requested, if you do not specify a managed object to handle. For example, if I call an async for…


C#: Returning ADSI COM Properties of a User Object (Or Any Object, Really)

A few months ago, I was working on a project to query for specific AD properties of a user-object programmatically. I knew the properties I wanted to return and I had worked with returning properties in ExBPA/HRC. I hadn't, however, found the joys of receiving a System.__COM object in any of my returns until now….


ExRCA: Analyzing Messages via Headers

ExRCA ( or [Redirects to the former.]) has a feature that you can use to analyze where message delays may have occurred, aptly named 'Message Analyzer'. You'll get a table with each hop that the message passed through and the time between each, like the following: You can also get the Analyzer installed as an…


Exchange 2013: MailboxTransportMBTDeliveryPercentPermanentFailedMonitor Fires When User is Over Quota

In Exchange 2013, there may be an instance where a user is over-quota and causes the Mailbox Transport responder to escalate. This issue is specific only to Mailbox Delivery and there are some simple steps to prove that this is a 'by-design' scenario. Check the current value of the counter, run command: Get-Counter "\MSExchange Delivery Store…


Exchange 2013: When the DAG NIC Affects Transport, That Can't Be Good

In my on-premises Exchange 2013 lab, there was a queue built up to a mailbox:   Get-TransportService | Get-Queue | Where{$_.MessageCount -gt 0} | FT -AutoSize   Identity      DeliveryType          Status MessageCount Velocity RiskLevel OutboundIPPool NextHopDomain ——–      ————          —— ———— ——– ——— ————– ————- Stromkarlen\3 SmtpDeliveryToMailbox Retry  15           0        Normal    0              emea-sweex15-01 store 001   What’s interesting about the queue is…


O365: CDN Change Causes OWA Client Error

Recently, we've seen a pattern of escalations wherein users are no longer able to access OWA. Specifically, the error will be similar to the following: In the details, we'll see the error we're concerned with: X-OQA-Error: ClientError;exMsg=’_g’ is undefined; file= If we use Network Tracing (F12 in Internet Explorer) [or Fiddler] we'll see a failure…