Wednesday, July 26, 2017

Microsoft Dynamics 365 for Finance and Operations, Enterprise edition (on-premises) - Installation PART 2


Again here with the second part about the D365FO On-premise installation.

Before to Create the AppFabric Cluster, modify the ClusterConfig.json file created before and set the "diagnostics file share" path. This one will be use during the Installation process through all AppFabric nodes.

If during the Cluster installation you raised the error "Request is Invalid" check if the Primary NodeType (Orchestrator) have at least 3 Nodes!

Again, if during the Cluster installation you raised the error "Timed out waiting for Installer Service to complete for machine..."

You have to:

1- Verify if the Certificate are been installed in the Local Machine Node

2- Add the NETWORK SERVICE account for all certs used by Service Fabric.
In order to do this you have first download and install in all Cluster Nodes the WinHttpCertCfg.exe tool, Windows HTTP Services Certificate Configuration Tool (WinHttpCertCfg.exe)
Lastly, run the command for all Certificates in all Cluster Nodes, like "C:\Program Files (x86)\Windows Resource Kits\Tools\WinHttpCertCfg.exe" -g -c LOCAL_MACHINE\MY -s "" -a "NetworkService"

Till soon!

Microsoft Dynamics 365 for Finance and Operations, Enterprise edition (on-premises) - Installation PART 1

Hi Guys

As you know, Microsoft released D365FO Local Business Data, aka On-Premise release.
Here the link Set up and deploy on-premises environments

I played around and I found the first issues.

During the creation of the group managed service accounts (gMSAs) through the Powershell scripts, "Create gMSAs" section, you can raise the follow error: "Key not found"

In this case you have to create a "KDS root key" using the following commands:

1- Add-KDSRootKey –EffectiveImmediately
2- Add-KdsRootKey –EffectiveTime ((get-date).addhours(-10));

During the ClusterConfig.json file generation, you can raise the following error, “Failed to Download Cluster Configuration Template”, see below error.

In this case you have to download the Service Fabric standalone installation package and copy the "ClusterConfig.X509.MultiMachine.json" file into the LCS InfrastructureScripts folder.
Again run the .\New-SFClusterConfig.ps1 -InputXml .\ConfigTemplate.xml command.

Finally, I test the ClusterConfig file through the command .\TestConfiguration.ps1 -ClusterConfigFilePath .\clusterConfig.json

Next step is Deploy the Cluster!

Till soon!

Monday, July 3, 2017

AX 2012: Forms on opening hide behind in the back - 2° part

Hi Guys

About this topic the Microsoft workaround in some case doesn't helped me.
So, below you can find the code that definitely fix the issue!

Modify the StartupPost method of the Application Class and add these two lines:

if (hasGUI())

Lastly, created the "DisableWindowGhosting" static method like this:

client static void disableWindowGhosting()
    DLL DLL;

    DLLFunction DLLFunction;

    container con = WinAPI::getVersion();

    if (conpeek(con, 1) == 6) //Vista and Win7/Win2008R2 only
        //this will disable window ghosting for this process only, for its lifespan only

        DLL = new DLL("USER32");

        DLLFunction = new DLLFunction(DLL,"DisableProcessWindowsGhosting");;

That's it!

Sunday, July 2, 2017

MVP Dynamics AX/365 Renewal - Fourth time!

Hi Guys

For the fourth time I was able to remain MVP on Dynamics AX/365 for Finance and Operations.
Today We Kick Off Our First Annual Award Cycle. Congratulations to all Renewing MVPs!

It is not easy to balance career and remain an technology expert.
I guess that my trick is the passion!

Again is a pleasure stay on touch with the others MVP, meet them, share experiences, etc.

At the end, we became really a good friends!

See you on the next technical conferences, community websites, etc.

Lastly with the release of the Dynamics 365 for Financial and Operations on-premise, I guess we will have a lot of fun in the next months.

Friday, June 23, 2017

Microsoft Dynamics 365 Local Business Data aka On-Premise - Database Topology


As you know Microsoft have release Dynamics 365 LBD - On premise version.

Dynamics 365 for Finance and Operations, Enterprise edition (on-premises) system requirements

About Database the main question is use SQL Server 2016 Standard or Enterprise Edition.
Obviously, refer to the Microsoft link in order to check the features supported by the SQL Server editions.

In a medium and not complex Project, my suggestion is to use the Standard Edition.
With the standard version is possible to setup an Always On Availability Group Cluster with a limit of two replicas (Primary and Secondary).

From a Business Intelligence perspective, we can setup a SQL snapshot on the Secondary replica and link to the snapshot the Reporting activities.

Stay Tuned!

Friday, June 9, 2017

Microsoft Dynamics 365 useful links


Below some useful links about Dynamics 365:

General Links:

1- Microsoft Dynamics 365 – Launch Portal

2- Introduction to Dynamics 365 for Operations

3- Overview of Microsoft Dynamics 365 for Operations for Developers and IT Pros

SaaS Evaluation Copy:

1- Get an evaluation copy
2- Try out Dynamics 365 for Operations now for free!
3- Have you given Microsoft Dynamics 365 for Finance & Operations, Enterprise Edition a try?

Database Management:

1- Copy a Dynamics 365 for Operations database from Azure SQL Database to a SQL Server environment For instance update Data from the UAT Environment to a Sandbox Environment.


1- Dynamics 365 for Finance and Operations, Enterprise edition (on-premises) system requirements
2- Set up and deploy on-premises environments
3- On-premises deployment landing page
4- Features not implemented in on-premises deployments
5- Purchase Dynamics 365 for Finance and Operations, Enterprise edition (on-premises)

Setup Dynamics 365 Virtual Machine

1- Setup Dynamics 365 for Operations Virtual Machine
2- Setting up a personal Dynamics 365 For Operations development environment
3- Virtual Machine(VM) setup to access Dynamics 365 for Operation instance
4- Running AX7 VM on Oracle VirtualBox


1- Upgrades, Updates and Hotfixes in AX7
2- Install a metadata hotfix


1- Debug X++ against a copy of a production database

Warehouse App

1- Announcing Dynamics 365 for Operations – Warehousing
2- Install and configure Microsoft Dynamics 365 for Finance and Operations – Warehousing

What's New

1- Microsoft Dynamics 365 Roadmap
2- What's new or changed

Unit Test

1- July 2017 update: Form Adaptors Replaced by Type Providers

Common Data Services





1- FastTrack Dynamics 365 for Finance & Operations - Enterprise Edition - Tech Talks

This page will be update frequently!


Sunday, February 19, 2017

AX 2012 - TFS multiple workspaces

Hi All

AX 2012 support only a single TFS workspace that mean a Dynamics AX Developer Box (SQL Server, AOS, etc.) for each developer.

Many of us use a Shared AX Environment, so many Developers connected to the same Dynamics AX Environment. More details at Microsoft Dynamics AX 2012 White Paper: Developing Solutions in a Shared AOS Development Environment

For this reason Martin DrĂ¡b created a custom Solution in order to help us to achieve this result, TFS workspaces in AX2012

This solution is fantastic.
The only issue is when an object is in check-out mode also other developers can modified it also if the check-in can only be handled by the check-out Owner.

In order to fix the behavior I have created a new method and modified another one in the SysVersionControlSystemFileBased Class.


Create a new method like “isCheckedOut” like this:

// AddaxWorkspaces
// Denis 20170219 - Check if the current Object is check-out by the current user
boolean isCheckedOut_dlx(Filename         _filenameCurrentLayer)
    Set                         checkedOutObjects = new Set(Types::String);
    SysVersionControlTmpItem    items;
    SysVersionControlSystem     sysVersionControlSystem;
    SysVersionControlParameters parameters = SysVersionControlParameters::find();

    str                         checkFileName;

    sysVersionControlSystem = SysVersionControlSystem::newType(parameters.vcsType);

    if (sysVersionControlSystem)
        items = sysVersionControlSystem.getCheckedOutItems();

        while select items
            checkFileName = items.Filename;
            checkFileName = strReplace(checkFileName, parameters.AppRoot + '$\\' + parameters.TfsProject + "\\", "");

            if ( _filenameCurrentLayer == checkFileName )
                Return True;


    return false;

Modified the allowEdit method like this:

        //Has the file been checked out
        if (!bitTest(WinAPI::getFileAttributes(filenameCurrentLayer), #FILE_ATTRIBUTE_READONLY)
        &&  this.isCheckedOut_dlx(filenameCurrentLayer)       // Denis 20170219 - AddaxWorkspaces
            return true;

Thanks again to Martin and Stay Tuned!