Thursday, September 25, 2008

Compensatory Arrangements of Certain (Microsoft) Officers

I saw today that Microsoft filed a Form 8-K. The initial financial news blurb really didn't get my attention and it put in my mental queue to read later.

Then Brier Dudley went and read it and blogged this post: Brier Dudley's blog Microsoft's new bonus plan for Steve Ballmer, et al Up to $20 mil apiece. Snippet: Instead of the current mix of cash bonuses and stock awards, executive bonuses will come from a pool - for fiscal 2009, that pool is the equivalent to 0.35 percent of the company's annual operating income during the year. [...] Payouts are capped at $20 million per individual. Oh well, I guess everyone's got to face the new economic reality.

Suddenly I was very motivated to read the 8-K, in a pissed-off sort of way.

From the filing:

Item 5.02 Compensatory Arrangements of Certain Officers

The Compensation Committee of the Microsoft Corporation (“Company”) Board of Directors has approved a new executive officer incentive plan (“Plan”) for the Company’s executive officers. The Plan replaces the existing annual cash bonus and equity award programs for the Company’s executive officers beginning with fiscal year 2009.

The Plan allows the Compensation Committee to establish award programs for specified performance periods (e.g., one or more fiscal years). The maximum amount payable to a participating executive officer is a percentage of an incentive pool for a performance period. For fiscal year 2009, awards will be granted from an incentive pool with maximum funding of 0.35% of Microsoft’s fiscal year 2009 corporate operating income. The awards granted to each participating executive officer will be limited to a fixed share of the incentive pool, and these awards may be further reduced or eliminated in the discretion of the Compensation Committee (or in the discretion of the Board of directors, for awards to the Company’s chief executive officer, Steven A. Ballmer). The Plan specifies a maximum amount of $20,000,000 that may be paid under the Plan to a participating executive officer for one or more performance periods that end during a fiscal year. Award amounts under the Plan may be made in either or both stock awards issued under the Microsoft Corporation 2001 Stock Plan and cash. Vesting of stock awards will be determined by the Compensation Committee. The 2001 Stock Plan generally requires that stock awards vest over at least a three-year period.

If I could shove my pockets full of cash would I flip off shareholders and employees worried about the stock price, too? No, not even I could do that, for (like this) all the money on the world. I guess the insider-trading gravy train must have started running out of steam and goodness knows we don't want our executive leadership looking for employment elsewhere, so what else could we do to retain them?

Given the feckless vote of confidence that a bunch of screw-ups like Yahoo! got at their recent shareholder's meeting, I don't have much confidence in our shareholders challenging our leadership. Stock price? Don't care, got mine. What kind of performance targets must the company reach to achieve the rewards? Not gonna tell you.

First SPSA. Now this. Microsoft is dying from the inside, and the folks sucking it dry have zero motivation to change things. It's working out pretty damn well for them.

And Microsoft shareholders say?

<<Crickets chirping>>

Wednesday, September 24, 2008

Microsoft Dynamics AX 4.0 data model overview

I have great news for you, readers :)
Recently, on an internal Microsoft discussion group, I received a nice document with an overview of the data model for Dynamics AX 4.0.
After permission was received to publish this document to an external audience, I uploaded it to my personal web-site, so that all of you can download it at a convenient time.

The link is below. Enjoy!

Download AX40datamodel.doc (4.41 Mb)

UPD: A newer version of this document does not exist, so I won't be able to post it here

Monday, September 22, 2008

SysMultiTableLoookup - dynamic lookups based on multiple tables

Wow! MSDN for Microsoft Dynamics AX is getting better every day. This is terrific news!! I still remember the days, when all the information was extremely hard to find. It had its own charm though :)
Anyway, this topic is really not about MSDN. It is about lookup forms.

First of all, for the record: I (and the Best Practices document as well) recommend creating custom lookup forms in AOT instead of dynamically coding them in the overridden lookup methods on controls/datasource fields.
But, in reality, this is true only for lookup forms with very large complexity. I won't go into a discussion of why that is the way it is here. :)

Now, back to what I was planning to write about:
In order to build a lookup form from code, developers use the SysTableLookup class.
You can go to MSDN (mentioned above) to read a How-to article on creating a run-time lookup form, as well as take a quick look at the SysTableLookup method descriptions.

SysTableLookup class has evolved over the multiple releases, providing more and more flexibility and control to the application developers.
I would like to publish another extension to this class, SysMultiTableLookup, which I hope will prove useful to members of the AX community.

Short list of features:
- Backward compatible, should cover everything that is present in AX 2009 version of SysTableLookup class
- Allows including multiple tables into lookups with different join types
- Completely based on the Query that you build, no extra parameters (except for the control) are needed to initialize the class
- Allows adding aggregated fields to the lookup
- Displays fields based on Boolean Enum as check boxes
- Allows to specify alternative labels when adding fields to the lookup

You can download the project from
It has (to some extent) been tested on Axapta 3.0 SP3, AX 4.0 and AX 2009.

Also included in the project is a tutorial form, showing 4 examples of dynamic lookups using the new class. After importing the project, make sure to try out the form, and use it for future reference for code examples and other inspiration.

Wednesday, September 17, 2008

Microsoft Company Meeting 2008

Alright, here we go! Company Meeting 2008! A chance to forget everything that went wrong last year?

Speaking of yesteryear, I've touched on The Company Meeting in 2004, 2005, 2006, and 2007. 2004 was fairly light because that was the special limited seating event that let everyone forget that it was actually the Company Meeting day and go-about their day as usual. 2005 was fun. 2006 was weird with the coordinated post-commenting frenzy here. And 2007 started with great potential and melted down with each mind-numbing demo.

Plus the burping game.

My main wish this year is that Ballmer's speech meets last year's quality, that he shows last year scorecard and where we are now, and that more than 1,000 people are around to hear the speech when it actually happens. Let's hear more about the idea of Many Microsofts. Or... was last year all throw away?

Okay, I'm off to pack some warm clothes and a few extra cups for all of the Microsoft Kool-aid I intend to guzzle. Sorry, all you folks who think it's a waste of money and effort. This is my opportunity to re-energize myself and see my peers and team re-energized. Oh, and do me a favor on Thursday: join me in letting out a joyful "Boo!" for any hiring statistics that show us throwing on more and more bodies we don't need in the ranks.

Post Company Meeting - some thoughts.

Well, it's days later but I still have that tangy fresh taste of Microsoft Kool-aid running around my mouth. I felt that the Company Meeting was really enjoyable. I appreciate it took a tremendous amount of effort into coordinating it and making amends for last year. Rainn Wilson I thought was a great host and, c'mon, who couldn't have loved his big finale before SteveB's entrance?!? A band, shooting flames, fireworks, exploding streamers, break dancers, and beach balls tumbling down on the crowd! Whoo! Why did it have to end?

And kudos to the planners for an innovative solution to the constant paper airplane harassment of year's past. I don't know if we broke a world record or not. Hopefully not. Hopefully every year we just miss it by that much and we try again the next year.

And the crowd held together. I always look around and see how people are doing and keep an ear out for distracted chatter. The crowd pretty much was engaged most of the time, except for Craig Mundie. It was a big crowd and everyone stayed put until the end, vs. the large-scale abandonment we had last year up to and through Mr. Ballmer's presentation.

Random notes from me:

It was nice that it started off with a big-reveal. Will Halo-fanboys be upset to know that Master Chief's face was revealed only to Microsofties? Keep the secret.

Our mission statement: "Create experiences that combine the magic of software with the power of Internet services across a world of devices." Ba-roo? Everytime I think of it, all I see is a grinning Doug Henning tossing a handful of confetti sparkles into the air, gasping, "...the magic of software!" and conjuring up a glittering world full of devices. Mr. Adam Barr works over the mission statement and comes up with something far more direct.

Demos: better than last year, if that's saying anything. There was a lot of stable-candy that could have been shown but that wasn't. I'm glad they went through Office 14 and Windows 7 scenarios, along with some of our other apps out there. The geek in me was indeed wow'd by the Excel demo and I felt proud that we had implemented something as geekily-groovy as that. I want to meet the people who did this and listen to their story of how it actually all works. I think I would learn something great. I can't say that the customer reaction will be as enthusiastic.

I'm disappointed that the teams that could have shown something really rah-rah cool didn't. I'm looking at you, Xbox. Oh, wait, there was the whole bust-a-move part...

You: over and over again it was pointed out that Microsoft employees are its biggest assets. And? I guess admission is the first step. I'm not looking for bread and circuses perks like dry cleaning and grocery drop-off but rather deep meaningful career development and a meritocracy in our compensation for people and teams. And, you know, having less assets around.

Speakers: better than last year, and no random Slick Willies from the country club. Yeah! Elop is a really good presenter. Ray was okay, as was most everyone. Sinofsky was a bit bumpy in getting the words out (he makes up for it in typing, trust me). Craig Mundie was a wall: a cold-stop wall that everyone used as a mental- and bio-break. Most folks in my section were asking, "Hey, who is this guy?"

And then there was Steve.

Last year's SteveB speech was much better and deeper and challenging. This year: not bad and not challenging at all. Yes, we had the five points to go over so I guess that replaces the scorecard from last year (too bad... what's the worth of having a scorecard if you're not keeping score?). No mention of the becoming many Microsofts. But, we have a discussion of The Stock.

Microsoft Stock: (SteveB slowly waves his a hand infront of the audience) These are not the droids you're looking for. You don't care about the Microsoft stock price. Move along. Move along. I'd like to say "Nice try." But it wasn't even that. Does anyone remember that brief moment of Microsoft stock flirting around $37? I don't know about you, but I started to see a new old-energy kick on around my team and the teams I worked with. Last year, Mr. Ballmer asked what had happened to our boldness. I know where it is, and it starts at around $37. You want to see super-boldness? That starts at $45.

Oh, and it also starts in NOT doing dumb knee-capping moves like the muddled acquisition attempt of Yahoo! The responsibility for causing that stock plunge and its aftermath was not even mentioned. Un-bold. Yahoo! was totally that terribly embarrassing family event - like a wedding that melted down at the altar - that no one brought up.

A lot of us have been at this company - and participating in the stock compensation program - already for the long-term. And have stock bupkis, along with our shareholders. So it was bold to bring up the stock issue, but the discussion was unsatisfying and lacked any sort of boldness explaining mistakes that have got us here (Yahoo!, surprising Wall Street with multi-billion dollar investments, etc).

At least we know a bargain when we see it: Microsoft Announces Share Repurchase Program and Increases Quarterly Dividend $40 billion authorized for share repurchase; Dividend increased 18 percent. That's good, and lord help us all if that doesn't put the final nail into the Yahoo! acquisition coffin. A curious development as part of this:

Microsoft also announced that its board of directors has authorized debt financings from time to time of up to $6 billion. Pursuant to the authorization, the company has established a $2 billion commercial paper program. Microsoft intends to use the net proceeds from any debt financings for general corporate purposes, which may include funding for working capital and repurchases of stock.

Curious to me given that Microsoft and Debt have never been two words I've put together in my mind.

Your Say: after the meeting, what are your impressions? You know, safe to share impressions.

Tuesday, September 16, 2008

SysInfoAction class description - Improve your Infolog

In the last couple of weeks I have been asked about this a number of times, so I decided it would be a good idea to describe what the class can do for you.

In just a few words, this class helps you interact with your users better, helping them perform some desired action (predefined) on request. This will save some time for the user, providng for a better user

There is a number of classes already present in the system.
Just to name a few used the most:

JournalInfoAction - allows navigating to the specified journal line. This is used, for example, when checking the journal lines before posting.
SysInfoAction_Editor - opens the editor in the specified method on the specified line/column. Primarily used for development purposes.
SysInfoAction_FormRun - opens a specified form, setting focus to a specific control, if required. There are many extensions of this class, allowing for more control over what is to happen.
SysInfoAction_MenuFunction - same as the one above, but the input is a menu item that is to be launched on user action.
SysInfoAction_newWindow,SysInfoAction_AOTproperties - both are used to ease up the dev's life a bit. The first one opens the specified AOT object in a new window, the latter one - the properties for the object.

And so on...

I had to create one extension of this class yesterday as well, while doing a small tool we use inside our team. The requirements were to launch a specific external application, specifying a number of files as command-line arguments. WinAPI ShellExecute can do exactly that. So I create a simple wrapper around the WinApi::ShellExecute method that is accessible as an infolog action.

Here is an example of how this class can be used:

You can download the class from axaptapedia.

The output of the infolog, in this case, would look similar to this:

Infolog output

One other thing worth mentioning about these classes is the method infolog.infoActionObject(). This is not used as often, but provides a greater control over the infolog action by allowing interaction with an open object, like a form.
This is used in AX journals (Inventory Transfer journal, for a specific example, if you wish). Whenever you check the lines of the journal (before posting), you get an infolog in case of errors, which allows to navigate to the specific line with the error. The navigation occurs in the journal lines form currently open, which is much better than opening a new form for each line.
In order to use this, simply specify the object that needs to be available when executing the infolog action, using the method mentioned above, like the following:

infolog.infoActionObject(this); //if called from the method on a class/form, for example

For more information, check out the article on Axaptapedia (I hope it will get expanded over time :))

Wednesday, September 3, 2008

(tap tap tap) Is This Thing On?

(tap tap tap... is this thing on?)

Review Season: well, just about everyone should have their reviews and numbers by now or very very soon - at least by the time you get your next automatic deposit! Given that address book updates went out the beginning of this week (for titles that are no longer opaque thanks to the CSPs) I've barged into more than one conversation of "Can you believe that <fill in the blank> was promoted to- oh! Hi."

Personally, while I still deeply appreciate not having to fork over sacrificial 3.0 reviews, I am still seeing, for all of my organization, okay compensation numbers for great work. And freaking-fantastic numbers for super-star work (salary schmalary for those people). That is how our system is set up and for those individual super-stars, it works out very very well. But by necessity, it requires great workers to get okay compensation in order to put the super in super-rewards.

And if it makes you angry, put that energy into networking around Microsoft for a new position or spiffing up that resume and seeing what other opportunities there are.

Company Meeting ahoy: not too long until the 2008 Microsoft Company Meeting. For any new readers: I absolutely love the Company Meeting, though last year's Company Meeting certainly tried my patience... like that Sweetheart that starts being a a real dick to make you break up with them. Things on my wish list for this year's Meeting, kind of echoing that old post:

  • Very few demos: at least, any demos there are should be short, fast, new vs. repackaged, and presented as if you were doing a power demo to the smartest people in the world. Cos you sorta are. And goodness, no calls for helps if your demo goes belly up.
  • Ballmer early: Ballmer gave a fantastic and interesting speech last year. Which most people didn't hear because their endurance gave out long before. I'd still expect him to be the end-of-day blood-rushing presenter. But I hope he can show up early to either kick things off or serve as a punch to keep things going.
  • Shaking Money Makers: time to show off Win7 and Office 14. Well, if you're like me you get to see them a lot everyday, but there needs to be a highly condensed so fast you miss half of what you see demo spurt of Win7 and O14, along with teasers of other emerging properties. They are our financial foundation and while most of the development work is done for them and we have at least a year before they surf through DCRs and stabilization, the employees deserve a peep show here.
  • New Blood: thanks to our great Town Halls, I kinda don't need to hear from our executive leadership team. I'd like to see some new, up-and-coming blood on stage vs. the same-old-same-old. And please, we're geeks, so make sure the new blood is geek-o-riffic like the rest of us vs. those country club shiny people that popped up so much last year. <<Shudder>> How about some Microspotting interludes?
  • Surprises: we come to this to be surprised and see things before (most) anyone else. Get CliffyB on stage to demo Gears of Wars 2 or something. Show us the new Halo stuff. The new 120GB Zune and interesting new Zune software features. Something. I won't blog about it. Cross my heart. Just please don't make the Xbox or Zune seem as lame and empty as they did last year. Here's Apple popping out another special event soon. Pop 'em back.
  • The Great Seinfield Reconciliation Paradox: or, time to show us the new ad campaign and how we have a coherent brand strategy that makes sense. There are a lot of fronts of our business with aggressive competitors that we're slipping in (mobile, gaming, television, OS, browsing, consumer). Time to see that not only do we realize this, we have a plan to meet and exceed. And goodness help you if your advertising solution to this involves some guy stuck in a big vat of orange goo in a barren landscape bragging how he can still check his Outlook email on his Windows Mobile Device. What?
  • Logistics: man, be on the first bus out of Redmond if you want to enjoy the Company Meeting. I usually leave as soon as I can but I'm still there after things have started. And I feel bad being into the third or fourth presentation and seeing a line of charter buses still making their way to Safeco Field. I do hope our buses figure different routes to get to the same point. And non-Microsofties: stay the heck away from Safeco field on 9/18/08.
  • No Paper: how about you sit down on the floor / first level and get pelted with poorly made paper airplanes for the whole meeting? That should be your penalty if you are involved in the least in distributing any paper to the Microsofties as they come in to Safeco.

Am I right in that they've dropped the whole best manager competition? Hmm. Guess after that one winner we exhausted all the candidates. What do you want to see at the Company Meeting or have the leadership talk about?

Old Business: it has been a while. The next thing I planned to write about was the Word from Wall Street with Charles Di Bona and Dylan Yolles from back near the end of July. Colleen, you crack me up, asking if Mr. DiBona was Mini-Microsoft. I wish! And Charlie, you could never disappoint me. Dividends. Buy back. Whatever.

Anyway, one interesting impression I got out of the vibe from the analysts: Microsoft leadership, time is up. Time is up to have us trust that you have a super secret plan that will really, truly work any year now. You went and convinced us that you have a huge vulnerability with respect to the online world by that totally confused and befuddled attempt to acquire Yahoo! and now you give us no specifics about what you're doing. Other than spending a whole hell of a lot of money (nice: You're telling us that there's a pot of gold at the end of the rainbow. Only, that rainbow is going to cost a lot of money to build to get us to that pot). Time's up.

I disagree with Mr. Yolles about the consumer market.vs. the enterprise market. If anything, we've suffered in doing so much for the enterprise market that most of the features are either user hostile (look, I can shut you out of using a USB drive) or just non-interesting. I think you can have both. There's a bunch of money walking around in the pockets of everyday people.

As for our huge cash reserve: now that we're not buying Yahoo! (right, right?) what to do? Not a dividend! But a big buyback of our stock. There was a rumor a couple of weeks ago that a buyback was under consideration, but nothing's come of it since.

An interesting observation was made that Google's Android has been created with 30 people at Google. That makes analysts look at how many people are responsible for Windows Mobile and ask, "Why? Why so many people? Why so much overhead? How do the results match up?" This feeds a desire now for some picking around in our overhead of our groups. Not a place our leadership wants to be, but a hard question that goes unanswered: what the hell do you need all these people for, anyway? Can you get by with less?

Yes. Of course we can. If you had to lose 10% of your group, not only would you get by, you'd receive a new sort of clarity about what was truly important vs. distracting. Our over abundance of people allows us to overwhelm our work with marginal, half-thought-out features to keep the mediocre C contributors busy and lets us go into the weeds pursuing edge cases. Ah, well, tired of listening to this same broken record?

Final take-away: Microsoft has to demonstrate that it is efficient and effective. What does that look like?

Administrivia: apologies for being away for an extended duration. It was a necessary departure and absence to be elsewhere with a situation that required my full attention. Best wishes to you to avoid such experiences for a long, long time. I'm about to go through... fifty pending comments. Whew. Where's that wine bottle?