Browsing all articles tagged with Dynamics AX 2009 Archives - Page 2 of 2 - Amer Atiyah, Microsoft Dynamics 365 Blog
5

In a previous post, I descriped in deatils how to gte (and set) Hijri date in Microsoft Dynamics AX 2009. In that post I have shown how to get Hirji date in Dynamics AX by calling a SQL function from X++.

A calleague of mine has also came up with another great idea to handle the Hirji date using the CLR Interoperability. The standard Dynamics AX 2009 comes with a set of very important .NET libraries referenced to be used automatically in Dynamics AX 2009.

 

References in AOT

 What you could use out of those libraries: System.Globalization library of .NET framework. But of course, you have to use a string to show the value of that date since you cannot get a Hirji date (with its values like 1430 as a year) and assign it to an X++ date datatype.

Check out this code to have the Hirji date converted from X++ gregorian date:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 display STRExtendedDT ExpieryDate_H()
{
    System.Globalization.Calendar           Calendar = new System.Globalization.HijriCalendar();
    System.Globalization.DateTimeFormatInfo hirjiDate;
    System.Globalization.CultureInfo        cultureInfo = new System.Globalization.CultureInfo("ar-SA",false);
    System.DateTime                         dt;
    STRExtendedDT                           dateString;
    ;
 
    dt = this.ExpieryDate;
    hirjiDate = cultureinfo.get_DateTimeFormat();
    hirjiDate.set_Calendar(Calendar);
    dateString = dt.ToString("dd/MM/yyyy", hirjiDate);
 
    return dateString;
}

You will get :) :

Hirji date

6
Sometimes you might face an unexpected error when trying to insert new records to any of the Dynamics AX tables. The message you might have is like: Cannot create a record in Journal lines (LedgerJournalTrans). The record already exists.
You might also have tried to check the indexes of this table that shouldn’t be duplicated. And you got surprised when you are not violating those constraints, so there is no any rational reason why this error might appear.
After so many tries, I got to fix that error by:
  1. Backing-up my database (just in case that anything went wrong)
  2. Exporting the data of that table (from the AX Import/Export functionality)
  3. Deleting/Dropping the table from the Microsoft SQL Server Management Studio (by this all the data of course will be deleted)
  4. Opening the Dynamics AX client, going to: AOT –> Data Dictionary –> Tables –> LedgerJournalTrans –> Right clieck –> Synchronize
  5. Importing the data again to all companies (from the AX Import/Export functionality.

As you could see, I got this error in a very critical table that is the LedgerJournalTrans table. This table contained already posted lines and it was really headache for me to get it fixed. But fortunately I was able to fix it by following the previous steps. :)

3

A question might come to your mind, what’s the difference between a Dynamics AX 2009 Workflow Task and a Workflow Approval in AOT. They both are having almost the same properties and you could attach them to a workflow template.

Workflow in AOT

The workflow in Microsoft Dynamics AX 2009 is managed in a way that enables the workflow designer (who does the workflow configuration, a functional consultant in most of the cases) divides one “stage” approval into multi steps.

For example, if a Leave Request needs to be approved by the HR department, then the case might be in a way that approval must be processed by an HR Assistant and NOT the HR Manager in case that the leave does not exceed three days. But if the Leave Request is for more than three days… the HR manager must approve it also.

To enable this scenario, the workflow should be fixable so that the workflow designer is able to add as many steps per one approval “stage” as he likes. This is done by adding a Workflow Approval to the Workflow Template. When you go and configure this workflow template in the Workflow Configuration, you will be able to add as many steps as you wish… and you could also configure each step by specifying who this step will be assigned to and in what condition. And the workflow approval stage will not be completed unless all the steps are completed.

Now for the Workflow Task, this cannot be done. A Workflow Task represents only ONE STEP of a Workflow Approval. The workflow designer cannot add steps to this Task; he only could assign a person and a condition for this step/task. Task is nothing but a single unit of work.

The following image describes what I said:

Task and Approval in Dynamics AX 2009 Workflow

Another differnce is that a a task does not have a fixed outcome. However, you can add any number of custom outcomes to the task, such as Completed or Skipped.

9

When you install Dynamics AX Workflow, you might install it on a different machine that the AOS, like a web server for example. In this case, you have to install the following on the workflow server to get your workflow works:

  1. IIS
  2. .NET Business Connector
  3. Create a new website on IIS (do not use the same of WSS or EP websites, it is recommended not to use an existing website even)
  4. Workflow

Before going into step number “4”, you have to configure the “System service accounts” in: Dynamics AX –> Administration –> Setup –> Secuity. Fill these fields like the following:

  • Busienss Connector Proxy: create a domain account and assign it here, this user doesn’t have to be a Dynamics AX user.
  • Workflow System Account: Select a user like the Administrator  from the drop down list
  • Workflow Execution Account: like the previous step

Now you should be able to go through the step “4”, and install the Workflow component.

After installation, go to Dynamics AX –> Administration –> Setup –>Workflow insfrastructure configuration wizard. If you are getting an error after installing Dynamics AX Workflow: “401 Unauthorized”, then insure that you go through the following:

  1. AOS Service is running under an active domain user (domainusername)
  2. Workflow website and workflow application pool are having the same .NET Business Connector user name Identity (and of course, this should be an active domain user)
  3. You added the workflow website (http://servername:portnumber/DynamicsAXWorkflow50 for example) to the trusted sites in Internet Options of AOS server
  4. Run the following on the Workflow server:
    • Start a command prompt.
    • Locate and then change to the directory that contains the Adsutil.vbs file. By default, this directory is C:InetpubAdminscripts.
    • Type the following command, and then press ENTER:

cscript adsutil.vbs set w3svc/NTAuthenticationProviders “NTLM”

    • To verify that the NtAuthenticationProviders metabase property is set to NTLM, type the following command, and then press ENTER:

cscript adsutil.vbs get w3svc/NTAuthenticationProviders

The following text should be returned:

NTAuthenticationProviders       : (STRING) "NTLM"

 

By this, workflow infrastructure configuration wizard should work fine now. :)

0

Workflow in Dynamics AX 2009 is interesting technical part of this lovely product. When you try to develop/create a new workflow in Dynamics AX you might get confused of the so many menu items and classes that you create, and sometime you don’t even know what these classes’ handlers and menu items are used for. That’s why when I first learned how to create workflow in Dynamics AX one year ago; I created a pretty easy-to-use wizard that creates for you a workflow with all the necessary objects like Workflow Template, approval, category, classes and menu items. Furthermore, this wizard enables the workflow on the selected form and its main table.

One of the important classes that you need to set at the approval process is the participant provider. The goal of this property is for the workflow to decide who will be the participant user for this step of workflow. To do that, you have to extend WorkflowParticipantProvider class and overwrite the methods: getParticipantTokens that fills the list of options in the Role Based section of and resolve that will decide the exact user based on some X++ and the selected option in Role Based list.

Dynamics AX 2009 Workflow - Assignment - Role based

Dynamics AX 2009 Workflow - Assignment - Role based

By default, Dynamics AX 2009 comes with three participants:

  1. WorkflowUserGroupParticipantProvider:
  • List all configured User Groups in the system and assigns the workflow step to all users in the selected group
  1. ProjWorkflowParticipantProvider:
  • This is for Purchase Requisition workflow. List some tokens like Project Manager, Project Controller, Project Sales and others and assigns the workflow step to the assigned person of the Purchase Requisition project.
  1. TrvWorkflowProjParticipantProvider:
  • This is for Expense Management workflow. List tokens like Project Manager, Project Controller, and Project Sales and assigns the workflow step to the assigned person of the expense project.

 

Workflow Approval Properties

Workflow Approval Properties

So simply, when you need to specify participants based in your criteria, you need to do exactly the same of those classes, by overwriting getParticipantTokens and resolve.

1

I had the opportunity to review the new Dynamics AX books that were published by PACKT publishing. Currently I’m reviewing them and I will update you once I finish. Till that time, I’m putting here the second chapter of Microsoft Dynamics AX 2009 Development Cookbook.

Enjoy :) !

1

Two Dynamics AX 2009 Development Books

Two new books have been published in the last period. Those books are talking about Microsoft Dynamics AX 2009 development.  Both are published by PACKT Publishing.

The first book: Microsoft Dynamics AX 2009 Development Cookbook (available in PDF)

 

This book talks about development in Dynamics AX in an exciting way that is discussing 60 of the common scenarios in Dynamics AX development that developers usually face. From the index of contents of this book I feel that it assumes that the reader knows a bit about how to deal with MorphX. I recommend this book for junior level technical consultants that they need to step forward after spending some time on MohrphX.

Here is a short description of what this book cover:

  • Explore data manipulation concepts in Dynamics AX – build data queries and modify the existing data
  • Build scripts to assist data migration processes
  • Organize data in Dynamics AX forms
  • Enhance your application by using advanced form controls
  • Create custom lookups using AOT forms and dynamically generate them from the X++ code
  • Create and post Dynamics AX journals from code
  • Create and manage purchase and sales orders from code
  • Create a custom electronic payment format and process a vendor payment using it
  • Integrate your application with Microsoft Office Suite
  • Create various MS Office documents that can be used for exporting/importing business data for further distribution or analysis

 

The second book is: Microsoft Dynamics AX 2009: Getting Started (available in PDF)

If you are new to Dynamics AX then you will like this book. I liked the way this book is structured. It encapsulates the complications that you might face in other materials and focuses on the things that you always are in need to. It starts with the very elementary basics of Dynamics AX development and goes forward up to integrating with other modules of Dynamics AX and external systems. I recommend this book for new AXers.

Here is a short description of what this book cover:

  • Get to grips with the AX Development environment
  • Understand the basics of the  X++ language
  • Reduce the time spent on coding by storing and relating data
  • Create Reporting Services reports in Visual Studio using the new Reporting Service extensions
  • Optimize data retrieval to ensure each transfer contains only the data necessary for the further operations
  • Manipulate data in X++
  • Effectively handle transaction scope by using different operators
  • Develop a .Net class in Visual Studio and then use it in AX
  • Build rich web portals with Enterprise Portal and ASP.NET
  • Optimize application performance and extensibility
  • Create services and expose them to external applications+
  • Build a new module in AX
7

Hijri date in Dynamics AX

In Microsoft Dynamics AX 2009, Hirji calendar (the Islamic calendar) is not yet supported although Hirji date is there in the background of Dynamics AX 2009!

To enable the Hirji Calendar, you should modify some X++ code in the User Options form. To do so, go to: SysUserSetup –> Methods –> run and change the following blue code into the red:

Enabeling Hijri Calendar in User Options form in X++

Enabeling Hijri Calendar in User Options form in X++

  

  By doing this, you will have a drop down list in the User Options shown in the General tab like the following:

Hijri date in User Options form

With this options, you could clearly understand that Microsoft is putting something to enable the Hijri calendar. I have done some testing over this options. It looks that they’re using a middleware to convert the “actual” Gregorian date that is in the database so the user see the data in Hijri format. Unfortunately, I couldn’t complete the testing with successful results… it started to get me weird results. That’s why Microsoft is not yet supporting it.

  

Till Microsoft supports it, you could use a very easy to use function in the SQL server: convert(datetime,’12-22-2009′,102), 131)  

  

To solve the Hirji date problem, you could create a class with two methods:  

 

  1. One that takes a “date”  and returns a Hirji date after calling this SQL method: select convert(varchar,convert(datetime,’12-22-2009′,102), 131)  –try to run this in SQL Server to see the result. 
  2. Other that takes a Hijri date in an str format, and returns a date by executing this SQL code:  select convert(datetime,’22-01-1417′, 131) –try to run this in SQL Server to see the result

 By this, you could have the ability to show the user a StringEdit control that uses edit moeth to write a Hirji date and you save the result of conversion in the normal Gregorian date, like this:

Edit method to show Hirji date from Gregorian date

This is the result:

Hiji StringEdit control and DateEdit control

Hiji StringEdit control and DateEdit control

 

4

Cool session. It was all about showing muscles of Dynamics AX of how this enterprise software could manage the integration with external systems.

It was all about AIF, .NET business connector and CLR Interoperability.

For each of them I gave a simple application, like the following:

·         For AIF, I created a service using the Document Service Wizard. Then we extending it by adding a new operation. Then we published it on the local IIS. After this we were able to create a very simple console application to get data from Dynamics AX through the created web service.

·         For .NET Business connector, I created I windows application from Visual Studio .NET to call using the .NET business connector a static method that is written in X++.

·         For the CLR Interoperability, we called System.IO .NET library from within the X++. And then we a simple library in Visual Studio .NET, referenced it in Dynamics AX and then called it from within an AOT Job and X++.

Download the presentation from here.

0

In the morning of Sunday 14th of December, 2009 the first session  of Microsoft Dynamics AX was started with more than 40 attendees. The session title was: Introduction to Microsoft Dynamics AX Architecture and Development Environment.

I started by introducing Dynamics AX functionally and technically. I then turned to show the basic and components architecture diagrams. After this I spent lots of time describing the different tools of MorphX. Finally I started the Microsoft Dynamics AX 2009 desktop client. From there I have shown quickly the AOT, forms, methods, X++… etc.

Download the presentation files down from here.

0

A very nice article has been posted in MSDynamicsWorld.com by Scott Hamilton about workflow in Microsoft Dynamics AX 2009. It shows by more than one example how workflow could be effectively implemented so it serves organization processes needs.

This article is excellent for those who haven’t experienced the workflow yet in Microsoft Dynamics AX 2009. It doesn’t require any technical background.

Have fun.

1

Microsoft has added a very useful functionality in the new release of Microsoft Dynamics AX 2009 that is: Workflow. I have explored many articles by Microsoft and others about Workflow in Microsoft Dynamics AX 2009. For the technical articles part, all of them are describing the workflow in a technical format that prevents the reader from seeing the whole picture of this functionality that has been delayed a lot. This is so important to be known.

Microsoft did not implement the workflow inside Microsoft Dynamics AX itself, they preferred to use WWF (Windows Workflow Foundation) that has been released with the .NET Framework 3.5.  WWF is a new feature that builds and executes workflows inside .NET applications. WWF workflow engine, the one that runs the workflow inside Microsoft Dynamics AX 2009, is published and configured in the IIS.  The following diagram shows you how this happens:

Workflow engine in Microsoft Dynamics AX 2009

Workflow engine in Microsoft Dynamics AX 2009

By this, Microsoft has gained the advantage of the new functionalities that would be added later on WWF without upgrading Microsoft Dynamics AX itself (for most of the cases at least).  And this is a great example of what you can do when using .NET business connector of Microsoft Dynamics AX.

In the following picture, you could see that workflow runtime, currently, is residing inside IIS.

Microsoft Dynamics AX Workflow Runtime

Microsoft Dynamics AX Workflow Runtime

Someone might ask: why did’nt Microsoft lunched the workflow runtime on the AOS of Dynamics AX.  Actually Microsoft is planning to do so in the soonest (this might be in Microsoft Dynamics AX 2010). But they have made it on IIS because the AOS is written in a native code, not in a managed code.  And since WWF is part of “very managed” .NET environment, it’s time and effort consuming for them to make such integration. So they simply put the workflow runtime on the IIS till they completely convert the AOT into managed code.

You guys could benefit from a video that has been recorded in PDC 2008. Josh Honeyman, a Senior Development Lead at Microsoft, shows how workflow is implemented in Microsoft Dynamics AX 2009 and its future. To watch the video, press here.

Dynamics AX 2012 Event

Recent Posts

Tags

Archives

Random Testimonial

  • ~ Ziad Yehia, ERP Business Consultant at NetWays

    no_thumb"I have one thing to say about Amer, When you have a tough Dynamics AX question that you are not able to answer; he is the person to call..."

  • Read more testimonials »