Interview Questions

Friday, April 25, 2014

Interview Questions for AX Technical Consultants

Technical:
1.       What’s new in Dynamics AX 2012
2.       OOPs concepts
3.       Definition of AOT elements
4.       Layers & their usage.
5.       Differences:
a.       AX 4.0 & AX 2009
b.      MorphX & Intellimorph
c.       RunBase & RunBaseBatch
d.      Element & this
e.      COM & .NET Business Connector
f.        Concurrent user & Named user
g.       Primary key & Foreign key
h.      Construct & New methods
i.         Normal, field fixed & related field fixed relations
j.        Table & View in AOT
k.       Auto design & Generated design in reports
l.         Business connector & External Connector
6.       Delete actions & its types
7.       Table groups & its types
8.       Creation of PO & SO thru code
9.       Flow of SSRS report generation in Dynamics AX-
AX menu item from rich client->Report viewer opens->Issues request to report server-> Report server connects Dynamics AX(.NET BC)->Fetches the data->Return to client
10.   AOS Load balancer concept/Clustering
11.   Dynamics AX security hierarchy
12.   AX 2009 Workflow configuration
13.   AIF in Dynamics AX 2009
14.   Web Services concept
15.   Version Control System in AX 2009
16.   Reverse Engineering tool
17.   MS Visio UML(Data & Object),ERD
18.   Unit test framework
19.   Visual Form & Report designer
20.   AX 2009 Debugger concepts
21.   Cross reference tool
22.   Document Management
23.   Print Management
24.   Types of joins in AX
25.   Containers and its functions
26.   Data Crawler
27.   Intrinsic functions
28.   Application Hierarchy Tree
29.   Optimistic Concurrency Control
30.   Concept of cubes & MDX queries in SQL.
31.   Integration from .NET
32.   Caching mechanism in AX
33.   Events on a form & report
34.   Purpose of following methods in AX
a.        Init(),run(),validatewrite(),write(),close(),canClose() etc.
35.   What is cloud computing? How it is configured in AX?
Data dictionary

1.What is an EDT, Base Enum, how can we use array elements of an EDT,
2.Definition and use of Maps, how AddressMap (with methods) is used in standard AX
3.What is the difference between Index and Index hint?
Utility and use of find method.
4.How many types of data validation methods are written on table level?
5.How many types of relations are available in Axapta, Explain each of them.
6.When the recid is generated, what is its utility, what are the different types of Table groups defined on table properties.
7.Difference between Primary & Cluster index.
8.How many kind of lookups can be made and how.
9.How can we utilize field groups in forms
10.How many types of Delete Actions are there in Standard Ax and define the use of each
11.If any record is created in table I want to fetch the date & time stamp, how will you do that
12.What is the function of super()
Classes

1. What is an abstract class, what is the utility of an abstract method
2. Multiple inheritance possible or not, if not how can we overcome that.
3. What is an interface, Why do we implement it
4. Do we need to write main method, give reasons
5. What is difference between new & construct method
6. What is the utilty of the RunOn property
7. What is main class used in batch process OR which class will you inherit to make a batch job
8. How can we make a batch job occur at regular interval
9. What is the main utility of classes in standard Ax
10. Which class is called when we create a SO/PO.
11. What are classes used to write query.
12. What is a static method, why do we make static methods and where can we write it.
13. When do we make methods private or protected.Forms
1. What is the basic structure of a form
2. Utility of init(), run(), wait() methods
3. What are different types of Link Types available in a form datasource, justify each of them
4. Properties of a form datasource
5. validateWrite() method can be written in form datasource as well as table level, when should we write it in form DS and when in table. Similar in case of write() method
6. How can we call table level methods from form DS (similar methods)
7. What is the difference between form init() & DS init()
8. When a form opens what are the sequential methods called.
9. Where is the best place to write code to perform filter in a form
10. What are the different types of menu items available, explain each of them
11. A action type menu item is attached to a form but in the drop down the menu item is not appearing, what could be the problem
Reports

1. What are the two most important methods
2. When do block the super() method of fetch
3. Can we make a report from wizard, if yes from where
4. What is a Programmable Section, how we use it in reports
5. What is the difference between Auto Design Spec & Generated Design
6. How can we sort the DS, what facility we can get in by placing fields in Ranges
7. What is the role of executeSection
8. What are Queries, how do we use them
Menu Items

1. What is the use of Parameter, Enum TypeParameter/Enum Parameter properties of display
2. Why do we provide Configuration key & Security key
3. Normally what do we attach in Output
4. Normally what do we attach in Action
General Questions

1. What is difference between select & select firstonly statements
2. What are the keywords used to access data from "multiple companies" and "one company to another company".
3. How can we override a lookup
4. How do the following methods work in a form DS.
ds.refresh(), ds.research(), ds.reread(), in what situation we should these methods
5. On closing a form name the methods which are invoked
6. What are security key/configuration keys, how do we use it in Ax
7. How can we provide user level/user group level security
8. What is a virtual company
9. What is Visual MorphXplorer, what do we do with that?(Reverse engineering tool has replaced Visual MorphXplorer)
10. What is the function of Application Hierarchy Tree
11. If you want to monitor the database activity, where can you get that
12. Where can we find the Label log and what is its utility
13. What are the tools you will use to upgrade any object
14. What is the difference between display() and edit() methods, how do we use each
15. What is the use of System Documentation/Application Developer Documentation/Application Documentation
Few More Questions on DAX

1.What are the classes, Tables, Forms and Methods used to post the sales orders.
2. What are the classes, Tables, Forms and Methods used to post the purchase orders.
3. What are the classes, Tables, Forms and Methods used to post the Ledgers.
4. What are the classes, Tables, Forms and Methods used to post the Inventory.
5. What is the base class to send the on-boad E-mailing.
6. What are the storage Dimensions?
7. What are the Item Dimensions?
8. What is the difference between RunBase and RunBaseBatch?
9. How do you create a NumberSequence for existing Module and also fro new Module.
10.What is the difference between Insert and doinsert.
11.What is the Runbase Stack?

Interview Question For AX Technical Consultant

Interview Questions for ms dynamics :


1. Major customization on forms, tables (That you have faced)

2. What is cluster installation?

3. Table collections?

4. Steps in creating number sequence?

5. Any module you are good at.

6. Collection classes

7. Tables in inventory

8. If you manipulate anything which layer would it affect?

9. Steps in data migration.

10. How to add a lookup in a form

11. What is temporary table and in which context is it used?

12. What are the components in reports?

13. How many types of classes are there?

14. RunBase framework and runbase classes

15. Development tools

16. Communication tools

17. Difference between auto generated specs and generated design specs

18. Display and edit method.

19. Can you say few best practises in ax.

20. Elements in AOT.

21. Can you have graphical representation of ssrs?

22. Steps for ssrs.

23. Steps in ssas.

24. What is the difference between sql queries and dynamics queries.

25. What is the difference between x++ and c#?

26. Installation steps in ax.

27. Difference between doupdate and updates

28. Different delete actions

29. Active, Passive, Delayed joins

30. What can’t you store in containers

31. Difference between arrays and containers

32. Logic for converting string to uppercase

33. Override methods in tables, forms

34. What is super() used for?

35. What is init method?

36. What are the sequence of methods while running a report?

37. What is EDT?

38. What is JumpRef()?

39. About form/ reports/ tables methods.

40. D.B Abstract and final class.

41. D.B ValidateWrite and write.

42. What is dialoge class.

43. Pack and Unpack method.

44. Number of elements in enum.

45. Architecture of MS dynamics AX.

46. Tell us about AIF(MSMQ).

47. What is perspectives?

48. How to design a form in AX using X++?

49. What is report builder?

50. What is Index, properties in Index and types of Index?

51. Any knowledge about Share Point.

52. Concept of Different Layer in AX.

53. difference between temporary table and container?

54. difference between bound and unbound controls?

55. what are maps and which method we use in maps?

56. classes in AIF?

57. how to create runtime query?

58. difference between pass by reference and pass by value?

59. types of relations(normal,field fixed,related field fixed)?

60. what are delete actions?

61. how to access tables of different companies(crosscompany)?

62. What is optimistic concurrency control?

63. What are transactions?

64. how to lock a transactions?

65. what are macros?

66. what is the default link type property?

67. difference between validate write and validate field?

68. Do we have validate write and validate field in form level?

69. what are the methods required for posting a purchase order?

70. how to give null in select query?

How to colorize grid in in ax for normal form

How to color records in a grid is a common user request that can be found on the web.

Actually, this is quite simple to achieve in Ax, with only a small modification. The trick is to override the displayOption method on the form's datasource.
Non-overriden, it looks like this:

public void displayOption(Common _record, FormRowDisplayOption _options)

super(_record, _options);
}

By using the options object, an object of class FormRowDisplayOption, you can set the background color.

_options.backColor(myColor);

You can use the record information from _record to set any background you want, where each row in the grid can have a different background color..

For that reason, it may be better to change it's type to the specific table used in the datasource.

Like this:

override displayoption method of form datasource :

public void displayOption(CustTable _CustTable,FormRowDisplayOption _options)
{ int myColor=WinApi::RGB2int(50,255,50);
;
if(_CustTable.Currency=='EUR')
_options.backColor(myColor);
super(_CustTable, _options);
}

In the example above, we color code our customers in the form CustTable. (Remember: Changes go in the methods of the form's datasource.) Customers with currency EUR get a green color.

Change Grid Color at certain condition for a form in AX 2012

Just add a displayOption method on your form datasource, it changes line color if some conditions are met.
public void displayOption(Common _record, FormRowDisplayOption _options)
{
    YourCurrentTable  YourCurrentTable = _record;
    YourOtherTable    YourOtherTable;
    ;
    select firstonly  YourOtherTable where YourOtherTable.yourOtherField ==  YourCurrentTable.yourCurrentField;

    if(YourOtherTable.yourOtherField)
        {
             _options.backColor(WinApi::RGB2int(50,255,50));
        }

    super(_record, _options);
}

Breakdown of a list page (Sales orders)

Breakdown of a list page (Sales orders)

List pages are a new concept in Ax2012. Enterprise Portal in Ax2009 had them to some extent but now they're used as the main entry point for a lot of functional areas in Ax, like customers, sales orders, etc. Generally they'll be displayed as a list (surprise!), with action buttons at the top, and related/child information displayed in so-called 'parts'.

There are few things to keep in mind when developing list page forms in Ax. This post aims to go through some of the key points. We'll start by looking at the sales order form (AOT name SalesTableListPage).

Overview




























Sales order list page

The name of this form is SalesTableListPage, and is broken down as follows:

  • Section 1 is the main list, implemented as a normal grid control.
  • Section 2 contains several Parts, like 'Related information'
  • Section 3 is an ActionPane, which contains button groups and buttons.
  • Section 4 is also a 'Part'. The reason it's down at the bottom of the page and not on the right-hand side like the other is that it's PartLocation property is set to Preview.

Also note some of the general properties of the form:

  • The FormTemplate property on the form is set to ListPage. Note that this adds special behavior and imposes restrictions on other properties within the form, such as not being able to add methods (see comment below).
  • The query SalesTableListPage is used as the primary datasource on the form. When a query is added as the datasource it will automatically add the associated tables to the form. This structure is then fixed - ie tables cannot be removed or their join properties modified.  
  • The InteractionClass property is set to SalesTableListPageInteraction. This is a controller class that handles the majority of form logic. This is in place of coding up logic directly on active/write/init methods, and is a key part of how list pages are structured.
A very nice feature of list pages is that they can be deployed to Enterprise Portal at pretty much the click of a button. This is the main reason that there is effectively no code attached directly to the form object - It all happens through the interaction classes and so can be shared between the rich client and web UI's. If you're interested, OpenERP does this with all it's forms - you structure it once, and it automatically deploys to a form and to the web (on Windows and Unix). This is an Ax blog though so I'll press on...


SysListPageInteractionBase


As mentioned, most if not all of the form logic for list pages is handled through an instance of SysListPageInteractionPageBase (selected via a form-property). The sales order form uses derived class SalesTableListPageInteraction. Some of the key methods you should know about include:

MethodDescription
initializingCalled when the form is initializing - Similar to the form init method
intializeQueryAlso called when the form is initializing - Similar to the datasource init method
selectionChangedCalled when the active record changes - Similar to the datasource active method.
setButtonEnabledShould be overridden to dynamically enable/disable buttons based on the current selection. This is called from the selectionChanged method.
setButtonVisibilityShould be overridden to show/hide buttons when the form first opens. This is used more to do a one-off layout adjustment based on system configuration/parameters, as well as the menu-item used to open the form. eg If you have a menu-item that opens a form based on status, you may want to hide the relevant 'status' field to reduce clutter.

Some of the key methods used in the list page interaction classes

These are just a handful - Have a look through SysListPageInteractionBase and other examples (like SalesTableListPageInteraction) to get a better idea of what's available.

You'll probably have realised that since we've now moved the logic off the form and into a separate class, we can now no longer access controls directly by name (using the AutoDeclaration property). This also applies to the datasources - Where we would've previously just referenced "SalesTable" to get the currently active sales order record, we now have to find another way.
It's a standard convention in Ax that controller classes obtain a reference to controls of interest when they're created. An example of this is the class LedgerJournalFormTrans. If you look at the class declaration you'll see member-variables that point to buttons and data controls, which are set when the class is instantiated. I've always found this a fairly tedious, if necessary, pattern - Fortunately the list page interaction classes provide helper functions for getting easier access to controls and data-context.
If you look at the setButtonSalesOrder method in SalesTableListPageInteraction (which is called form setButtonEnabled), you'll see the code:

protected void setButtonSalesOrder()
{
    this.listPage().actionPaneControlEnabled(formControlStr(SalesTableListPage, SalesCopyAllHeader), !salesTableInteractionHelper.parmReturnItem());
    this.listPage().actionPaneControlEnabled(formControlStr(SalesTableListPage, SalesCopyJournalHeader), !salesTableInteractionHelper.parmReturnItem());
}

Obtaining a reference to a form control from the interaction class

What's happening here is we're getting a reference to the current ListPage (representing the form), and from that a reference to the control, identified by name. To get the current record, you'll be following the pattern (from method currentSalesTable):

    return this.listPage().activeRecord(queryDataSourceStr(SalesTableListPage, SalesTable)) as SalesTable;

Obtaining current record from the interaction class
Again, this uses the listPage method to reference the form object itself, then uses the method activeRecord (accepting the datasource name) to return the currently selected/active record. activeRecord returns a generic record (instance of Common), so we need to cast it to the correct record type using the new 'as' keyword (familiar to you C# developers).

It would be a good idea to create wrapper methods for all of the record types you'll be referencing in the interaction handler. It's a shame we've lost the ability to reference the datasource directly, but it's a trade-off for getting one-click deployment to the web.

Info parts and context - Latest sales orders

The 'related information' boxes use InfoParts to display fact-boxes and preview information. In the sales order form this includes general customer information for the current order, as well as a summary of the lines.

Let's have a closer look at the "Latest sales orders" part, and how it's attached to the form.



The Parts section of the form contains a reference to the menu item SalesLatestOrdersPart, which in-turn points to InfoPartSalesLatestOrdersInfoPart, as follows:

Referencing a part on a form - Object links
There are a lot of places in Ax2012 where we have to reference things indirectly through menu-items where a direct reference to the underlying object would probably do. In my opinion this makes things unnecessarily difficult to maintain - Same complaint for setting up new workflow types. I think the main reason is because the new security model is geared more towards setting privileges based on menu-items, but it still feels like overkill. 
The context of the main form is passed through to the part via the Datasource property and optionally the DataSourceRelation property on the form part reference. In this instance, the datasource is set to SalesTable, and the DataSourceRelation is set to EDT.SalesTable.CustAccount. What this does is take the current sales order record, pick up the CustAccount field (order account), and use that as the primary filter on the underlying query/table in the part (SalesLatestOrdersPart/CustTable).

The options available to you for DataSourceRelation are determined by finding compatible relations between the selected DataSource, and the primary table that is used in the part query. In this case, it finds the following relationships:

  • SalesTable.InvoiceCustomer - Relation InvoiceCustomer defined on SalesTable
  • SalesTable.OrderCustomer - Relation OrderCustomer defined on SalesTable
  • EDT.SalesTable.CustAccount - Relation defined on extended data type CustAccount, used by field SalesTable.CustAccount.
  • EDT.SalesTable.InvoiceAccount - Relation defined on extended data type CustAccount, used by field SalesTable.InvoiceAccount

Info parts and context - Preview pane (Sales lines)


The preview pane at the bottom works in a similar way but has a couple of differences worth noting:

  • The PartLocation property is set to PreviewPane. This positions the part at the bottom of the page. The default setting of 'Auto' aligns it on the right. NB There is a deliberate convention for laying out list pages - The idea is to keep them all consistent across both the rich client and web.
  • The DataSourceRelation is set to EDT.SalesTable.SalesID. The query used on the preview part (SalesTableListPagePreviewPane) uses SalesTable as the primary datasource, and joins to SalesLine. Setting the datasource relation to SalesID passes through the current sales order number which filters the part context automatically.

In addition, if you look at the layout section of the part (SalesTableListPagePreviewPane), you'll see two sections:
  • SalesTable shows basic order header information.
  • SalesLine shows the line details as a grid. Note the property 'Repeating' is set to true - This displays all matching records in grid form. I think this one could have been named more intuitively!


Cue groups and context - Related customer information


The related information section is similar in appearance to the InfoPart references, but actually points to a cue group, as follows (NB this diagram flows all the way through to the resulting form specified on the cue CustUnpaidInvoices, which is contained within Cue group CustRelatedInfo).



Since the datasource on the part reference is set to SalesTable, this is passed all the way through to the resulting form query (defined on CustOpenInvoicesListPage). This filters correctly because the main datasource of the cue (CustTransOpen) has a relation against SalesTable, based on the account number.
In my opinion, this is not a good design choice. It works, but logically CustTransOpen does not relate to SalesTable by account number alone. It looks like this has been added in to satisfy the cue relations, even though it's not strictly correct.
 I think this is another area that is over-burdened with multiple relationships between objects through menu-items, and possibly a source of confusion when developing and maintaining cue references on forms. At this point I would probably lean towards using FormParts over cue groups for form layouts. As an example, the 'Open sales orders' cue seems to incorrectly filter on the currently selected order, making it a bit pointless. This looks like a side-effect of having to pass through too many objects and layers to propagate the context.

Modifying initial query through menu items


List pages can also be filtered automatically via properties on the menu-items. The form SalesTableListPage uses the query SalesTableListPage. The menu-item SalesTableListPage (ie "All sales orders") points to that form.

If you look at menu item SalesTableListPageJournal (ie "Sales orders of type journal"), you'll see that in addition it specifies query SalesTableListPageJournal. That query bases itself on the original query (SalesTableListPage) using the Composite query pattern, but specifies an additional range on the SalesType. This causes the list page to use that query instead of the default, and provides automatic filtering.

This is quite a handy way of doing providing different entry-points for similar views. In previous versions you would most likely have passed a parameter in via the menu item and updated the query in the datasource or form init methods.
Keep in mind that there are limitations when using Composite queries, like not being able to add additional joined tables. However you could get around this by updating the query in the initializeQuery method on the list page interaction class. 

Hopefully this post helps people get an idea of the new 'list page' structure. Feel free to comment or leave questions.

How to set up Production module in AX2009

Setting up Production

The production module is a subsidiary module of Inventory. It tracks the production process of manufactured items. The Inventory items and Bill of materials are set up in the Inventory module. Calendars, working time templates, work centers, and employees are set up in Basic module.
Pre-requisites:
  • Administration module
  • Basic module
  • General ledger
  • Inventory
  • Vendors created in Account payable module if they are going to be used as Work centers (Subcontractors)

PRODUCTION TERMINOLOGY


BOM: A Bill of material is an item made up of other items. A BOM’s cost is derived from its components and the cost of producing the item. When production is complete, a BOM is a “finished good” that can be sold. The price of the BOM can be manually assigned or calculated by marking up the costs incurred in making it. Bill of materials can be simple and not require any operational costs or complex and require detailed production processes.
Simple BOM: Lamp – Assembly of a lamp & lamp shade
Complex BOM: Car – Made up of hundreds of components and BOM’s. It is possible to have BOM’s within a BOM. This is usually referred to as a sub-assembly or sub-BOM. When a Bill of material has several layers of BOM’s nested within it, it is referred to as having multiple layers. (Example of multi-layer BOM: Carburetor BOM within Engine BOM within car BOM.)
WIP: Work in Process. If costs are posted during the production cycle, they are posted to “Work in Process” accounts in the general ledger. When the production process is completed, the “finished good” inventory account is posted with the total cost of the production and the Work in process accounts are offset. If not using WIP, costs are not posted until the production is completed. This also means that the raw materials’ quantity-on-hand is not reduced until the production is complete.
Operation: A step in the production process. Examples: cutting, mixing, painting, assembly
Work center: The machine, persons, tools, or vendors used to perform the operation. Used for determining capacity when scheduling. Examples: Press machine, Assembly workers, Paint sprayer
Route: The sequence and length of time for operations that produce a Bill of material item. If each item is unique, there might be a route per inventory item; if not, several items can be attached to the same route.
Item consumption: Transferring the cost of the BOM components, also known as raw materials, to the production order and/or WIP accounts. The quantity-on-hand of the component items is reduced. Item consumption can be done automatically in Axapta or manually by entering a picking list journal. The item consumption can occur during the production process (WIP) or when the finished good is completed.
Route consumption: Calculating the cost of a production operation and transferring that cost to the production order and/or WIP Accounts. The cost of operation is made up of labor, tools, machine costs, vendor costs, and overhead. When an operation in the production process is performed, costs are generated. These costs are referred to as consumption. Consumption can be posted automatically in Axapta or manually by entering a route card or job card journal. Hours or quantity can be used to calculate the route consumption. See example of each below:
Example #1: Route consumption based on hourly cost.
Operation: Painting
Work center: Paint sprayer with 1 person running the sprayer.
Costs: $10/hr for 1person,
$0.32/hr for the cost of sprayer (Purchased for $2000 with an estimated life of 3 years. Usage of sprayer estimated to be 40hrs/week)
$0.80 overhead (Calculated based on utilities, rent, etc)
Est. Cost per hour =$11.12
Example #2: Route consumption based on quantity produced
Operation: Assembly
Work center: Assembly workers
Costs: $2 per item assembled per worker (Piecework)
Est. Cost per unit = $2

Production Overview


Steps for processing a Production Order:
1. Creation: An order can be created manually or generated automatically from a Sales order or Master planning schedule.
2. Estimation: Calculates material and (labor) route consumption. Creates inventory transactions (Issue transaction for raw materials with status on-order and Receipt transactions for the BOM being created with status ordered). Creates purchase orders and sub-productions if needed for the production order. Can reserve items (depends on parameter setting), and calculate the price of the finished good (depends on parameter setting).
3. Scheduling: There are two types of scheduling, Operations and Job scheduling.
· Operations scheduling assigns start and end dates to production orders, assigns cost center groups if attached to route operations, and provides a rough planning outline.
· Job scheduling provides a detailed planning outline. Each operation is broken down into jobs with specific dates, times, and work centers. If finite capacity is used, jobs are assigned based on availability. The schedule is outlined in a Gantt chart that can be manipulated.
4. Releasing to production: Production order documents such as the job card, route card, and route job can be printed. The status of the order changes to indicate that production can begin.
5. Starting: Once a production order is started, costs can be posted against the order. Estimated Material and route costs can automatically be allocated to the order when it is started. This is known as “pre-flushing” or “Auto-consumption”. Material can be manually allocated to the order by creating picking list journals. Labor and other route costs can be manually allocated to the order by creating a route card journal if using operations scheduling or by creating a job card journal if using job scheduling.
6. Reporting-as-finished: When a production order is reported-as-finished, the quantity of the finished good completed is updated in the inventory module. If using “Work in Process” accounting, a ledger journal is made to reduce the “WIP” accounts and increase the inventory of the finished good. Standard cost from the item form is used. When a production order is cost calculated, the actual cost of the production is posted and the posting that occurs during reporting-as-finished is reversed. If the material and labor costs associated with the production are not already allocated through a journal or pre-flushing, they can be automatically allocated by “back flushing”. If the production order is complete, it can be marked “End job” to change the remaining status to “Costing”; otherwise it is left open to report additional quantities produced.
7. Cost calculating: The final actual costs of a production run are calculated on the quantity that was produced. All of the previously posted estimated costs for material, labor, and the overhead are reversed and replaced with the actual costs of production. If costing is marked as “End job” the production order is changed to a status of “Ended” and no further costs can be posted against the order. An order can be “reported-as-finished” when costing, if that step is not already completed.
8. Ending: If a production order has a status of “Ended” no costs can be posted to it. The status can be changed by checking the End job box when cost calculating the production order. This status prevents any additional costs from being inadvertently posted to a completed production order.

Setup Check List

This section provides an overview, in the form of a checklist, of all the setup for the Production module. The subsequent sections of this manual provide the details of each of these setup options. The required setup is for basic production capabilities.
REQUIRED SETUP –  Required to operate Dynamics AX in a typical U.S. installation
OPTIONAL SETUP – Not required by Dynamics AX; but may be needed to perform desired business functions
Required setup
  • Working time templates Define the time available daily for production scheduling. (Basic module)
  • Calendar Define the days of the year available for production scheduling. (Basic module)
  • Work center groups Define the apparatus used for capacity planning in the production process. (Basic module) If general ledger postings are based on the work center, then ledger accounts must be specified.
  • Journal names Identify the transaction journals to be used in the production module
  • Cost categories Define the labor and overhead cost per hour or per unit associated with production
  • Routing groups Used to determine default settings for costing and pricing route operations
  • Operations Define each step in the production process
  • Parameters Define default data and basic settings for the production module
OPTIONAL setup
  • Production groups Used to determine ledger accounts for posting or to group orders for reporting
  • Production pools Group production orders for processing, deleting, or reporting
  • Properties Define characteristics of items that suggest they be produced together to reduce setup time
  • Task groups Define alternate work centers used if the suggested work center is at full capacity
We have a very detailed document to guide our customer how to set up the production module as well as the required set up in other modules. Please feel free to send us an email to request it.

Thursday, April 24, 2014

How to Add a Financial Dimension in AX 2012

The recent release of Microsoft Dynamics AX 2012 brought more than 1,000 new features and improvements across its core enterprise resource planning (ERP) and industry-specific capabilities, many of which we have already covered before.
This blog is going to look at the new way of maintaining Financial Dimensions in AX 2012. Financial Dimensions are a cornerstone of Dynamic AX 2012's ability to provide accurate analysis reports, summaries and key performance indicators (KPIs). Financial dimensions are not new to Microsoft Dynamics AX 2012, but AX 2102 now supports an unlimited number, and their setup and maintenance has been greatly simplified.
Actually the 'Financial' part of the name is a bit misleading, because financial dimensions are attached to every inventory transaction: production order and inventory transactions inherit their financial dimensions from the settings on the item master; purchase order line transactions inherit their financial dimensions from either the item or the vendor on the purchase order; and sales order line transactions inherit their financial dimensions from the item and/or the customer. You can even record financial dimensions on sales forecasts as an aid to forecast vs. sales analysis. Of course, financial dimensions are attached to every GL posting too. These codes attached to every inventory transaction are the key to effective summary and exception reporting of inventory holding and usage.
As stated above, Microsoft Dynamics AX 2012 now supports an unlimited number of financial dimensions - earlier versions supported three financial dimensions as standard, and additional dimensions (up to a maximum of 10) had to be purchased. In this respect Dynamics AX lagged a bit behind its sibling Dynamics NAV, but the new AX 2012 release leap-frogs ahead in functionality and provides a really impressive ability to define these important analysis codes in a very powerful but simple way
We’ll now take a look at how new financial dimension can be created and deployed.
We’ll use the example of creating a new financial dimension like ‘Product Group; which will be used to analyse inventory and sales.
First create the new code. Go to General Ledger > Setup > Financial dimensions > Financial dimensions and create a new financial dimension like:
When you create a new Financial dimension you’ll notice that the ‘Use values from’ can be set to <Custom dimension> as above, but also there is a long list of existing fields which may be used:
If you use an existing field, then you won’t have to create any values for your new financial dimension - the system will use the values already present in the database. It’s also worth noting that you cannot use any spaces, numbers, or symbols in the Dimension name field.
As above, if you’re going to use ‘Custom values’ for your new financial dimension the next step is to define the valid values which may be entered. Go to General ledger > Setup > Financial dimensions > Financial dimensions > Financial dimension values:
Using the previously created financial dimension, click on the ‘Financial dimension values’ button. Enter the values you want to use.
Now we just need to check which chart of accounts our current company is using. Go to General ledger > Setup > Ledger: 

Note the chart of account name, as you need this in the next step.
Now we are going to add our new financial dimension to chart of accounts. Go to General ledger > Setup > Chart of accounts > Chart of accounts:
Select the Chart of accounts shown in the ledger form.
Select the P&L Account structure.
Click on the Configure account structure button and the system opens the ‘Configure account structures’ form:
The form is showing the current set of financial dimensions. To add your new one click on the Edit button:

Click on ‘Add segment’:

Select your new ‘Financial dimension’:

Almost there! Click ‘Activate’ and ‘Yes’:



Close the forms.
Finally, check items and sales order and purchase orders and customers and vendors: