Site icon DAXRunBase

AX clients with an outdated kernel executable version (SCOM, Blocking)

There are AX installations that do not fully rely on Remote Desktop Services technology, but rich clients are used which may connect to the AX AOS with a potentially outdated Ax32.exe kernel binary version. If a new kernel binary hotfix is installed on the AOS, then the clients must also be patched up, since the communication protocol could have been changed. It is absolutely crucial to get the kernel hotfix applied to the AX clients, but it is not always that convenient to find whom to patch.

If someone connects with an old kernel version, the AX AOS creates an event log entry, that we can get notifications for if we use System Center Operations Manager (SCOM): Application warning: Object Server 01: Internal version mismatch. Microsoft Dynamics AX client from COMPUTER (6.0.1108.3733) tried to attach with 6.0.1108.7309 revision of kernel

In SCOM 2012 AX management pack the alert is generated as “Internal AOCP revision mismatch”, and the actual computer name can be seen under View additional knowledge > Alert context > Event data.

The next step is to block access for these clients.

Create the following two methods under \\Classes\ApplicationVersion:

public client static str WIK_getKernelVersionClient()
{
    return strFmt('%1.%2', xInfo::releaseVersion(), xInfo::buildNo());
}

public server static str WIK_getKernelVersionServer()
{
    return strFmt('%1.%2', xInfo::releaseVersion(), xInfo::buildNo());
}

After that create two new methods in \\Classes\Application and then add WIK_startupPost as a Post-eventhandler subscription to the Application.startupPost method:

public void WIK_shutdown()
{
    infolog.shutDown(true);
}

public static void WIK_startupPost(XppPrePostArgs _args)
{
    str 20      aosVersion      = ApplicationVersion::WIK_getKernelVersionServer();
    str 20      clientVersion   = ApplicationVersion::WIK_getKernelVersionClient();

    if (isRunningMode()
        && aosVersion != clientVersion)
    {
        if (hasGUI())
        {
            Box::stop(strFmt("@SYS65330", clientVersion, aosVersion));
        }
        else
        {
            throw error(strFmt("@SYS65330", clientVersion, aosVersion));
        }

        infolog.addTimeOut(appl, methodStr(Application, WIK_shutdown), 100, false);
    }
}

Whenever a user tries to start up a new AX client, they have to click a modal dialog with an OK button which informs them that their version is out of date. Pressing the button will close down their client. This will block them of causing any damage to your business, and the user could inform Helpdesk to get the client patching sorted out.

Exit mobile version