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.
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 :
- Backing-up my database (just in case that anything went wrong)
- Exporting the data of that table (from the AX Import/Export functionality)
- Deleting/Dropping the table from the Microsoft SQL Server Management Studio (by this all the data of course will be deleted)
- Opening the Dynamics AX client, going to: AOT –> Data Dictionary –> Tables –> LedgerJournalTrans –> Right clieck –> Synchronize
- 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.
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.
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:
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.
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:
- IIS
- .NET Business Connector
- 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)
- 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:
- AOS Service is running under an active domain user (domainusername)
- 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)
- You added the workflow website (http://servername:portnumber/DynamicsAXWorkflow50 for example) to the trusted sites in Internet Options of AOS server
- 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.
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.
By default, Dynamics AX 2009 comes with three participants:
- WorkflowUserGroupParticipantProvider:
- List all configured User Groups in the system and assigns the workflow step to all users in the selected group
- 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.
- 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.
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.
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 !
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
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:
By doing this, you will have a drop down list in the User Options shown in the General tab like the following:
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:
-
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.
-
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:
This is the result:
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++.
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.
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.
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:
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.
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.
Search the site
Dynamics AX 2012 Event
Recent Posts
- D365FO | Cannot Connect to SQL Server Database on Your Cloud Test Machines
- Intro to Microsoft Dynamics AX in Arabic – سلسلة حلقات مايكروسوفت داينامكس إيه إكس بالعربية
- Microsoft Dynamics Launch – Sunday, 24th February – Intercontinental Hotel, Riyadh
- Files of Our AX Brains Dec 2012 Event
- It was a great day!
- Tomorrow is the day for our Dynamics AX Brains Technical Seminar
- Dynamics AX Brains December 2012 Technical Seminar
- Windows Server 2012: Built from the Cloud Up
Tags
Archives
- October 2019 (1)
- January 2014 (1)
- February 2013 (1)
- December 2012 (4)
- September 2012 (2)
- December 2011 (2)
- November 2011 (3)
- July 2011 (3)
- June 2011 (4)
- May 2011 (3)
- April 2011 (4)
- March 2011 (12)
- February 2011 (2)
- January 2011 (3)
- December 2010 (1)
- November 2010 (1)
- October 2010 (5)
- August 2010 (1)
- July 2010 (3)
- June 2010 (4)
- May 2010 (5)
- April 2010 (1)
- March 2010 (9)
- February 2010 (4)
- January 2010 (4)
- December 2009 (11)
- September 2009 (1)
- August 2009 (1)
- July 2009 (2)
- September 2008 (1)
Random Testimonial
- ~ Mohamad Adel, Sr. Dynamics AX Developer at Al-Fanar IT
"I recommend Amer Atiyah as i worked with him in many simple and complicated tasks and i realized that he is very intelligent in the way of thinking to solve tasks problems. He has a very good experience and knowledge of his job. He is very hard worker, committed, organized and creative and very open mind in his work and that is the reason if his brilliant in his specialized field. He is always showing a high degree of professionalism and ability to deliver and accomplish very complicated tasks at any condition with high quality. I am recommending him to work in any team and i know he will fit with all challenges. Purely, he is a professional guy. I wish to him more and more success in his career and his life."
- Read more testimonials »