Monday, March 10, 2008

Microsoft Dynamics AX 4.0 Service Pack 2 is available for download

Just a short announcement today:

The Demonstration Toolkit for Microsoft Dynamics™ AX 4.0 Service Pack 2 (SP2) contains marketing materials, demonstration scripts, and a Virtual PC image containing a full installation of Microsoft Dynamics AX 4.0 SP2.

Download link (Requires PartnerSource login access)

P.S. Just a warning for anyone unaware - the VPC image is very large, as it cotains an operating system, SQL server, AX install with demodata, etc., total size exceeding 9 GBs)

Saturday, March 8, 2008

Hotkeys and Find vs Filter in Dynamics AX 2009

In Microsoft Dynamics AX 2009 a number of changes regarding Filtering in grids were introduced. I would like to talk about one of them today.

As most of you know, in AX 4.0 the Ctrl+F hotkey was replaced with Ctrl+K, which was very confusing for customers that were using AX 3.0 at the time. (see one of my previous posts with a .dll go fix that)

Well, I am happy to tell you, that Ctrl+F is now back as a regular (not Global) Find option in AX 2009. But Ctrl+K is also available. So it was decided, that having to identical commands is not really smart. So now they actually perform different actions.

Ctrl+F is Find
Ctrl+K is Filter = Filter by Field from the context menu on the grid line.

Now, you might wonder what the difference is. I will explain it on an example:

You have a grid with items of different Item Type (BOM, Item, Service) and different Item Group (Parts, Bulbs, etc.)

Scenario 1: (Notice the dialog caption is Filter)
1. Press Ctrl+K on Item Type "BOM"
2. Press OK (the value BOM is already inserted in the search field).
3. Only BOM items are shown
4. Press Ctrl+K on Item Group "Parts"
5. Press OK (the value Parts is already inserted in the search field).
6. Now only BOM items with Item Group = Parts are shown.

Scenario 2: (Notice the dialog caption is Find)
1. Press Ctrl+F on Item Type "BOM"
2. Input "BOM" and press OK (you have to input the value you are searching for every time).
3. Only BOM items are shown
4. Press Ctrl+F on Item Group "Parts"
5. Input "Parts" and press OK.
6. Now only items with Item Group = Parts are shown, including both BOM and other Item types.
So, basically, all previous filtering on the grid was removed before applying the new search criteria.

As a side note, I would also like to mention, that some changes were made to hotkeys in the Editor: Now, Editor Scripts are opened using Alt+R hotkey, instead of Alt+M, as in previous AX versions. (Alt+M was reserved for the global menu toolbar, which is one of the new features in AX 2009 as well)

Find all reports with datasources innerjoined 1:n

I haven't really written much X++ code in the past 5 months, so a work-related task on X++ was like a holiday :)

I needed to find all reports, in which there is a child datasource (on some level) that is inner joined with the parent datasource as 1 to many.

Here is one of the possible solutions of the problem.
I would also want to talk a little bit about different methods used in this scenario, in case some of you are still unfamiliar with those:

static void FindReports(Args _args)
{
#AOT
Report report;
TreeNode treeNode = TreeNode::findNode(#ReportsPath);
TreeNodeIterator iterator = treeNode.AOTiterator();
QueryBuildDataSource qbds;

boolean find1nInnerJoin(QueryBuildDataSource _qbdsParent)
{
int i;
QueryBuildDataSource qbdsChild;
boolean ret;
;
for (i = 1; i <= _qbdsParent.childDataSourceCount(); i++)
{
qbdsChild = _qbdsParent.childDataSourceNo(i);
if (qbdsChild)
{
if (qbdsChild.joinMode() == JoinMode::InnerJoin && qbdsChild.fetchMode() == QueryFetchMode::One2Many)
return true;

if (qbdsChild.childDataSourceCount() > 0 && find1nInnerJoin(qbdsChild))
return true;
}
}
return ret;
}
;

treeNode = iterator.next();
while (treeNode)
{
if (treeNode.sysNodeType() == 202) //Report
{
report = treeNode;
if (report && report.query().dataSourceCount() > 1)
{
qbds = report.query().dataSourceNo(1);
if (find1nInnerJoin(qbds))
info(report.name());
}
}
treeNode = iterator.next();
}
}


Here are some keypoints:

1. Notice the use of TreeNodeIterator class. This is an example of an Iterator applied to the AOT. Very convenient and easy to use. You can read more about this class and its methods on MSDN

2. Notice the use of BaseEnums QueryFetchMode and JoinMode - I have seen many developers specifying integer values instead. I would suggest using these enumerations instead - the code will be much easier to read later on.
I don't know the enum for return value of method treeNode.sysNodeType() though. So if someone does, write a comment - it would be nice to know.

3. Notice the use of an implicit conversion from a base type object (TreeNode class) to a derived type object (Report). This is allowed, because, as you know, X++ type system is a "weak" type system. But beware, because this might lead to run-time errors. For example, if you call a method on the Report class, that is not inherited from the TreeNode class, you must be absolutely sure that the object is actually of type Report. Otherwise, you will get a run-time error.
This is why before the conversion, I verify that only Report objects get through to the following code.

4. The last, but not least: Notice the methods exposed by the QueryBuildDataSource class - basically, it allows to receive a lot of information about a specified query. Again, for more information, refer to MSDN

Sunday, March 2, 2008

That Whistling Sound

Some weeks you just feel like Wile E. Coyote, beat up and dazed at the bottom of a canyon you just crash landed onto, wavering back and forth in the swirling dust while new knots grow out of your head and little concussion spirals spin above your black and blue eyes. And there's a shadow. A shadow that's growing bigger and bigger around you, and you wonder, where did that new Acme anvil get to, anyway, and what's that whistling sound?

Time to pop up the little umbrella.

That's what last week sort of felt like to me. Fines. Stock beat to hell and back. Incriminating emails showing up in the Vista incapable lawsuit. The Yahoo acquisition stumbling forward against the better judgment of the world. Friggin' bugs in the review tool that causes feedback to disappear in the HR IT bit-bucket (hello, we have this neato homegrown technology called Word which tends not to lose things). OOXML on the ropes. Live-ID sign-in offline. Crap.

Fine, just fine: Shortly after the Steve / Brad / Ray show of all the new documentation we're unleashing on the world, the EU found that wallet they'd been feeling for as they groped us and slapped Microsoft with another big huge fine.

Dolores Umbrid- err, Neelie Kroes on this: "Talk, as you know, is cheap; flouting the rules is expensive, so to say. We don't want talk and promises, we want compliance. If you flout the rules you will be caught, and it will cost you dear."

To which she added, her eyes blazing in Steve Ballmer's direction, "I drink your milkshake!" Quickly followed by an email to SteveB of a photo of her cat sitting on a wad of euros, captioned "I'm in ur profitz, stealin' ur cash."

Intel certainly should be worried, too, having had an EU raid on a European office recently. And Google shouldn't be too smug either: Microsoft Is The EU's ATM Machine - And Google Is Next - Seeking Alpha. If you're #1 in something and not entwined around the success of an European partner / partner ecosystem, your butt is next to be hoisted upside down and shook until a few billion pop out.

And while I'm not going to go all Hank Reardon here and get upset about documenting how our particular kind of industrial steel works, I am having negative tit-for-tat protectionist reactions. I'm human: my company is bleeding fines - fines we'll pay especially given the Yahoo in-play factor - and nary a word from the US government saying, "Hey, whoa, we'd like some of that cash to stay local here." And don't get me started about fairness. This is international economic political reality, which is about as far from fair as you can get, although all sides can certainly enshroud themselves in the mien fairness as they speak their piece.

My expectation is, just like Windows XP N, a lot of this will just go unused. I mean, I guess if I go to Hell one of the first punishments will be "Here's the Exchange protocol documentation. Please write a server that works against this protocol." Probably followed by something much, much worse, "Here's the Sharepoint protocol doc-" "No! Just gut me or do something with fire ants and a poker already!"

I can only hope that the cash goes to something useful at the end of the day. You know, something better than ill-advised acquisitions, SPSA pay-outs, and hiring lots and lots of more Microsofties to do less and less. Hmm. Perhaps I could warm up to these fines.

Who said what? And they're still employed? Ah, email discovery. What's the point in having an ass if it you can't do something that comes around and gets your squarely bit in said ass? Some of those email exchanges I already kind of expected, but the one about possible collusion with Intel to support their chipset? Double d'oh with an oy-vey on top.

Busted. This is where you reach for the wallet (if you can evade Ms. Kroes sticky fingers on an interception route) and just pay-up. In my opinion, we screwed up here, badly. God forbid if any of those friggin' Vista Capable stickers showed up in the EU...

Rewarding: so how was the Microsoft Technical Recognition Awards in La Quinta, CA this year? I still don't know why they need to go all the way the hell down to California for the technical semi-Partner achievement getaway. Oh, wait, getaway. And hey, didn't the Watson guys win last year, too? Sorry, but with everything going on and the stock down on the low end of $27, more weenies and less shrimp for the SPSA crowd would be mighty nice.

Silverlight lining: I can only hope that some good will and interesting results come out of Mix08 and our own Tech Fest. The last two Tech Fest have been really interesting for me. This one I don't have as high hopes for, having gone through the initial list, but that leaves the door for me to be pleasantly surprised.

Anyway, after this week, you've got to wonder: can it get any worse?

What's that whistling sound?


Monday, February 25, 2008

Because the Last Aquisition Went So Well...

Check-in on Yahoo: BusinessWeek has a small take on Kevin Johnson's message to Microsoft and Yahoo employees. A number of articles have been posted putting this email in the light of "we're not going to be firing anybody! Please, don't leave, we luv you all and we have someplace to squeeze you in!" After our own CEO basically lied to his own senior leadership regarding the Yahoo acquisition, I'm not buying anything they are selling because their agenda, whatever it is, is built on misrepresentation. Or shooting from the hip.

Besides, of course, I want folks fired due to my original agenda; plus, the Yahoo Peanut Butter Manifesto probably pointed to more than just 1,000 Yahoo folks needing to find a better place to work.

Reading Mr. Johnson's email, I have an image in my head of John Wayne from McLintock, reassuringly saying in this case, "Somebody needs to fire ya, kid. But I'm not gonna fire ya. I'm not gonna fire ya. ... The HELL I'M NOT!" *biff* Or, in this case, *RIF*

A Couple More Perspectives:

From the Field: a welcome message from the field in this comment:

Working in the field and not in the US, I sometimes cannot relate to the comments that are heavily oriented at the minority of peopele working in MS which is dev. And maybe this is part of the MS problem? SMSG is swarming with people and due to the "Keep your scorecard green" culture that came with Kevin "thank you for all that you do" Turner, managers are not managing and coaching people anymore. Every day I see people that should be empowered to do business staring into their spreadsheets in order manipulate Siebel (yes we use that utter crap CRM system still) to keep the scorecard green instead of going out to meet the customers. Many MS people in (i think especially in services) miss the "techy" culture where we doing good things for customers, making them successful. Now all we get "Why is your scorecard yellow, just fix it".

Dirty aQuantive laundry: a very revealing comment worth reading in full starts with:

I'm no longer with aQuantive, I now work for a great team in MS. I was threatened not to talk, but my story needs to be told, to some people higher up who believe that they can integrate Yahoo, I believe that they can, but they have to hear what is happening to Microsoft's ad serving business, which will save the company years to find out, it will be too late once they realize. The engineers at aQuantive are great, some of the best, but the central nervous system doesn't exist, this is Microsoft's managements responsibility, and it could cost us the leadership in the ad business. [...]

Classy, real classy: I'm sure anyone who had ran Vista at work looked at the Vista Capable stickers on machines they wouldn't buy for their Mom and felt bad regarding the misrepresentation of those machines' capabilities. Even some of our VPs expressed their strong dislike (d'oh, [shake fist] damn you email discovery!). Now we're up for a class action lawsuit and I'm really interested to see what kind of leg we have to stand on here. Fighting to justify this poor decision doesn't rank up as high on the Bozo Meter as trying to defend browsing technology as being a core OS component, but it's close.

Rory Blyth channels Mini: Windows Live Writer Team and Microsoft - where Rory is put over the edge when Live Writer - a delightful blogging application I adore (and makes me wonder if my hatred of .NET apps is misplaced) - gets ruined by being wedged into a Live Suite installer infrastructure. Rory is no longer with Microsoft and he doesn't hesitate to load up both barrels and let loose. A little later in the comment stream:

What happened to me is I worked for Microsoft for three years. You didn't read the post in its entirety, so you may have missed it, but I wrote that this isn't just about Live Writer - it's about Microsoft's approach to user experience in general.

I saw - and was subject to - so many dirty tricks on the inside. There's a constant battle between the stupid people and the smart people, and the stupid people do quite well. Probably because stupid people are scared of the smart people and do whatever they can to get more stupid people to work at Microsoft. A good way to retain your power and position is to ensure you aren't being challenged by other employees.

The sad thing is that I'm not exaggerating.

The company is bloated. I said myself that firing tens of thousands is cruel, but when you have managers for managers for managers for managers for managers for managers and managers for them, you have something ridiculous.

Firing tens of thousands of Microsofties? Allow me to raise my hands in the air, wave them about, and yell out, "Hallelujah brother, praise the RIF!!!"

Mid-year career discussion is upon us and now is an ideal time for you to update your resume and assess where you are and where you are going. Want a raise? Secret to Success, rule #1: the best way to get a raise is to change companies. Bar none. So update that resume and see what kind of follow-ups you get. Perhaps you're an eagle trying to soar with the turkeys... if so, some parting advice from one of our commenters:

I left months ago and am so glad I did. MSFT has a bunch of great achievers drowning amongst a gaggle of whiners who want top pay and work-life balance but don't want to work hard to achieve anything. Until you get rid of the latter, you wont' get top performance out of the former. The people who want challenges in life and to achieve something will just continue to get fed up and leave. It's sad. If you are there and frustrated there are many alternative lives you could be leading happily elsewhere. Go, it ain't that scary and you'll never regret it. Stay and you'll wake up at 45 yrs old (how many 45+ people do you see around you, eh?) sad and feeling empty. Go, leave, it's okay and you'll stop feeling so angry and abused.


Sunday, February 17, 2008

Some Quick Quips - Yahoo, #86, and MSPoll

Just some quick quips:

yahoo... Sorry, I can't get up the enthusiasm to put the exclamation point into Yahoo anymore. So this past week had a number of voluntary and involuntary exits from Yahoo. Mr. Yang calls out, "White Knight? Anyone? Anyone?" and the Yahoo board gets restless.

An interesting bit comes from Joe Rosenberg in Barron's. The summary? Microsoft bid for Yahoo makes no sense. Some interesting snippets:

"It's a bad refection on Ballmer that he's willing to pay a ridiculous price for Yahoo. Microsoft is not going to earn anything like a reasonable rate of return in Yahoo," Rosenberg was quoted as saying.

:

Asked if it wasn't a strategic necessity for Microsoft to buy Yahoo, Rosenberg said: "I don't buy that. Yahoo would significantly dilute Microsoft's returns.

"Ballmer is a great operating man but he lacks financial acumen. He ought to be thinking more of Microsoft employees who own a lot of Microsoft stock and have nothing to show for it in many years. If the stock doesn't start doing better, Microsoft will lose good people."

Thank goodness someone is actually thinking that employees would react to the stock price, because it seems to be a foreign concept to our leadership. I can't make jokes about Golden Handcuffs anymore because most people at Microsoft don't know what the hell I'm talking about. I have not seen Microsofties so loose in their sockets since I joined years upon years ago.

Agent 86: Would you believe... that Microsoft has dropped down to #86 within the Fortune Best Places to Work survey? That's down from #50 in 2007 and #42 in 2006. Like a rock. In a bad way. And who is #1 for two years in a row? Grab that chair and give it a big effen toss in the air to Google! Toot! They get bigger and they're still #1.

(Oh, and Yahoo is attached to our hip at #87. I guess we're more alike than we knew.)

LisaB tackled the #86 issue this past week. Kinda. But I've got to wonder: if you sat down a bunch of hard-working, valued Microsofties in one room, and executive leadership in the other, and put down some simple questions like, "What would make employees value working at Microsoft even more?" I'm pretty sure the answers would have a wide gap between them.

The return of the towels was a symbolic admission to stupidity. The Bread and Circuses of various subsequent benefits doesn't align with what Microsofties need to be obviously valued and to have a great career at Microsoft that is satisfying. What would you want to see Microsoft do about addressing being a great place to work?

My #1 request has got to be to make Microsofties mobile. Intent to interview was a great first step. Now, just let people interview. If they get the job, their management learns they need to start a transition plan. Leaders might actually start managing their teams as if retention matters.

Right now, given Mid-Year Career Discussions, my #2 request is to boot all the friggin' tools and go back to the Microsoft Word form, all a part of streamlining career management at Microsoft. We're about to spend a couple of months in tool hell, have a big CSP codified discussion that may or may not align with the reality of your group, and then in three months do it all over again for the major review cycle. I seem to spend my life in calibration meetings and managing tools and asking HR-IT to fix bungled work-flow and whacked-out permissions. I need a "I'd rather be shipping features that make money" license plate holder. As do many of my team members.

My #3 is too intangible to tackle here, but it's more around gearing Microsoft to be a team-focused company culture, not the lone-rock-star-wolf. Yes, still reward the rock-star contributors, but also reward the teams that produce great results that they've committed to, and punish and don't reward dysfunctional teams that don't deliver.

Oh, and return the old ESPP and up the 401k match to be something stellar. Worried about cost? Headcount reduction works wonders.

MSPoll: Oh, and if you have ideas but don't feel like sharing them here, you can at least achieve some catharsis in writing your thoughts up in the upcoming poll. Maybe when it goes online we can find a few questions to hammer on to make a (useless?) point. I can tell you, with the Yahoo acquisition still in play and the impact that it's had to the stock and the reputation of Microsoft, I've got to say the question addressing "this company is headed in the right direction" should take a nosedive.

P.S. I'm going to mention Steven Sinofsky here (which I've avoided a lot, although I'm a great fan, because every time I think of typing something about him I hear in my mind batteries clattering down a wooden staircase and then imagine his angry, disappointed face appearing out of the shadows at the top of the stairs... scary stuff): so does this mean that Sinofsky is destined to be Mini-ized? Hmm.

P.P.S. Some executives moved around last week. One surprise departure, otherwise everything else seemed to have been whispered about for a while. Mr. Ballmer's email was interesting in that it seemed to imply that there was a whiff of accountability in the air with what was going on. Just a whiff.


Sunday, February 10, 2008

Microsoft's Yahoo! Acquisition is Bold. And Dumb.

Please, Yahoo!: fight to stay independent. Or at least tear yourself apart and pop a couple of poison pills to go out on your own terms before this goes much further. Yeah, I've got your double-suck cake for you: one layer Yahoo!, one layer Microsoft.

I was on the internal Microsoftie bandwagon that Steve Ballmer was steering not too long ago that an acquisition of Yahoo! didn't make sense for Microsoft. So when the unsolicited offer went through, I was like a whole bunch of other confused senior people looking around trying to figure out what changed and why this suddenly was the right thing to do and to bet the company on.

I recognize that huge change for the future is typically greeted with 95% critical negativity. People don't like to change and huge change is an immense leadership challenge, especially when the change is the right thing to do and very few can see that perspective. So I've done my best to be open and accept that Yahoo!'s acquisition by Microsoft is a good strategic move for Microsoft, for our customer's, for Yahoo!'s customers, the shareholders, and for Internet users in general.

I haven't gotten there.

In fact, this still seems like a real dumb idea, like a staggering drunk trying to prop himself on an unwilling and lame adversary who wouldn't mind seeing the drunk facedown on the pavement. The only arguments that are half appealing are those that suppose there's going to be a $110,000,000,000USD annual online ad-market, and Microsoft + Yahoo! gets a third of that market. Hand-waving, "The acquisition pays for itself!" Yeah, okay, give me that dream and a milkshake and at least I get to enjoy the milkshake.

Some interesting posts on this:

Of course there's one big thing I haven't touched on: headcount. Let's see, why did I start this blog? Oh, yes: Microsoft has become way too huge to be effective and nimble in the creation of focused, passion-driven software. Fourteen-thousand or so demoralized people thrown on the heap does not help in the least. That's the amount we need to go down, not up. What is this, Bizarro Microsoft?

Have you brought up HeadTrax recently to see how many positions report up to the top? Give it a go. And how many people report to the various presidents. Any surprises?

Microsoft absorbing Yahoo! doesn't make sense to me given the extreme overlap in offerings that neither Microsoft nor Yahoo! have been terribly effective at. How many success stories have there been lately at Yahoo!? I like their portal. I use their search on occasion (only when Live Search and Google give me disappointing results). And their acquisition of flickr was really good for them, along with not screwing flickr up (and flickr users, you gotta know Microsoft would be pretty hands-off of flickr, other than probably putting a Live ID sign-in bar or such on there).

The only argument I've heard that makes sense from a conspiratorial Machiavellian kind of angle is that this is an opportunistic move to bust and cripple the already lame business adversary we have in Yahoo! We don't really want Yahoo!, but rather see this as an opportunity to kneecap and sideline them, pointing out their vulnerability to acquisition and angering their frustrated shareholders into revolt, all while putting them under the microscope of the analysts, pointing out their various failed and marginal ventures. And some glimmers of potential. But mostly, Yahoo! continues to come up in an unflattering light as people scratch their head as to how they'd help Microsoft at all.

If the acquisition doesn't go through, Yahoo! certainly emerges with several broken bones and bruises. Rebuilding from that will be a struggle that will require drastic and draconian decision making.

And the MSN, search, and ads folk at Microsoft certainly shouldn't be too proud right now, because you guys are under as much scrutiny as Yahoo!. Why are we proposing blowing $22,000,000,000USD in cash and going into debt? Because Yahoo! has something done right - relative to us, according to our leadership - that you haven't been able to do. Is there a Microsoft online-services leadership shake-up coming? One can hope. The fact that we've initiated this acquisition, for whatever reason, means that the people in charge haven't been able to deliver and are not on a path to deliver. Accountability?

I do want to see the strategic importance in this huge, complicated take-over. I do want to believe. If this all about ads and the acquisition goes forward I need the influentials in Microsoft leadership to connect with me and convince me to believe that this is indeed the next important foundation for Microsoft. To tell you the truth, if you had pulled me aside when I was in school, holding court in the computer science lab, and whispered in my ear ala The Graduate: "online ads..." I would have laughed my geek butt off.

So Google gets to have the joke on me, but for us to bet the company and build Microsoft's future foundation on ads revenue? WTF? As someone who considers themselves a citizen, not a consumer, I want to create software experiences that make people's lives delightful and better, not that sells them crap they don't need while putting them deeper into debt. I'm going to be in purgatory long enough as is.

Yes, okay, we should have a team do an advertising platform and do it well, but the money chest can be better invested across the company, let alone avoiding going into debt and putting us on another spiral of doubt and angst in the stock market, all while dealing with anti-trust maneuvering in Europe.

The attempt to acquire Yahoo! is a bold move. But bold and dumb are not exclusive. Q.E.D.