Increase MS Dynamics AX Performance with Intelligent Data Management Framework(IDMF)

Posted on

Friends,

This post is about my recent experience on how I went with optimizing the performance of MS Dynamics AX 2012 R3 by using Intelligent Data Management Framework tool. This tool is very useful for system administrators to optimize the performance of Microsoft Dynamics AX. The framework assesses the health of the Microsoft Dynamics AX application, analyzes current usage patterns, and assists in reducing database size.

This tools is very useful to analyze the database of MS Dynamics AX and maintains the optimal size of the database. The important features available in this tool are,

1)     Analysis Dashboard for Production Database

2)     Analysis Dashboard for Archive Database

3)     AX Database Performance Dashboard

4)     AX Health check Analysis

5)     Index Management

6)     Index defragmentation

7)     Archive Data

8)     Restore Archive Data

9)     Purge/Delete Data

This tool is suggestible to the AX Customers whose AX Database is huge and the write and read operations of the tables are long. The Installation and Configuration of this tool is very user friendly and the Administration of this tool requires some technical knowledge on AX and SQL Databases. This tools boosts the AX performance and avoids nightmares for users and administrators…!!

 

capture

Import Item (InventTable) AX 2009 (not shown in FORM)

Posted on

Tips & Tricks for Dynamics AX

I wanted to import Items in the Items. When importing the InventTable I noticed the Items were present in the TABLE: InventTable, but not visible in the FORM: InventTable.

When reviewing some blogs, the answer is to import the following tables:

  • InventTable
  • InventItemLocation
  • Purch (InventTableModule)
  • Invent (InventTableModule)
  • Sales (InventTableModule)

The InventTableModule has one catch, for each item 3 lines should exist:

  • Sales order
  • Purchase order
  • Inventory

image

When these 3 lines don’t exist, the item won’t be displayed in the FORM.

Be sure when importing the items, the link with the InventDimId is correct. When the link in the InventItemLocation with the InventDimId is incorrect, the items won’t be displayed.

View original post

Time and Attendance Registration functionality of Microsoft Dynamics AX 2012

Posted on

Microsoft Dynamics 365 Blog

Hello Everyone,

I had been away from my blog since over a month time because of my work and long vacation. It feels nice again to write here and share knowledge with you all. We all thrive to learn new things always and so do I. Today, I decided to get my hands dirty on the new “Time and Attendance registration” functionality which is introduced in Microsoft Dynamics AX 2012 and share what I have learnt so far. Hope everyone finds this post useful.

Dynamics AX 2012 has been amazing with its all new exciting range of features. I found the Time and Attendance registration feature pretty useful and decent and I am sure Microsoft will make it more powerful in the coming versions. Let me first explain you what this functionality is and how it can benefit organizations.

Organizations of all sizes use Time and attendance systems to…

View original post 1,524 more words

Display Methods in Form Lookup’s in MS Dynamics AX 2012

Posted on Updated on

public static void mzkLookupStructure(FormControl ctrl, CaseDetailBase _caseDetailBase)
{
SysTableLookup sysTableLookup = SysTableLookup::newParameters(tableNum(BblSpecStruct),ctrl);
Query query = new Query();
QueryBuildDataSource qbdsBblSpecStruct;
QueryBuildDataSource qbdsBblObjStruct;
BblSpecStruct bblSpecStruct = BblSpecStruct::findRecId(_caseDetailBase.EXDStructRecId);

qbdsBblSpecStruct = query.addDataSource(tableNum(BblSpecStruct));
qbdsBblSpecStruct.addRange(fieldNum(BblSpecStruct, SpecId)).value(queryValue(bblSpecStruct.SpecId));

qbdsBblObjStruct = qbdsBblSpecStruct.addDataSource(tableNum(BblObjStruct));

qbdsBblObjStruct.addLink(fieldNum(BblSpecStruct, ObjectCde), fieldNum(BblObjStruct, ObjectCde));
qbdsBblObjStruct.addLink(fieldNum(BblSpecStruct, StructCde), fieldNum(BblObjStruct, StructCde));

//qbdsBblObjStruct.addRange(fieldNum(BblObjStruct, StructCdeHl)).value(queryValue(0));

qbdsBblObjStruct.addRange(fieldNum(BblObjStruct, StructCdeHl)).value(strFmt(‘((%1.%2 == “0”) || (%1.%2 == “”))’,
qbdsBblObjStruct.name(),
fieldId2name(tableNum(BblObjStruct), fieldNum(BblObjStruct, StructCdeHl))));

sysTableLookup.addLookupfield(fieldNum(BblSpecStruct, StructCde));
sysTableLookup.setLabel(“@EXD3953”);
sysTableLookup.addLookupMethod(tableMethodStr(BblSpecStruct, bblObjStructDescription));

sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup();
}

Preventing users from changing session date (AX 2012)

Posted on

What if you want to prevent users from going to File > Tools > Session date and time in Dynamics AX 2012 and changing the session date?

Usually, every user has access to the form, because the permission is included in System User role. If you go deeper, you’ll find SystemDate entry point in ClientEssentials privilege, which is included in SysServerAXBasicMaintain duty and this duty is assigned to System User role.

Therefore you can simply remove SystemDate entry point from ClientEssentials privilege and assign it only to the privilege/duty/role where you want it.

Error Handling in X++

Posted on

 There can be four main scenarios :

  • If you call X++ code – in that case you can use the simple try- catch blocks
  • If you call .NET code – use AifUtil::getClrErrorMessage();
  • If you call a DLL function – use WinAPI::getLastError() or   WinAPIServer::getLastError() and then format the message according to error code;
  • If you invoke a COM object – use COM.getError() to get a COMError object an retrieve the message via COMError.description().

If you directly call .NET/COM/DLL and try to get the error message from the infolog then you’ll get a “stub” message like “An error occurred when invoking CLR class”. But if you process an order then you most likely call X++ code so you can just call infolog.text().

Voucher do not balance as per date in MS Dynamics AX

Posted on

Error

The transactions on voucher V-00001 do not balance as per 4/11/2014. (accounting currency: -1111- reporting currency: -232)

Suggestions:

1.Exchange rate setup , number sequence of invoice voucher, currency rounding all are done correctly , but still this error exists

2.Define currency for each account..or go in currency setup and check currency and rounding up rules

3.Check with penny difference in GL

4.Check there is proper conversion exchange rate defined for reporting currencies.

5. Check Rounding of option of for primary and reporting currencies both.

6.Check all the posting accounts defined in Posting profiles

7.check COGS, Customer, issue, revenue accounts are mapped.

8.Check primary and reporting currency has proper exchange rates and rounding rules defined.

9.Try to increase the value in the penny difference and then post the sales invoice.

10. Make sure of proper
a) currency rounding rules
b) posting profile accounts and last i Run -> Generate Full CIL.

11. Check the customized codes, if any.

Drain users from an AOS – AX 2012

Posted on

Applies To: Microsoft Dynamics AX 2012 R2, Microsoft Dynamics AX 2012 Feature Pack, Microsoft Dynamics AX 2012

This topic describes how to close client sessions that are connected to an instance of Application Object Server (AOS) for Microsoft Dynamics AX. When you close client sessions without force, you are said to drain users. Administrators drain users from an AOS instance before they perform maintenance on the server or take it offline.

Important

The following procedure requires that you click the Reject new clients button in Microsoft Dynamics AX. After you click this button, you must not close your client. If you close your client before you click the Accept new clientsbutton, you cannot open a new client session unless you restart the AOS instance by using the Windows Services Management console, or unless you reset Status of the SysServerSessions table in Microsoft SQL Server  to a value of 1.

  1. Click System administration > Common > Users > Online users.
  2. On the Server instances tab, select the AOS instance that you want to perform maintenance on.
  3. Click Reject new clients.
  4. When you are prompted, click OK to stop the AOS instance from accepting new client connections.

    After 5 minutes, all users receive a message informing them that they must save their work, because the administrator is shutting down the AOS instance. No new client connections are accepted during this time. The server forces client sessions to close after they have been idle for 2 minutes. Client sessions for administrators are never closed. When the number of clients that are connected to the AOS instance is displayed as 0 (zero), you can perform maintenance on the server.

  5. After you have finished performing maintenance on the server, click Accept new clients or restart the AOS instance.