Skip to main content

Add fields for table/field mapping during an upgrade

In my recent upgrade project that I took over in the middle of the upgrade process I had to use a small trick to fix many table and field mappings errors in the Data upgrade checklist




static void addFields(Args _args)
{
    TreeNode                            treeNode;
    AOTTableFieldList                   fieldList;
    #AOT
   
    ReleaseUpdateBulkCopyField          fields;
    ReleaseUpdateBulkCopyTable          tables;
    DEL_SqlDictionary                   del_sql;
    SqlDictionary                       sql;  

    str                                 newTableName;
    str                                 newFieldName;
    ;

    while select RecId from fields
    join OldTableName, NewTableName from tables
        where fields.Status == ReleaseUpdateBulkCopyFieldStatus::NoMapping
        && fields.OldTableId == tables.oldTableId
    join FieldType, StrSize from del_sql
        where fields.OldTableId == del_sql.TabId
        && fields.OldFieldSqlName == del_sql.SqlName
    {
        newFieldName = '';

        select fieldsData where fieldsData.RecId == fields.RecId;

        if (fieldsData.OldFieldName == 'CREATEDDATE')
            newFieldName = 'DEL_CreatedDate';

        if (fieldsData.OldFieldName == 'MODIFIEDDATE')
            newFieldName = 'DEL_ModifiedDate';

        if (newFieldName != '')
        {
            newTableName = tables.newtablename;

            treeNode = TreeNode::findNode(@'\\Data Dictionary\Tables\' + newTableName);
            fieldList = treeNode.AOTfindChild('fields');
            fieldList.addDate(newFieldName);

            SqlDataDictionary::synchronize();
        }
    }  

    info('Done');
}

Comments

Popular posts from this blog

Dynamics 365 for operations – Table extensions

Background Extensions are a new way to add functionality and custom code to the D365 system without changing the standard code. In fact, Microsoft has announced that edit standard elements like those that we have done in the past will not be possible after 2017. By using extensions, we can achieve the same result by simply extending the standard system => EXTENSIONS. To read more about the difference between overlaying and extensions follow this link https://ax.help.dynamics.com/en/wiki/customization-overlayering-and-extensions/#extensions Extending tables By using table extensions, we can create a new table that adds new fields, field groups, indexes, mappings, relations, methods, subscribe to event handlers and more. When extending tables we need to follow the naming rule as such: <TABLENAME><_Extension> the compiler understands the _Extensions suffix and knows that the table in question is extending a table from the standard system. This gives us access ...

Plug-able Authentication in Microsoft Dynamics AX 2012

I have worked in many projects involving the Enterprise Portal for Ax ranging from version 2.5. One of the biggest issue for the end customer/user has been the ability to have a plug-able authentication for EP. This has been an issue for example for customers that have other portals based on Share Point as well as custom build ASP.NET web sites. All these portals are able to share the authentication with Single Sign On, SSO. But until now with version 2012 of Ax this has not been possible since earlier versions of Ax have only supported Windows Authentication. So in scenarios where you implement an EP site for a customer that has other portals and uses for example forms authentication, if you are not running Ax 2012 you have to have a special/dedicated log-on to EP. One of the biggest advantages is the fact that now external users do not have to be in Active Directory mixed up with all the internal users or located in an extra AD repository with all the administrative IT work l...

Remove HTML code from strings

When you work for example with the presentations DAX adds some HTML comment code to the text stored in the database. This can cause the text on the web to be displayed in incorrect format. This also takes up space in the database and makes the database file grow larger. <!--AXAPTA  MarginWidth="0" MarginHeight="0" WebletName="WebLet700062029" Type="WebPageWeblet" -->TEXT There is a nice X++ function: just call Web::stripHTML( string ), which will return the string without the HTML tags