Wednesday, March 26, 2008

Microsoft Dynamics AX 2009 CTP3 release is available on PartnerSource

Finally, the CTP3 release is available for download from PartnerSource.

It is, as usual, a VPC image that you can install on a standalone computer.
Be warned, that the size of the image is huge - about 7 Gb in 3 parts.

Here is a short description of the toolkit:

The Demonstration Toolkit for Microsoft Dynamics AX 2009 Pre-Release (CTP3) contains marketing materials, demonstration scripts, and a Virtual PC image containing a full installation of Pre-Release of Microsoft Dynamics AX 2009. You can obtain the Demonstration Toolkit on DVD from a Microsoft Dynamics Partner, or you can download the contents of the DVD using the links on this page.

Download link (Requires PartnerSource access)
It would be very interesting to hear any comments you might have about the CTP release, as well as about any major (and minor, as well) bugs you might find in this PRE-release. Feel free to e-mail me or leave a comment under this post.

P.S. (One day later)
An ISO image was also made available today. It is much lesser in size, and is an image of the installation CD + licence file for CTP3 release.
Download link (Requires PartnerSource access)

Tuesday, March 18, 2008

MS Poll 08

MS Poll 2008: what parts of the employee poll do you see as critical in communicating any changes that need to happen at Microsoft?

Act Local: first of all, usually when I review poll results, my team looks at the questions and comments directly relevant to things that we can change. So if you want change in your day-to-day group, look hard at those questions that managers who report to a VP are accountable for. I can't count the number of times that we've looked through poll spreadsheets and some of the harshest numbers might be around "Microsoft is headed in the right direction" or something, and nothing but shrugs result from those number since the reaction is usually, "What can we do about that?"

I've also been in meetings where we sit down and look at every comment, and figure out ownership and actions. Again, for things beyond our scope of impact we have to move on. But for serious comments that are relevant to the team a lot of attention is given. Strongly disagree about something? Note it and put in a fix for it in the comments later.

What I'm saying: act locally first and honestly assess your workgroup and put some effort into comments relevant to your group, probably noting the group's / VP's name specifically in the comment for any roll-up your comment goes into, should you have a senior VP (or heaven forbid, a president) that actually glances through any of this.

Next, Think Globally for the Company: then there's the broader company wide feedback.

  • Do I think we're headed in the right direction? No, not with our explosive employee growth and our highly questionable acquisition pursuit of Yahoo (oof, sorry, I just had a mental image of a smirking Kevin Johnson wearing a black top-hat + cape and stroking his long, skinny waxed mustache). And I fear with all these new people and buildings, Redmond and Bellevue are about to turn into a constant parking lot (especially when that monstrosity opens near Highway 520).
  • Our systems and processes have exploded - and I'm not just talking about the pain in the butt magical commitment tool (magical in that it can make comments *poof* disappear).
  • Our rank and yank employee calibration doesn't align with valuing contributing to other people's success, so why even ask a question about being rewarded and recognized for that? Bring in some sort of team-based recognition and rewards and this will change.
    • Follow-up: hell yes your success is assessed relative to your peers. Duh.
  • This is the first time I've pulled in and shorted the number of years I expect to continue working at Microsoft. Usually I'm all "Here till I drop!" highly enthused, but now I'm concerned about the recent business decisions and the potential for that to make Microsoft go south, let alone the long-term impacts being felt now by the accrual of so many unneeded hires. Microsoft has the unfortunate potential to change so much that it will no longer be Microsoft to me.
  • As for a message to send upwards loud an clear about what motivates people to put in the extra effort, I think I can sum it up as: stock.

The stock has to start performing well. Our executive leadership doesn't believe that the stock performance matters, especially to employees. Does Microsoft stock price matter to you? I imagine you just said, "Hell yeah it does, Mini!" Let them know. If our stock started shooting up (like it did oh so briefly) would you be more highly motivated and engaged in your job? If we hit $40? $50? If you started seeing the rewards of working at Microsoft around the stock you own and it actually being a benefit vs. a woeful joke going on over a half-a-decade, how would things change for you?

Employees have to say loud and clear, whether through the poll or other communications with leadership, that the Microsoft stock price does matter and it does make a difference. Want us to be bold? Re-invigorate the stock. Want us to take risks? Re-invigorate the stock. Want us to work above and beyond what's required of us? Re-invigorate the stock.

And do other things like have a better 401k match and bring back the old ESPP. There it is, stock again.

I encourage you to put in any positive remarks about things going well so that they don't change for the worst. And if something needs to change, it's always best to put in the positive business-based solution vs. just asking the problem being addressed. Otherwise, you might not like the solution.

I do think the poll is worth the effort, especially for provoking useful change in your group. As for a broader message, there's a potential that if key numbers radically change this year that it will be a wake up call. You might as well ring that bell.

Friday, March 14, 2008

AxForum in English / AxForum auf Deutsch

There was a blog post recently about using Google Translate! to read posts on AxForum, one of the best communities there is on Microsoft Dynamics AX.

Here is the direct link to AxForum translated from Russian to English with Google Language Tools (Google might think you are a virus, so you in some cases will have to input a verification line to continue)

What I would like to point out and promote here, is the fact that AxForum actually has support for User Interface in English and German, and sub-forums in both languages:

AxForum in English
AxForum in German (auf Deutsch)

There aren't many posts there at the moment, but all AxForum members would be glad to help anyone who posts a question in one of these sub-forums (if they know that language, of course). So don't be shy and visit the sub-forums when you are in doubt or have a problem you cannot solve on your own.

You can find the original post about Google and AxForum here

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)
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 =;
while (treeNode)
if (treeNode.sysNodeType() == 202) //Report
report = treeNode;
if (report && report.query().dataSourceCount() > 1)
qbds = report.query().dataSourceNo(1);
if (find1nInnerJoin(qbds))
treeNode =;

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?