As I’ve written before, the main engine that we are using to provision users on our Exchange system is Microsoft‘s Hosted Messaging and Collaboration (HMC) framework.
I’ve had a few issues with it and various hoops that I have had to jump through. Many of which I have not had a chance to document on this blog. Those will hopefully come out in the coming months.
Today, I was dealing with a speed issue that we have been having in our customer portal that hits HMC. The page is pretty basic, it gives a listing of all the users, the name, login address, what package they are assigned and then some actions that can be taken on the user such as edit, delete, disable. This is all in house code that shows this information with calls being made to HMC to get the data.
Unfortunately, I made a mistake in my initial development. Originally, I got a listing of all the users and had 90% of the information that I needed. Another call was needed to get the assigned package for each user. If you have 5-10 users, this isn’t a huge deal. Try it with 100, or 1000. It gets really ugly really fast.
On one particular customer that I was looking at, they have 120 users. Their page was loading in 41 seconds. 41 freaking seconds!!! 7 seconds for the AD search to grab the users with mailboxes. Then somewhere between .1 and .3 seconds per user to equal 34 seconds of the page load.
The solution, remove the package display code.
What? But doesn’t the user want to see this data?!?! Maybe. But seeing as they have to go to the edit page anyway to change the package, it really isn’t needed on the account listing page. So why display it there. It slows down the user experience which is more of a negative than having it on the page.
It wasn’t an easy decision to remove this information. I thought of a whole bunch of ways where I could tuck that data away so I could grab it more efficiently. But in the end, less is less. Removing that data cleaned up the look of the page and vastly improved the load times. Its only been in the wild for a for hours so we’ll see what the users have to say about the change.
As many of my close friends know, I have been working on a project that is a roll out of a new Exchange 2007 platform for LightEdge Solutions. This has been an exciting project for me and one that has had many challenges. Over the next several months I will be sharing some of the challenges that we have run into with the rollout and HMC 4.5 (Hosted Messaging and Collaboration) and how we have worked around them.
I’m not a Microsoft programmer in any shape of the word. I’m a unix guy and based on my experiences working with the HMC SDK and trolling the ASP.net forums, I think that it is safe to say that I am the only person writing a control panel for HMC in PHP. Hopefully you’ll find the posts interesting and informative.
If you would like to find out more about our new product, please check us out here.
Do you ever get to a point where you know that you are about to go on wicked run, but aren’t sure where it is you are going to go?
I’m at that point. The last time this happened I programmed for 16 of 24 hours and came up with a pop3 proxy that could check for spam, viruses, apply certain actions based on the results and do various account verification and logging. This was just a proof of concept all written in PHP.
Yeah, I said it. I was crazy enough to write a pop3 proxy in PHP. Oh, I’m sure that many of you are thinking, well hell, anyone can do that with the PEAR modules. Nah, too easy. I wanted to truly see how this stuff was going to work so I wrote it all from scratch. All in under 1,000 lines of code too.
I feel like another one of these code storms is coming. I’m never sure when they are going to pop up on the old radar. Its not like I slack off all the other times. Its just one of those feelings I get from time to time where it is time to close off the rest of the world and get lost in the bits.
I’m not sure what is gong to come out of this. Its either going to be a new customer portal for work. Or I’m going to knock out all the PHP->MPS (Micro@oft Provision System) code that I need to do. Or it could be one of my other projects that are currently floating around my head.
Either way, its going to be a fun ride.