Search This Blog

Thursday 30 January 2014

Implementing Workflows in Microsoft Dynamics AX 2012

Implementing Workflows in Microsoft Dynamics AX 2012:

 WorkFlow:

Workflow is basically a business process that defines how a document flows through the system.

Technical Components:

1. Categories.
2. Types.
3. Approvals.
4. Event Handlers.

Categories:

Categories basically defines in which module workflows can be use.

 Types:

Basically types are the templates which shows the options when we create the workflow.Workflow types contains the Approvals and task.Each approval and task have the different node in the AOT.

Approval:

Approval is basically the task on which we have to assign this task to someone who has to approve or reject the document.

Event Handlers:

When you generate your workflow type or workflow task there are classes added to your project on which events are created in which you write your logic to insert record into some tables based on your event.

For example when the workflow approver approves the  document than the approve event is fire and when the owner of the document submits the record than the event is fire and many more events  fire based on the action of the user.In these events we can write our custome logic if we want.


Implementing A Workflow:

First of all just go to the AOT and than select the workflow -> workflowtypes and than right click and than select the workflow type wizard

As you can see this in the below image:




















A new wizard will open as you can see this in the below image.


One thing you have to do before creating the workflow type is you have to create the query first and then menu item of the document i,e your form.



Query is basically for the table which manages actions of your document i.e approve by for example if the document is for the requisition than purchase requisition id.

You can check the existing purch req table and the query named purchreqdocument for the purchase requisition module for verification.















As you can see in the below image i have put the name of the workflowtype and the query name and the document menuitem name.

If you want to run this workflow on the EP than you can also specify the web menuitem.

You can generate the workflow type for rich client or web client or both.

you can see the options in the above image.

Now click next button you will see all the names of the classes menuitems that will be generate as you can see in the below image.


















After clicking the finish button the wizard will generate the workflowtype project.
As you can see this in the below image.

note:Its mandatory to generate incremental CIL after the generation of the workflow type.




















Now we need to create the Workflow Task.

To do this just go to the task node and than right click Add-in and than select the task wizard.

you can see this in the below image.

























A wizard will open exactly as we did before for the workflow type.

You can see this in the below image.


















As you can see in the above image that all the fields are same as we did for the workflow type except few ones.

Workflow document is basically the name of the workflow type that we created earlier.

Now click next.You will see the new screen on which you have to create the task.

These tasks are basically the tasks that workflow app rover have to do like approve i.e complete the workflow or reject the workflow or request to change the app rover of the workflow.

You can see this in the below image.


















Now click next and you will see all the classes that will be going to generate and than click the finish button your project related to the workflow task will be created.

As you can see this in the below image.

Note: Dont forget to generate the incremental CIL after creation of the project




















Now we need to create the Work Flow Approval

Just go to the approval node and than right click -> addsin -> approval wizard

as you can see this in the below image.

























Now wizard will open where you have to do the all the same steps as you did earlier for the creation of the workflow tasks.

note: don't forget to generate the incrimental CIL after the creation of the project.

After the creation of the workflow approval.Now put the workflow approval and workflow tasks to the supported elements of the workflow type.

As you can see this in the below image.















One more thing you have to do is to write the logic for the initialization of the workflow.Like when the submit button is clicked the workflow should get started.

You can see the exisiting purchreqworkflow class for the purchase requisition workflow.

Basically there is an action type menuitem PurchReqSubmitToWorkflow on which class named PurchReqWorkflow is set.when the user submits the document this menuitem (i.e submit button) is clicked and this class is called which initiates the workflow.

There are lot more events available on which you can write your own custom code.

One more thing you have to do while implementing your workflow is that.You have to set the name of your workflow type and the workflow datasource on the property of the form otherwise your workflow will not be going to work.

For example you can see the existing form of the purchase requisition i.e PurchReqTable.
you can see that in the below image.






There is one more thing you have to do in your workflow that thing is that there will be the table which manages the states of the document in that table you have to write the method submit to workflow  and in that method you have to

Now i will show you our newly created workflow on the client side which we can configure and use.

As I have created my workflow for the procurement and sourcing model.

I just go to the CEU/Procurement and sourcing/Setup/Procurement and sourcing workflows.

And than create new workflow you can see your newly created workflow in it.

You can see this in the below image.




























In the above image you can see our newly created workflow.

This was all from my side related to the implementation of the workflows.

In the next post i will show you on how can we use this workflow on client side.

Thanks

Muhammad Zahid 

Wednesday 8 January 2014

SSRS Reports In Microsoft Dynamics AX 2012 Part 1

There are two types of SSRS Reports in Microsoft Dynamics AX 2012.These are:

1.Query Based.

2.RDP Class Based.

Query:

A Simple Query is used to fetch the data for a report.The filters on the query will be shown on the report dialog.Usually the name of the query is same as the report.

RDP:

Will be required to handle complex business logic which can not be achieved using a query.

In the first part of  the SSRS report I will give you example of Simple Report that will be based only on the Query and than in the next part I will give the example of the RDP class based SSRS Report.

Below are the steps for making the simple query based report.

Step 1:

First of all we have to create the AOT Query on by the help which we will fetch our desire record and than display it on the screen.

I have made the simple query in which i am selecting the record from the HcmBudgetPurposeType table.
















Now just go to the Visual Studio and than create the new project.

Select Dynamics AX -> Report Model  before creating the project as you can see this in the below image.











Now your project will be created.

Now right click your newly created project and than select the new report as you can see this in the below image.












After that your report will be added to your project.After that right click the dataset node of your Report and than select Add Dataset.

As you can see this in the below image.














After that just right click your newly created dataset and than select the properties and than  select the DataSource type.

You will see four types of data Sources in the options.Normally we use the Query and RDP based.

In this Post I am showing the Query Based Reporting so i will select Query.

In the next post I will show you the demo related the RDP Based Reporting. 

Now After the selection of Query set the name of the query that we have created in the first step.

A new wizard will open as you can see this in the below image.











After the selection of the query click next where you have to select the Fields.

As you can see this in the below image.












You can select the Fields and field groups and the display methods.

After the selection of the fields click ok button.After that your work for the Query will be completed.

Now Drag the Dataset onto the design node of the report.

 As you can see this in the below image.




















Now there are two types of designs on the Report.

1. Auto Design.

2.Precision Design.


Auto Design is basically general design of the Report.If you manually want to change the design of the report than you have to make the Precision Design.

The Good Practice for making the  Precision Design is that we should first make the Auto Design and than Right click and than select Create Precision Design.And than Modify the Design of the report.

After that Rebuilt your Project.

And than Right Click your project and than click deploy.Your Report will be deployed on the reporting server.

As you can see this in the image below.

 
















Now after that we have to add this report and Visual Studio Solution into the AOT of Dynamics AX.

Just Right click your Project and than select Add to AOT.

As you can see this in the below image.


















Now After that we have to Create the menu item to run our report in Microsoft Dynamics AX.

Just go to the Dynamics AX and than create the Output type menuitem.

You just have to set the three properties of that menu item i.e
object type = type of the Report and
object = Name of the Report and
ReportDesign = AutoDesign1

As you can see this in the image below.



 
Now after that I am going to run our newly created report.

You can see the output of that report in the below image.













This was related to the Query Based Reports.

In the next post I will show the demo related to the RDP based reports.

If you have any questions than feel free to comment on this or email me.

Thanks

Muhammad Zahid.

Saturday 21 December 2013

Change Company Design Pattern In Microsoft Dynamics AX 2012


By the help of change company design pattern we can change the company context with in a particular scope.

For example there is a scenario in which we have to get the data based on the company context which is not our loggedin company in that case we can use this change company design pattern to change the company context in a particular scope.

You can see the examples in the below links.

Change Company Design Pattern [AX 2012]

Cross-Company Data Modification Using X++ [AX 2012]

Above links for changing the company context were for the particular scope but if you want to change the company context inside the entire form than you can call the below method.

appl.setDefaultCompany(selectedLegalEntityDataAreaId, false);

Note:The main Drawback in above method is that when you switch over from the form on which company context is change than you will got the infolog that company change from this to this.

You can see the detail of that method in the below link:

Application.setDefaultCompany Method [AX 2012]


You can see the existing example of that method.

Just go to the Human Resouce ->Periodic ->Budget Planning -> Forecast Positions

Forecast Position List page will open just double click any forecast position and than click edit button
Forecast Position will open in edit mode.

Now go to the Compensation Group tab of that  form and right click the lookup and click view detail as you can see this in the below image.











Now after clicking on the view detail button you can see the form is open.

This new form will open in the context of the company assigned on the forecast position not based on the logged in LE.And will show compensation groups created in that LE only as you can see this in the below image.












Now on the jumpref method of the form HcmPositionForecast I have right this code.As you can see this in the below image.





















This was all related to the change company design pattern.

I hope you like this post.I you have any questions related to that than you comment or feel free to approach me.

Thanks

Muhammad Zahid.

Tuesday 10 December 2013

WorkFlows in Microsoft Dynamics Ax 2012 Part 1


WorkFlows:

                         Workflows is basically a business process that defines how a document flows through the system.

Below are some features related to the workflows on how can we configure the workflows and use them in our scenario.

I will show the example related to the Purchase Requisition in the Module Procurement And Sourcing.

Just go to the Procurement and sourcing > Setup > Procurement and sourcing workflows.

A new window will open as you can see that in the image below.

This page contains all the newly created Workflows.

Now Click on the new button to create new workflow.A new window will open where you have to select the type of workflows.

Select the Purchase Requisition Review and than click the Create Workflow Button.

As you can see this in the image below.















After clicking  on the workflow button A new wizard will open where you have to configure your workflow.As you can see this in the image below.














As you can see in the above image. This is the window where you can configure your Workflow.
On  the below pane there is an error pane which shows number of errors in your workflow during the configuration.You have to resolve all these errors in order to configure your workflow.

On the left hand side there is the task pane where you can use different tasks to add to your workflow.

In the middle there is the action pane where you have to drag and drop the tasks.

Now drag the Approve Purchase Requisition element on to the action pane and than connect the  start and end node to it.

As you can see this in the image below.

Now double click on the approve node in the action pane and than click on the basic settings.
As you can see this in the below image.

After clicking on the basic settings a new node will open where you have to enter basic settings.

Inside the basic settings basically there are four nodes. These four nodes are:

1. Basic Settings.
2. Assignment.
3. Condition.
4. Escalation.
























1. Basic Settings

In Basic settings node you have to enter the Subject of the workflow and then information of the workflow.

This subject and description will help the approver of the document.

You can also insert the place holder into  it.

For example if i want to show the Requisition id.Than I can do that through the place holder.Than every approver of the requistion will be able to see the id of the requisition for which he has to approve or not.





















  


2. Assignment:

Assignment is basically use to select the number users which have to approve the document.

There are four types of assignment i.,e participant,hierarchy,workflow user and user.

participants are based on the roles.you can assign this workflow to the specific role and the users in that role can approve that document or you can use organizational hierarchy or you can select the workflow user
or you can assign to the specific user (The user which is configured in AX).

In that example I will use the user option.
Now in next image you can see i am selecting the specific user that is configured in my AX.

   




















Time Limit:

In that node you have to define certain time limit to the user in which the approver have to approve the workflow.

You can see that in the below image.

  





















Completion Policy:

Completion Policy is basically is the policy in which we have to decide when this task is complete.

Like when only single user completes this than it complete or when all approvers approves than this task should be complete.

You can see that in the image  below.

  
















3. Condition:

Now there is third option available is we can add the condition to start the workflow if we want.

For example there is an example that workflow should start if the requisition amount is 2000. Than you can add the condition.

you see that example in the below image.


 




















4. Escalation Policy:

There are certain escalation policies available if the user fails to respond in the given time than  
we can make policy that it should assign to another user we can define the name of the other user or we can add the organizational hierarchy.






















Conditional Decision:

You can add the conditional decision into your workflow.If the decision is true than you can end the workflow otherwise the document can go to other node.

You can see that in the below image.

 






















Now this was all related to the configuration of the workflow.Before saving the workflow please see the error pane there should not be any single error present in it.After resolving all the errors you can save and close the workflow.There will be a dialog box appear you can add version notes in it if you want and than save it.And than activate that version.

After Creating the workflow please set your workflow as default as you can see that in the below image.

There is also version of the same workflow that you have.

Versions are basically when you modified your already created workflow than there is version created based on your modification.You can activate any of your version you want based on your modifications.

You can see that in the below image.





















This was all related to the Configuration of the workflows on the client side.

I hope you like this post :)

In the next post i will show you on how can we consume this workflow while moving our document from one user to another.

In my third post related to the workflows i will also show the technical side of workflows on how can we develop our own workflows.

 If you have any queries you can comment on this.

Thanks Muhammad Zahid.







Info Part in Microsoft Dynamics AX 2012

Info Part:

Info Part is basically used as a fact box on list pages and detail pages.

 The Perfect Definition of infopart is:

An Infolog is a type of part that you use to add a collection of fields and values to the fact box pane of a form, or a preview pane of a list page.

You can see the image of the fact box in the below image:












Now the Scenario is that we have to show the total of budget amount against each earning type for each position on the list page.

To do this we have to create the Query first.which fetch and calculate the sum against each earning type.

After creating the query we have to create our Info Part.

Just go to the Parts -> InfoParts node of the AOT and right click and than create new info part.

As you see this in the below image:

 Now just right click your newly created info part and than set the name of the your query that we have created in the first step.

As you can see this in the below image.




Now right click the layout node and than set the name of the parent datasource that you have made inside of your query.

As you can see this in the below image.




Now go to the group node and than set the name of the parent datasource and if you want to show more than one record in the fact box than you can set the repeating property to yes.

As you can see this in the below image.






Now right click the group node and than select new field.The fields inside the group node are the fields which you want to show on the fact box.

right click that field node and than select the datasource name and the field name and than name the label to that field.

As you can see this in the below image.





Now create the menu item and than set the object type of this menuitem to info part and the object to name of the infopart.

As you can see this in the below image.




Now go to the parts node of your list page or detail page on which you want to show the fact box and than right click than create new part reference and than set the following properties.





Now open your form your fact box should be exactly like this.





Fact Box have many types I have shown only one type in this example.If you want know more about fact boxes than you can click on the below link.

Fact Box in Microsoft Dynamics AX 2012

This was all from my side related to the Info Part.

If you have any questions related to that feel free approach me :)

Thanks

Muhammad Zahid.

Wednesday 25 September 2013

Working with cross company lookups in Microsoft Dynamics AX 2012

There are some tables which have the property save data per company is set to yes.

This means that table save the records as per of the logged in company.You can not see the records of the other company while logging in from the other company.

When we set the property save datapercompany to yes it creates the new column with dataareaid on the table.

Now when we want to see the records of the company while logged in from the other company than we have to use the cross query.

Like there is an example that you have to show the lookup with records other than the loggedin company than you have to use the below query.

As you can see this in the image below.










In the above query I have just use the two key words which allows the records to be cross company and than I have filter the records based on the passed DataAreaId.

As you can see this below.

query.allowCrossCompany(true);
query.addCompanyRange(strFmt(_selectableDataArea));

This was all related to the cross company query.

In the next post i will show you that after selecting the value from the lookup using the cross query how can we insert data into the table without any error.

Thanks

Muhammad Zahid.