Saturday, November 14, 2009

Deciding on Reporting Architecture (SSRS + Dynamics AX 2009) for a new Implementation

A few days ago, we were brainstorming on the reporting architecture for a new implementation.

We had the following options on the table:


 
1. SSRS fetching data through EP

Pros: 
  •  Ax Security (Configuration key, Security key etc.) set at table levels can be leveraged 
  •  No bypass of Business Logic as the communication is through AOS
  •  Leverage data methods in Reports  
Cons:
  • Tight integration of Reporting IDE with AOT
  • AX Resource need to spend time learning SSRS
  • Additional components such as EP and Role Centers needs to be configured

2. SSRS fetching data from Ax Database using Stored Procedure

 Pros:


 
  • Ax team and SSRS team can simultaneously work on Data and Report design resp
  • Additional component such as EP does not have to be installed 
  • It provides an option of writing logic inside Ax or in SQL store procedure
  • Stored Procedures provide faster access to data
  • Reports can be loosely coupled and extendable say tomorrow if you want to extract data from another data source say for that matter SAP, you need to just write one more SP inorder to do that

 

 Cons:
  •         Internal AX Security is bypassed as SP directly access the data
  •         In case of an upgrade, the metadata or the field names used in SP needs to be modified if they change    

3. AX Client

         Client was not interested in using AX thick client as it will be tedious job to install AX Client on each PC just for reports purpose and then tomorrow if the client is upgraded, then again the setup has to be done on each PC. Client preferred web based UI.

 

So, our vote was for the second option as it's loosely coupled and provides flexibility to have multiple datasources

Friday, November 13, 2009

Error in var.aod file Error Code 50109 The check digit read in data is illegal

I came across this weird error as I was refershing a pre-prod evnironment with prod's aod and label files. There was no error at the time of starting of the AOS Service. But, when I imported a Project (.xpo) into the Pre-Prod during the process of import, this error came. See the screenshot below.



Resolution:

Initially, I tried restarting the AOS service, but it didn't help. Soon, without wasting much time and effort, I stopped the service, deleted the axapd.aoi file (this is the index file which AX builds everytime when it starts up, if the file is present it won't build, else it will create a new one.) I guess this file might have some old definitions due to which I was getting this error. After deleting the file and restarting the AOS Service made this error disappear.








Thursday, November 5, 2009

ERP Blog

Got this link from the web, a nice read on ERP as a whole

http://www.erpsoftwareblog.com/

Wednesday, November 4, 2009

Exploring Bindata API in X++

Recently, I had a requirerement in one of my project to save some html data in a file. I have previously worked with Ascii and other File related Classes.

This time, as I was exploring within the AX metadata, I found this class called Bindata. It's sort of easy and very fast when it comes to save some data to a file using BinData. Here's a job which shows Bindata Class in action.

The job simply builds a html string and saves it to file using Bindata class.


Thursday, October 29, 2009

Tip: How to export/import from SysLastValue table

Recently, I was troubleshooting an issue related to user settings. i.e. There was a requirement to migrate the user settings from one environment to another.

As we all know, User related setups for queries, forms, reports etc are stored in SysLastValue table. This is a system table and can't be accessed directly through AOT.

Solution:

NOTE: PLEASE BACK UP YOUR SYSLASTVALUE TABLE BEFORE YOU ATTEMPT THE BELOW STEPS AND TRY TO VALIDATE THE STEPS FIRST IN A TEST/SANDBOX ENVIRONMENT

1. Created a definition Group for SysLastValue table







2. Filter only for SysLastValue table






3. Set up the filter criteria For export in our case we have to do for one user















4. Note that at this point when we do the export, the .dat and .def file which is generated won't be having any data in it. This is becoz by default the System tables are not included in the Standard Export/Import Wizard of AX.

We need to do a small code change inorder to achieve this, Go to AOT > Classes > SysDataExpImp





















5. Modify the candoTable method inorder to comment out the code which does the system table check for SysLastValue as shown below














6. Now, once again do the export and there you go..

Initially, I tried to do the SQL way, but figured out that it doesn't work and moreover SQL is not the correct way as we can miss out on Recids.

Wednesday, October 14, 2009

New website on Dynamics AX

http://www.msdynamicswire.com/?page=dynamicsAX

Microsoft Dynamics AX acquires IP for 4 industry solutions

http://www.microsoft.com/presspass/press/2009/sep09/09-22ERPIndustryPR.mspx

http://blog.softwareinsider.org/2009/09/22/news-analysis-microsoft-dynamics-ax-acquires-ip-for-three-industry-solutions/