Sunday, September 25, 2016

AX 7 Modules Architecture and development environment

Ax 7 Development Environment

Ax 7 server

Ax 7 Modules

Tuesday, September 20, 2016

How to restrict auto filter due to dynamic link in axapta form

If you have created a Form and it is automatically filtering your Datasource because of the Dynalinks which is created automatically and dynamically,To solve that issue you can use below code.

 Test_DS.query().dataSourceNo(1).clearDynalinks();  


You can call code on init method of form.

Other way you can use below.
 QueryBuildDatasource qbds;  
 ;  
 qbds = this.query().dataSourceTable(tablenum(MyTableName));  
 qbds.clearDynalinks();  

Thursday, September 15, 2016

AX 7 Certification exam list

Following are Microsoft dynamics AX 7 or rainier Certification exam list.

1.Trade & Logistics Certification Exam MB6-892
2.Financials Certification Exam MB6-893
3.Development Certification Exam MB6-890

If you want to get training center then you can search on google for karROX Technologies Limited

You can get details.

Thursday, September 8, 2016

Failed to create session in Axapta 2012 for user client

If you are getting following error on client opening

"Failed to create a session; confirm that the user has the proper privileges to log on to Microsoft Dynamics"


The solution  of above error is to uncheck a checkbox in Options at

Go to on file menu item -->Tools --> Options-- > Development --> General --> Execute business operations in CIL

Also check whether user is enable in ax or added if not then you need to import user from domain.

Wednesday, August 31, 2016

Business connector error On EP page Deployment in Axapta

Error Description:

While deploying EP page form Ax AOT getting business connector error.

Error  “The Web Part page  was not created correctly on the site. No .NET Business Connector session could be found.”

 Session Release for Microsoft Dynamics failed.  
 No .NET Business Connector session could be found.  
 Microsoft.Dynamics.Framework.BusinessConnector.Session.Exceptions.NoKernelSessionException  
   at Microsoft.Dynamics.Framework.BusinessConnector.Session.DynamicsSession.get_AxaptaAdapter()  
   at Microsoft.Dynamics.Framework.Portal.AxWebSession.WebSessionClientRemove()  
   at Microsoft.Dynamics.Framework.BusinessConnector.Session.DynamicsSession.Release(ICacheContext context)  
 Session log on for Microsoft Dynamics failed.  
 Dynamics Adapter LogonAs failed.  
 Microsoft.Dynamics.Framework.BusinessConnector.Session.Exceptions.FatalSessionException  
   at Microsoft.Dynamics.Framework.BusinessConnector.Session.DynamicsSession.HandleException(String message, Exception exception, HandleExceptionCallback callback)  
   at Microsoft.Dynamics.Framework.BusinessConnector.Session.DynamicsAdapter.LogonAs(String user, String domain, NetworkCredential bcProxyCredentials, String company, String language, String objectServer, String configuration)  
   at Microsoft.Dynamics.Framework.Portal.AxWebSession.OnLogon(IAxaptaAdapter axaptaAdapter)  
   at Microsoft.Dynamics.Framework.Portal.AxSharepointWebSession.OnLogon(IAxaptaAdapter axaptaAdapter)  
   at Microsoft.Dynamics.Framework.BusinessConnector.Session.DynamicsSession.Init(ICacheContext context)  
 Microsoft.Dynamics.BusinessConnectorNet.LogonFailedException  
   at Microsoft.Dynamics.BusinessConnectorNet.Axapta.Logon(BC_PROXY_ACCOUNT_INFO* pBCProxyAccountInfo, String company, String language, String objectServer, String configuration)  
   at Microsoft.Dynamics.BusinessConnectorNet.Axapta.LogonUsingBCProxyAccount(_SEC_WINNT_AUTH_IDENTITY_W* pImpersonatedUserAccount, NetworkCredential bcProxyCredentials, String company, String language, String objectServer, String configuration)  
   at Microsoft.Dynamics.BusinessConnectorNet.Axapta.LogonAs(String user, String domain, NetworkCredential bcProxyCredentials, String company, String language, String objectServer, String configuration)  
   at Microsoft.Dynamics.Framework.BusinessConnector.Session.DynamicsAdapter.LogonAs(String user, String domain, NetworkCredential bcProxyCredentials, String company, String language, String objectServer, String configuration)  

Solution:
1.First thing to check is whether the business connector on your IIS machine is set up and pointing to the correct AOS.
2.Check Ax Client configuration for business connection .
3. Open Dynamics AX, Go to AOT->Classes->SysDevelopmentProxy and compile it .

4 Verify the following task.
The Business Connector proxy exists in Active Directory.
The Business Connector is a member of the dbcreator role in SQL Server.
The Business Connector proxy is a member of the Performance Monitor Users,
Power Users, IIS_WPG, and WSS_WPG Windows groups.
The IIS application pool identity for your SharePoint 80 site uses the
Business Connector proxy (see “Configure IIS for SharePoint Services and Enterprise portal”
in this white paper).
You are a member of the Admin group in Microsoft Dynamics AX and a member
of the Administrators group on the server.

5.Full compile AOT in last

6.Check for domain setting for bcproxy account.
its should be never expired password type account.

7. Install .net Framework 2.0,3.5,4.0 etc.

8.Uncheck  the Anonymous user of "IIS \ Directory Security \ Authentication and access control
"Add the BCProxy user to the local Administration group on the IIS server.
Then restart IIS and AX.


Monday, August 29, 2016

Split Email by delimiter in axapta

To Split Email by delimiter in axapta you can try below code

  #define.EmailDelimiter(",")  
   List      list;  
   str       _emailIdList;  
   container    sendList;  
   ListIterator  iterator;  
   boolean     valid;  
   ;  
   _emailIdList = "test@gmail.com,test1@gmail.com,test2@gmail.com,test3@gmail.com,test4@gmail.com";  
   valid = true;  
   list = new List(Types::String);  
   list = Global::strSplit(_emailIdList, #EmailDelimiter);  
   iterator = new ListIterator(list);  
   while(iterator.more())  
   {  
     info(strfmt("%1",iterator.value()));  
     sendList += iterator.value();  
     iterator.next();  
   }  

Strsplit used to split the email list you can try and special character to check it.

Sunday, August 28, 2016

split datetime in hour minutes second in different timezone in ax 2012

This is the example to  split datetime in hour minutes second in different timezone in ax 2012.


 TransDateTime  myDateTime=DateTimeUtil::applyTimeZoneOffset(DateTimeUtil::getSystemDateTime(),Timezone::GMTPLUS0300KUWAIT_RIYADH);  
   int       hours;  
   int       minutes;  
   int       seconds;  
   ;  
   info(datetime2str(myDateTime));  
   hours=DateTimeUtil::hour(myDateTime);  
   minutes=DateTimeUtil::minute(myDateTime);  
   seconds=DateTimeUtil::second(myDateTime);  
   info(strfmt('Hours %1 - Minutes %2 - Seconds %3',int2str(hours),int2str(minutes),int2str(seconds)));  

To get different timezone like GMT,India etc you can get from below screen.

timezone

Tuesday, August 9, 2016

How to get Enum value in String for Query base view in Axapta

To get Enum value in String for Query base view in Axapta 2012 you can try below code sample for your method.

Here example will return label enum value you can use for name also.

 public static server str ItemType()  
 {  
   tableName viewName = identifierStr(ViewName);  
   DictEnum dictEnum = new DictEnum(enumNum(ItemType));  
   Map enumValues = new Map(Types::String, Types::String);  
   int n;  
   for (n = 0; n < dictEnum.values(); n++)  
   {  
   enumValues.insert(int2str(dictEnum.index2Value(n)),SysComputedColumn::returnLiteral(dictEnum.index2Label(n)));  
   }  
   return SysComputedColumn::switch( SysComputedColumn::returnField(viewName,  
   identifierStr(InventTable_1),  
   fieldStr(InventTable, ItemType)),  
   enumValues, SysComputedColumn::returnLiteral(dictEnum.index2Symbol(n)));  
 }  

Sunday, July 10, 2016

Purchase Order Invoice posting common Error in Ax 2012


Some times we face Purchase invoice creation and posting common error like blank invoice line,invoice no etc and its happen due to closing invoice form without invoicing .

To resolve that issue you need to do below steps.

Go To.
Path -> account payable -> Vendor invoice -> Pending vendor invoice


Select the vendor invoice then you can fill the information and try to post but if there is  incomplete data in invoice form and not posted than it can be stored in invoice history.

Path of invoice history form is as below.

Path -> account payable -> inquiries ->Invoice history and matching details

Filter the purchase order and delete it than  you can open vendor invoice and post without any problem.

Friday, July 8, 2016

Ax 2012 purchase order posting classes tables

Following are the Ax 2012 purchase order posting class on different stages of postings.

1. Purchase order confirmation- Class name -purchpurchorderjouranlcreate 

2.Purchase order reciptlist-Class name -purchreciptlistjournalpost

3. Purchase order packing slip or GRN-Class name -purchpackingslipjournalpost

4. Purchase order invoice-Class name -purchinvoicejournalpost

Above are posting class will hit while posting your purchase order with confirmation,receipt list,packing,invoice .

If you are facing any issue then you can put debug on required methods on above classes as per posting.

1.Tables Hits to store final Purchase order confirmation
 Purchpurchaseorderjour,purchpurchase order trans

2.Tables Hits to store final Purchase order GRN
Vendpackingslipjour and Vendpackingsliptrans

3.Tables Hits to store final Purchase order Invoice
Vendinvoicejour and vendInvoiceTrans

Wednesday, June 1, 2016

Insert Label by Code in Axapta in any language

To Insert Label by Code in Axapta in any language  you can try below code. This code will show you label code as output in message box.

 SysLabelEdit SysLabelEdit = new SysLabelEdit();  
   info(strFmt("%1", SysLabelEdit.labelInsert('En-US', 'Test Label', 'Test Label',
 SysLabelApplModule::None)));  

You can try this code to do label creation fast to save your time . I hope this really help you.