Wednesday, 29 July 2015

Sequence of methods in the FORM level in AX

This gives the information of method calls in the form level while
1. Opening the Form.
2. Creating/Updating/Deleting the record in the Form.
3. Closing the Form.
Sequence of Methods calls while opening the Form
Form --- init ()
Form --- Datasource --- init ()
Form --- run ()
Form --- Datasource --- execute Query ()
Form --- Datasource --- active ()

Sequence of Methods calls while closing the Form
Form --- canClose ()
Form --- close ()

Sequence of Methods calls while creating the record in the Form
Form --- Datasource --- create ()
Form --- Datasource --- initValue ()
Table --- initValue ()
Form --- Datasource --- active ()

Sequence of Method calls while saving the record in the Form
Form --- Datasource --- ValidateWrite ()
Table --- ValidateWrite ()
Form --- Datasource --- write ()
Table --- insert ()

Sequence of Method calls while deleting the record in the Form
Form --- Datasource --- validatedelete ()
Table --- validatedelete ()
Table --- delete ()
Form --- Datasource --- active ()

Sequence of Methods calls while modifying the fields in the Form
Table --- validateField ()
Table --- modifiedField ()

Tuesday, 28 July 2015

Code Profiler in Dynamics AX 2012

Code Profiler in Dynamics AX 2012


There is a very good feature called code profiler. The Code Profiler measures and records the execution of each line of code, the time taken by each line ,the Parent(caller) and the child of the each lines, all these are saved to database for review, also it has variety of options to review the recorded information
We can use this tool to find and remove the performance bottlenecks to improve the performance of whole application, also its useful to understand the flow of others code quickly

Click Tools > Code profiler to open the Code Profiler tool.

  • Navigate to the functionality that you want to test
  • To limit the results displayed, check the Trace depth enabled check box, and then type the number of levels that you want to be displayed in the results.
  • Click Start.
  • Use the functionality you want to test.
  • When testing is complete, click Stop.
  • The system now saves all logged data to the database. This might take quite some time because a database record is created for each executed line of code.
  • Write a description of your code profile in the Summary dialog.
  • Click OK.
  • The Profiler runs form opens. This enables you to view data collected by the profiler 
  • You can control the code profiler directly from your X++ code. For this purpose there are two macros:
  1. #Profilebegin()
  2. #ProfileEnd
These two macros have to be in the same level in a method.


Go here to learn more about code profiler http://msdn.microsoft.com/en-US/library/aa847037.aspx
use Code Profiler programmatically http://msdn.microsoft.com/en-US/library/aa863679.aspx

Happy Daxing!!

Monday, 27 July 2015

AX 7 (Code Name Rainier) IDE

Interesting conversation on AX 7

https://community.dynamics.com/ax/f/33/t/151710

7 New Features Expected for Dynamics AX 7

Microsoft Dynamics AX is the premiere enterprise resource planning (ERP) package included in the Dynamics suite from Microsoft. The latest version of Microsoft Dynamics AX 7 (code named “Dynamics AX 7 Rainier”) has an expected release of late 2015.
Microsoft has been slowly leaking information about the new product, presenting the first live preview at Convergence 2015. While it is not yet known exactly the extent to which new features will be included in this upgrade, we can expect a big upgrade with exciting changes that will affect deployment, interfaces and possibly even licensing.
Here is a preview of "7 for 7" - 7 key features that are expected to appear in Dynamics AX 7:
1) Delivery through the Cloud
Microsoft has announced that Dynamics AX 7 is going to be a cloud-first application. This follows a trend that we have seen amongst other Microsoft flagship products. The latest update take full advantage of the Microsoft Azure cloud platform, Windows Server and the Microsoft Cloud OS. In fact, Microsoft has said that AX 7 2015 will initially launch on Azure only and won’t appear for on-premise deployments until 6 months later.
Moving Dynamics onto Azure and into the cloud provides a wider range of benefits. It will be easier to integrate the system with other cloud-based Microsoft products like Office 365. It also makes it easier to use Dynamics globally across multiple devices. Cloud deployment can also make Dynamics more accessible to businesses without an extensive information technology infrastructure.
2) A Focus on Mobile Access
It is also expected that Dynamics AX 7 is going to be available across a wide range of mobile devices, making it operational on nearly any modern smartphone or tablet. This becomes increasingly necessary as the business world becomes hooked on cloud and wants all operations and business data to be available at any time and from any location. Having access to real-time data from Dynamics through a mobile device will provide employees and business owners with better information to make informed decisions on the go, without having to get back to an office or a main workstation.
3) Best-in-Class Lifecycle Services Management
Expect to see best-in-class lifecycle services management with Dynamics AX 7. It is predicted that Microsoft is going to maintain and expand on the Lifecycle Services that are already in place. This type of management is available to anyone using the latest upgrade of Dynamics whether it is deployed on local systems or across the cloud. Best-in-class lifecycle services management means improving the reliability and quality of the Dynamics implementation used by any given business. It will also make rolling out new custom features less of a hassle. SaaSplaza is a member of the Microsoft LCS TAP program for AX7 and is providing technical input to match ourAX on Azure services with Microsoft LCS for the new AX version.
4) New Web-Based Client
Another change coming is that Dynamics AX 7 is will be accessible through a web-based client instead of a Windows desktop client. This means any shared in user will be able to access the Dynamics database through a basic web browser instead of needing to install customized applications on every system and device. Thus Web-based clients allow anyone in any location to access the different Dynamics modules. Having common web-based clients can improve productivity and facilitate business-wide collaboration on projects online regardless of location.
5) Streamlined HTML5 User Experience
The user experience in Dynamics AX 7 is based on the same framework used in Windows 8, and being improved upon in Windows 10. This interface uses the hypertext markup language version 5 (HTML 5) as a base. The HTML5 interface is designed to be lightweight and intuitive. It is context sensitive and the AX redesign is a dramatic departure from the normally bland windows and menus that have been found in previous versions of Dynamics AX. The new environment brings Dynamics in line with many other current Microsoft products. It will also make it easier to use Dynamics on mobile devices without a mouse or keyboard.
6) Incremental Updates Instead Of Version-ed Releases
Following the pattern that has been adopted by many other cloud-first software developers, Microsoft will end version-based releases of Dynamics similar to what was done with Office 365. Replacing the strict versioning system will be an approach based on the deployment platform. Each Dynamics platform will receive updates whenever necessary instead of re-releasing the entire software suite. This will make it easier to stay current since compatibility problems will no longer be an issue with incremental upgrades.
7) Subscription-Based Licensing
Another feature that is likely coming to Dynamics AX 7 is a more flexible licensing scheme based on subscriptions. The traditional Microsoft licensing model was sometimes cumbersome especially for businesses that had seasonal fluctuations in volume. Buying extra licenses that might never be used is impractical. The new model is more flexible allowing businesses to buy subscriptions to use Dynamics as needed and then cancel them later. Check out the current Microsoft Dynamics Subscription Licensing
More to Come!
The new features expected for Dynamics AX 7 is a look at the road-map into the future of Cloud-based ERP software. We are experiencing an explosion in changing technologies that take advantage of the cloud and mobile devices. It will be interesting to see how other companies stay-up-to date in their newest software releases. For now, stay tuned for more updates as we get closer to the Dynamics AX 7 release date.

Saturday, 18 July 2015

Customer Master AIF Service in AX

Dear All,

Today's am gonna share a code related to Customer Master Write operation.

In the sense inserting customers into AX thru the System Service.

Please follow the below steps as shown in screenshots.

1.Create Project in AOT and Add a Service Reference and Service Group Nodes into a created project as shown in below.

 2.Create a new Service Reference as below and add the inbuilt service class for the service.

3.For Customer master CRUD operation there is class in Ax named as "CustCustomerService".
select it in the property of a service reference and add the operation.
4.Once after adding the operation deploy the service and open VS.
5.In VS create new Windows Form Application Project and the URL to Service Reference as below.


5.Run the below code.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CustomerMasterMasterWriteTest.CustomerCreate;

namespace CustomerMasterMasterWriteTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            CustomerCreate.CustomerMasterWriteClient proxy = new CustomerCreate.CustomerMasterWriteClient();
            //CustomerCreate.CustomerMasterCreateServiceClient proxy = new CustomerCreate.CustomerMasterCreateServiceClient();
            CustomerCreate.CallContext newcont = new CustomerCreate.CallContext();
            newcont.Company = "mub";
            CustomerCreate.AxdCustomer customer = new CustomerCreate.AxdCustomer();
            CustomerCreate.AxdEntity_CustTable Custtable = new CustomerCreate.AxdEntity_CustTable();
            Custtable.AccountNum = "998877";
            Custtable.Currency = "USD";
            Custtable.CustGroup = "20";
            Custtable.OneTimeCustomer = CustomerCreate.AxdExtType_OneTimeCustomer.Yes;
            Custtable.OneTimeCustomerSpecified = true;

            //Create the party record
            CustomerCreate.AxdEntity_DirParty_DirPerson party = new CustomerCreate.AxdEntity_DirParty_DirPerson();
            party.NameAlias = "TestInsertion";

            //Set the name fields
            CustomerCreate.AxdEntity_PersonName personName = new CustomerCreate.AxdEntity_PersonName();
            personName.FirstName = "Test";
            personName.MiddleName = "Tester";
            personName.LastName = "Newell";

            //Add the names to the party record and set the name sequence

            party.PersonName = new CustomerCreate.AxdEntity_PersonName[1] { personName };
            party.NameSequence = "FirstLast";

            //Create a postal address
            CustomerCreate.AxdEntity_DirPartyPostalAddressView address = new CustomerCreate.AxdEntity_DirPartyPostalAddressView();
            address.LocationName = "Location Name";
            address.Street = "2122 NE 5th St";
            address.City = "Beverly Hills";
            address.State = "CA";
            address.CountryRegionId = "USA";
            address.ZipCode = "90210";
            address.Roles = "Home;Delivery";

            //Create an electronic address
            CustomerCreate.AxdEntity_DirPartyContactInfoView electronicAddress = new CustomerCreate.AxdEntity_DirPartyContactInfoView();
            electronicAddress.LocationName = "Contact Email";
            electronicAddress.Type = CustomerCreate.AxdEnum_LogisticsElectronicAddressMethodType.Email;
            electronicAddress.TypeSpecified = true;
            electronicAddress.Locator = "beckynewell@madeup.com";
            electronicAddress.Roles = "Home";

            //Add the addresses to the party record and the party to the CustTable record
            Custtable.DirParty = new CustomerCreate.AxdEntity_DirParty_DirPartyTable[1] { party };
            Custtable.DirParty[0].DirPartyPostalAddressView = new CustomerCreate.AxdEntity_DirPartyPostalAddressView[1] { address };
            Custtable.DirParty[0].DirPartyContactInfoView = new CustomerCreate.AxdEntity_DirPartyContactInfoView[1] { electronicAddress }; ;

            //Add the CustTable record to the Customer entity
            customer.CustTable = new CustomerCreate.AxdEntity_CustTable[1] { Custtable };
            //Create the customer
            proxy.create(newcont, customer);
        }
    }
}







Sunday, 5 July 2015

Invalid Data Container Type

Hi Folks,

Today i was just facing an issue where i was not able to update/create any services in AX due to below error.


Cause:
The reason behind this error is There might be any Document Service classes which are referring to the Macro's which doesn't exists in AX.

Resolution:

To resolve this error i compiled the AX class node AOT-->Classes-->Right Click compile.

Once the compilation is done i found that i created a service for test purpose where i deleted the macro's but forgot to delete the classes which were referring to the deleted macro's so i just deleted the unnecessary classes which were referring to the deleted macro.

Once after deletion all the classes i was able to deploy and update the services without any Erros.

Happy Daxing.

Shreedhara
shreedhar0847@gmail.com