Monday, June 27, 2016

Key Points on DIXF AX 2012 r3

one of the few new key features is that the DIXF[Data Import Export Framework Changes] runs on top of the SSIS service interface allowing incremental runs (UPSERT). Of course, it can import/export data, and Microsoft added the capability to compare and copy data between instances as well. In addition, the new DIXF version ships with the ability to choose different data sources such as text, MS Excel, and XML files.


*     Further, the new DIXF can be used to extract data directly from various ODBC*** sources such as SQL, MS Access, and MS Excel. This new additions will help us streamline our data migrations and data transfers much better. 

***For ODBC types we are going to have to provide a connection string in order to simplify the data selection process. The one cool thing I saw was that we can create new rows under Mapping Details to add mandatory fields i.e. ACCOUNTNUM in case a specific legacy system does not include it. 

When this scenario is true, the custom value provided can be automatically filled by a number sequence value (if we want to) by choosing the “AUTO” option in that specific row, which would take a new AccountNum from the numbering sequence system. However, we can also choose to have default values as in older versions. 

In terms of the DIXF entities, the new DIXF ships with a 150 entities in comparison to the 78 (I think) it came with in earlier versions. These include master data, documents, journals, parameters, party, products, and configuration data. 

Another cool addition is the addition of folder support. We are going to be able to move stuff around automatically (needs to be pre-defined) to different folders in our domain based on the operations we are executing. 
      *Role Base Security: Provides a security framework for the different levels on an organization, this is built on top of the existing security framework (i.e. Production cannot import HR data).

Mapper Control: Allows flexible mapping between custom entities and staging objects. In addition, mapping effort is reduced when using AX friendly column names (i.e. ITEMID).

Custom Entity Wizard: We can compare data in different companies. This becomes specially interesting and useful to compare parameter data between a gold and test instances for example.  When using this tool to import data that contains discrepancies, the system inserts the data into a staging table where it is compared by another process in a specific number of companies and/or instances, and finally it gets updated. 

At this point, a user can use the Comparison form to move records between different instances.
       System Configuration Data: BI-Analysis and Reporting Services, Project Server Integration, EP, Batch Settings, Number Sequences, Email Parameters, AIF, System Service Accounts.

DIXF Import Process

The import Process us done by using an abstraction layer that uses SSIS behind the DIXF framework. Within this abstraction layer, we can add possible X++ customizations.

I asked the question on what would be the recommendation for migrating data from legacy systems – the following is what I could get from their recommendation (I was taking notes).There are two types of data migration architecture that consolidate both importing and cleansing data.

The first option is to have a middle tier that can process the data from a legacy system, to an external system and clean it before it goes to Microsoft Dynamics AX.
 


DIXF Articles Links

What's new: Data Import/Export Framework for Microsoft Dynamics AX 2012 [AX 2012]

What's new: Data Import/Export Framework for Microsoft Dynamics AX 2012 [AX 2012]
Applies To: Microsoft Dynamics AX 2012 R3, Microsoft Dynamics AX 2012 R2, Microsoft Dynamics AX 2012 Feature Pack, Microsoft Dynamics AX 2012
The Data Import/Export Framework is a feature that helps you export data and import it into Microsoft Dynamics AX. It is included in Microsoft Dynamics AX 2012 R3. Prior to Microsoft Dynamics AX 2012 R3, it was available as a separate download. For more information about Data Import/Export Framework, see Data import/export framework user guide (DIXF, DMF).

Releases


The following sections describe the features that have been added in each release.

Microsoft Dynamics AX 2012 R3


Date: May 2014
This release includes the following features:
  • A new security group for the Data Import/Export Framework, Microsoft Dynamics AX Data Import Export Framework Service User.
  • Additional entities: Resource requirements, Operations, and Route relation.
  • Staging-level validation of data that contains role separators.
  • Support for SQL Server 2014.
  • Additional data sources when you use Data Import/Export Framework as an Application Integration Framework (AIF) service. These include files, ODBC, and other Microsoft Dynamics AX instances. You can also now use a Data Import/Export Framework as an AIF service to export data to a file.
  • Staging-level conversion of fields that use the GUID data type.
  • The Custom Entity wizard now creates the class and functions of a new entity, in addition to the staging table, project, and query.
  • Error files for data import/export operations are now created in XML instead of in plain text for easier parsing.
  • You can now use a role separator in export as well as import operations, to delimit multiple values in the same field.

Cumulative update 7 release


Date: October 2013
This release is available only for cumulative update 7 for Microsoft Dynamics AX 2012 R2.
This release includes the following features:
  • Additional entities for configuration, Microsoft Project, Fiscal books, Microsoft Dynamics AX 2012 for Retail
  • Support for XML data sources
  • Support for Microsoft Excel data sources
  • Role-based security for processing groups
  • UI for comparing entities across companies
  • UI for copying entities across companies

Initial release


Date: March 2013
This release includes the following features:
  • 70 out-of-box entities.
  • Custom entity creation wizard.
  • Support for Microsoft Dynamics AX 2012 RTM, Microsoft Dynamics AX 2012 Feature Pack, and Microsoft Dynamics AX 2012 R2.
  • Support for Microsoft SQL Server 2008 and Microsoft SQL Server 2012.
  • Import entity data from multiple sources: files (delimited and fixed width) and Open Database Connectivity (ODBC).
  • Export entity data from AX 2012 to other AX 2012 environments or files.
  • Copy entity data across legal entities.
  • Mapping UI.
  • Support for parallel execution from staging to target by using several batch task values.
  • Use a folder as input for running periodic imports.
  • Error handling: Skip rows that contain errors.
  • Set-based operations for moving data from staging to target.
  • Support for default values.
  • Support for number sequences.
  • Support for external key mapping.
  • Source to target in a single step.
  • Support for multiple instances of Microsoft Dynamics AX Application Object Server (AOS).

Friday, June 24, 2016

PreviewParRef property of a table in Ax 2012

PreviewParRef property:
Specifies the Info Part or Form Part to be used in the enhanced preview.
An info part shows a collection of data fields from a specified query. An info part uses metadata to describe how the data appears. A form part represents a pointer to a form.

Hello Daxer's !!!

Today im going to explain clear view of PreviewParRef property of a table with an example

 Goto AOT >>Tables>>smmResponsibilitiesEmplTable  
 Open table ,Mouseover on Worker Field it shows an design popup as below screen shot


Worker field is Related to HcmWorker Table, So, I select HcmWorker Table and observed property of Previewpartref “HcmWorkerEnhancedPreview”
Now Parts>>FormPart>> HcmWorkerEnhancedPreview”,Observe the  Form Property “HcmWorkerEnhancedPreviewPart”
Finally Open HcmWorkerEnhancedPreviewPart Form as below screen shot clearly shows the result

Monday, June 20, 2016

About FormRef Table Property in Ax 2012

What is the use of Form Ref:
Specifies the display menu item that is activated when a table is referenced. A display menu item is associated with a form.
When you use a primary index field on a report, this form is available as a link in the report. A primary index is specified by using the PrimaryIndex property.
If you leave this field blank, the system attempts to display a form that has the same name as the table.


Hi Daxer’s !!!
Today Im gonna to Explore About Table Property of “FormRef”
Create a New Table as Below Screen shot

Create One Related Table For Above Table  as below Screen Shot:


Open Table SKP_FormRefEx_B insert values as below screen shot

Now Right click on id value Select view details as below screen shot

Warning message appears as below screen shot: it occurs by the Related field of SkP_FormRefEX_A
i.e SkP_FormRefEX_A table Is not having any FormRef Property value

Now I use to Keep Form Reference for SkP_FormRefEX_A table
First I need to create one Form As below Screenshot

>> Create Menu One Display MenuItem for above Form

Now Goto SkP_FormRefEX_A table & Keep Above Menuitem as FormRef

 Goto SkP_FormRefEX_B table, open it Right click on related field of SkP_FormRefEX_A table  and  Select View Details as Above process


Finally,FormRef Property is achieved as above screenshot explains clear view of it !!!


I hope it may helps some one who are unable to understand

In standard Level Please Observe the Table EcoResProduct Table FormRef Property

Thursday, June 16, 2016

Understanding AOT Maps in Ax 2012

Invoicing Sales Order by Confirming SalesQuotation

Hi Daxer’s !!!

Scenario:Creating SalesQuotation >>Send SalesQuotation to Customer >> here while doing SalesQuotation confirmation i have added one Checkbox of (SalesInvoicecheck) if i check this checkbox and confirm it,then the salesorder status will be invoiced of particular sales Quotation in Sales Order form

How I achieved scenario is
First I have Created a new field in SalesQuotationTable as below


Then I have added one check box(SalesInvoiceCheck) control in SalesQuotationEditLine Form






CommandButton:Ok>>Clicked()

void clicked() // added by shiva
{

    SalesQuotationParmTable SalesQuotationParmTable1;
    SalesquotationTable  salesquotationTable1;

    super();

    SalesQuotationParmTable1 = SalesQuotationParmTable::find(SalesQuotationParmTable.QuotationId,SalesQuotationParmTable.ParmId,true);
    salesquotationTable1=SalesquotationTable::find(SalesQuotationParmTable1.QuotationId);
     if (SalesInvoiceCheck.value()==1)
    {
        SalesQuotationTable1.selectForUpdate(true);
        ttsBegin;
        SalesQuotationTable1.Sk_SalesInvoiceCheck=NoYes::Yes;
        SalesQuotationTable1.update();
        ttsCommit;

    }
}


In above method i’m just finding SalesQuotationTable recid based on quotation id and also updating SalesQuotationTable with SalesInvoicecheck value as “Yes”


Now Finally based on above condition i was gone through with the SalesQuotationLineType Class>>updateSalesQuotationTable() as below





In updateSalesQuotationTable() i have added my logic here
void  updateSalesQuotationTable()
{
    SalesQuotationTable     salesQuotationTable;
    SalesFormLetter         salesformletter;// added by shiva

    salesQuotationTable = salesQuotationLine.salesQuotationTable(update);

    salesQuotationTable.CovStatus    = 0;

    salesQuotationTable.write();

    //added by shiva invoicing salesquotation through confirmation
    if(salesQuotationTable.Sk_SalesInvoiceCheck== NoYes::Yes && salesQuotationTable.SalesIdRef)
    {
        salesformletter = salesformletter::construct(DocumentStatus::Invoice);
        salesformletter.update(salestable::find(salesQuotationTable.SalesIdRef));
    }
    // ended by shiva
}
Now goto Navigation>>Sales&Marketing >>AllSalesOrders>>
Search the Above Salesorder(001358) status is invoiced








Tuesday, June 14, 2016

How InventTrans Automatically updating when a line in PurchLine or SalesLine is created.


Hi Daxer’s !!!

Recently I have gone through one customization.

Scenario:Add “Registrationnumber” field in Other Information group of Customer form if you enter some value on registration number it should update at taxes action pane  >>tax registration >>Registration number










>>First I have added one field in custTable like sk_Registrationnumber and also added that field to customer form as above screen shot

Note : Based on Customer Accountnum in custTable ,i need to update  registrationnumber in TaxRegistration table so I need to check relation between Custtable and Taxregistration


Taxregistration.dirpartylocation>>Dirpartylocation.party>>custtable.party
CustTable>>Modifiedfield()>>

case fieldNum(CustTable,sk_registrationnumber):
            if (this.SK_RegistrationNumber)
                {
                ttsBegin;
                while select forupdate  taxregistration
                    join DirPartyLocation
                        where taxregistration.DirPartyLocation==DirPartyLocation.RecId
                            join CustTable
                                where DirPartyLocation.Party==CustTable.Party
                    if(TaxRegistration)
                    {
                        {
                            taxregistration.validTimeStateUpdateMode(validTimeStateupdate::Correction);
                            taxregistration.ValidFrom=today();
                            taxregistration.ValidTo=today()+20;
                            taxregistration.RegistrationNumber=this.SK_RegistrationNumber;
                            taxregistration.update();
                        }
                    }
                ttsCommit;
                }
---------------------------or------------------------------------


case fieldNum(CustTable,SK_RegistrationNumber):
            if(this.SK_RegistrationNumber)
            {
                ttsBegin;
                //TaxRegistration = TaxRegistration::find(DirPartyLocation::findByPartyLocation(CustTable::find(this.AccountNum)
               // TaxRegistration.DirPartyLocation=Dirpartylocation::findByPartyLocation(this.Party,true).Location;
               // TaxRegistration.TaxRegistrationTypeApplicabilityRule=5637146891;
               
                //TaxRegistration.selectForUpdate(true);
                TransDate = systemDateGet();
                transDateTo = dateMax();
                TaxRegistration.validTimeStateUpdateMode(ValidTimeStateUpdate::Correction);
                SELECT forUpdate validTimeState(TransDate, transDateTo) * from TaxRegistration
                    Join dirpartylocation
                        where TaxRegistration.DirPartyLocation==dirpartylocation.RecId
                            join DirPartyTable
                                where dirpartylocation.Party==DirPartyTable.RecId
                                    join CustTable
                                        where DirPartyTable.RecId==CustTable.Party;
                if(TaxRegistration)
                {
                    TaxRegistration.RegistrationNumber=this.SK_RegistrationNumber;
                    TaxRegistration.update();
                }
                ttsCommit;
            }




Exception from HRESULT: 0xC0048021 in DIXF AX 2012 R3



If you’re using Excel 2013 , the problem is caused by DMConfig XML file.
Go to the DMConfig.xml file in the Microsoft Dynamics AX\60\DataImportExportFramework  folder and replace the PipelineComponentInfo_Multicast, PipelineComponentInfo_ExcelSource and  <PipelineComponentInfo_ExcelDestination> nodes by the following:
<PipelineComponentInfo_Multicast>
{33D831DE-5DCF-48F0-B431-4D327B9E785D}
< /PipelineComponentInfo_Multicast>
< PipelineComponentInfo_ExcelSource>
{9F5C585F-2F02-4622-B273-F75D52419D4A}
< /PipelineComponentInfo_ExcelSource>
< PipelineComponentInfo_ExcelDestination>
{90E2E609-1207-4CB0-A8CE-CC7B8CFE2510}
< /PipelineComponentInfo_ExcelDestination>


Export a copy of the standard user acceptance testing (UAT) database

 Reference link: Export a copy of the standard user acceptance testing (UAT) database - Finance & Operations | Dynamics 365 | Microsoft ...