Dynamics AX
  RSS Feed  LinkedIn  Twitter
Want to turn you're data into a true asset? Ready to break free from the report factory?
Ready to gain true insights that are action focused for truly data informed decisions?
Want to do all of this across mutliple companies, instances of Dynamics and your other investments?
Hillstar Business Intelligence is the answer then! (www.HillstarBI.com)

Hillstar Business Intelligence for Microsoft Dynamics AX and NAV on Mobile, Desktop, Tablet

Let us prove to you how we can take the complexity out of the schema and truly enable users to answer the needed questions to run your business! Visit Hillstar Business Solutions at: www.HillstarBI.com

Wednesday, March 31, 2010

Interview with Microsoft Distinguished Engineer - Mike Ehrenberg

Recently Mike Ehrenberg, Microsoft Dynamics Distinguished Engineer, did a blog post on the Dynamics Executive insight blog. That post can be found here.:
Advancing the Vision of Software for the Dynamic Business

This was a great blog entry, and really got my wheels spinning. So much in fact that I invited Mike for a (virtual) sit down and interview. Below is the result of that interview.:

1.) In your recent blog post, on the Executive Insight blog, you mentioned as one of the focus areas for the continued push into the dynamic business vision is User Experience. With Dynamics AX 2009, and the Dynamics line in general, we saw UX, or user experiences focused with Role Tailored experiences. Now you have mentioned three new UX focuses: Context Aware UX, Task Specific UX and UX for the new generation. Can you give more insight into how these three focuses are helping shape the future of Dynamics AX, and beyond, and also how these will work together with the Role Tailored UX that exists now with current releases of Dynamics line?

We think about Context Aware UX as a refinement of RoleTailored – not something different. Role is a dimension of context. By understanding a user’s role, Dynamics AX has context that allows it to shape a better, more productive experience – bringing that user to navigation, tasks, content and rich embedded BI centered on their role to enable better productivity and to inform better decisions. Evolving to context aware means adding dimensions beyond role, for example, understanding what device a user is on or where we are on the calendar. Consider the impact of a system that could alter what BI and navigation a user saw during the closing days of a fiscal quarter, or that could adapt what a Production Planner saw when they were in a room with a display wall instead of at their desktop PC monitor. Understanding context, together with an increasing adaptability drawn from being increasing model driven, will enable the next jump forward on the path started by our RoleTailored experience.

Task Pages are already a concept in the RoleTailored experience. Today, they are highly consistent to drive the benefits of user familiarity. The concept in the white paper focuses on the development of highly visual task pages defined for specific tasks – the particular example shows the power of a heat map display of warehouse activity laid out to show activity based on physical location in a warehouse. The visualization designed specifically for this task immediately highlights for the warehouse manager where the placement of specific items can be changed to drive efficiency. This is a prototype that we’ve already built. The right visualization takes data that ERP systems have had for years and turns it into actionable information. Combined with natural UI techniques – “touch” in the case of the prototype – the user is able to immediately move from what they see to the right actions to optimally address their task. We are very excited about we are working on here, and expect to deliver great things in future releases.

Again, we also think about the work we’re doing to drive user experience for a new generation of users as an evolution of our RoleTailored concepts. Think about things like more visual cues related to those I collaborate with, search emerging as an alternative to reports for finding things, and visualization of information related to multiple tasks concurrently as all shaping the future of RoleTailored UX to increase productivity and delight a new generation of users, and as I’m frequently reminded, some of us old users too.

2.) The second area in your post talks about system architecture. The three major pieces in this area of focus are listed as: Cloud, Service orientation and Model Driven development. These could seem wide spread areas, but actually cross domains in relation to one another. So for this area, can you give some details examples of how you see the Cloud playing a role in enabling customers, and allowing for hybrid clouds to exist? Also why the cloud matters for customers in solving real business problems, vs. just being a new platform?

For many, the first thought of the cloud is simply focused on cost. Moving applications to the cloud in this context is essentially just a different style of IT outsourcing. For Dynamics, as part of an enormous all-up Microsoft commitment to the cloud, this is certainly true, but it is far from the whole story. We definitely believe that, over time, our datacenters, emerging cloud platform, and an evolved Dynamics family will offer the ability to deliver great business application experiences at the lowest possible cost and with outstanding security, privacy, backup and disaster recovery options that exceed what the majority of businesses are able to provide internally today. The cloud also offers more flexibility to scale a solution up and down for businesses with dynamic user populations during the year. We already have great results today with our Dynamics CRM On-line and with a number of our partners hosting Dynamics ERP. But again, low cost, scale flexibility and great backup and disaster recovery options are only the beginning.

In Dynamics, and across Microsoft, we are focused on the ability to combine software plus services – on-premise assets with the cloud – using each to their maximum advantage to deliver the best capabilities to our customers. We are doing that today, extending our on-premise and on-line products with cloud-based services – in some cases developed by us, and increasingly working with others developed by partners. We are really focused on three types of solutions where the cloud simply is better:

  • Connection of the business system to the public internet – making one connection from the business system to Windows Azure in the cloud, and providing solutions there that drive the scenarios related to connection to the public internet, allows us to deliver a strong and uniform solution to availability, security and privacy with maximum reach. Examples include collecting information from new potential vendors, employment candidates, or customers registering a product.

  • Large volumes of shared data that is frequently changing – consider solutions like product compliance that have rules reflecting regulations, restrictions and requirements for shipping products containing particular components to a specific geography. The cloud offers the ability to have this information maintained once by an expert partner dedicated to this domain, with a connection to Dynamics applications that may be running on-premise or hosted by another partner. Maintaining the data in one place – the cloud – simplifies provides a more efficient solution.

  • Connected supply chains – there is both great value and great complexity in connecting supply chains digitally. It is dramatically easier to connect many partners to a single hub in the cloud than to make all of the point connections between them. Beyond the connection, which is immensely valuable in itself, with proper design of security and privacy cascading over the members, having all of the data together in a cloud hub enables analysis that simply can’t be done any other way. That analysis can lead to insights which can be shared by the participants to achieve dramatic new efficiencies.

2a.) Focuses on service orientation, a move to this was seen with the release of Dynamics AX 2009, and more focus on AIF, Service References, and the alike. In talking with Lachlan Cash from Microsoft last year, Microsoft's strategy and vision for Dynamics AX and SOA, Lachlan mentions the move toward SOA, and even between Dynamics AX modules themselves. Is this the service orientation that in included in your post? Can you give some more insight into this area, and why this makes sense?

Yes – this is exactly the same progression of our investment in service orientation. Starting with Dynamics AX 2009 – in fact, with AX ‘4’ – we brought out web service interfaces to Dynamics AX. These interfaces, around the outer edge of Dynamics, have enabled stronger, simpler integration between Dynamics and other systems.

The Dynamic Business vision reflected in the blog post points beyond this to the evolution of service orientation between Dynamics AX modules. This evolution will simplify the creation of robust connections between systems at finer granularity. From a business perspective, this technology change will provide a stronger base for shared services in the business deployed across hub and spoke configurations, better software solutions over outsourced processes, and better models for multi-instance deployments. Again, the ability to drive our innovation in this area together with innovation across Microsoft in areas like Master Data Management enables to drive great solutions through Microsoft Dynamics.

2b.) Model driven development is not a new concept really, but for Microsoft and traditional technology developers it can be a different mindset in thinking. Does this mean the former code named Microsoft "Oslo", now known as SQL Server Modeling CTP, will have a big impact on how process are developed? Is there a new technology and approach that will make use of SQL Server Modeling, Workflow and a new Designer to enable process development by functional / business analyst? Can you give more insight into this area?

Yes, definitely. Dynamics AX has always made a big bet on modeling. The metadata accessed through the AOT is a core part of what makes Dynamics AX development highly productive. Our evolution points to more and more done through declarative modeling instead of code – making it both more efficient and more resilient through upgrades over time. In the next major version of Dynamics AX, we’ll move this metadata from the file system to the SQL Server database. This is a deployment simplification and one that moves towards the capabilities of SQL Server Modeling – our roadmap and the result of what was “Oslo”.

We are very excited about this work. The potential is enormous based on providing a model store that many Microsoft product use, along with tools innovation to provide great richness around model lifecycle – eg., tools that allow model content to be explicitly versioned and promoted in an automated way from development to test and then production in the partner and customer environment. The alignment between the innovation in the platform and tools and our priorities for continued innovation in model driven development is truly exciting.

Workflow, based on the innovation in the Windows Workflow Foundation, is one aspect of Dynamics AX 2009 that we are very excited about. Starting to provide the system with declarative models of process enables greater control, while at the same time helps the system make users more productive by prioritizing the tasks that have been assigned to them.

3.) For the BI section of your Application evolvement section, you talk about making BI easier and easier for users to define and make use of. Is this core of this enablement, based on the technologies now known as Microsoft PowerPivot? This includes SharePoint 2010, SQL Server 2008 R2 and Office 2010 to enable?

Absolutely. This is one dimension (sorry, BI pun) that really highlights the ability of Dynamics to bring together the innovation from multiple parts of Microsoft into a strong value proposition for our customers and partners. As you highlight, these capabilities build on work in SQL Server, SharePoint, Office and Dynamics.

There are three areas where we will really drive our innovation in this context. The first is deeply embedding BI in the application, not treating it as something separate and external. We see this today in the RoleTailored experience, with cubes, KPI”s and analytics deeply integrated in the application experience. Next, simplifying what it takes to deploy and implement the BI aspects of the solution. This starts with concepts like making sure that the security model defined in Dynamics also governs BI visibility. Finally, we will continue to build on our models and user experience to make it easier and easier for end users to create the reports and analytics that they need.

4.) Out of everything you talked about in your executive insight blog post. What do you think will be the one or two most game changing parts for Microsoft Dynamics Customers and Partners?

Wow – you’re asking me to choose between our work on UX, SOA, Model-driven development and embedded BI? I am not sure that I can. Instead, how about I suggest one of the other blog points?

In our Dynamic Business vision, and in the blog post, we talk about Dynamics enabling an increasing connected ecosystem. We are already seeing the business application move from a small number of accounting users to cover a very broad set of roles in the business, touching more users and enabling greater productivity. You will see this trend continue as we drive to bring capability in future product releases – both directly through Dynamics and through the reach enabled by our work with SharePoint – to every user in the business, and beyond by increasing the connection to external customers, vendors and partners. With our connected cloud services, this goes even further to the public internet.

Finally – at least for now – we are looking at exciting new capabilities that come from connecting the information that is emerging from social networks to the business processes driven through Dynamics. Making Dynamics the hub that enables a business to truly connect with its ecosystem in the broadest sense is one of the big game changers that we see coming.

There are more…topics for a future conversation.

As part of this interview, I asked Mike for a closing paragraph, this is that closing statement.:

Thanks for the opportunity to expand on the comments in the blog post, and on the vision for the Dynamic Business. We really view Dynamics as a journey that we are taking with our customers and partners – it is great today, will be even stronger tomorrow, and has almost unlimited potential as we look forward. Combining the innovation of all of Microsoft with our passion to deliver business applications that focus on simplicity, value and choice, we look forward to continuing that journey together.

First I just want to thank Mike for a very detailed interview. I know how busy he is, so I am honored to have been able to have done this.

I hope that you have enjoyed this interview, and the details just as much as I do. We have some much going on with Dynamics AX from a technical aspect, and this kind of information helps us line ourselves up, to make sure we are getting prepared now to make use of the not to distant technology in future Dynamics AX releases.

Finally I would like to thank Katie, from Waggener Edstrom for helping Mike and myself with getting this interview togeher!

That's all for now, but check back soon as more great post are coming. Also look for Mike to appear on this blog again in the future!

A direct link to Mike's Bio, off of the Microsoft PressPass site, can be found here.: Mike Ehrenberg Bio.

"Visit the Dynamics AX Community Page today!"

Labels: , , , , , , , , , ,

AX Tools Blog: Navigating the AX Application Explorer in Visual Studio

Sometime ago, I posted about a brand new blog ran by part of the Dynamics AX Microsoft team. This blog is focused on 'Microsoft Dynamics AX Tools'

With this, there was a teaser post given by the authors of that blog, talking about the 'AX Application Explorer in Visual Studio'.

Well now the authors of the AX Tool Blog has taking this a step further with a new post.: Navigating the AX Application Explorer in Visual Studio

From the post.:
"In the last post we introduced the AX Application Explorer in Visual Studio, as the central hub for all AX development in Visual Studio. Now we will take a quick look at the navigation in the AX Application Explorer.

Since the AOT is the AX developers home, we preserved the same UI look and feel, as well as the gestures commonly used by AX developers. You can navigate the AX Application Explorer using the keyboard just the same way you use the keyboard in the AOT. You can use type-ahead to search for elements, just like in the example below, where you see the selection on InventCostList after “inventcost” was typed in (in the status bar the type-ahead text is displayed)."

One highlight from this blog post I think everyone should take away from it, is the following.:
"An important thing to understand about the AX Application Explorer is that it is not a superficial tool in Visual Studio. It integrates deep in the guts of Visual Studio and enables the presence of AX metadata in many of the existing Visual Studio components."

This is really important to understand, and help put context to the depth Microsoft is going to making Dynamics AX vNext and beyond deeply rooted in .Net, .Net technologies and the rest of the Microsoft stack!

Thanks AX Tools Blog Authors for sharing! Great post, and has me wanting to see more!

"Visit the Dynamics AX Community Page today!"

Labels: , , , , , , , ,

Tuesday, March 30, 2010

Dynamics AX Threads - More details

Recently, I wrote a post about making use of Threads in X++ development, for Dynamics AX. A direct link to that post can be found here.:
Dynamics AX 2009 - X++ Thread Development

In the above post, I went over the Thread class, as an intro really, showing how to create a method that would be executed from a spwaned thread, and a job that kicks such a thread off for working with Sales Order data.

Again, the idea with that post was to really show what Threads can do, get you thinking about threads, and also some limits I ran into, with trying to spawn multi level threads, within threads.

With this post, I wanted to give a little more information about working with threads, covering thread statuses and also the worker process users that show up in the online users form.

So, if you create a new instance of the Thread class, you will notice a method called, Thread.Status(). This method returns an int based value. There is really no documentation on what these values mean, so I dug a little deeper into this.

In doing so I found out the following values, as returned from a call to Thread.Status().:

  • 0 = Thread never ran

  • 1 = Thread is executing

  • 2 = Thread has finished executing

Now why would understanding these thread status values be important? Well with thread development, you have to have code that acts as the thread manager. In most cases, when your doing thread development, you are spawning more than one thread at a time. This means you need to know, for your given section of code, when all the spawned threads are finished.

Once you know all your spawned threads are completed, then you can move on in your host code, to continue and finish out whatever process is taking place.

So with the Thread Status value, you can make use of say an Array or a Map object to store the referenced spawned threads, and use that in RAM object to manage the threads, until they are all completed.

Now having multiple threads spawned, brings me to the next area I wanted to cover in this post, which is the 'Worker Process' type users you might see in the online users form.

If you notice these, possibly one per thread spawned, you will see that it seems to act like a license is being used. However, look at the active users total on the online users form and you will note the number of active users does not increase, when a worker process user is listed.

This is good news, as it would seem worker process user types, do not take up a license.

You still need to be careful and control the amount of spawned threads, as you could spawn way to many for the system to really handle. Depending on the load and actual work be performed by the Threads.

One other note about the worker process, is you will see these when you spawn the threads from a client session. Even though the thread is executing a server side static method. However if the given host code / business logic, that does the thread spawning is executed in Batch mode for example. You will not see the worker processes appear in the online users form.

So with this, we have a little better knowldge about Threads, thread status, it use with thread management, and understanding of the worker process user type.

That's all for now, but I have more post coming, so check back soon!

"Visit the Dynamics AX Community Page today!"

Labels: , , , ,

Friday, March 26, 2010

Highlighted on the Microsoft Dynamics AX Community Home Page

I went today to the Microsoft Dynamics AX Community Home page, found at the following link.:
Microsoft Dynamics AX - Coummity Home Page (You can also get to this by scrolling to the bottom of each of my post and clicking on the community page logo.)

When I went there I saw the highlighted topic called 'The Year of the Cloud'. I realized this sounding very familiar to me, and also the sub-title of 'How Coming Microsoft Products Will Make Dynamics AX the Basis of New Solutions'.

In seeing this I clicked on the link taking me to a article, and when I did I found out the reason it sounded so familiar to me, was because it was my article I wrote for MSDynamicsWorld.com and the end of this past Jan!

So this article has been highlighted on the home page of the Dynamics AX Community site! I feel very honored to have my work highlighted there, and very thankful as well.

If your interested a direct link to the article on the Community site, can be found here.: Coummity Site - The Year of the Cloud: How Coming Microsoft Products Will Make Dynamics AX the Basis of New Solutions.

Also a direct link to the MSDynamicsWorld.com article can be found here.: MSDynamicsWorld.com link.

The basis for this article was actually a post on this blog I did at the start of this year, which can be found here.: What can the Cloud offer you in 2010?

Hope that you like the articles, and 2010 is for sure turning into the year of the cloud. I plan on writing more about the cloud, including examples and as part of a series I will be starting on Dynamics AX Architecture and Solution Design.

That's all for now!

"Visit the Dynamics AX Community Page today!"

Labels: , , , ,

Integrating Third party VCS with Dynamics AX 2009

Just over a month ago, Microsoft released a new white paper which talks you through how they integrated Team Foundation Server, TFS, into Dynamics AX.

That white paper can be found here.:
Microsoft Dynamics AX 2009 White Paper: Integrating a Third Party Version Control System into Microsoft Dynamics AX 2009

"The MorphX Integrated Development Environment (IDE) can integrate various Version Control Systems (VCS). Team Foundation Server (TFS) is a newly integrated VCS with the MorphX IDE in Microsoft Dynamics AX 2009. This document provides detailed step-by-step instructions to integrate a VCS with the MorphX IDE, by using how TFS was included in Microsoft Dynamics AX 2009 as an example.

The Version Control Extensibility Framework was refactored in Microsoft Dynamics AX 2009, which is now used by the integration with TFS."

In looking at this I started looking around for cloud based VCS software, that was similar to Visual SourceSafe, and already integrated to work with Visual Studio. I came across the following.: www.DynmaSoft.com The product they have can be hosted in the cloud, on-premise, and has a published COM based SDK.

It already integrates with Visual Studio, and that was key for this, because in most Dynamics AX solutions, with 2009 and beyond, Visual Studio solutions and projects are very much a part of the Source Code that make up a given AX implementation.

So with this in mind, I started to dig a little deeper in what would it take to integrate this DynamSoft product into Dynamics AX.

After looking into this, I found of course you will need to sign up for at least a free account. Next you will need to download the following two items.:

After getting these two, of course make yourself familiar with the COM SDK, and then go through the steps listed in the Microsoft Whitepaper for enabling DynamSoft cloud based VCS with your given Dynamics AX instance.:

  • 1. Add a new class that represents the VCS and implements the sysVersionControlFilebasedBackEnd interface.

  • 2. Add a new base enumeration value to the SysVersionControlControlType base enumeration type. For TFS, the SysVersionControlTfs base enumeration value was added.

  • 3. Add new class construction logic to the newType method of the SysVersionControlSystem class.

  • 4. Implement the VCS setup methods. These methods are the bootstrap methods that are responsible for initializing the backend instance. Therefore, they must be implemented for each VCS.

  • 5. Implement the basic VCS operation methods in the new class such as the fileGetVersion, fileSetCheckIn, fileCheckout, fileAddToVersionControl, and fileDelete methods.

  • 6. Use the advanced VCS methods to implement additional VCS features. The framework also defines a list of runtime surrogate methods to let the VCS notify the framework whether these features are supported by the VCS. These features are optional.

  • 7. Implement the plumbing methods that are required by the framework.

I have plans to now take the above information, a free account and actually develop this and place in an XPO project for sharing. I wanted to get this out here though, making this a part 1 in this series, to help bring into focus Change Management possibilities that exists with Dynamics AX, specifically related to VCS options.

With what Microsoft has given us here, we now have the ability to really integrate Dynamics AX 2009, with near any VCS solution we desire. Be that Cloud based, on-premise, Custom, Open Source, or purchased.

I think this shows the flexibility of Dynamics AX, and also gives customers choices in their VCS options.

There is something technical you need to keep in mind, in regards to VCS solutions with Dynamics AX. This is designed so each developer has their own AOS installed on their developer workstation.

With what we have in this white paper, however, we have the ability to create a server side integration into a VCS that will work, with having a single AOS and 1 to 1,000+ developers! I will save that for a later post on this subject.

Hopefully this post has you thinking, and hopefully you have plans or already have in place change management policies, that include management of code.

That's all for now, but check back soon as more to come!

"Visit the Dynamics AX Community Page today!"

Labels: , , , , , , ,

Thursday, March 25, 2010

Microsoft .Net 4.0 - Parrellel Computing Platform

Recently Microsoft released .Net 4.0 RC, along with Visual Studio 2010 RC. With .Net 4.0, there is a lot of improvements. One of the things I have found very interesting is the move for more native support in managed code to create and make use of parallel computing.

With .Net 4.0, Microsoft has released it's "Parrellel Computing Platform (PCP)".

With this, some very interesting new developments exists, including PLINQ or Parallel LINQ. The following link, is a MSDN resource for samples that can be downloaded and studied for how to make use of the new PCP.: Samples for Parallel Programming with the .NET Framework 4

From the link.:
"The .NET Framework 4 RC (Release Candidate) has been released and is available for download at Microsoft .Net 4.0 Framework Download. .NET 4 includes significant advancements for developers writing parallel and concurrent applications, including Parallel LINQ (PLINQ), the Task Parallel Library (TPL), new thread-safe collections, and a variety of new coordination and synchronization data structures."

Now lets put this into some meaningful scope for Dynamics AX. With Dynamics AX 2009, LINQ was really first being used and introduced, through the use of .Net 3.5 framework with Dynamics AX. This includes the enablement of Reporting Services reports, accessing Dynamics AX data and usage of the .Net BC.

The next release of Dynamics AX 6.0 or Dynamics AX 2011, set to be released now in the Q1 of 2011, will be more and more .Net native and enabled. And in actual it will be .Net native because the kernel of Dynamics AX 6.0 is being recompiled to IL or MSIL, which is what all .Net laungages are compiled down to and executed via the CLR.

With the upcoming Dynamics AX 2011, .Net 4.0 is going to be the .Net Framework of focus and use, and the ability to do Parrellel development in Dynamics AX, custom at that, is going to become more and more a need.

Just go back to a recent post of mine, focusing on Threads in Dynamics AX 2009.: Dynamics AX 2009 - X++ Thread Development

In that post I talk about how Threads can be used in Dynamics AX 2009 today, and give example of how, and what to look for in developing such threads. As we push further and further in Dynamics AX vNext versions, including Dynamics AX 2011, such technologies as .Net 4.0 and the Microsoft Parrellel Computing Platform (PCP), will become ready for use.

This means that the Entity Data Frameworks, LINQ, now PLINQ, and the alike will be possible for use with your given Dynamics AX solutions.

Now lets think about some examples in Parrellel needs? MRP? Forecasting? Data Imports? MDM? CPU, Disk and RAM heavy processes that could be developed with Parrellel Processing at the heart to take full advantage of the hardware of given Dynamics AX instance is on.

Of course this is just scratching the surface of the ability such a platform is going to offer Dynamics AX customers as we move closer and closer to Dynamics AX 6.0 and beyond.

Business needs and processes across multi-sites, locations, timeszones, all the processes that make a business run, will have a new tool to help make those processes possibly run faster, connect faster, interact faster, and overall be faster. (I think I said faster right? ;-) )

I will note that this Parrellel Computing Platform was first really spotted in the Microsoft Robitcs SDK, and that was one of the reasons that SDK got so much attention. Now we have this, and I recommend checking it out, and start thinking in terms of what this will and can offer for Dynamics AX business needs.

That's all for now, but check back as more to come!

I wanted to give a quick update. After looking at some of the sample applications, I was able to see, that for the babies example, if you have a quad core machine, executing the standard seq. LINQ query, and run a query that takes 5 seconds for example to return.

If you notice only a single core is used for this processing. Now if you run the same query, except it uses PLINQ for example, the same query takes only 1.5 seconds. That's a 70% improvement! And guess what? The code is nearly the same, and same amount of lines.

This is an amazing ability for code performance, and I can't wait to see how this might can be used and affect Dynamics AX 6.0!

"Visit the Dynamics AX Community Page today!"

Labels: , , , , , , , , , , , , ,

Dynamics AX X++ Team looking for input

Last week, the Microsoft Dynamics AX, X++ Team posted on their blog that they are looking for community input. Being out last week, I did not pick up this, and just saw it today.

If you have seen this, and already left your thoughts great! However if not, please visit the following direct link.: More help needed from community: Do you rely on string truncation?

From the post.:
"Previously the X++ language allowed the LEFT and RIGHT keywords on definitions of string variables. That is no longer valid X++. However, we still allow specifying an explicit string length. The X++ language runtime implicitly does string truncation on assignment, both directly and when passing parameters. Consider the following example:

str 5 s;
s = ‘124567890";

The resulting string will only contain the first 5 characters, i.e. ‘12345'. Normally the user would not explicitly provide the length of the string in this way, but the behavior is exactly the same when using an extended type that has a particular length. One example is the SysGroup type, that is defined as having length 10 in the properties for the extended data type. If you run

SysGroup g = ‘1234567890ABCDEFGHIJ";
print g;

You will only get the first 10 characters printed. The remaining ones are lost to truncation."

"The question for you to answer is: Do you rely on these semantics in your code? Would your code run well if all string types were equal and unbound? Do we need to muddy the waters for IL by introducing the same behavior in IL?"

My answer to this is that the IL code should not be made to operate like the current Interpreter does. Don't make the generated MSIL code operate against the nature of how the MSIL code works in every other .Net langauge.

Truncation should only happen at the database level, and if true truncation is needed for some kind of validation, then it should be performed with strlen() and substr() calls.

That's my two cents, what's yours? Make sure to let the X++ team know!

"Visit the Dynamics AX Community Page today!"

Labels: , , , , , , ,

Wednesday, March 24, 2010

Microsoft Convergence 2010 - Coming soon!

Well spring is officially here, and that means Microsoft Convergence is not that far behind. It will be here before you know it.

Yesterday I got an email stating that the Convergence Connect is now open. I made sure to fill out my information. It's a great tool, along with the schedule builder to help connect with others that will be there.

The direct link can be found here.: Microsoft Convergence 2010 - Today | Tomorrow | Together

As I have stated before I will be attending, and I have already got some great sessions that I plan on attending. I recommend if your going to fill out the connect section and use it to setup any side meetings, and connecting with people.

That's all for now, but I have some really good post in the work, including an interview I have been working on.

"Visit the Dynamics AX Community Page today!"

Labels: , , , ,

Monday, March 22, 2010

Back at it - Plus ERP Rollout Survey

Well I am sure that maybe you have noticed, last week there were no posts on this blog. That's because I was able to escape from behind my computer, and sneak away to a little vacation with my family. It was fun, went by way to quick, and now it's time to get back to real life.

So with that getting back to real life, that means plenty of blog post. To help kick this off, I have a survey that was sent to me, or a link to a survey being conducted by SoftwareAdvice, Houston Neal.: ERP Implementation Strategies - Survey and Guide

This has actually already been linked too by a few bloggers in the Dynamics world, however I told Mr. Neal when I got back from vacation I would post this, and here we are.

This is actually more than a 4 question survey, and has some very interesting information on it.

Well that's all for now, but keep an eye here, as I have some great blog post lined up in the queue!

"Visit the Dynamics AX Community Page today!"

Labels: , , , , ,

Thursday, March 11, 2010

Dynamics AX 2009 - X++ Thread Development

One of the possible technical tools that exists when developing solutions in Dynamics AX, and inside X++ is Threads. This is actually not a new thing, thread based development has been around for a while.

The whole idea of creating a seperate thread to perform a process is an accepted technique to achieve multi processes at a given time, managed from the given, seperate application thread that the user application is taking up.

With, however Dynamics AX, sometimes it's not that clear of where and why you would use Thread to achieve a given process, or development goal.

I used and use threads a lot in C#, and the Thread development that exists in C# is for robust, and can become complex. And lets face it, Thread development and management of spawned threads from a application can become complex.

So with X++, there does exists the ability to use Threads for development needs. The following is a simple example of a Thread, a Method that the Thread is executed upon, and how to execute the simple thread.

With this we see a simple threaded development approach that can be used in X++. To break this down a little bit, you have a job, class, method etc. that is performing some work. In that is wants to spawn a thread.

The method that will be spawned as a new Thread, must accept a Thread as it's only parameter, and best practice on this says it should be a server static method that is the executed thread method.

You notice that there are input parameters and output parameters. These are containers, and therefore can store a number of different in and out parameters, to and from the threaded method. This is very useful as the thread could be developed in a way that would return some output.

Now this is great and all, but when would this be used?

Since Dynamics AX is an ERP product, that means a lot of process and needed development flows have to take place in a linear approach. However there are some things that do not have to be. Or some process that can be developed, so that threads can be used to improve the performance of a long running process for example.

So, with thinking about Threads, you have to think about divison of a given process into several Threads. Thats the nature of thread development.

This means, that if a given data process is taking hours and hours, can it be devided into smaller chunks of data? If so, but you need the whole thing to process, then a Threaded development approach can be done, where the given data process can be selected, and by the division, say a date or a group, can be used to spawn a thread to import data, doe that given divison unit.

This means, that if you have, say, 100,000 records to import. And that process is taking 3 hours. But you realize, you can break these 100,000 records into 10,000 records a peice, by a Item group.

Then you can take and have a method that loops through the grouped, by Item group, selection, and spawn a thread per 10,000 or by Item Group, and therefore speed up the process x10 fold. This means that the process that was taking 3 hours, can be done in an estimated 18 mins.

This directly ties to what DAXGuy, posted about here.: DAXGuy: SSIS for Bulk insert into Dynamics AX 2009 and this represents another way of inserting a large amount of data. What this approach, using threads, offers is it's X++ based, and therefore X++ busienss logic that might live on a given table in AX can be accessed and used. Note: Thread imports, most likely will not be as fast as a bulk insert process. But when a bulk insert is not possible, think about threaded development.

Now some notes about threaded development now. One, make sure everything that a thread accesses and executes is server tier code, or server context code. This makes sense, the thread executes on the Server tier, and in doing so, can't access client side code. If you try to do so, the thread will error out.

Also, if a thread is actually executed at the Client level, even though it's server side code being executed, for every thread spwaned a worker type user license will be used, and seen in the online users form.

Also, finally, I would like to point out that Microsoft itself uses threads in the MRP process, and other processes like ReqTrans, to try and speed up the processes in these areas. Thread development should be a serious consideration, but there are some limits.

For examples I tried to do a multi-tree thread approach. Meaning I tried to spawn sets of threads in threads. This is not possible. For whatever reason, the first thread in the threaded, thread approach will execute, after that the other spwaned threads are stopped.

If the multi-tree thread approach would work, then you could spawn mutli level threads, really attacking long running processes, by breaking it up into smaller, and smaller chunks. However, as my test have shown, this is not possible.

I hope this helps shed some light on threads in Dynamics AX 2009, and that it helps getting you thinking about how threads can be used in x++ to help with your coding needs.

That's all for now but check back soon!

"Visit the Dynamics AX Community Page today!"

Labels: , , , , , , ,

Tuesday, March 09, 2010

DAXGuy: SSIS for Bulk insert into Dynamics AX 2009

DAXGuy posted today, about a recent Proof of concept he was working on for inserting a lot of records from an outside LOB application into Dynamics AX. He was able to insert 100,000 records in 13.6 seconds!.

A direct link to DAXGuy's post can be found here.: Dynamics AX 2009 Bulk Data insert using SSIS

This is actually an interesting post. What we have to look at is the fact that this bulk insert is being done on a custom table, with not a lot of X++ logic. So for example if you were creating Sales Orders, Forecast data, etc. there is extra logic that is ran on the delete's, insert's, etc. methods of these tables.

Such a Bulk insert works for custom table data, that is targeted and focused. However if you needed to take and do bulk insert for forecast data, for example, or Sales data, you would either need to recreate the logic in SSIS package that is done for the insert's and delete methods on the given tables your operating on, or make use of the .Net BC.

This in turn is where we run into an issue. I believe the work DAXGuy is a great example, and I am glad he posted it. It brings up though a point with Dynamics AX about loading massive amounts of data.

Bottom line, if it's custom tables being loaded, then it can be fast. However if out of the box tables, with a lot of underlying X++ business logic embedded into the creation of the data for said tables exists, you hit a road block.

You can either choose to by pass the logic, if your instance does not need it. Then the bulk inserts and massive data imports can be done. However if needed, then you either have to recreate through your choosen data import engine, like SSIS, or make use of the code.

This is where a slow down takes place.

Let me leave this post, with thanks to DAXGuy. A great post, with detailed steps on making use of SSIS for bulk insert. Let me also leave though, that this leads into a post I had planned, with working with threads.

That's all for now, check back soon though as more to come!

"Visit the Dynamics AX Community Page today!"

Labels: , , , , , ,

Monday, March 08, 2010

Personal Note of interest...

Recently, I took my Daughters to a gand openning of The Hardin Center's, a local mesuem, latest exhibit, "Robot Carnival".

As part of that we were some of the first to use the interactive exhibits, and appeared in a local paper.:

From the local paper.:
"Brandon George shows his daughters, Emily and Natalie, how to operate a mechanical arm at the opening of The Hardin Center's new exhibit 'Robot Carnival' in Gadsden, Alabama. March 6, 2010."

A direct link to that post can be found here.: GadsdenTimes.com - Robot Carnival

I know this has nothing to do with Dynamics AX, or Microsoft technologies. However it has everything to do with my two little girls, and me being able to share my admited geek passion with them.

I think I enjoyed it more than they did! Of course, they were into all the cool interactive robotic exhibits that the Hardin center had.

"Visit the Dynamics AX Community Page today!"

Labels: , , , , , ,

Friday, March 05, 2010

Microsoft's Cloud Portal

For a few years now, I have had post on and off talking about cloud computing. How it's going to change a lot of things. Then we started hearing more and more about Microsoft's vision of the cloud, cloud computing, Software+Services, "Three Screens and a Cloud."

Then at the start of this year, I posted the following entry.:
What can the Cloud offer you in 2010?

Where in that post, I talk about 2010 being the year of the cloud. Now it's finally here, and ready. Microsoft's got a whole host of Cloud services, and some have already been in the Cloud for years. Think about Hotmail, for example, their oldest cloud app really. I mean it's for sure fits the bill for what a Cloud App is. That's been up for nearly 15 years!

Now we have Office 2010 coming out, and their will be Office Web Apps released with it. A Cloud based version of office, to launch and go where you please. Then of course the new kids on the Microsoft cloud block is Windows Azure and SQL Azure. Two, if you will, 'Pure Cloud Platforms & Services'.

Microsoft also recently released their cloud portal, which can be found here.: Microsoft's Cloud Portal - Were All in!

Also posted on this, is Steve Ballmer's video of his speech yesterday to UW crowd. In this he is quoted in saying.: "The cloud fuels Microsoft, and Microsoft fuels the cloud." - Steve Ballmer, CEO, Microsoft.

The video is high level, but it should help bring into light that Microsoft has been in the cloud for years. And the approach, with familiar products and technologies, the lines between cloud and on-premise, that the Software+Serrvices visison brings will continue to blur for the end users. Which means more flexibility and possibilities for Companies and their Technology staffs to solve the business needs each of them have.

This directly links to Microsoft Dynamics AX. The cloud is here, and solutions can be designed and developed that include Exchange in the Cloud, SharePoint in the Cloud, Office Web Apps, .Net Cloud Based Services that run on Windows Azure and SQL Azure, and Dynamics AX at the heart of the business, being it's ERP / SCM platform.

I recommend checking out the new Microsoft Cloud portal, and adding it to your thought processes. How can these technologies be used by my clients, by me, to help my clients solve real world business problems. And if your and end customer, you should be asking your VAR / ISV to help you with designing and planning of your solutions, and how Cloud Apps, and Pure Cloud Services can be used to help you be more Dynamic, more flexible, and get things done, better, faster, cheaper.

"Visit the Dynamics AX Community Page today!"

Labels: , , , , , , ,

Thursday, March 04, 2010

Blog Spotlight: Dynamics AX Daily

From time to time, I get to find new sources that are being created on the web for helping foster and build up the Dynamics AX community.

One such recent one, is the Dynamics AX Daily blog.

This blog appears to have been started this Jan., of 2010, and as it's name suggests post daily about Dynamics AX. Specifically related to the technical side of Dynamics AX. This includes code samples, tech tips, AOT based post, etc.

This post are specific post, to the point. For example, look at the following post.:
X++ real vs numeric(32,16)

From that post.:
"It is an interesting fact that X++ real type is not fully compatible with the table field real type. The problem is that in the database numeric(32,16) data type is used to store fields of the real type[in X++]. Numeric(32,16) data type stores numbers with no more than 32 digits total and no more than 16 digits after the decimal point..."

Now I have not ever ran into this issue with any real pratical use, but it's very interesting.

For sure it's worth bookmarking this new Dynamics AX technical source. It's to the point, and interesting at the very least.

Thanks to whomever is behind this blog, and for helping build up the Dynamics AX community! That's all for now, check back soon as next week I have a whole lot of great post coming out!

"Visit the Dynamics AX Community Page today!"

Labels: , , , , ,

Wednesday, March 03, 2010

Microsoft Dynamics AX 2009 White Paper: Tracing Role Center KPIs

This week must be white paper week, because I have another post about a White Paper that was released just in Jan.

This one focusing in on Tracing Role Center KPIs. The direct link to this download can be found here.: Microsoft Dynamics AX 2009 White Paper: Tracing Role Center KPIs

Download Description.:
"The prominent place of key performance indicators (KPIs) on Microsoft Dynamics AX 2009 Role Center pages has prompted questions about where the KPI data is drawn from. This document explains how to trace the data that is displayed in a KPI to its source in the Microsoft Dynamics AX online transaction processing (OLTP) database.

Microsoft Dynamics AX relies on Microsoft SQL Server Analysis Services for its business intelligence processing. This white paper defines terms of importance for Analysis Services, and then provides a step-by-step example of how to trace the data for a KPI on a Role Center page."

I actually had access to this in beta form, when I was working last summer on tracing down KPI data actually. This is a VERY handy white paper, if you do anything with Role Centers, and plan to customize them for any client, or yourself.

This walk through works, and will give you the knowledge you need to trace down what a given KPI actually means on a Role Center, why it's showing a given number, and help trace down to the fields and tables used in the Dynamics AX Database itself, that the OLAP cubes pull from.

That's all for now, but I have some more great post coming. Including yet another white paper that was released just a few weeks ago. However this time, there were be several post off it. Also I will be getting back to WCF discussions soon, and have a wrap up post to bring that all together. See you next time!

"Visit the Dynamics AX Community Page today!"

Labels: , , , , , , ,

Monday, March 01, 2010

Dynamics AX 2009 Impact Analysis Tool (IAT)

The Dynamics AX Sustained Engineering blog, has a new entry as of Friday, which is highlights the new release of a Dynamics AX 2009 Impact Analysis Tool (IAT).

The direct blog post can be found here.: Release of Dynamics AX 2009 Impact Analysis Tool

From the blog post.:
"The Dynamics AX 2009 Impact Analysis Tool (IAT), is a one stop tool for analyzing the impact patches before they are applied to a Dynamics AX system. The IAT will analyze, code compare and cross-reference, the impact of patch across all layers. Previously, this functionality did not exist in a combined tool in Microsoft Dynamics AX, this made it more time consuming to assess the full impact of a patch, before it was applied to a system."

The following is a direct link to the white paper and X++ framework download.:
IAT pre-requisite framework (KB974255) and whitepaper

PartnerSource or CustomerSource is required to gain access to this new release.

This tool will be very handy for patch and upgrade help. A compare will take place, and is used to generate Impact Object Analysis, to help you identify better what will be affected, how it will affect your given instance, help you create a plan for doing a correct patch upgrade.

Highly recommended that your VAR helps you with this, for already existing customers of Dynamics AX.

"Visit the Dynamics AX Community Page today!"

Labels: , , , , ,

Copyright 2005-2011, J. Brandon George - All rights Reserved